Bash and other shell commands

Some shell commands that can be useful sometimes and keep spending too much time to find back. For some commands I put the Windows equivalent (might be handy when not on your own machine).

Regexp: everything seems easier after that

  • General placements
^           #beginning of a line
$           #end of a line
*           #anything
  • Occurrences for a character
x*         #x appears at least zero times
x+         #x appears at least once
x?         #x is facultative
x{4}       #a sequence of 4 x
x{2,4}     #x apppears 2, 3 or 4 times
\.         #match the . character
  • Class of characters
[a-z]     #all lower cases letters
[Aa]bc    #abc with or without upper case for a
[^0-9]    #anything but numbers
  • The alternative
mi[n|m]e  #match the words mime and mine
you|me|her #match any of the three

Basics

  • Move around
cd <path>  #go to <path>
cd ..      #go up in the tree structure
cd ~       #go home
cd         #go home
pwd        #print working directory
  • Remove files (recursively) Be very careful with that one!
rm -r
  • Show files in a directory
ls
ls -a #show hidden files too
ls -l #show accesses and sizes
  • Get help
man <fctn>
  • Search commands
grep <regexp> <path>

The -C flags show the number of the lines, -c counts the number of lines, -l the name of the files containing the chain of characters.

find <path> <criteria> -print #find files matching the criteria

Some flags are -name, -size or -mtime (last modified). To combine some criterions use \(<match1> -o <match2>\) it’s the logical or.

ls -1 | wc -l #number of files in repository
  • Create something new
mkir <name> #new repository
touch <name> #new empty file if doesn't exist

The touch command, when used on a pre-existing file, updates the time/date stamp.

  • See the content
cat <file> #display the content
vi <file>  #open the default terminal editor, :q to exit
  • Locate the executable (eg python…)
which <executable>
  • Unzip folder
tar -xvf <file>.tar
tar zxvf <file>.tar.gz
unzip <file>.zip -d <directory>

With unzip, use -o to overwrite.

  • Some Windows equivalents For some commands, Unix and Windows are the same. Just try and/or Google it (especially don’t try if it might be dangerous).
cd        #print working directory when on its own
deltree   #delete recursively
dir /ah   #show files
help      #get help
find      #equivalent of grep
tree | find <tomatch> #equivalent of unix find
edit      #equivalent of vi
where     #equivalent of which

Environment variables

  • Add one
export NAME=VALUE

This can be done in the shell, or in ~/.bashrc.

  • Reload the .bashrc
source ~/.bashrc
  • See variables in PATH
echo $PATH

Some SSH

  • Send from local to remote
scp <path_to_file> <login>@<server>:<directory>

Use the -r flag for recursivity. If there is an error like is a directory it means it isn’t a directory, so use mkdir and then try again.

  • Send from remote to local
scp <login>@<server>:<path_to_file> <directory>

To transfer files, rsync is worth looking.

  • Download from URL
wget <url>
  • Chronometer (when you don’t have your phone at arms length)
date1=`date +%s`; while true; do echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r"; done
  • Display time
timedatectl #a lot of infos
date + "%d-%m-%y" #date with a format
date --date='23 Nov' +%u #which week day for my birthday?
  • In Windows
date
time
  • Info on the GPU hardware
lspci | grep -i --color 'vga\|3d\|2d'
  • Cuda version and GPU status
nvidia-smi

Visualize site locally

bundle-2.7 exec jekyll clean  #clean slate
bundle-2.7 exec jekyll serve  #make it available locally

Updated: