= CLI tools == GNU coreutils === less -r interpret ANSI esc -S toggle long line support == coreutils alternatives ack ag cat bat https://github.com/sharkdp/bat gat https://github.com/koki-develop/gat cd fzf https://github.com/junegunn/fzf zoxide https://github.com/ajeetdsouza/zoxide cut choose https://github.com/theryangeary/choose curl curlie https://github.com/rs/curlie diff delta https://github.com/dandavison/delta df duf https://github.com/muesli/duf dig dog https://github.com/ogham/dog dmesg rmesg https://github.com/polyverse/rmesg du dust https://github.com/bootandy/dust find fd https://github.com/sharkdp/fd grep ripgrep https://github.com/BurntSushi/ripgrep history mcfly https://github.com/cantino/mcfly ls exa https://github.com/ogham/exa lsd https://github.com/lsd-rs/lsd ping gping https://github.com/orf/gping ps procs https://github.com/dalance/procs sed sd https://github.com/chmln/sd time hyperfine https://github.com/sharkdp/hyperfine top bottom https://github.com/ClementTsang/bottom glances https://github.com/nicolargo/glances gtop https://github.com/aksakalli/gtop ytop https://github.com/cjbassi/ytop tree broot https://github.com/Canop/broot wc tokei == not alternatives but useful CLI tools grex CLI tool to generate regex based on user strings tealdeer tldr-reimplementation bandwhich iperf3 alternative jq JSON filtering and querying fq tool, language and decoders for working with binary and text formats jc jc JSONifies the output of many CLI tools for easier parsing https://github.com/kellyjonbrazil/jc cheat cheat allows you to create and view interactive CLI cheatsheets https://github.com/cheat/cheat tldr Collaborative cheatsheets for console commands https://github.com/tldr-pages/tldr hyperfine command-line benchmarking tool https://github.com/sharkdp/hyperfine httpie modern, user-friendly command-line HTTP client for the API era https://github.com/httpie/cli xh friendly and fast tool for sending HTTP requests https://github.com/ducaale/xh up piping in an interactive manner https://github.com/akavel/up == gdb r run until breakpoint/end b breakpoint at function b breakpoint at LOC b : breakpoint at LOC of file d delete breakpoint N info break information about breakpoints c continue until next breakpoint f continue until end of function s step LOC s step N LOCs p print variable set = set variable to value bt print backtrace q quit info threads information about threads t load the context/backtrace of thread N == rsync === synchronization rsync -ravz /media/data/ /media/extF/ == restic restic -r $REPO_IDENTIFIER restore --path '/home/username/' --include 'some/filepath/relative/to/username/Pictures/' -t /tmp latest == convert/imagemagick convert image to smaller size than 800px width and 600px height: convert -resize "800x600>" "INPUT.png" "${OUTPUT:r}.small.png" # both values are smaller 800/600 convert -resize "800x600^" "INPUT.png" "${OUTPUT:r}.small.png" # one of the values is smaller 800/600 == ffmpeg reencode in lossful OGV (here: file size increased 14×): ffmpeg -i src.mkv -c:v libtheora -q:v 10 -c:a libvorbis dst.ogv shorten a video: ffmpeg -i src.MTS -ss 0:0:0 -to 0:0:23 dst.mp4 crop a video: ffmpeg -i src.mkv -filter:v "crop=1280:766:0:34" dst.mkv ffmpeg -codecs ffmpeg -i input.mp4 -strict -2 -vf scale=540:960 output.mp4 ffmpeg -i input.vob -vf yadif -c:v libx264 -preset slow -crf 19 -c:a aac -b:a 256k output.mp4 ffmpeg -i input.mp4 -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis output.webm ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 output.mp4 ffmpeg -i input.mp4 -c copy -an output.noaudio.mp4 ffmpeg -i input.mp4 -vf "transpose=2" output.mp4 ffmpeg -i input.MTS -ss 00:00 -to 00:23 -vcodec mjpeg -b 100M output.mp4 ffmpeg -i input.MTS -vcodec mpeg4 -b:v 15M -acodec libmp3lame -b:a 192k -ss 04:30 -to 05:15 output.mp4 ffmpeg -i input.MTS -vcodec mpeg4 -vf "transpose=1" -b:v 15M -acodec libmp3lame -b:a 192k output.mp4 ffmpeg -i input.mp4 -codec:a libmp3lame -qscale:a 2 output.mp3 ffmpeg -i input.MTS -vcodec mpeg4 -vf "transpose=1" -b:v 15M -acodec libmp3lame -b:a 192k output.MP4 ffmpeg -i input.MTS -vcodec mpeg4 -b:v 15M -acodec libmp3lame -b:a 192k output.MP4 ffmpeg -i input.mp4 -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis output.webm ffmpeg -i input.mp4 -vf scale=540:960 -c:v libvpx -crf 10 -b:v 1M -strict -2 output.small.mp4 ffmpeg -i input.mp4 -strict -2 -vf scale=540:960 output.small.mp4 ffmpeg -i input.webm -c:v libvpx -vf scale=540:960 -crf 10 -b:v 1M -c:a libvorbis output.small.webm ffmpeg -i input.large.webm -c:v libvpx -vf scale=540:960 -crf 10 -b:v 1M -c:a libvorbis output.small.webm ffmpeg -i input.mp4 -vcodec mpeg4 -b:v 15M -acodec libmp3lame -b:a 192k -ss 00:02 -to 02:28 output.mp4 ffmpeg -i input.mp4 -strict -2 -vf scale=540:960 output.mp4 == tar === tar archive tar cfv ARCHIVE.tar FOLDER tar xfC ARCHIVE.tar DESTINATIONFOLDER === tar.gz archive tar czf ARCHIVE.tar.gz FOLDER tar xfC ARCHIVE.tar.gz DESTINATIONFOLDER === tar.bz2 archive tar cjfv ARCHIVE.tar.bz2 FOLDER tar xjfC ARCHIVE.tar.bz2 DESTINATIONFOLDER == usecase: create a tar archive of a folder for an upload to the server # (1) create archive tar -C $PWD --no-recursion --exclude-backups --totals -cjv -f myarchive.tar.bz2 fileA folderX # it makes a difference whether you specify "./fileA" or "fileA" !! # (2) upload archive # (3) decompress archive tar -x -f myarchive.tar.bz2