Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
####### # # E-scripts on basic Unix utilities. # # Note 1: use the eev command (defined in eev.el) and the # ee alias (in my .zshrc) to execute parts of this file. # Executing this file as a whole makes no sense. # An introduction to eev can be found here: # # (find-eev-quick-intro) # http://angg.twu.net/eev-intros/find-eev-quick-intro.html # # Note 2: be VERY careful and make sure you understand what # you're doing. # # Note 3: If you use a shell other than zsh things like |& # and the for loops may not work. # # Note 4: I always run as root. # # Note 5: some parts are too old and don't work anymore. Some # never worked. # # Note 6: the definitions for the find-xxxfile commands are on my # .emacs. # # Note 7: if you see a strange command check my .zshrc -- it may # be defined there as a function or an alias. # # Note 8: the sections without dates are always older than the # sections with dates. # # This file is at <http://angg.twu.net/e/unix.e> # or at <http://angg.twu.net/e/unix.e.html>. # See also <http://angg.twu.net/emacs.html>, # <http://angg.twu.net/.emacs[.html]>, # <http://angg.twu.net/.zshrc[.html]>, # <http://angg.twu.net/escripts.html>, # and <http://angg.twu.net/>. # ####### # «.find» (to "find") # «.locate» (to "locate") # «.environment» (to "environment") # «.signals» (to "signals") # «.busybox» (to "busybox") # # «.chmod» (to "chmod") # «.chown» (to "chown") # «.col» (to "col") # «.basename» (to "basename") # «.comm» (to "comm") # «.cp» (to "cp") # «.cut» (to "cut") # «.date» (to "date") # «.dd» (to "dd") # «.du» (to "du") # «.echo-n» (to "echo-n") # «.env» (to "env") # «.shebang» (to "shebang") # «.file» (to "file") # «.grep» (to "grep") # «.ifconfig» (to "ifconfig") # «.ip» (to "ip") # «.killall» (to "killall") # «.ls» (to "ls") # «.md5sum» (to "md5sum") # «.mv-T» (to "mv-T") # «.nice» (to "nice") # «.ps» (to "ps") # «.pwd» (to "pwd") # «.stat» (to "stat") # «.tar» (to "tar") # «.top» (to "top") # «.tr» (to "tr") # «.type» (to "type") # «.unzip» (to "unzip") # «.which» (to "which") # «.xargs» (to "xargs") # # «.coreutils-src» (to "coreutils-src") # «.cli-coreutils» (to "cli-coreutils") # «.unix-works» (to "unix-works") # «.pipes» (to "pipes") # «.dev-full» (to "dev-full") # «.tmp» (to "tmp") # «.e1f-guide» (to "e1f-guide") ##### # # find # 2014jan14 # ##### # «find» (to ".find") # (find-node "(find)Top") # (find-node "(find)Age Ranges" "-atime") # (find-node "(find)Age Ranges" "-atime" "last accessed") # (find-node "(find)Age Ranges" "-atime" "last accessed" "N*24 hours ago") # (find-node "(find)Comparing Timestamps" "-cnewer") # (find-node "(find)Comparing Timestamps" "find . -newer /bin/sh") # (find-status "findutils") # (find-vldifile "findutils.list") # (find-udfile "findutils/") # (find-es "bash" "redirection") # (find-man "1 find") # (find-man "1 find" "EXAMPLES") # (find-man "1 find" "\nEXAMPLES\n") # (find-man "1 find" "-type f") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) # (find-sh "find ~ -atime 0") # (find-sh "find ~ -mmin 20") # (find-sh "find /tmp -mmin 20") # (find-sh "find /var -mmin -20") # (find-sh "find /var -mmin -20 2> /dev/null") # (find-sh "find ~ -mmin -20 2> /dev/null") https://news.ycombinator.com/item?id=29292830 An intro to finding things in Linux (madebygps.com) (info "(find)") ##### # # locate # 2018nov14 # ##### # «locate» (to ".locate") # (find-sh "locate locate") # (find-status "locate") # (find-vldifile "locate.list") # (find-udfile "locate/") # (find-status "findutils") # (find-vldifile "findutils.list") # (find-udfile "findutils/") # (find-node "(find)Invoking locate") # (find-man "1 updatedb") ##### # # environment # 2018nov14 # ##### # «environment» (to ".environment") # (to "env") # (find-node "(libc)Running a Command") # (find-node "(libc)Program Basics") # (find-node "(libc)Environment Variables") ##### # # signals # 2019aug11 # ##### # «signals» (to ".signals") # https://en.wikipedia.org/wiki/Signal_(IPC) # https://en.wikipedia.org/wiki/Signal_(IPC)#SIGINT # (find-node "(libc)Signal Handling") # (find-node "(libc)Termination Signals" "SIGINT") # (find-node "(libc)Termination Signals" "SIGINT" "C-c") # (find-node "(libc)Special Characters") # (find-man "1 kill") # (find-sh "kill -l") # (find-sh "/bin/kill --list") # (find-sh "/bin/kill -L") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) w kill 'kill' --list ##### # # What utils are in busybox? # 2018nov19 # ##### # «busybox» (to ".busybox") # (find-es "busybox") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) locate bin/busybox /bin/busybox busybox --list busybox uniq --help f () { echo "# (find-sh \"busybox $1 --help\")"; } f uniq for i in $(busybox --list); do f $i; done | tee /tmp/o # (find-fline "/tmp/o") # (find-sh "busybox [ --help") # (find-sh "busybox [[ --help") # (find-sh "busybox acpid --help") # (find-sh "busybox adjtimex --help") # (find-sh "busybox ar --help") # (find-sh "busybox arch --help") # (find-sh "busybox arp --help") # (find-sh "busybox arping --help") # (find-sh "busybox ash --help") # (find-sh "busybox awk --help") # (find-sh "busybox bc --help") ##### # # chmod # 2024may26 # ##### # «chmod» (to ".chmod") # (find-man "1 chmod") # (find-node "(coreutils)chmod invocation") # (find-sh "busybox chmod --help") ##### # # chown # 2024may26 # ##### # «chown» (to ".chown") # (find-man "1 chown") # (find-node "(coreutils)chown invocation") # (find-sh "busybox chown --help") # (find-esgrep "grep --color=auto -nH --null -e chown *.e") ##### # # col # 2018nov19 # ##### # «col» (to ".col") # (find-status "bsdmainutils") # (find-vldifile "bsdmainutils.list") # (find-udfile "bsdmainutils/") # (find-man "1 col") # (find-man "1 colcrt") # (find-man "1 calendar") # (find-man "1 column") ##### # # basename # 2018nov19 # ##### # «basename» (to ".basename") # (find-status "coreutils") # (find-vldifile "coreutils.list") # (find-udfile "coreutils/") # (find-angggrep "grep --color -nH -e '$(' .zshrc") # (find-man "1 basename") # (find-sh "busybox basename --help") ##### # # comm # 2023apr28 # ##### # «comm» (to ".comm") # (find-man "1 comm") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) # (find-fline "/tmp/comm/") rm -Rv /tmp/comm/ mkdir /tmp/comm/ cd /tmp/comm/ for i in 1 3 5 7; do echo $i >> file1; done for i in 2 3 6 7; do echo $i >> file2; done cat file1 cat file2 # column 1, file1 only - 1 5 # column 2, file2 only - 2 6 # column 3, both files - 3 7 comm file1 file2 ;# all three colums: file1 only, file2 only, common comm -12 file1 file2 ;# suppress cols 1 and 2 - show only common lines comm -13 file1 file2 ;# suppress cols 1 and 3 - show lines only in file2 comm -23 file1 file2 ;# suppress cols 2 and 3 - show lines only in file1 comm -3 file1 file2 ##### # # cp # 2023sep23 # ##### # «cp» (to ".cp") # (find-man "1 cp") # (find-node "(coreutils)cp invocation") # (find-sh "cp --help") # (find-sh "cp --help" "-s, --symbolic-link") # (find-sh "cp --help" "-u, --update") # (find-sh "busybox cp --help") ##### # # cut # 2022sep19 # ##### # «cut» (to ".cut") # (find-man "1 cut") # (find-sh "busybox cut --help") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) seq 10 20 seq 10 20 | head -n 1 seq 10 20 | head -n -1 seq 10 20 | tail -n +2 # (find-man "head") ##### # # date # 2018nov19 # ##### # «date» (to ".date") # (find-angg ".emacs" "date") # (find-status "coreutils") # (find-vldifile "coreutils.list") # (find-udfile "coreutils/") # (find-man "1 date") # (find-man "1 date" "-d, --date=STRING") # (find-man "1 date" "%j" "day of year") # (find-node "(coreutils)Date input formats") # (find-node "(coreutils)Pure numbers in date strings") # (find-sh "busybox date --help") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) date -d 20181101 date -d 2018-11-01 date -d 20181104 date -d 2018-11-04 * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) ndays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} for month=1,12 do for day=1,ndays[month] do local date = format("2018%02d%02d", month, day) local yday = getoutput(format("date -d %s +%%j", date)) local yday = split(yday)[1] print(date, yday) end end date -d ##### # # dd # 2024feb06 # ##### # «dd» (to ".dd") # (find-esgrep "grep --color=auto -nHw --null -e dd *.e") # (find-node "(coreutils)dd invocation") # (find-node "(coreutils)dd invocation" "status=LEVEL") # (find-node "(coreutils)dd invocation" "status=LEVEL" "progress") # (find-man "1 dd") # (find-es "debian" "debian-pen-drive-2020") # (find-es "debian" "debian-pen-drive-2020" "status=progress") # (find-sh "busybox dd --help") ##### # # du # 2022nov24 # ##### # «du» (to ".du") # (find-man "1 du") # (find-man "1 du" "-c, --total") # (find-man "1 du" "-h, --human-readable") # (find-man "1 du" "-s, --summarize") # (find-man "1 du" "-d, --max-depth=N") # (find-sh "busybox du --help") ##### # # echo -n # 2021oct10 # ##### # «echo-n» (to ".echo-n") # (find-man "1 echo") # (find-man "1 echo" "-n" "do not output the trailing newline") # (find-sh "busybox echo --help") <edrx> btw <edrx> I used zsh for everything for ages, only used other shells very occasionally <edrx> and only started using eshell for non-trivial things a few weeks ago - and I noticed that the default behavior of echo in eshell is to NOT add a newline to its output <technomancy> edrx: yeah that's really stupid, agreed <edrx> technomancy: I was going to ask is this behavior is allowed by POSIX or something like that... and I checked the manpage for echo here to see if there are command-line options for "no newline" and "yes newline" <wasamasa> if you want portability, use printf <edrx> and I only found this: "-n do not output the trailing newline" <wasamasa> that defaults to no newline and makes formatting easy ##### # # env and shebang # 2021oct10 # ##### # «env» (to ".env") # «shebang» (to ".shebang") # (to "environment") # (find-es "zsh" "ORIGPATH") # https://www.in-ulm.de/~mascheck/various/shebang/ # https://github.com/openbsd/src/blob/aaef17f3a84ac857498a5fb4edc99a3024829863/sys/sys/param.h#L63 # https://cgit.freebsd.org/src/tree/sys/sys/imgact.h#n41 # (find-man "1 env") # (find-man "1 env" "-S, --split-string=S") # (find-man "1 env" "-S/--split-string usage in scripts") # (find-man "1 env" "-i, --ignore-environment") # https://unix.stackexchange.com/questions/329429/what-are-the-environment-variables-by-default ##### # # file # 2024jun23 # ##### # «file» (to ".file") # (find-man "1 file") # (find-man "1 file" "-C, --compile") # (find-man "1 file" "/usr/share/misc/magic.mgc") # (find-man "5 magic") # (find-fline "/usr/share/misc/" "magic") # (find-fline "/usr/share/file/") # (find-fline "/usr/lib/file/" "magic.mgc") # (find-status "file") # (find-vldifile "file.list") # (find-udfile "file/") # (find-status "libmagic1") # (find-vldifile "libmagic1:amd64.list") # (find-udfile "libmagic1/") # (find-status "libmagic-mgc") # (find-vldifile "libmagic-mgc.list") # (find-udfile "libmagic-mgc/") ##### # # grep and egrep # 2021aug01 # ##### # «grep» (to ".grep") # (find-man "1 grep") # (find-man "1 grep" "egrep" "-E, --extended-regexp") # (find-man "1 grep" "fgrep" "-F, --fixed-strings") # (find-man "1 grep" "rgrep" "-r, --recursive") # (find-man "1 grep" "Basic vs Extended Regular Expressions") # (find-man "1 grep" "-l, --files-with-matches") # (find-sh "busybox grep --help") # (find-node "(grep)Top") # (find-node "(grep)Usage") ##### # # ifconfig # 2024jun05 # ##### # «ifconfig» (to ".ifconfig") # (find-status "net-tools") # (find-vldifile "net-tools.list") # (find-udfile "net-tools/") # (find-man "8 ifconfig") # (find-sh "busybox ifconfig --help") # (find-sh "sudo ifconfig --help") # (find-sh "sudo netstat -i") # (find-sh "sudo ifconfig") ##### # # ip # 2024jun06 # ##### # «ip» (to ".ip") # (find-status "iproute2") # (find-vldifile "iproute2.list") # (find-udfile "iproute2/") # (find-sh "ip a") # (find-sh "ip -4 a") # (find-sh "ip -j -4 a") # (find-sh "ip -j -p -4 a") # (find-sh "ip -j -4 a | gron") # (find-sh "ip -j -4 a | python3 -m json.tool") # (find-fline "~/LOGS/2024jun05.emacs" "<twb> Try" "ip -json address") # (find-sh "curl -s ipinfo.io/ip") ##### # # killall # 2024may28 # ##### # «killall» (to ".killall") # (find-status "psmisc") # (find-vldifile "psmisc.list") # (find-udfile "psmisc/") # (find-man "1 killall") ##### # # ls # 2022dec06 # ##### # «ls» (to ".ls") # (find-man "1 ls") # (find-sh "busybox ls --help") # (find-sh "ls --help") # (find-sh "ls --help" "-d, --directory") # (find-sh "ls --help" "-h, --human-readable") # (find-sh "ls --help" "-S" "sort by file size, largest first") # (find-sh "ls --help" "none (-U), size (-S),") ##### # # md5sum # 2023aug06 # ##### # «md5sum» (to ".md5sum") # (find-man "1 md5sum") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) # (find-fline "/tmp/md5sum-test/") rm -Rv /tmp/md5sum-test/ mkdir /tmp/md5sum-test/ cd /tmp/md5sum-test/ date > a date > b md5sum a b > ab.md5sum md5sum -c ab.md5sum date > a date > b md5sum -c ab.md5sum ##### # # mv -T # 2020oct24 # ##### # «mv-T» (to ".mv-T") # (find-man "1 mv") # (find-man "1 mv" "-T, --no-target-directory") # (find-sh "busybox mv --help") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) # (find-fline "/tmp/mv-test/") rm -Rv /tmp/mv-test/ mkdir /tmp/mv-test/ cd /tmp/mv-test/ mkdir a/ mkdir b/ mv -ivT a b ##### # # nice # 2023jun04 # ##### # «nice» (to ".nice") # (find-man "1 nice") # (find-node "(coreutils)nice invocation") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) sudo nice apt-get update sudo nice apt-get upgrade -y sudo nice apt-get autoremove -y sudo nice apt-get clean ##### # # ps # 2024may28 # ##### # «ps» (to ".ps") # (find-man "1 ps") # (find-man "1 ps" "-C cmdlist") # (find-sh "ps --help all") # (find-sh "busybox ps --help") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) ps ax ps ax | grep dictd ps -C dictd ##### # # pwd # 2022sep26 # ##### # «pwd» (to ".pwd") # https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-09/msg02406.html # (find-man "1 pwd") # (find-sh "busybox pwd --help") Yes, bash's built-in pwd assumes -L by default (which is what POSIX mandates), and coreutils' pwd assumes -P by default. POSIX requires support for both -L and -P, so the safe fix here is to replace /bin/pwd by pwd -P. ##### # # stat # 2021jan16 # ##### # «stat» (to ".stat") # (find-man "1 stat") # (find-node "(coreutils)stat invocation") # (find-node "(coreutils)stat invocation" "The valid FORMAT directives") # (find-sh "busybox stat --help") ##### # # tar # 2019apr09 # ##### # «tar» (to ".tar") # (find-status "tar-doc") # (find-vldifile "tar-doc.list") # (find-udfile "tar-doc/") # (find-node "(tar)Option Summary" "--strip-components=NUMBER") # (find-angg ".zshrc" "basename_tgz") # (find-sh "busybox tar --help") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) FNAME=$S/https/www.haskell.org/tutorial/haskell-98-tutorial-html.tar.gz tar -tvzf $FNAME tar -tzf $FNAME tar -tzf $FNAME | head -n 1 basename $(tar -tzf $FNAME | head -n 1) basename_tgz $FNAME ##### # # top # 2024may28 # ##### # «top» (to ".top") # (find-status "procps") # (find-vldifile "procps.list") # (find-udfile "procps/") # (find-man "1 top") ##### # # tr # 2024may22 # ##### # «tr» (to ".tr") # (to "pipes") # (find-man "1 tr") # (find-sh "busybox tr --help") ##### # # type # 2024may28 # ##### # «type» (to ".type") # (find-zshnode "Shell Builtin Commands" "type [ -wfpamsS ] NAME ...") # (find-zshnode "Shell Builtin Commands" "whence [ -vcwfpamsS ] [ -x NUM ] NAME ...") # (find-bashnode "Bash Builtins" "type [-afptP] [NAME ...]") ##### # # unzip # 2024sep01 # ##### # «unzip» (to ".unzip") # (find-man "1 unzip") # (find-status "unzip") # (find-vldifile "unzip.list") # (find-udfile "unzip/") # (find-sh "unzip") # (find-sh "unzip -hh") # (find-sh "unzip -hh" "-d exd ") # (find-esgrep "grep --color=auto -nwH --null -e unzip *.e") ##### # # which # 2023feb18 # ##### # «which» (to ".which") # (find-es "zsh" "which") # (find-man "1 which") # https://news.ycombinator.com/item?id=34849902 Debian 12 “Bookworm” Enters Its Soft Freeze # (find-sh "busybox which --help") ##### # # xargs # 2021jan16 # ##### # «xargs» (to ".xargs") # (find-man "1 xargs") # (find-man "1 xargs" "-I replace-str") # (find-man "1 xargs" "-L max-lines") # (find-man "1 xargs" "--delimiter=delim, -d delim") # (find-man "1 xargs" "BUGS") # (find-man "1 xargs" "BUGS" "incompatible") # (find-node "(find)Invoking xargs") # (find-node "(find)xargs options") # (find-node "(find)Invoking the shell from xargs") # (find-sh "busybox xargs --help") # (find-fline "~/LOGS/2021feb03.emacs" "echo hello ; echo world") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) (echo hello ; echo world ; echo 'how do you do' ) \ | xargs -I '{}' -- \ echo cp -v --parents --update '{}' ~/usrc/angg-fossil-repo/ # Bad: (echo hello ; echo world ; echo 'how do you do' ) \ | xargs -I '{}' -L 2 -- \ echo cp -v --parents --update '{}' ~/usrc/angg-fossil-repo/ # Bad: (echo hello ; echo world ; echo 'how do you do' ) \ | xargs -L 2 -- \ echo xargs -I '{}' -- \ echo cp -v --parents --update '{}' ~/usrc/angg-fossil-repo/ * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) seq 1 25 | xargs -I '{}' -- echo foo '{}' bar seq 1 25 | xargs -L 5 seq 1 25 | xargs -L 5 | tr ' ' . seq 1 25 | xargs -L 5 | tr ' ' . | xargs -d '\n' -I '{}' -- echo foo '{}' bar seq 1 25 | xargs -L 5 | xargs -d '\n' -I '{}' -- echo foo '{}' bar seq 1 25 \ | xargs -L 5 \ | xargs -d '\n' -I '{}' -- \ echo cp -v --parents --update '{}' ~/usrc/angg-fossil-repo/ https://news.ycombinator.com/item?id=28258189 An Opinionated Guide to Xargs (oilshell.org) ##### # # coreutils-src # 2020feb24 # ##### # «coreutils-src» (to ".coreutils-src") # (find-apt-get-source-links "coreutils") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) # (find-sh "apt-cache show coreutils") # (find-sh "apt-cache showsrc coreutils") rm -Rv /tmp/d/ mkdir /tmp/d/ cd /tmp/d/ sudo apt-get build-dep -y coreutils apt-get source coreutils 2>&1 | tee osource apt-get source --build coreutils 2>&1 | tee osourceb # (find-fline "/tmp/d/") rm -Rv ~/usrc/coreutils-8.30/ cp -av /tmp/d/coreutils-8.30 ~/usrc/ # (code-c-d "coreutils" "~/usrc/coreutils-8.30/") # (find-coreutilsfile "") # (find-coreutilssh "find * | sort") # (find-coreutilsfile "src/touch.c") # (find-coreutilsfile "src/touch.c" "fdutimensat") # (find-man "2 utimes") # (find-man "2 utimensat") ##### # # Command line text processing with GNU Coreutils (eBook) # 2021oct23 # ##### # «cli-coreutils» (to ".cli-coreutils") # (find-books "__comp/__comp.el" "cli-coreutils") ##### # # unix-works # 2021aug04 # ##### # «unix-works» (to ".unix-works") # (find-fline "~/books/kernighan_ritchie_thompson__unix_work.zip") # (find-fline "~/usrc/DMR/") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) rm -Rv ~/usrc/DMR/ # mkdir ~/usrc/DMR/ unzip -d ~/usrc/ ~/books/kernighan_ritchie_thompson__unix_work.zip cd ~/usrc/DMR/ # (find-man "unzip") ##### # # pipes # 2021oct12 # ##### # «pipes» (to ".pipes") # https://ruzkuku.com/texts/unix-harmful.html # http://www.softpanorama.org/Scripting/Piporama/history.shtml # (find-man "1 tr") # (find-man "1 tr" "-c, -C, --complement") # (find-man "1 tr" "-s, --squeeze-repeats") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) echo "The cat and the bat" | tr -cs A-Za-z '\n' \ | tr A-Z a-z \ | sort \ | uniq -c \ | sort -rn \ | sed ${1}q ##### # # /dev/full # 2022mar09 # ##### # «dev-full» (to ".dev-full") # https://news.ycombinator.com/item?id=30611367 Bugs in Hello World (sunfishcode.online) # https://blog.sunfishcode.online/bugs-in-hello-world/ ##### # # Dado Sutter said that he doesn't have a /tmp (in Ubuntu 22.04) # 2023aug18 # ##### # «tmp» (to ".tmp") # https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard # https://en.wikipedia.org/wiki/Temporary_folder#Traditional_locations # https://unix.stackexchange.com/questions/362100/is-tmp-guaranteed-to-exist # (find-sh0 "stat -c %a /tmp") O que voce acha de na proxima oficininha a gente incluir instrucoes como isso aqui? Roda sudo mkdir /tmp sudo chmod 1777 /tmp antes da oficininha comecar e se voce quiser deletar o /tmp roda sudo rm -Rfv /tmp no final? ##### # # e1f-guide # 2024sep24 # ##### # «e1f-guide» (to ".e1f-guide") # https://www.ee.ryerson.ca/guides/user/ # Alternatives to grep: https://beyondgrep.com/feature-comparison/ https://news.ycombinator.com/item?id=16096824 abundance vs. scarcity https://news.ycombinator.com/item?id=14693169 https://dwheeler.com/essays/fixing-unix-linux-filenames.html https://news.ycombinator.com/item?id=30502392 Fork() is evil; vfork() is goodness; afork() would be better; clone() is stupid (gist.github.com) https://www.bell-labs.com/usr/dmr/www/hist.html https://www.levenez.com/unix/ https://www.cs.dartmouth.edu/~doug/reader.pdf A Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 1971-1986 https://news.ycombinator.com/item?id=30679923 Writing a device driver for Unix V6 (mveg.es) https://news.ycombinator.com/item?id=31293032 Unix command line conventions over time (liw.fi) - dd is a mainframe command https://news.ycombinator.com/item?id=31617072 The Beauty of Unix Pipelines (2020) (prithu.dev) * https://news.ycombinator.com/item?id=31773056 pass – the standard Unix password manager (passwordstore.org) https://news.ycombinator.com/item?id=32160339 Introduction to TCP and Sockets (2001) (scottklement.com) https://news.ycombinator.com/item?id=32165278 Beej updated the classic Linux network programming guide (beej.us) https://news.ycombinator.com/item?id=32314153 Xv6, a simple Unix-like teaching operating system (csail.mit.edu) https://news.ycombinator.com/item?id=32955215 Reshaping Text (leancrew.com) - pr https://news.ycombinator.com/item?id=32970069 Rawhide – (rh) find files using pretty C expressions (raf.org) https://www.cs.jhu.edu/~phf/2016/fall/cs318/ https://www.gnu.org/software/parallel/20th-birthday.html https://news.ycombinator.com/item?id=33232072 Semgrep: Writing quick rules to verify ideas (deesee.xyz) https://news.ycombinator.com/item?id=33235315 “You meant to install ripgrep” (crates.io) https://news.ycombinator.com/item?id=33324704 The Cult of Dd (eklitzke.org) https://news.ycombinator.com/item?id=33583537 Building a simple shell in C – Part 3 (ehoneahobed.com) https://news.ycombinator.com/item?id=34016518 So, what can you do with a process ID? (will-keleher.com) https://news.ycombinator.com/item?id=34161081 The Linux Command Line (linuxcommand.org) https://thevaluable.dev/guide-terminal-shell-console/ https://lobste.rs/s/2ghxua/guide_terminal_console_shell <e1f> grep -A 10 for context 10 lines AFTER https://biriukov.dev/docs/fd-pipe-session-terminal/0-sre-should-know-about-gnu-linux-shell-related-internals-file-descriptors-pipes-terminals-user-sessions-process-groups-and-daemons/ https://thenewstack.io/pipe-how-the-system-call-that-ties-unix-together-came-about/ https://news.ycombinator.com/item?id=34507230 U.S. accuses Google of abusing monopoly in ad technology (nytimes.com) # ^ cd /tmp/ curl https://www.courtlistener.com/docket/66753787/1/united-states-v-google-llc/ \ |sed '1,/div id=\"opinion-content\">/d;/<pre>/s//<meta charset=utf-8 \/>&/;/<\/pre>/,$d' > 1.htm firefox ./1.htm https://news.ycombinator.com/item?id=34650523 Setuid in Unix created to enable a game (tuhs.org) https://en.wikipedia.org/wiki/Person_having_ordinary_skill_in_the_art https://new.pythonforengineers.com/blog/best-command-line-tools-ive-played-with/ Duf and Dust as a replacement for duf and du https://news.ycombinator.com/item?id=35228884 Command Line One-Liners (commandlinefu.com) https://news.ycombinator.com/item?id=35698282 Show HN: Killport – CLI tool to kill processes running on a specified port (github.com/jkfran) https://maizure.org/projects/decoded-gnu-coreutils/ https://unix.t-a-y-l-o-r.com/4ltrwrd.pdf Unix is a Four Letter Word::: and Vi is a Two Letter Abbreviation https://fabiensanglard.net/st/index.html EXPLORING LINUX COMMAND-LINE SPACE TIME https://jvns.ca/blog/2013/10/24/day-16-gzip-plus-poetry-equals-awesome/ https://jvns.ca/blog/2015/02/22/how-gzip-uses-huffman-coding/ https://jvns.ca/blog/2023/08/08/what-helps-people-get-comfortable-on-the-command-line-/ https://explainshell.com/ *** https://jvns.ca/blog/2021/04/03/what-problems-do-people-solve-with-strace/ https://www.kdnuggets.com/master-the-art-of-command-line-with-this-github-repository https://www.pixelbeat.org/docs/coreutils-testing.html https://news.ycombinator.com/item?id=39455874 How the GNU coreutils are tested (2017) (pixelbeat.org) https://news.ycombinator.com/item?id=39457875 Useful Uses of cat (two-wrongs.com) https://antonz.org/grep-by-example/ https://linuxcommand.org/ https://linuxcommand.org/lc3_learning_the_shell.php https://linuxcommand.org/lc3_writing_shell_scripts.php https://linuxcommand.org/lc3_resources.php https://linuxcommand.org/tlcl.php https://linuxcommand.org/lc3_adventures.php https://news.ycombinator.com/item?id=39958302 The Linux Command Line (linuxcommand.org) # Local Variables: # coding: utf-8-unix # End: