Linux Shell
Keybindings
Action | Emacs Mode | Vi Mode |
---|---|---|
Switch to this mode (bash) | set -o emacs |
set -o vi |
Switch to this mode (zsh) | bindkey -e |
bindkey -v |
Common Variables
Variable | Definition |
---|---|
$$ |
Process ID of Shell |
$* |
All arguments $1 .. |
"$*" |
All arguments $1 .. as a single quoted string |
$@ |
All arguments $1 .. |
"$@" |
All arguments $1 .., individually quoted |
$! |
Process ID of last created background process |
$? |
Return value of last statement |
Logging I/O in the Shell
Using the script command:
script $(date -I).$$.log
tmux
tmux
lacks native support, but there’s a great tmux-logging
plugin.
Alternatively, there’s a keybinding that can be used with the tmux
pipe-pane
command:
bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Toggled logging to $HOME/#W-tmux.log'
Other replacements can be seen in tmux(1)
or tmux notes.
GNU Screen
screen
can easily log. From within a screen session, press the command
character (default ^A
) and then:
:log <name of log>
Cool Shell Utilities
- bat - A modern take on
cat
. - modern-unix - List of “modern unix” utilities.
- starship - A modern cross-shell prompt.