[ BASIC.LINUX.COMMANDS ]

basic.linux.commands.txt
[ BASIC.LINUX.COMMANDS ]


TAR
# -(c)reate
# E-(x)tract
# -(t)View
tar cvf archive_name.tar dirname/
tar xvf archive_name.tar
tar tvf archive_name.tar

GREP
# search file for string: case -(i)nsensitive
# print matched line: and 3 lines after
# -(r)ecursively search for  string in all files
grep -i "the" demo_file
grep -A 3 -i "example" demo_text
grep -r "ramstein" *

FIND
# Find files by name: case -(i)nsensitive
# Execute commands on files found by find
# Find empty files in home directory
find -iname "MyCProgram.c"
find -iname "MyCProgram.c" -exec md5sum {} \;
find ~ -empty

SSH
# Login to remote host
# Debug ssh client
# Display ssh client version
ssh -l jsmith remotehost.example.com
ssh -v -l jsmith remotehost.example.com
ssh -V

SED
# copy DOS file to Unix: find \r\n at each line end
# converts DOS to Unix file format
# Print reverse order
# Add line number to un-empty lines
sed 's/.$//' filename
sed -n '1!G;h;$p' stuff.txt
sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'

AWK
# Remove duplicate lines
# Print all lines from /etc/passwd that has the same uid and gid
# Print specific field from file.
awk '!($0 in array) { array[$0]; print }' tmpfile
awk -F ':' '$3==$4' passwd.txt
awk '{print $2,$5;}' employee.txt

VIM
# Go to the 143rd line of file
# Go to the first match of the specified
# Open the file in read only mode.
vim +143 filename.txt
vim +/search-term filename.txt
vim -R /etc/passwd

DIFF
# Ignore white space while comparing
diff -w name_list.txt name_list_new.txt

SORT
# Sort a file in ascending order
# Sort a file in descending order
# Sort passwd file by 3rd field
sort names.txt
sort -r names.txt
sort -t: -k 3n /etc/passwd | more

EXPORT
# To view oracle related environment variables.
export | grep ORACLE
declare -x ORACLE_BASE="/u01/app/oracle"
declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0"
declare -x ORACLE_SID="med"
declare -x ORACLE_TERM="xterm"
# export an environment variable:
export ORACLE_HOME=/u01/app/oracle/product/10.2.0

XARGS
Copy all images to external hard-drive
ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory
# Search all jpg images in the system and archive it.
find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

# Download all the URLs mentioned in the url-list.txt file
cat url-list.txt | xargs wget –c

LS
# Display filesize in human readable format (e.g. KB, MB etc.,)
# Order Files Based on Last Modified Time (In Reverse Order)
# Visual Classification of Files With Special Characters Using ls -F
ls -lh
ls -ltr
ls -F

CD
# toggle between the last two directories
cd -

GZIP
# create .gz
gzip test.txt

# uncompress .gz file:
gzip -d test.txt.gz

# Display compression ratio of the compressed file using gzip -l
gzip -l *.gz


# ==== bzip2

# create .bz2
bzip2 test.txt
# uncompress a *.bz2 file:
bzip2 -d test.txt.bz2


# ==== unzip

extract .zip

unzip test.zip
Preview inside .zip
unzip -l jasper.zip

# ==== shutdown

# Shutdown now
shutdown -h now
# Shutdown system in 10 min.
shutdown -h +10
# shutdown and Reboot
shutdown -r now
# Force filesystem check in reboot.
shutdown -Fr now

# ==== ftp

# Both ftp and secure ftp (sftp) has similar commands. To connect to a remote server and download multiple files, do the following.

ftp IP/hostname
ftp> mget *.html
# view the file names located on the remote server before downloading, mls ftp command

ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
/ftptest/othertools.html
/ftptest/samplereport.html
/ftptest/usage.html

# ==== crontab

View crontab entry for a specific user
crontab -u john -l
# Schedule a cron job every 10 minutes.

*/10 * * * * /home/ramesh/check-disk-space

# ====service

# Service command is used to run the system V init scripts. i.e Instead of calling the scripts located in the /etc/init.d/ directory with their full path,use the service command.
# Check the status of a service:
service ssh status
# Check the status of all the services.
service --status-all
# Restart a service.
service ssh restart


# ==== ps

# ps command is used to display information about the processes that are running in the system.
# While there are lot of arguments that could be passed to a ps command, following are some of the common ones.
# To view current running processes.
# To view current running processes in a tree structure. H option stands for process hierarchy.
ps -ef | more
ps -efH | more

# ==== free

# This command is used to display the free, used, swap memory available in the system.#
# Typical free command output. The output is displayed in bytes.

free

If you want to quickly check how many GB of RAM your system has use the -g option. -b option displays in bytes, -k in kilo bytes, -m in mega bytes.

free -g


If you want to see a total memory ( including the swap), use the -t switch, which will display a total line as shown below.

free -t


# ==== top

# top command displays the top processes in the system ( by default sorted by cpu usage ). To sort top output by any column, Press O (upper-case O) , which will display all the possible columns that you can sort by as shown below.


To displays only the processes that belong to a particular user use -u option. The following will show only the top processes that belongs to oracle user.

top -u oracle


# ==== df

Displays the file system disk space usage. By default df -k displays output in bytes.
df -k
df -h
df -T



# ==== kill -9 trolls

Use kill command to terminate a web troll particularly those from microsoft.. get the process id using ps -ef command, then use kill -9 to kill the running Linux process as shown below. You can also use killall, pkill, xkill to terminate a unix process.

ps -ef | grep vim

kill -9 7243


# ==== rm

Get confirmation before removing the file.

rm -i filename.txt
It is very useful while giving shell metacharacters in the file name argument.
Print the filename and get confirmation before removing the file.
rm -i file*
Following example recursively removes all files and directories under the example directory. This also removes the example directory itself.
rm -r example


# ==== cp

Copy file1 to file2 preserving the mode, ownership and timestamp.
cp -p file1 file2
Copy file1 to file2. if file2 exists prompt for confirmation before overwritting it.
cp -i file1 file2


# ==== mv

Rename file1 to file2. if file2 exists prompt for confirmation before overwritting it.

mv -i file1 file2
Note: mv -f is just the opposite, which will overwrite file2 without prompting.

mv -v will print what is happening during file rename, which is useful while specifying shell metacharacters in the file name argument.

mv -v file1 file2


# ==== cat

You can view multiple files at the same time. Following example prints the content of file1 followed by file2 to stdout.

cat file1 file2
While displaying the file, following cat -n command will prepend the line number to each line of the output.

cat -n /etc/logrotate.conf


# ==== mount

To mount a file system, you should first create a directory and mount it as shown below.

# mkdir /u01

# mount /dev/sdb1 /u01
You can also add this to the fstab for automatic mounting. i.e Anytime system is restarted, the filesystem will be mounted.

/dev/sdb1 /u01 ext2 defaults 0 2


# ==== chmod

chmod command is used to change the permissions for a file or directory.

Give full access to user and group (i.e read, write and execute ) on a specific file.

chmod ug+rwx file.txt
Revoke all access for the group (i.e read, write and execute ) on a specific file.

chmod g-rwx file.txt
Apply the file permissions recursively to all the files in the sub-directories.

chmod -R ug+rwx file.txt
More chmod examples: 7 Chmod for Beginners


# ==== chown

chown command is used to change the owner and group of a file. \

To change owner to oracle and group to db on a file. i.e Change both owner and group at the same time.

chown oracle:dba dbora.sh
Use -R to change the ownership recursively.

chown -R oracle:dba /home/oracle


# ==== passwd

Change your password from command line using passwd. This will prompt for the old password followed by the new password.

passwd
Super user can use passwd command to reset others password. This will not prompt for current password of the user.

# passwd USERNAME
Remove password for a specific user. Root user can disable password for a specific user. Once the password is disabled, the user can login without entering the password.

# passwd -d USERNAME


# ==== mkdir

Following example creates a directory called temp under your home directory.

mkdir ~/temp
Create nested directories using one mkdir command. If any of these directories exist already, it will not display any error. If any of these directories doesn’t exist, it will create them.

mkdir -p dir1/dir2/dir3/dir4/

# ==== ifconfig

# Use ifconfig command to view or configure a network interface on the Linux system.
# View all the interfaces along with status.

ifconfig -a
ifconfig eth0 up
ifconfig eth0 down

# ==== uname

Uname command displays important information about the systemKernel name, Host name, Kernel release number,
Processor type
uname -a

# ==== whereis

When you want to find out where a specific Unix command exists (for example, where does ls command exists?), you can execute the following command.

whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
When you want to search an executable from a path other than the whereis default path, you can use -B option and give path as argument to it. This searches for the executable lsmk in the /tmp directory, and displays it, if it is available.

whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk


# ==== whatis

Whatis command displays a single line description about a command.

whatis ls
ls

whatis ifconfig
ifconfig (8)         - configure a network interface


# ==== locate

Using locate command you can quickly search for the location of a specific file (or group of files). Locate command uses the database created by updatedb.

locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/doc/cron/examples/crontab2english.pl.gz
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim72/syntax/crontab.vim


# ==== man

man crontab
When a man page for a command is located under more than one section, you can view the man page for that command from a specific section as shown below.

man SECTION-NUMBER commandname
Following 8 sections are available in the man page.

General commands
System calls
C library functions
Special files (usually devices, those found in /dev) and drivers
File formats and conventions
Games and screensavers
Miscellaneous
System administration commands and daemons

whatis crontab

# ==== tail

Print the last 10 lines of a file by default.
tail filename.txt
Print N number of lines from the file named filename.txt

tail -n N filename.txt
View the content of the file in real time using tail -f. This is useful to view the log files, that keeps growing. The command can be terminated using CTRL-C.

tail -f log-file
More tail examples: 3 Methods To View tail -f output of Multiple Log Files in One Terminal


# ==== less

# less is very efficient while viewing huge log files, as it doesn’t need to load the full file while opening.

less huge-log-file.log
One you open a file using less command, following two keys are very helpful.

CTRL+F – forward one window
CTRL+B – backward one window
More less examples: Unix Less Command: 10 Tips for Effective Navigation


# ==== su

Switch to a different user account using su command. Super user can switch to any other user without entering their password.

su - USERNAME
Execute a single command from a different account name. In the following example, john can execute the ls command as raj username. Once the command is executed, it will come back to john’s account.

[john@dev-server]$ su - raj -c 'ls'

[john@dev-server]$
Login to a specified user accountexecute the specified shell instead of the default shell.

su -s 'SHELLNAME' USERNAME

# ==== mysql

mysql is probably the most widely used open source database on Linux. Even if you don’t run a mysql database on your server, you might end-up using the mysql command ( client ) to connect to a mysql database running on the remote server.
To connect to a remote mysql database. This will prompt for a password.
mysql -u root -p -h 192.168.1.2
To connect to a local mysql database.
mysql -u root -p
If you want to specify the mysql root password in the command line itself, enter it immediately after -p (without any space).

# ==== yum

To install apache using yum
yum install httpd
To upgrade apache using yum
yum update httpd
To uninstall/remove apache using yum.
yum remove httpd

# ==== rpm

To install apache using rpm
rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm
To upgrade apache using rpm
rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm
To uninstall/remove apache using rpm
rpm -ev httpd

# ==== ping

Ping a remote host by sending only 5 packets.
ping -c 5 gmail.com

# ==== date

# set the system date# syncronize the hardware clock
date -s "01/31/2010 23:59:53"hwclock –systohc
hwclock --systohc –utc

# ==== wget

The quick and effective method to download software, music, video from internet is using wget command.
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
Download and store it with a different name.
wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701

Blog Archive