---
format: rst
toc: no
...
=====================================
UNIX Tricks
=====================================
See also `freebsd `_ and
`debian `_ tricks.
Fork many processes with `xargs`
-----------------------------------
To fork off 10 instances of sleep with incremented lengths, 5 at a time::
$ seq 10 20 | xargs -n 1 -P 5 sleep
Remapping a Keyboard Key to Meta
-----------------------------------
I like having a Meta key (aka "Windows key") for use with system keyboard
shortcuts (change desktop etc), but some laptop keyboards don't have an extra
button. To remap one of the Alt keys, you need to know it's code: on FreeBSD
6.3 it was: ``Alt_R keysum 0xffea keycode 113``. To get the right mapping under
X11, read the directions in ``/usr/X11R6/lib/X11/xkb/README``. To get the right
mapping under the console, edit ``/usr/share/syscons/keymaps/us.iso.kbd`` and
change 'ralt' to 'meta'.
Figlet
---------------------
figlet is the horizontal banner.
thttpd
---------------
thttpd is a super small/light http web server with almost no features. To
server up the working directory as cgi to local host, use::
$ thttpd -p 8080 -h localhost -D
To allow CGI for PHP scripts:
$ thttpd -p 8080 -h localhost -D -c \*.php
Simple "undelete"
--------------------
This oneliner is useful for recovering recently deleted files from unix
filesystems, assuming you know a reasonably unique string in that file. Change
the -A and -B options (lines of context before and after the unique string) as
appropriate, and go through the output file to clean up the text.
$ sudo grep "bookmark_bar" --binary-files=text -B 10 -A 1000 /dev/sda5 | tee undeleted_content.txt
Misc
----
``tput`` is useful for controlling the terminal cursor position, font style,
etc.
OpenSSL Primes
-----------------
See if a number is prime with ``openssl prime 2011``.
SSH Tunnel
------------
Try `autossh `_ to keep tunnels open.
printf
------
The `printf` command is much more powerful than `echo`.
stderr in Red
---------------
Via `stack overflow `_:
$ command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m"; done)
Mount an .img file as loopback device
-----------------------------------------
Either:
mount -o loop distro.img /mnt
Or:
losetup /dev/loop0 distro.img
mount /dev/loop0 /mnt
Search and Replace String in Multiple Files
---------------------------------------------
Using sed:
sed -i 's/OldString/NewString/g' *.txt
File-based Network Access
---------------------------------------------
You can directly access network sockets as if they were files from bash using
the virtual devices ``/dev/tcp/HOSTNAME/PORT`` and ``/dev/udp/HOSTNAME/PORT``.