Unix terminal is a powerful tool.

I think that a lot of tasks (including my own forensics analysis workflows) can be accomplished more quickly on a “terminal only” environment.

Here my brief cheatsheet with useful commands and tips.

Reload shell without exit
exec$SHELL -l

Close shell keeping all subprocess running
disown -a &&exit

Exit without saving shell history
kill -9 $$
unset HISTFILE &&exit

Perform a branching conditional
true&& { echo success;} || { echo failed; }

Pipe stdout and stderr to separate commands
some_command >>(/bin/cmd_for_stdout)2>>(/bin/cmd_for_stderr)

Redirect stdout and stderr each to separate files and print both to the screen
(some_command 2>&11>&3| tee errorlog ) 3>&11>&2| tee stdoutlog

List of commands you use most often
`$ history | awk '{print $2}' | sort | uniq -c | sort -rn | head`

Quickly rename a file
`$ mv filename.{old,new}`

Simply backup a file adding “.bak” extension
cp filename{,.bak}

Empty a file
>filename

Delete all files in a folder that don’t match a certain file extension
rm !(*.foo|*.bar|*.baz)

Add a multi-line string to a file
cat > filename <<__EOF__
data data data
__EOF__

Edit a file on a remote host using vim
vim scp://user@host//etc/fstab

Create a directory and change into it at the same time
mkd () { mkdir -p "$@"&&cd"$@"; }

Convert uppercase files to lowercase files
rename 'y/A-Z/a-z/'*

printf"%`tput cols`s"| tr '''#'

Put a console clock in top right corner
`$ while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &`

Show shell history without line numbers
history| cut -c 8-
fc -l -n 1 | sed 's/^\s*//'

Execute a command without saving it in the history
`$ <space>command`

Run command(s) after exit session

Add this code to /etc/profile (for system wide) or ~/.bashrc for local profile:

_after_logout() {  username=$(whoami)  for _pid in $(ps afx | grep sshd | grep "$username" | awk '{print $1}') ; do    kill -9 $_pid  done}
trap _after_logout EXIT

Generate a sequence of numbers
Using *seq:*
    seq 1 2 10

Without *seq:*
   for((i=1; i<=10; i+=2));doecho$i;done

Run the last command
`$ !!`

Run the last command as root
`$ sudo!!`

Create a script of the last executed command
`$ echo"!!"> script.sh`

Reuse all parameter of the previous command line
`$ echo cd.
$ !*`

Run the last command with some argument
`$ echo a b c d e
$ echo!!:2
$ echo!!:3-$`

Insert the last argument of the previous command
`$ cp script.sh /usr/bin/
$ cd <ESC> .`

Run previous command but replacing
`$ echo no tobereaplaced
$ ^tobereaplaced^replaced`

Avoid any command aliases
`$ alias ls="rm -rf /"
$ \ls`