mirror of
https://github.com/onceupon/Bash-Oneliner.git
synced 2025-07-07 21:39:56 +02:00
Compare commits
7 Commits
6576e5a685
...
master
Author | SHA1 | Date | |
---|---|---|---|
f9619440da | |||
3199d638ae | |||
80c5012f38 | |||
6479b26656 | |||
7cfb4e286c | |||
88e095d5fc | |||
212326d7a3 |
87
README.md
87
README.md
@ -238,6 +238,12 @@ eval "$cmd"
|
|||||||
echo "$bar" # foo
|
echo "$bar" # foo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### Record a terminal session
|
||||||
|
```bash
|
||||||
|
# https://github.com/asciinema/asciinema
|
||||||
|
asciinema rec demo.cast
|
||||||
|
```
|
||||||
|
|
||||||
## Math
|
## Math
|
||||||
[[back to top](#handy-bash-one-liners)]
|
[[back to top](#handy-bash-one-liners)]
|
||||||
##### Arithmetic Expansion in Bash (Operators: +, -, *, /, %, etc)
|
##### Arithmetic Expansion in Bash (Operators: +, -, *, /, %, etc)
|
||||||
@ -545,7 +551,7 @@ sed -i '$ s/.$//' filename
|
|||||||
|
|
||||||
##### Add string to beginning of file (e.g. "\[")
|
##### Add string to beginning of file (e.g. "\[")
|
||||||
```bash
|
```bash
|
||||||
sed -i '1s/^/[/' file
|
sed -i '1s/^/[/' filename
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Add string at certain line number (e.g. add 'something' to line 1 and line 3)
|
##### Add string at certain line number (e.g. add 'something' to line 1 and line 3)
|
||||||
@ -564,7 +570,7 @@ sed '$a\'
|
|||||||
|
|
||||||
##### Add string to beginning of every line (e.g. 'bbo')
|
##### Add string to beginning of every line (e.g. 'bbo')
|
||||||
```bash
|
```bash
|
||||||
sed -e 's/^/bbo/' file
|
sed -e 's/^/bbo/' filename
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Add string to end of each line (e.g. "}")
|
##### Add string to end of each line (e.g. "}")
|
||||||
@ -577,6 +583,13 @@ sed -e 's/$/\}\]/' filename
|
|||||||
sed 's/.\{4\}/&\n/g'
|
sed 's/.\{4\}/&\n/g'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### Add a line after the line that matches the pattern (e.g. add a new line with "world" after the line with "hello")
|
||||||
|
```bash
|
||||||
|
sed '/hello*/a world' filename
|
||||||
|
# hello
|
||||||
|
# world
|
||||||
|
```
|
||||||
|
|
||||||
##### Concatenate/combine/join files with a separator and next line (e.g separate by ",")
|
##### Concatenate/combine/join files with a separator and next line (e.g separate by ",")
|
||||||
```bash
|
```bash
|
||||||
sed -s '$a,' *.json > all.json
|
sed -s '$a,' *.json > all.json
|
||||||
@ -685,7 +698,7 @@ sed '$ s/.$//'
|
|||||||
|
|
||||||
##### Insert character at specified position of file (e.g. AAAAAA --> AAA#AAA)
|
##### Insert character at specified position of file (e.g. AAAAAA --> AAA#AAA)
|
||||||
```bash
|
```bash
|
||||||
sed -r -e 's/^.{3}/&#/' file
|
sed -r -e 's/^.{3}/&#/' filename
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -740,7 +753,7 @@ awk -v N=7 '{print}/bbo/&& --N<=0 {exit}'
|
|||||||
|
|
||||||
##### Print filename and last line of all files in directory
|
##### Print filename and last line of all files in directory
|
||||||
```bash
|
```bash
|
||||||
ls|xargs -n1 -I file awk '{s=$0};END{print FILENAME,s}' file
|
ls|xargs -n1 -I file awk '{s=$0};END{print FILENAME,s}' filename
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Add string to the beginning of a column (e.g add "chr" to column $3)
|
##### Add string to the beginning of a column (e.g add "chr" to column $3)
|
||||||
@ -750,12 +763,12 @@ awk 'BEGIN{OFS="\t"}$3="chr"$3'
|
|||||||
|
|
||||||
##### Remove lines with string (e.g. 'bbo')
|
##### Remove lines with string (e.g. 'bbo')
|
||||||
```bash
|
```bash
|
||||||
awk '!/bbo/' file
|
awk '!/bbo/' filename
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Remove last column
|
##### Remove last column
|
||||||
```bash
|
```bash
|
||||||
awk 'NF{NF-=1};1' file
|
awk 'NF{NF-=1};1' filename
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Usage and meaning of NR and FNR
|
##### Usage and meaning of NR and FNR
|
||||||
@ -820,7 +833,7 @@ awk '{printf("%s\t%s\n",NR,$0)}'
|
|||||||
# David cat
|
# David cat
|
||||||
# David dog
|
# David dog
|
||||||
|
|
||||||
awk '{split($2,a,",");for(i in a)print $1"\t"a[i]}' file
|
awk '{split($2,a,",");for(i in a)print $1"\t"a[i]}' filename
|
||||||
|
|
||||||
# Detail here: http://stackoverflow.com/questions/33408762/bash-turning-single-comma-separated-column-into-multi-line-string
|
# Detail here: http://stackoverflow.com/questions/33408762/bash-turning-single-comma-separated-column-into-multi-line-string
|
||||||
```
|
```
|
||||||
@ -934,7 +947,7 @@ find /dir/to/A -type f -name "*.py" -print 0| xargs -0 -r -I file cp -v -p file
|
|||||||
|
|
||||||
##### With sed
|
##### With sed
|
||||||
```bash
|
```bash
|
||||||
ls |xargs -n1 -I file sed -i '/^Pos/d' file
|
ls |xargs -n1 -I file sed -i '/^Pos/d' filename
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Add the file name to the first line of file
|
##### Add the file name to the first line of file
|
||||||
@ -1045,9 +1058,10 @@ else
|
|||||||
echo >&2 "Fatal error. This script requires mydir."
|
echo >&2 "Fatal error. This script requires mydir."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# if variable is null
|
# Check if a variable is null
|
||||||
if [ ! -s "myvariable" ]; then echo -e "variable is null!" ; fi
|
if [ -z "$var" ]; then echo "NULL"; else echo "Not NULL"; fi
|
||||||
#True of the length if "STRING" is zero.
|
# or
|
||||||
|
[ -z "$var" ] && echo "NULL"
|
||||||
|
|
||||||
# Using test command (same as []), to test if the length of variable is nonzero
|
# 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 -n "$myvariable" && echo myvariable is "$myvariable" || echo myvariable is not set
|
||||||
@ -1544,9 +1558,17 @@ stat filename.txt
|
|||||||
ps aux
|
ps aux
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### List processes by top memory usage
|
||||||
|
```bash
|
||||||
|
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
|
||||||
|
```
|
||||||
|
|
||||||
##### Display a tree of processes
|
##### Display a tree of processes
|
||||||
```bash
|
```bash
|
||||||
pstree
|
pstree
|
||||||
|
|
||||||
|
# or
|
||||||
|
ps aux --forest
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Find maximum number of processes
|
##### Find maximum number of processes
|
||||||
@ -1952,7 +1974,7 @@ ldconfig -p
|
|||||||
ldd /bin/ls
|
ldd /bin/ls
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Check user login
|
##### Check the most recent login of all users
|
||||||
```bash
|
```bash
|
||||||
lastlog
|
lastlog
|
||||||
```
|
```
|
||||||
@ -2265,7 +2287,12 @@ sar -f /var/log/sa/sa31|tail
|
|||||||
journalctl --file ./log/journal/a90c18f62af546ccba02fa3734f00a04/system.journal --since "2020-02-11 00:00:00"
|
journalctl --file ./log/journal/a90c18f62af546ccba02fa3734f00a04/system.journal --since "2020-02-11 00:00:00"
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Show a listing of last logged in users.
|
##### Show a listing of last logged in users
|
||||||
|
```bash
|
||||||
|
last
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Show a listing of unsuccessful (bad) login attempts
|
||||||
```bash
|
```bash
|
||||||
lastb
|
lastb
|
||||||
```
|
```
|
||||||
@ -2443,6 +2470,11 @@ dig +short www.example.com
|
|||||||
host www.example.com
|
host www.example.com
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### Check public IP address
|
||||||
|
```bash
|
||||||
|
curl http://checkip.amazonaws.com
|
||||||
|
```
|
||||||
|
|
||||||
##### Get DNS TXT record a of domain
|
##### Get DNS TXT record a of domain
|
||||||
```bash
|
```bash
|
||||||
dig -t txt www.example.com
|
dig -t txt www.example.com
|
||||||
@ -2483,7 +2515,7 @@ $ sudo nc -l 80
|
|||||||
|
|
||||||
##### Check which ports are listening for TCP connections from the network
|
##### Check which ports are listening for TCP connections from the network
|
||||||
```bash
|
```bash
|
||||||
#notice that some companies might not like you using nmap
|
# note that some companies might not like you using nmap
|
||||||
nmap -sT -O localhost
|
nmap -sT -O localhost
|
||||||
|
|
||||||
# check port 0-65535
|
# check port 0-65535
|
||||||
@ -2491,7 +2523,7 @@ nmap -p0-65535 localhost
|
|||||||
```
|
```
|
||||||
##### Check if a host is up and scan for open ports, also skip host discovery.
|
##### Check if a host is up and scan for open ports, also skip host discovery.
|
||||||
```bash
|
```bash
|
||||||
#skips checking if the host is alive which may sometimes cause a false positive and stop the scan.
|
# skips checking if the host is alive. this may sometimes cause a false positive, stopping the scan.
|
||||||
$ nmap google.com -Pn
|
$ nmap google.com -Pn
|
||||||
|
|
||||||
# Example output:
|
# Example output:
|
||||||
@ -2513,7 +2545,7 @@ $ nmap -A -T4 scanme.nmap.org
|
|||||||
# -A to enable OS and version detection, script scanning, and traceroute; -T4 for faster execution
|
# -A to enable OS and version detection, script scanning, and traceroute; -T4 for faster execution
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Look up website information (e.g. name server), searches for an object in a RFC 3912 database.
|
##### Look up website information (e.g. name server), searches for an object in a RFC 3912 database
|
||||||
```bash
|
```bash
|
||||||
whois google.com
|
whois google.com
|
||||||
```
|
```
|
||||||
@ -2523,7 +2555,7 @@ whois google.com
|
|||||||
openssl s_client -showcerts -connect www.example.com:443
|
openssl s_client -showcerts -connect www.example.com:443
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Display IP address
|
##### Display network interfaces and their associated IP addresses
|
||||||
```bash
|
```bash
|
||||||
ip a
|
ip a
|
||||||
```
|
```
|
||||||
@ -2583,6 +2615,10 @@ curl -I http://example.com/
|
|||||||
# Accept-Ranges: bytes
|
# Accept-Ranges: bytes
|
||||||
# Vary: Accept-Encoding
|
# Vary: Accept-Encoding
|
||||||
```
|
```
|
||||||
|
##### Find out the time spent between request and response
|
||||||
|
```
|
||||||
|
curl -v -o /dev/null -s -w 'Total: %{time_total}s\n' google.com
|
||||||
|
```
|
||||||
|
|
||||||
##### Find out the http status code of a URL
|
##### Find out the http status code of a URL
|
||||||
```bash
|
```bash
|
||||||
@ -2863,7 +2899,7 @@ echo -e 'text here \c'
|
|||||||
|
|
||||||
##### View first 50 characters of file
|
##### View first 50 characters of file
|
||||||
```bash
|
```bash
|
||||||
head -c 50 file
|
head -c 50 filename
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Cut and get last column of a file
|
##### Cut and get last column of a file
|
||||||
@ -2901,6 +2937,11 @@ cat >>myfile
|
|||||||
let me add sth here
|
let me add sth here
|
||||||
# exit with ctrl+d
|
# exit with ctrl+d
|
||||||
|
|
||||||
|
# or
|
||||||
|
cat << EoF >> filename
|
||||||
|
> add something here
|
||||||
|
> EoF
|
||||||
|
|
||||||
# or using tee
|
# or using tee
|
||||||
tee -a myfile
|
tee -a myfile
|
||||||
let me add sth else here
|
let me add sth else here
|
||||||
@ -2919,7 +2960,7 @@ echo 'hihi' >>filename
|
|||||||
|
|
||||||
##### Working with json data
|
##### Working with json data
|
||||||
```bash
|
```bash
|
||||||
#install the useful jq package
|
# Install the useful jq package
|
||||||
# sudo apt-get install jq
|
# sudo apt-get install jq
|
||||||
# e.g. to get all the values of the 'url' key, simply pipe the json to the following jq command(you can use .[]. to select inner json, i.e jq '.[].url')
|
# e.g. to get all the values of the 'url' key, simply pipe the json to the following jq command(you can use .[]. to select inner json, i.e jq '.[].url')
|
||||||
cat file.json | jq '.url'
|
cat file.json | jq '.url'
|
||||||
@ -2994,7 +3035,7 @@ while read a b; do yes $b |head -n $a ; done <test.txt
|
|||||||
## Others
|
## Others
|
||||||
[[back to top](#handy-bash-one-liners)]
|
[[back to top](#handy-bash-one-liners)]
|
||||||
|
|
||||||
##### Describe the format and characteristics of image files.
|
##### Describe the format and characteristics of image files
|
||||||
```bash
|
```bash
|
||||||
identify myimage.png
|
identify myimage.png
|
||||||
#myimage.png PNG 1049x747 1049x747+0+0 8-bit sRGB 1.006MB 0.000u 0:00.000
|
#myimage.png PNG 1049x747 1049x747+0+0 8-bit sRGB 1.006MB 0.000u 0:00.000
|
||||||
@ -3270,6 +3311,12 @@ scp -r directoryname user@ip:/path/to/send
|
|||||||
# :(){:|:&};:
|
# :(){:|:&};:
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### Trigger kernel crash
|
||||||
|
```bash
|
||||||
|
# Don't try this at home!
|
||||||
|
echo c > /proc/sysrq-trigger
|
||||||
|
```
|
||||||
|
|
||||||
##### Use the last argument
|
##### Use the last argument
|
||||||
```bash
|
```bash
|
||||||
!$
|
!$
|
||||||
|
Reference in New Issue
Block a user