epcim
10/23/2015 - 1:21 PM

linux_cmd_bash_basics.md

linux_cmd_bash_basics.md

# sleep before input is run..
ps aux | awk '{print $1}' | xargs -I % sh -c '{ echo %; sleep 1; }'

An linux, bash cmd tutorial

  Command                                                                                                  # Command    Description
  -----------------------------------
  lynx -dump -width                                                                                        # 999 http://www.pixelbeat.org/cmdline.html > cmd.txt           # Make a text copy of this page
  apropos word                                                                                             # show commands pertinent to word. See also threadsafe
  which command                                                                                            # show full path name of command
  time command                                                                                             # see how long a command takes
  time cat                                                                                                 # Start stopwatch. Ctrl-D to stop. See also sw
  nice command                                                                                             # run a low priority command
  renice 19 -p $$                                                                                          # make shell (script) low priority. Use for non interactive tasks
  look prefix                                                                                              # quickly search (sorted) dictionary
  grep --color expr /usr/share/dict/words                                                                  # highlight occurances of regular expression in dictionary
  gpg -c file                                                                                              # encrypt file
  gpg file.gpg                                                                                             # decrypt file
  echo 'wget url' | at 01:00                                                                               # download url at 1AM to current dir
  echo "mail -s 'get the train' P@draigBrady.com < /dev/null" | at 17:45                                   # email reminder
  watch -n1 'cat /proc/interrupts'                                                                         # watch changeable data continuously
  alias hd                                                                                                 # 'od -Ax -tx1z -v'                                            # handy hexdump. (usage e.g.: hd /proc/self/cmdline | less)
  alias realpath                                                                                           # 'readlink -f'                                                # canonicalize path. (usage e.g.: realpath ~/../$USER)
  set | grep $USER                                                                                         # search current environment
  ls /usr/bin | pr -T9 -W$COLUMNS                                                                          # print in 9 columns to width of terminal
  touch -c -t 0304050607 file                                                                              # set file timestamp (YYMMDDhhmm)
  dir navigation
  cd -                                                                                                     # go to previous directory
  cd                                                                                                       # go to home directory
  (cd dir && command)                                                                                      # go to dir, execute command and return to current dir
  pushd .                                                                                                  # put current dir on stack so you can popd back to it
  CDs
  gzip < /dev/cdrom > cdrom.iso.gz                                                                         # save copy of data cdrom
  mkisofs -r dir | gzip > cdrom.iso.gz                                                                     # create cdrom image from contents of dir
  mount -o loop cdrom.iso /mnt/dir                                                                         # mount the cdrom image at /mnt/dir (read only)
  gzip -dc cdrom.iso.gz | cdrecord -v dev                                                                  # /dev/cdrom -                                                 # burn cdrom image (use dev                                  # ATAPI -scanbus to confirm dev)
  cdparanoia -B                                                                                            # rip audio tracks from CD to wav files in current dir
  cdrecord -v dev                                                                                          # /dev/cdrom -audio .wav                                      # make audio CD from all wavs in current dir (see also cdrdao)
  oggenc --tracknum                                                                                        # 'track' track.cdda.wav -o 'track.ogg'                        # make ogg file from wav file
  archives
  tar c dir/ | bzip2 > dir.tar.bz2                                                                         # make archive of dir/
  bzip2 -dc dir.tar.bz2 | tar x                                                                            # extract archive (use gzip instead of bzip2 for tar.gz files)
  tar c dir/ | gzip | gpg -c | ssh user@remote 'dd of                                                      # dir.tar.gz.gpg'                                              # make encrypted archive of dir/ on remote machine
  find dir/ -name '*.txt' | tar c --files-from                                                             # - | bzip2 > dir_txt.tar.bz2                                  # make archive of subset of dir/ and below
  find dir/ -name '*.txt' | xargs cp -a --target-directory                                                 # dir_txt/ --parents                                           # make copy of subset of dir/ and below
  ( tar c /dir/to/copy ) | ( cd /where/to/ && tar x -p )                                                   # copy (with permissions) copy/ dir to /where/to/ dir
  ( cd /dir/to/copy && tar c . ) | ( cd /where/to/ && tar x -p )                                           # copy (with permissions) contents of copy/ dir to /where/to/
  ( tar c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar x -p'                                  # copy (with permissions) copy/ dir to remote:/where/to/ dir
  dd bs                                                                                                    # 1M if                                                        # /dev/hda | gzip | ssh user@remote 'dd of                   # hda.gz'                                               # backup harddisk to remote machine
  rsync (Use the --dry-run option for testing)
  rsync -P rsync://rsync.server.com/path/to/file file                                                      # Only get diffs. Do multiple times for troublesome downloads
  rsync --bwlimit                                                                                          # 1000 fromfile tofile                                         # Locally copy with rate limit. It's like nice for I/O
  rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html'                                      # Mirror web site (using compression and encryption)
  rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/                                     # Synchronize current directory with remote one
  file searching
  alias l                                                                                                  # 'ls -l --color                                               # auto'                                                      # quick dir listing
  ls -lrt                                                                                                  # list files by date. See also newest
  find -name '*.[ch]' | xargs grep -E 'expr'                                                               # search 'expr' in this dir and below. See also findrepo
  find -type f -print0 | xargs -r0 grep -F 'string'                                                        # search all regular files for 'string' in this dir and below
  find -maxdepth 1 -type f | xargs grep -F 'string'                                                        # search all regular files for 'string' in this dir
  find -maxdepth 1 -type d | while read dir; do (cd "$dir" && echo $PWD); done                             # process each item with multiple commands (in while loop)
  find -type f ! -perm -444                                                                                # find files not readable by all (useful for web site)
  find -type d ! -perm -111                                                                                # find dirs not accessible by all (useful for web site)
  locate -r 'file[^/]*\.txt'                                                                               # search cached index for names. This re is like glob *file*.txt
  networking (Note ifconfig, route, mii-tool, nslookup commands are obsolete)
  ip link show                                                                                             # list interfaces
  ethtool interface                                                                                        # list interface status
  ip link set dev eth0 name wan                                                                            # rename eth0 to wan
  ip addr add 1.2.3.4/24 brd + dev eth0                                                                    # add ip and mask(255.255.255.0)
  ip link set dev interface up                                                                             # bring interface up (or down)
  ip route add default via 1.2.3.254                                                                       # set default gateway to 1.2.3.254
  host pixelbeat.org                                                                                       # lookup ip address for name or vice versa
  hostname -i                                                                                              # lookup local ip address (equivalent to host `hostname`)
  netstat -tupl                                                                                            # list internet services on a system
  netstat -tup                                                                                             # list active connections to/from system
  windows (note samba is the package that provides all this windows specific networking support)
  smbtree                                                                                                  # find windows machines. See also findsmb
  nmblookup -A 1.2.3.4                                                                                     # find the windows (netbios) name associated with ip address
  smbclient -L windows_box                                                                                 # list shares on windows machine or samba server
  mount -t smbfs -o fmask                                                                                  # 666,guest //windows_box/share /mnt/share                     # mount a windows share
  echo 'message' | smbclient -M windows_box                                                                # Send popup to windows machine (off by default in XP sp2)
  math
  echo '(1 + sqrt(5))/2' | bc -l                                                                           # quick math
  echo 'obase                                                                                              # 16; ibase                                                    # 10; 123' | bc                                              # base conversion (decimal to hex)
  echo 'pad                                                                                                # 20; min                                                      # 64; (100*10^6)/((pad+min)*8)' | bc                         # More complex (int) e.g. This shows max FastE packet rate
  echo 'pad                                                                                                # 20; min                                                      # 64; print (100E6)/((pad+min)*8)' | python                  # python handles scientific notation
  echo 'pad                                                                                                # 20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist  = Plot FastE packet rate vs packet size
  text manipulation (note these use stdin and stdout, so if you want to edit files, append <oldfile >newfile)
  sed 's/string1/string2/g'                                                                                # replace string1 with string2
  sed 's/\(.*\)1/\12/g'                                                                                    # modify anystring1 to anystring2
  sed '/ *#/d; /^ *$/d'                                                                                    # remove comments and blank lines
  sed ':a; /\\$/N; s/\\\n//; ta'                                                                           # concatenate lines with trailing \
  sed 's/[ \t]*$//'                                                                                        # remove trailing spaces from lines
  sed 's/\([\\`\\"$\\\\]\)/\\\1/g'                                                                         # backslashify shell metacharacters active within "..."
  sed -n '1000p;1000q'                                                                                     # print 1000th line
  sed -n '10,20p;20q'                                                                                      # print lines 10 to 20
  sort file1 file1 file2 | uniq -u                                                                         # show lines in file2 not in file1
  echo 'Test' | tr '[:lower:]' '[:upper:]'                                                                 # case conversion
  tr -dc '[:print:]' < /dev/urandom                                                                        # filter non printable characters
  grep 'processor' /proc/cpuinfo | wc -l                                                                   # count lines
  calendar
  cal -3                                                                                                   # display a calendar
  cal 9 1752                                                                                               # display a calendar for a particular month year
  date -d fri                                                                                              # What date is it this friday. See also day
  date --date                                                                                              # '25 Dec' +%A                                                 # what day does xmas fall on, this year
  date --date '1970-01-01 UTC 1097781420 seconds'                                                          # convert number of seconds since the epoch to a date
  TZ                                                                                                       # ':America/Los_Angeles' date                                  # What time is it on West coast of US (use tzselect to find TZ)
  locales
  printf "%'d\n" 1234                                                                                      # print number with thousands grouping appropriate to locale
  echo "I live in `locale territory`"                                                                      # extract info from locale database
  locale | cut -d                                                                                          # -f1 | xargs locale -kc | less                                # list fields in locale database
  LANG                                                                                                     # en_IE.utf8 locale int_prefix                                 # lookup locale info for specific country. See also ccodes
  disk space
  ls -lSr                                                                                                  # show files, biggest last
  du -s * | sort -k1,1rn | head                                                                            # show top disk users in current dir. See also dutop
  df -h                                                                                                    # free disk space
  df -i                                                                                                    # free inodes
  fdisk -l                                                                                                 # show disks partitions sizes (run as root)
  rpm -q -a --queryformat '%10{SIZE}\t%{NAME}\n' | sort -k1,1n                                             # list all packages by installed size (Bytes) on rpm distros
  dpkg-query -W --showformat                                                                               # '${Installed-Size;10}\t${Package}\n' | sort -k1,1n           # list all packages by installed size (KBytes) on deb distros
  monitoring/debugging
  strace -c ls >/dev/null                                                                                  # summarise/profile system calls made by command
  strace -f -e open ls >/dev/null                                                                          # list system calls made by command
  ltrace -f -e getenv ls >/dev/null                                                                        # list library calls made by command
  lsof -p $$                                                                                               # list paths that process id has open
  lsof ~                                                                                                   # list processes that have specified path open
  tcpdump not port 22                                                                                      # Show network traffic except ssh. See also tcpdump_not_me
  ps -e -o pid,args --forest                                                                               # list processes in a hierarchy
  ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'                                  # list processes by % cpu usage
  ps -e -o rss                                                                                             # ,args                                                        # | sort -b -k1,1n | pr -TW$COLUMNS                          # list processes by mem usage. See also ps_mem.py
  ps -C firefox-bin -L -o pid,tid,pcpu,state                                                               # list all threads for a particular process
  ps -p 1,2                                                                                                # list info for particular process IDs
  for wtmp in `ls -t /var/log/wtmp `; do last reboot -f $wtmp; done | grep reboot                          # Show system reboot history.
  free -m                                                                                                  # Show amount of (remaining) RAM (-m displays in MB)
  System information (see also sysinfo)
  hdparm -i /dev/hda                                                                                       # show info about disk hda
  hdparm -tT /dev/hda                                                                                      # Do a read speed test on disk hda
  badblocks -s /dev/hda                                                                                    # Test for unreadable blocks on disk hda
  mount | column -t                                                                                        # Show mounted filesystems on the system (and align output)
  cat /proc/partitions                                                                                     # Show all partitions registered on the system
  grep MemTotal /proc/meminfo                                                                              # Show RAM total seen by the system
  grep "model name" /proc/cpuinfo                                                                          # Show CPU(s) info
  lspci -tv                                                                                                # Show PCI info
  lsusb -tv                                                                                                # Show USB info
  recode (Obsoletes iconv, dos2unix, unix2dos)
  recode -l | less                                                                                         # show available conversions (aliases on each line)
  recode windows-1252.. file_to_change.txt                                                                 # windows "ansi" to local charset (auto does CRLF conversion)
  recode utf-8/CRLF.. file_to_change.txt                                                                   # windows utf8 to local charset
  recode iso-8859-15..utf8 file_to_change.txt                                                              # latin9 (western europe) to utf8
  recode ../b64 < file.txt > file.b64                                                                      # Base64 encode
  recode /qp.. < file.txt > file.qp                                                                        # quoted printable decode
  recode ..HTML < file.txt > file.html                                                                     # text to HTML
  recode -lf windows-1252 | grep euro                                                                      # lookup table of characters
  echo -n 0x80 | recode latin-9/x1..dump                                                                   # show what a code represents in latin-9 charmap
  echo -n 0x20AC | recode ucs-2/x2..latin-9/x                                                              # show latin-9 encoding
  echo -n 0x20AC | recode ucs-2/x2..utf-8/x                                                                # show utf-8 encoding
  interactive
  mc                                                                                                       # powerful filemanager that can browse rpm, tar, ftp, ssh, ...
  screen                                                                                                   # virtual terminals with detach capability, ...
  lynx                                                                                                     # web browser
  gnuplot                                                                                                  # interactive/scriptable graphing
  octave                                                                                                   # matlab like environment