====== 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~~