==== tasks ==== * [[add numbers on the command line]] * [[du on month end dates]] * [[change the default shell]] * [[Which shell am I using | Which shell am I using?]] * [[Difference between SHELL and 0 | What is the difference between \$SHELL and \$0?]] ==== what is my OS? ==== awk -F= '$1=="ID" {print $2}' /etc/os-release Sample run: % cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" % awk -F= '$1=="ID" {print $2}' /etc/os-release debian Ref: * I came across it in https://github.com/trimclain/.dotfiles/blob/main/Makefile ==== last reboot times ==== last reboot --time-format full Sample run % last reboot --time-format full reboot system boot 5.10.0-17-amd64 Tue Dec 6 08:18:33 2022 still running reboot system boot 5.10.0-17-amd64 Tue Dec 6 08:11:34 2022 - Tue Dec 6 08:17:36 2022 (00:06) reboot system boot 5.10.0-17-amd64 Tue Dec 6 07:41:53 2022 - Tue Dec 6 08:11:01 2022 (00:29) reboot system boot 5.10.0-17-amd64 Sat Dec 3 13:18:10 2022 - Tue Dec 6 08:11:01 2022 (2+18:52) reboot system boot 5.10.0-17-amd64 Sat Dec 3 13:04:06 2022 - Tue Dec 6 08:11:01 2022 (2+19:06) reboot system boot 5.10.0-17-amd64 Wed Nov 16 11:18:41 2022 - Tue Dec 6 08:11:01 2022 (19+20:52) reboot system boot 5.10.0-17-amd64 Mon Sep 5 21:26:07 2022 - Wed Nov 16 11:18:01 2022 (71+14:51) reboot system boot 5.10.0-16-amd64 Mon Aug 15 05:27:05 2022 - Mon Sep 5 19:36:09 2022 (21+14:09) reboot system boot 5.10.0-16-amd64 Mon Aug 1 17:56:22 2022 - Mon Aug 15 05:26:20 2022 (13+11:29) ... {{tag>["reboot history" "show year" "date format"]}} ==== ls and mv ==== Sample command ls -rt *.txt | tail -n5 | tr '\n' '\0' | xargs -0 -i% mv % x1 Notes: * Works even if there are spaces in the filenames. Compare this with mv `ls -rt *.txt | tail -n5` x1 which will not work if there are spaces in the filenames. * Does not work if the filenames contain newline characters. Ref:- https://stackoverflow.com/a/937965/6305733 Related commands ls -rt *.txt | tail -n5 | tr '\n' '\0' | xargs -0 -i% md5sum % ==== remove large directories ==== Use rsync to delete large directories. mkdir empty_dir rsync -a --delete empty_dir/ yourdirectory/ As per https://unix.stackexchange.com/questions/37329/efficiently-delete-large-directory-containing-thousands-of-files, it is more efficient than running "rm -rf" or some combination of find + "rm -rf". ==== stackoverflow answers I came across ==== * prepend to a file - https://stackoverflow.com/questions/10587615/unix-command-to-prepend-text-to-a-file * remove leading and trailing spaces - https://unix.stackexchange.com/a/102021/198064 * search for a string and count the number of characters per line - https://unix.stackexchange.com/questions/400650/counting-the-characters-of-each-line-with-wc ==== get file modified time in shell script ==== date +%Y%m%d_%H%M%S -r $input_file Used it in | https://github.com/KamarajuKusumanchi/rutils/blob/master/python3/black_on_selected.sh Found it in | https://stackoverflow.com/questions/16391208/print-a-files-last-modified-date-in-bash ==== tput: unknown terminal "xterm-256color" ==== When I moved my miniconda3 installation from /home/rajulocal/miniconda3 to /opt/rajulocal/miniconda3, I started getting tput: unknown terminal "xterm-256color" To fix it, I did conda install --force-reinstall ncurses It turns out that the --fore-reinstall option was important since simply doing conda install ncurses was not installing ncurses as it was already uptodate. Ref:- https://stackoverflow.com/questions/32798940/tput-unknown-terminal-xterm-256color