|
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")
# «.dirname» (to "dirname")
# «.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")
# «.mktemp» (to "mktemp")
# «.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")
# «.xxd» (to "xxd")
#
# «.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)
echo abc_de_fgh_ih | cut -b1
echo abc_de_fgh_ih | cut -b2
echo abc_de_fgh_ih | cut -b2-
echo abc_de_fgh_ih | cut -b2- | rev | cut -b3- | rev
echo abc_de_fgh_ih | cut -b2,5
echo abc_de_fgh_ih | cut -d_ -f2,3
echo abc_de_fgh_ih | cut -d_ -f2-
echo abc_de_fgh_ih | cut -d_ -f2- | rev | cut -d_ -f2- | rev
* (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")
#####
#
# dirname
# 2024dec13
#
#####
# «dirname» (to ".dirname")
# (find-man "1 dirname")
# (find-sh "busybox dirname --help")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
dirname /home/edrx/bin/djvuize
dirname djvuize
. ~/myqdraw/mkanim2.sh
# (find-myqdraw "mkanim2.sh")
#####
#
# 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/")
# (find-apt-get-source-links "file")
#####
#
# grep and egrep
# 2021aug01
#
#####
# «grep» (to ".grep")
# (find-man "1 grep")
# (find-man "1 grep" "-a, --text")
# (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")
# (find-node "(grep)Basic vs Extended")
#####
#
# 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
#####
#
# mktemp
# 2024dec25
#
#####
# «mktemp» (to ".mktemp")
# (find-man "1 mktemp")
# (find-sh "busybox mktemp --help")
# (find-fline "~/LOGS/2024dec25.emacs2" "mktemp")
foo=$(mktemp -d)
echo "(load-theme 'tango)" > $foo/init.el
emacs --init-directory=$foo
#####
#
# 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)
#####
#
# xxd - make a hexdump or do the reverse
# 2025jun10
#
#####
# «xxd» (to ".xxd")
# (find-status "xxd")
# (find-vldifile "xxd.list")
# (find-udfile "xxd/")
# (find-man "1 xxd")
#####
#
# 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)
https://unixmagic.net/
https://news.ycombinator.com/item?id=43589042 Annotated Unix Magic Poster (unixmagic.net)
https://blog.zhimingwang.org/macos-lc_collate-hunt
# Local Variables:
# coding: utf-8-unix
# End: