1. Recursively count all the files in a directory

+ Condition and loop
1.  Using test command, to test if the length of variable is nonzero

+ Others
1. Create a screen and name it 'test'

+ Time
1. Get the seconds since epoch (Jan 1 1970) for a given date (e.g Mar 16 
2021)
2. Convert the number of seconds since epoch back to date

+ fix some markdown syntax issue
This commit is contained in:
onceupon 2021-03-16 22:03:57 +08:00
parent 244a568bd7
commit 19d402cc84

View File

@ -456,9 +456,10 @@ sed 1,100d filename
##### Remove lines with string (e.g. 'bbo') ##### Remove lines with string (e.g. 'bbo')
```bash ```bash
sed "/bbo/d" filename sed "/bbo/d" filename
- case insensitive: # case insensitive:
sed "/bbo/Id" filename sed "/bbo/Id" filename
``` ```
##### Remove lines whose nth character not equal to a value (e.g. 5th character not equal to 2) ##### Remove lines whose nth character not equal to a value (e.g. 5th character not equal to 2)
```bash ```bash
sed -E '/^.{5}[^2]/d' sed -E '/^.{5}[^2]/d'
@ -982,6 +983,11 @@ find . -type f -empty
find . -type f -empty -delete find . -type f -empty -delete
``` ```
##### Recursively count all the files in a directory
```bash
find . -type f | wc -l
```
## Condition and loop ## Condition and loop
[[back to top](#handy-bash-one-liners)] [[back to top](#handy-bash-one-liners)]
@ -991,7 +997,7 @@ find . -type f -empty -delete
if [[ "$c" == "read" ]]; then outputdir="seq"; else outputdir="write" ; fi if [[ "$c" == "read" ]]; then outputdir="seq"; else outputdir="write" ; fi
# Test if myfile contains the string 'test': # Test if myfile contains the string 'test':
if grep -q hello myfile; then if grep -q hello myfile; then echo -e "file contains the string!" ; fi
# Test if mydir is a directory, change to it and do other stuff: # Test if mydir is a directory, change to it and do other stuff:
if cd mydir; then if cd mydir; then
@ -1001,9 +1007,12 @@ else
fi fi
# if variable is null # if variable is null
if [ ! -s "myvariable" ] if [ ! -s "myvariable" ]; then echo -e "variable is null!" ; fi
#True of the length if "STRING" is zero. #True of the length if "STRING" is zero.
# Using test command (same as []), to test if the length of variable is nonzero
test -n "$myvariable" && echo myvariable is "$myvariable" || echo myvariable is not set
# Test if file exist # Test if file exist
if [ -e 'filename' ] if [ -e 'filename' ]
then then
@ -1017,16 +1026,17 @@ then
fi fi
# Test if the value of x is greater or equal than 5 # Test if the value of x is greater or equal than 5
if [ "$x" -ge 5 ]; then if [ "$x" -ge 5 ]; then echo -e "greater or equal than 5!" ; fi
# Test if the value of x is greater or equal than 5, in bash/ksh/zsh: # Test if the value of x is greater or equal than 5, in bash/ksh/zsh:
if ((x >= 5)); then if ((x >= 5)); then echo -e "greater or equal than 5!" ; fi
# Use (( )) for arithmetic operation # Use (( )) for arithmetic operation
if ((j==u+2)) if ((j==u+2)); then echo -e "j==u+2!!" ; fi
# Use [[ ]] for comparison # Use [[ ]] for comparison
if [[ $age -gt 21 ]] if [[ $age -gt 21 ]]; then echo -e "forever 21!!" ; fi
``` ```
[More if commands](http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html) [More if commands](http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html)
@ -1107,9 +1117,21 @@ date +%F
date +'%d-%b-%Y-%H:%M:%S' date +'%d-%b-%Y-%H:%M:%S'
# 10-Apr-2020-21:54:40 # 10-Apr-2020-21:54:40
# returns the current time with nanoseconds. # Returns the current time with nanoseconds.
date +"%T.%N" date +"%T.%N"
# 11:42:18.664217000 # 11:42:18.664217000
# Get the seconds since epoch (Jan 1 1970) for a given date (e.g Mar 16 2021)
date -d "Mar 16 2021" +%s
# 1615852800
# or
date -d "Tue Mar 16 00:00:00 UTC 2021" +%s
# 1615852800
# Convert the number of seconds since epoch back to date
date --date @1615852800
# Tue Mar 16 00:00:00 UTC 2021
``` ```
##### wait for random duration (e.g. sleep 1-5 second, like adding a jitter) ##### wait for random duration (e.g. sleep 1-5 second, like adding a jitter)
@ -1222,7 +1244,7 @@ shuf -n 100 filename
##### Random order (lucky draw) ##### Random order (lucky draw)
```bash ```bash
for i in a b c d e; do echo $i; done| shuf for i in a b c d e; do echo $i; done | shuf
``` ```
##### Echo series of random numbers between a range (e.g. shuffle numbers from 0-100, then pick 15 of them randomly) ##### Echo series of random numbers between a range (e.g. shuffle numbers from 0-100, then pick 15 of them randomly)
@ -1711,6 +1733,18 @@ du -h
du -sk /var/log/* |sort -rn |head -10 du -sk /var/log/* |sort -rn |head -10
``` ```
##### check the Inode utilization
```
df -i
# Filesystem Inodes IUsed IFree IUse% Mounted on
# devtmpfs 492652 304 492348 1% /dev
# tmpfs 497233 2 497231 1% /dev/shm
# tmpfs 497233 439 496794 1% /run
# tmpfs 497233 16 497217 1% /sys/fs/cgroup
# /dev/nvme0n1p1 5037976 370882 4667094 8% /
# tmpfs 497233 1 497232 1% /run/user/1000
```
##### Show all file system type ##### Show all file system type
```bash ```bash
df -TH df -TH
@ -2167,6 +2201,7 @@ sar -n ALL
# reading SAR log file using -f # reading SAR log file using -f
sar -f /var/log/sa/sa31|tail sar -f /var/log/sa/sa31|tail
```
##### Reading from journal file ##### Reading from journal file
```bash ```bash
@ -2881,6 +2916,13 @@ cal
# only display November # only display November
cal -m 11 cal -m 11
``` ```
##### Convert the hexadecimal MD5 checksum value into its base64-encoded format.
```bash
openssl md5 -binary /path/to/file| base64
# NWbeOpeQbtuY0ATWuUeumw==
```
##### Forces applications to use the default language for output ##### Forces applications to use the default language for output
```bash ```bash
export LC_ALL=C export LC_ALL=C
@ -3142,8 +3184,7 @@ yes n
# or 'anything': # or 'anything':
yes anything yes anything
# For example: # pipe yes to other command
```bash
yes | rm -r large_directory yes | rm -r large_directory
``` ```
@ -3202,6 +3243,9 @@ q -d "," "select c3,c4,c5 from /path/to/file.txt where c3='foo' and c5='boo'"
# Create session and attach: # Create session and attach:
screen screen
# Create a screen and name it 'test'
screen -S test
# Create detached session foo: # Create detached session foo:
screen -S foo -d -m screen -S foo -d -m
@ -3220,16 +3264,17 @@ screen -r foo
# Kill session foo: # Kill session foo:
screen -r foo -X quit screen -r foo -X quit
# Scroll: # Scroll:
Hit your screen prefix combination (C-a / control+A), then hit Escape. # Hit your screen prefix combination (C-a / control+A), then hit Escape.
Move up/down with the arrow keys (↑ and ↓). # Move up/down with the arrow keys (↑ and ↓).
# Redirect output of an already running process in Screen: # Redirect output of an already running process in Screen:
(C-a / control+A), then hit 'H' # (C-a / control+A), then hit 'H'
# Store screen output for Screen: # Store screen output for Screen:
Ctrl+A, Shift+H # Ctrl+A, Shift+H
# You will then find a screen.log file under current directory. # You will then find a screen.log file under current directory.
``` ```
##### Using Tmux for multiple terminal sessions ##### Using Tmux for multiple terminal sessions