Software >> OS >> Unix >> Shell >> bash >> bash cheat sheet

Test options

-b file
True if file is a Block special device
-c file
True if file is a Char­acter special device
-d file
True if file is a Dire­ctory
-e file
True if file Exists
-g file
True if file has its set-­gro­up-id bit set
-G file
True if file is owned by the current effective group id
-k file
True if file has its "s­tic­ky" bit set
-L file
True if file is a symbolic Link
-O file
True if file is owned by the current effective user id
-p file
True if file is a named Pipe
-r file
True if file is read­able
-S file
True if file is a Socket
-s file
True if file has a Size greater than zero
-t [FD]
True if FD is opened on a termin­al. If FD is omitted, it defaults to 1 (standard output)
-u file
True if file has its set-­user-id bit set
-w file
True if file is writ­able
-x file
True if file is exec­uta­ble
file1 -ef file2
True if file1 and file2 have the same device and inode numbers, i.e., if they are hard links to each other

File age

file1 -nt file2
True if file1 is newer than file2
file1 -ot file2
True if file1 is older than file2

String tests

-z String
True if the length of String is zero
-n String
True if the length of String is nonzero
String1 = String2
True if the strings are equal
String1 != String2
True if the strings are not equal

Numeric tests

ARG1 -eq ARG2
True if ARG1 is equal ARG2
ARG1 -ne ARG2
True if ARG1 is not-equal ARG2
ARG1 -lt ARG2
True if ARG1 is less-than ARG2
ARG1 -le ARG2
True if ARG1 is less-t­han­-or­-equal ARG2
ARG1 -gt ARG2
True if ARG1 is greate­r-than ARG2
ARG1 -ge ARG2
True if ARG1 is greate­r-t­han­-or­-equal ARG2

Bash Shortcuts

CTRL-c
Stop current command
CTRL-z
Sleep program
CTRL-a
Go to start of line
CTRL-e
Go to end of line
CTRL-u
Cut from start of line
CTRL-k
Cut to end of line
CTRL-r
Search history
!!
Repeat last command
!abc
Run last command starting with abc
!abc:p
Print last command starting with abc
!$
Last argument of previous command
ALT-.
Last argument of previous command
!*
All arguments of previous command
^abc^123
Run previous command, replacing abc with 123

 

Bash Parameter Expansions

${pa­ram­eter}
Value of parameter
${pa­ram­ete­r:-­word}
Use default
${pa­ram­ete­r:=­word}
Assign default
${pa­ram­ete­r:?­word}
Display Error
${pa­ram­ete­r:+­word}
Use Alternate
${pa­ram­ete­r:o­ffs­et}
Substring
${pa­ram­ete­r:o­ffs­et:­len­gth}
${!n­ame­[@]}
List Array Keys
${#p­ara­met­er}
Parameter length
${pa­ram­ete­r#m­atch}
Remove prefix
${pa­ram­ete­r##­mat­ch}
(longest)
${pa­ram­ete­r%m­atch}
Remove suffix
${pa­ram­ete­r%%­mat­ch}
(longest)
${pa­ram­ete­r/p­att­ern­/st­ring}
Substi­tution
${pa­ram­ete­r^p­att­ern}
Uppercase match
${pa­ram­ete­r^^­pat­tern}
Uppercase all
${pa­ram­ete­r,p­att­ern}
Lowercase match
${pa­ram­ete­r,,­pat­tern}
Lowercase all

Sed commands

:[la­bel]
Set label
Zero/One address commands
=
Print current line number
a \
Append text
text
(embedded newlines)
Address range commands
b [label]
Jump to label
t (T) [label]
Jump to label on (failed) s///
c \
Replace match
text
(Embedded newlines)
d (D)
Delete (to newline)
h H
Copy/A­ppend pattern
g G
Paste/­Append hold
x
Exchange hold/p­attern
n N
Read/A­ppend next line
p
Print pattern
s/re­gex­/re­pla­ce/
Substi­tution
Addr­esses
firs­t~s­tep
Starting at first, every stepth
/reg­ex/
Lines matching regex
addr­1,+N
addr1 and N following lines
Vari­ous
{c1;­c2;­c3;}
List of commands
;
Separate commands

 

References

ftp.psu.ac.th/pub/bash-howto/reference_bash-cheat.pdf

sed.sourceforge.net/sed1line.txt

devhints.io/bash