check what listening on port 80
sudo ss -nltp | grep 80
encrypting compressed folder
tar cz my_folder/ | openssl enc -aes-256-cbc -e > encrypted.tar.gz.enc
list number of zombies in a system
ps auxwf | grep defunc | wc -l
checking if variable is unset or null
test -z ${x:+word} && echo 'unset or null' || echo "value=$x"
saving exit code during piping
mvn clean install $@ | tee $logfile
echo ${PIPESTATUS[0]}
multiple arguments for xargs
xargs -I XXX sh -c 'command1 XXX; command2 XXX; ...'
list all open connections
lsof -i
only tcp
lsof -i tcp
sending & receiving message using netcat & telnet
nc -l 1080 > msg.txt
echo 'message to send' | telnet localhost 1080
sending & receiving message using only netcat
nc -l 1080 > msg.txt
echo 'message to send' | nc localhost 1080
split string into chars
echo 'alamakota' | fold -w 1
example of process substitution
cat <(date) <(date)
watch statistic from sar every 10s since 2 hour ago till now
watch -n 10 "sar -s $(date +'%H:%M:%S' -d '2 hour ago')"
example of using apache bench (ab) to post json (req=5000 concurrency = 5, -k = keep alive)
ab -k -c 5 -n 5000 -p payload.json -T application/json -H 'Authorization: Token abcd1234' http://localhost:8080/api/v1/xxxx
print a seq of numbers
for i in $(seq 1 2 10); do echo $i; done
display WM_CLASS property for a clicked app
xprop WM_CLASS
Add an existing user to existing group (-a
means append, -G
means secondary group)
usermod -a -G ftp tony
```bash
list of all puslaudio sinks
```bash
pactl list sinks | grep -E 'Sink #[0-9]'
extracted list of pulsuadio sinks' ids
pactl list sinks | grep -E 'Sink #[0-9]' | cut -d '#' -f 2
toggle mute/unmute first sink
pactl list sinks | grep -E 'Sink #[0-9]' | cut -d '#' -f 2 | head -1 | xargs -I XXX pactl set-sink-mute XXX toggle
bump version
grep 2.14.1.0-SNAPSHOT **/*.xml | while IFS=: read -A line; do echo $line[1]; sed -i -e 's#<version>2.14.1.0-SNAPSHOT</version>#<version>2.14.2.0-SNAPSHOT</version>#g' $line[1]; done
grep 2.14.1.0-SNAPSHOT **/*.xml | while IFS=: read -A line; do echo $line[1]; sed -i -e 's#2.14.1.0-SNAPSHOT#2.14.2.0-SNAPSHOT#g' $line[1]; done
revert all changes
git status | while IFS=: read -A line; do echo $line[2]; gco -- $line[2]; done
copy remote to local ignoring symbolic links
rsync --progress -avhe ssh [email protected]:~/some_dir .
copy a content of remote some_dir to loacal, ignoring 'target' dir to current local dir
rsync --progress -avhe ssh --exclude 'target' [email protected]:~/some_dir/* .
copy local to remote, using ssh (-e ssh
), progress (-P
), archive (-a
), verbose(-v
), humna readable numbers (-h
)
rsync -avhP -e ssh ~/local_dir username@remote_host:destination_directory
delete specific character
echo "the geek stuff" | tr -d 't'
replace t with d
echo "the geek stuff" | tr 't' 'd'
convert lower case to upper case
echo "the geek stuff" | tr [:lower:] [:upper:]
echo "the geek stuff" | tr a-z A-Z
echo "the geek stuff" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
print all lines excepts first 10
cat file.txt | tail -n +11
initialize gitignore file, requires ~/.oh-my-zsh/plugins/gitignore plugin to be enabled
for s in maven java idea intellij eclipse gradle; do gi $s >> .gitignore; done
subtract 1 hour from date
date -d '1 hour ago'
date formatting
date +"%Y%m%d%H%M%S"
date from unix ts
date -d @1267619929
remove a line in a file matchin patter
sed -i "/pattern/d" file
remove empty line in a file
sed -i '/^$/d'
modify line in a file matching pattern1
sed -i "s/pattern1/pattern2/" file
echo something into stderr
(1>&2 echo "something")
redirect everything into file
(exec &> system.out; echo "something 1"; echo "something 2")
find all files matching regex and changed in last 24 hours
find . -mtime -1 -iregex "./model.*out"
find all files matching regex and not changed in last 24 hours - changed time > 24 hours
find . -mtime +1 -iregex "./model.*out"
puts last line from history to the editor
fc
read all lines from input - reads also last line without line end char
echo -n 'xxx' | while read line || [ -n "$line" ]; do echo $line; done
dirname of the currently executed scrip
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if statements
[[ -z $profile ]] && echo "profile not set" || echo "profile: $profile"
[[ -e "file.cfg" ]] && echo "file.cfg exists"
serve current dir using http
docker run --rm -p 8080:80 -v $(pwd):/usr/share/nginx/html:ro nginx
produce record in kafka
echo 'key:value' | kafkacat -P -b localhost:9092 -t hello-world -K:
remove record from kafka in comacted mode
echo 'key:' | kafkacat -P -b localhost:9092 -t hello-world -Z -K:
read records from kafka
kafkacat -C -b localhost:9092 -t hello-world -f '%k:%s\n' -o beginning
git clone using a given ssh key
git clone -c core.sshCommand="ssh -v -i /home/sledzs/.ssh/xxx/id_rsa" $1