====== UNIX/Linux basic commands ====== [ __[[vlsi:home|Home]]__ ] [ __[[vlsi:workbook:computing:unix|UNIX/Linux]]__ ] [ __[[vlsi:workbook|Design WorkBook]]__ ] [ __[[vlsi:private:computing:cluster|VLSI computing cluster references (private)]]__ ] {{ :vlsi:workbook:computing:unix:tux.png?150}} == Contents == * Introduction * bash and tcsh shells * Working with directories * Environment variables * View/Kill processes * File permissions * Editing text files * [[vlsi:workbook:computing:unix:basics#basic_cvs_commands|Basic CVS commands]] * Other Web tutorials //[[http://www.bo.infn.it/alice/alice-doc/mll-doc/linux/admin/]]// //[[http://oldsite.to.infn.it/groups/group4/mirror/linux/AppuntiLinux/AL-indgen.html]]// ===== Introduction ===== Spending a few hours to learn UNIX will greatly benefit you in the long term and save your time. Ce ne sono un sacco in giro per il Web, ma qui raccolgo SOLO il minimo indispensabile per lavorare, niente di superfluo! only the bare minimum! Familiarity with Linux is necessary If you are not familiar with using Unix/GNU Linux this page is intended to provide a description of basic linux commands and references to more information. When working in Linux, you will activate a **terminal** and inside the terminal **shell** will be running, i.e. a program interpreting your **commands**. Commands are typed inside this shell, and you press ENTER to issue them. For most commands, additional arguments can be issued by using minus signs (where \ signs are used in Windows), e.g. command -a - b -c or command -abc. To find out what options are available for a given command, and what those options do, type command --help, which works in most cases, or try to have a more detailed information with the man command. An exhaustive list of many other UNIX tutorials which can be found on the Web has been collected [[vlsi:unix_basics#other_web_tutorials|here]]. ===== Bash and tcsh shells ===== A little bit of [[http://www.ibm.com/developerworks/library/l-linux-shells/|history]]... === Find what kind of shell is running === echo $SHELL You may see: * [[http://en.wikipedia.org/wiki/Bourne_shell|Bourne shell]] → /bin/sh * [[http://en.wikipedia.org/wiki/Korn_shell|Korn shell]] → /bin/ksh93 * [[http://en.wikipedia.org/wiki/Bash_shell|Bash shell]] → /bin/bash * [[http://en.wikipedia.org/wiki/Z_shell|Z shell]] → /bin/zsh * [[http://en.wikipedia.org/wiki/C_shell|C shell]] → /bin/csh * [[http://en.wikipedia.org/wiki/TC_shell|TC shell]] → /bin/tcsh == How to install csh/tcsh == For C shell: $ sudo apt-get install csh For TC shell: $ sudo apt-get install tcsh If you are using Redhat/Fedora/CentOS Linux, write: # yum install tcsh == How to change the login shell == You can change your login shell with: chsh i.e. chsh Password: Changing the login shell for serena Enter the new value, or press ENTER for the default Login Shell [/bin/tcsh]: and there you can write the path of another installed shell chsh Password: Changing the login shell for serena Enter the new value, or press ENTER for the default Login Shell [/bin/tcsh]: /bin/bash === An A-Z Index of the Bash command line for Linux === [Commands list via [[http://www.ss64.com/bash/|ss64.com]]]\\ Commands marked • are bash built-ins. \\ Many commands particularly the Core Utils are also available under alternate shells (C shell, Korn shell etc). \\ [ __[[vlsi:workbook:computing:unix#a|a]]__ ] [ __[[vlsi:workbook:computing:unix#b|b]]__ ] [ __[[vlsi:workbook:computing:unix#c|c]]__ ] [ __[[vlsi:workbook:computing:unix#d|d]]__ ] [ __[[vlsi:workbook:computing:unix#e|e]]__ ] [ __[[vlsi:workbook:computing:unix#f|f]]__ ] [ __[[vlsi:workbook:computing:unix#g|g]]__ ] [ __[[vlsi:workbook:computing:unix#h|h]]__ ] [ __[[vlsi:workbook:computing:unix#i|i]]__ ] [ __[[vlsi:workbook:computing:unix#j|j]]__ ] [ __[[vlsi:workbook:computing:unix#k|k]]__ ] [ __[[vlsi:workbook:computing:unix#l|l]]__ ] [ __[[vlsi:workbook:computing:unix#m|m]]__ ] [ __[[vlsi:workbook:computing:unix#n|n]]__ ] [ __[[vlsi:workbook:computing:unix#o|o]]__ ] [ __[[vlsi:workbook:computing:unix#p|p]]__ ] [ __[[vlsi:workbook:computing:unix#q|q]]__ ] [ __[[vlsi:workbook:computing:unix#r|r]]__ ] [ __[[vlsi:workbook:computing:unix#s|s]]__ ] [ __[[vlsi:workbook:computing:unix#t|t]]__ ] [ __[[vlsi:workbook:computing:unix#u|u]]__ ] [ __[[vlsi:workbook:computing:unix#v|v]]__ ] [ __[[vlsi:workbook:computing:unix#w|w]]__ ] [ __[[vlsi:workbook:computing:unix#x|x]]__ ] [ __[[vlsi:workbook:computing:unix#y|y]]__ ] [ __[[vlsi:workbook:computing:unix#z|z]]__ ] == a == alias Create an alias • apropos Search Help manual pages (man -k) apt-get Search for and install software packages (Debian/Ubuntu) aptitude Search for and install software packages (Debian/Ubuntu) aspell Spell Checker awk Find and Replace text, database sort/validate/index == b == basename Strip directory and suffix from filenames bash GNU Bourne-Again SHell bc Arbitrary precision calculator language bg Send to background break Exit from a loop • builtin Run a shell builtin bzip2 Compress or decompress named file(s) == c == cal Display a calendar case Conditionally perform a command cat Concatenate and print (display) the content of files cd Change Directory cfdisk Partition table manipulator for Linux chgrp Change group ownership chmod Change access permissions chown Change file owner and group chroot Run a command with a different root directory chkconfig System services (runlevel) cksum Print CRC checksum and byte counts clear Clear terminal screen cmp Compare two files comm Compare two sorted files line by line command Run a command - ignoring shell functions • continue Resume the next iteration of a loop • cp Copy one or more files to another location cron Daemon to execute scheduled commands crontab Schedule a command to run at a later time csplit Split a file into context-determined pieces cut Divide a file into several parts == d == date Display or change the date & time dc Desk Calculator dd Convert and copy a file, write disk headers, boot records ddrescue Data recovery tool declare Declare variables and give them attributes • df Display free disk space diff Display the differences between two files diff3 Show differences among three files dig DNS lookup dir Briefly list directory contents dircolors Colour setup for `ls' dirname Convert a full pathname to just a path dirs Display list of remembered directories dmesg Print kernel & driver messages du Estimate file space usage == e == echo Display message on screen • egrep Search file(s) for lines that match an extended expression eject Eject removable media enable Enable and disable builtin shell commands • env Environment variables ethtool Ethernet card settings eval Evaluate several commands/arguments exec Execute a command exit Exit the shell expect Automate arbitrary applications accessed over a terminal expand Convert tabs to spaces export Set an environment variable expr Evaluate expressions == f == false Do nothing, unsuccessfully fdformat Low-level format a floppy disk fdisk Partition table manipulator for Linux fg Send job to foreground fgrep Search file(s) for lines that match a fixed string file Determine file type find Search for files that meet a desired criteria fmt Reformat paragraph text fold Wrap text to fit a specified width. for Expand words, and execute commands format Format disks or tapes free Display memory usage fsck File system consistency check and repair ftp File Transfer Protocol function Define Function Macros fuser Identify/kill the process that is accessing a file == g == gawk Find and Replace text within file(s) getopts Parse positional parameters grep Search file(s) for lines that match a given pattern groupadd Add a user security group groupdel Delete a group groupmod Modify a group groups Print group names a user is in gzip Compress or decompress named file(s) == h == hash Remember the full pathname of a name argument head Output the first part of file(s) help Display help for a built-in command • history Command History hostname Print or set system name == i == iconv Convert the character set of a file id Print user and group id's if Conditionally perform a command ifconfig Configure a network interface ifdown Stop a network interface ifup Start a network interface up import Capture an X server screen and save the image to file install Copy files and set attributes == j == jobs List active jobs • join Join lines on a common field == k == kill Stop a process from running killall Kill processes by name == l == less Display output one screen at a time let Perform arithmetic on shell variables • link Create a link to a file ln Create a symbolic link to a file local Create variables • locate Find files logname Print current login name logout Exit a login shell • look Display lines beginning with a given string lpc Line printer control program lpr Off line print lprint Print a file lprintd Abort a print job lprintq List the print queue lprm Remove jobs from the print queue ls List information about file(s) lsof List open files == m == make Recompile a group of programs man Help manual mkdir Create new folder(s) mkfifo Make FIFOs (named pipes) mkisofs Create an hybrid ISO9660/JOLIET/HFS filesystem mknod Make block or character special files more Display output one screen at a time mount Mount a file system mtools Manipulate MS-DOS files mtr Network diagnostics (traceroute/ping) mv Move or rename files or directories mmv Mass Move and rename (files) == n == netstat Networking information nice Set the priority of a command or job nl Number lines and write files nohup Run a command immune to hangups notify-send Send desktop notifications nslookup Query Internet name servers interactively == o == open Open a file in its default application op Operator access == p == passwd Modify a user password paste Merge lines of files pathchk Check file name portability ping Test a network connection pkill Stop processes from running popd Restore the previous value of the current directory pr Prepare files for printing printcap Printer capability database printenv Print environment variables printf Format and print data • ps Process status pushd Save and then change the current directory pwd Print Working Directory == q == quota Display disk usage and limits quotacheck Scan a file system for disk usage quotactl Set disk quotas == r == ram ram disk device rcp Copy files between two machines read Read a line from standard input • readarray Read from stdin into an array variable • readonly Mark variables/functions as readonly reboot Reboot the system rename Rename files renice Alter priority of running processes remsync Synchronize remote files via email return Exit a shell function rev Reverse lines of a file rm Remove files rmdir Remove folder(s) rsync Remote file copy (Synchronize file trees) == s == screen Multiplex terminal, run remote shells via ssh scp Secure copy (remote file copy) sdiff Merge two files interactively sed Stream Editor select Accept keyboard input seq Print numeric sequences set Manipulate shell variables and functions sftp Secure File Transfer Program shift Shift positional parameters shopt Shell Options shutdown Shutdown or restart linux sleep Delay for a specified time slocate Find files sort Sort text files source Run commands from a file '.' split Split a file into fixed-size pieces ssh Secure Shell client (remote login program) strace Trace system calls and signals su Substitute user identity sudo Execute a command as another user sum Print a checksum for a file suspend Suspend execution of this shell • sync Synchronize data on disk with memory == t == tail Output the last part of file tar Tape ARchiver tee Redirect output to multiple files test Evaluate a conditional expression time Measure Program running time timeout Run a command with a time limit times User and system times touch Change file timestamps top List processes running on the system traceroute Trace Route to Host trap Run a command when a signal is set(bourne) tr Translate, squeeze, and/or delete characters true Do nothing, successfully tsort Topological sort tty Print filename of terminal on stdin type Describe a command • == u == ulimit Limit user resources • umask Users file creation mask umount Unmount a device unalias Remove an alias • uname Print system information unexpand Convert spaces to tabs uniq Uniquify files units Convert units from one scale to another unset Remove variable or function names unshar Unpack shell archive scripts until Execute commands (until error) uptime Show uptime useradd Create new user account userdel Delete a user account usermod Modify user account users List users currently logged in uuencode Encode a binary file uudecode Decode a file created by uuencode == v == v Verbosely list directory contents (`ls -l -b') vdir Verbosely list directory contents (`ls -l -b') vi Text Editor vmstat Report virtual memory statistics == w == wait Wait for a process to complete • watch Execute/display a program periodically wc Print byte, word, and line counts whereis Search the user's $path, man pages and source files for a program which Search the user's $path for a program file while Execute commands who Print all usernames currently logged in whoami Print the current user id and name (`id -un') wget Retrieve web pages or files via HTTP, HTTPS or FTP write Send a message to another user == x == xargs Execute utility, passing constructed argument list(s) xdg-open Open a file or URL in the user's preferred application. yes Print a string until interrupted . Run a command script in the current shell !! Run the last command again ### Comment / Remark == z == w Provides a quick summary of every user who Get the information on currently logged in users who -b Get the time of last system boot who -l Get information on system login processes who -m Get the hostname and user associated with stdin who -r Get the current run level who -u Get the list of user logged in who -q Get number of users logged-in and their user names who -a Get all the information ===== Working with directories ===== ^ **Command** ^ **Description** ^ |''man ''| | |''pwd ''| | |''cd ''| | |''cd /path/to/directory ''| | |''cd ''| | |''cd .. ''| | |''cd . ''| | |''cd - ''| | |''mkdir ''| | |''ls ''| | |''ls -l ''| | |''ls -althr ''| | |''ls ''| | |''ls /path/to/dirName ''| | |''mv ''| | |''mv /path/to/newName ''| | |''cp bla bla bla ''| | |''rm ''| | |''acroread fileName.pdf ''| | |''evince fileName.pdf ''| | Set alias in ''~/.cshrc'' file alias ll 'ls -ahl' or in a ''~/.bashrc'' alias ll='ls ahl' ===== Viewing pdf files ===== ====== Environment variables ====== export VarName=value # sh and sh-like shells (e.g. bash) setenv varName value # csh and csh-like shells (e.g. tcsh) set varName=value NOTA! variabili settate con set sono viste solo dalla shell, con setenv/export anche dai programmi! ====== Change your password ====== yppasswd [user] ====== Viewing/Killing processes ====== ====== File permissions ====== See [[http://www.ss64.com/bash/chmod.html]] \\ For bash permissions: [[http://www.ss64.com/bash/syntax-permissions.html]] ====== Find files ===== which e.g. which cdsterm /usr/local/bin/cdsterm find /path/to/start/directory -name fileName find ''grep'' looks for text within files; in the following example: grep "chewbecca" *.txt the word "chewbecca" is searched in all the files with a .txt extension. ''whereis'' is used for finding the location of executables (binaries), source code, and manuals for a specific program: whereis firefox ''locate'' is very similar to ''find'' with the difference that it doesn't manually search the file system, but rather a database list of files that is maintained by the system: locate -i file_name (the ''-i'' option is used for case-insensitive searches). ====== Find differences between two files/two directories ===== diff [options] file_1 file_2 //diff// also allows to compare the contents of two directories by using the usual ''-r'' option (//**r**ecursive//): diff -r dir_1 dir_2 See also: \\ [[http://linux.about.com/library/cmd/blcmdl1_diff.htm]] ====== Text editors ====== nano, vi, gedit, nedit emacs, emacs -nw ===== Working with compressed files ===== Create a zipped file: zip fileName.zip fileName Extract a zipped file: unzip fileName.zip Create a gzipped file: gzip fileName Extract a gzipped file: gunzip fileName.gz [gzip -d fileName.gz] Create a .tar.gz archive: tar -czvf fileName.tar.gz /path/to/directory Extract a .tar.gz archive: tar -xzvf fileName.tar.gz Create a .tar.bz2 archive: tar -cjvf fileName.tar.bz2 /path/to/directory Extract a .tar.bz2 archive: tar -xjvf fileName.tar.bz2 Extract a .rar file: unrar fileName.rar See also [[http://www.littleigloo.org/linux/how-to/uncompress-linux-files.html]] ===== File Browser ===== usare ''nautilus'' nautilus --browser ===== Viewing images from the command line ===== If you need to view any image but you can only use the terminal, use the //Eye of GNOME// image viewer, which is the official image viewer for the GNOME Desktop environment and available on all Scientific Linux dictributions. Use the ''eog'' command, which eog /usr/bin/eog To open an image, cd /path/to/image eog fileName.png See also \\ [[http://projects.gnome.org/eog/]] ====== Basic CVS commands ====== Official documentation: //[[http://ximbiot.com/cvs/manual]]// [[http://commons.oreilly.com/wiki/index.php/Essential_CVS]] Basic syntax of a cvs command: cvs [cvs options] command [command options] setenv CVSROOT /path/to/project/cvs/top/directory e.g. setenv CVSROOT /export/elt156xl/disk0/.cvsroot/kits/tsmc check-out a project or part of a project: cvs checkout project or cvs co project/subdir \\ In order to use disk space efficiently, it is recommend that you check out **only the directories you need** at the time. __**Adding and removing files to CVS repository**__ cvs add cvs remove ''add'' and ''remove'' commands just **schedule** the operation! The file will be actually added/removed to the repository with a ''commit'' statement, cvs commit -m "Text message" cvs commit -m "Text message" cvs log ===== Other Web tutorials ===== * //[[https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookBasicLinux]]// (CMS collaboration UNIX tutorial) * //[[http://www.slac.stanford.edu/BFROOT/www/doc/workbook/unix/unix.html]]// (BaBar collaboration UNIX tutorial) * //[[http://www.ee.surrey.ac.uk/Teaching/Unix/]]// * //[[http://www2.ocean.washington.edu/unix.tutorial.html]]// ====== ====== \\ ---- Last update: [[ panati@NOSPAMto.infn.it | Serena Panati ]] - Nov 10, 2013 ~~NOTOC~~