Short Notes on Bash
From PaskvilWiki
Extensions and File Name
$ fullname='/tmp/file.tar.gz'
$ filename=$(basename $fullname)
$ echo ${filename##*.}
>> gz
$ echo ${filename#*.}
>> tar.gz
$ echo ${filename%.*}
>> file.tar
$ echo ${filename%%.*}
>> file
For more options and explanations, see Bash - Shell Parameters Expansion.
File Test Operators
| Operator | Function |
|---|---|
| -e | file exists |
| -f | exists and is regular file (not directory or device file) |
| -s | exists and is non-zero size |
| -d | exists and is directory |
| -b | exists and is block device |
| -c | exists and is character device |
| -p | exists and is pipe |
| -h | exists and is symbolic link |
| -S | exists and is socket |
| -t | is associated with terminal device; e.g. [ -t 0 ] and [ -t 1 ] test whether stdin and stdout is terminal |
| -r | user has read permission |
| -w | user has write permission |
| -x | user has execute permission |
| -O | user is owner |
| -G | user's group is the same as the file's group |
| -N | file modified since it was last read |
| f1 -nt f2 | f1 is newer than f2 |
| f1 -ot f2 | f1 is older than f2 |