A shell is a program (often written in C), which is a bridge for users to use Linux.
A shell is used by the user to interact with the operating system. There are a number of shells, they are listed below:
If you are new to Linux, I recommend these exercises
Here are a few shell versions, with bash being the default.
- sh (Bourne Shell): is the original shell used by UNIX, and is available on every UNIX.
The Bourne Shell is quite good at shell programming, but doesn’t do as well as several other shells in terms of handling interactions with users.
- bash (Bourne Again Shell): The default for LinuxOS, it is an extension of Bourne Shell.
Fully compatible with the Bourne Shell and adds many features to the Bourne Shell. Command complement, command editing, and command history can be provided. It also contains many of the benefits found in C Shell and Korn Shell, with a flexible and powerful editing interface, while being user friendly.
csh (C Shell): is a more suitable variant of Shell than Bourne Shell, which has a syntax similar to the C language.
Tcsh: is an extended version of the C Shell provided by Linux.
ksh (Korn Shell): combines the benefits of C Shell and Bourne Shell and is fully compatible with Bourne Shell.
pdksh: is an extension to ksh provided by Linux systems.
Some features of bash are:
History Bash records a history commands: bash can record previous commands in the
~/.bash_historyfile, only those that have been logged out since the last logout.
Tab auto-fill: Use tab to see auto-complete command or directory i.
alias command alias: you can set the alias of a command like:
alias ll='ls -al'
Job control: You can put certain tasks in the background to run, not many of them are described here
Program scripts: you can execute shell script files
Wildcards: You can use wildcards* when searching for related files or executing related commands.
Built-in command type: You can use the type command to see if a command is built-in to the bash
Create a new file (test.sh) using your favourite text editor: emacs, vim, nano etc.
Add this contents:
#!/bin/bash echo "Hello World !"
#!/bin/bash/ tells the system that the program specified by the subsequent path is the Shell program that interprets this script file.
There are two ways to run a Shell script.
Method 1. As an enforceable procedure
Save the above code as test.sh and CD to the appropriate directory.
Note that it must be written as `./test.sh`, not `test.sh`, and the same goes for any other binary.
chmod +x ./test.sh #Encourage the script to execute ./test.sh #Execute script
The linux system will look for test.sh in PATH, but only /bin, /sbin, /usr/bin, /usr/sbin, etc. are in PATH.
Your current directory is usually not in PATH, so write test.sh and you will not find the command. /test.sh to tell the system to look for it in the current directory.
Method 2、As an interpreter parameter
The way this works is to run the interpreter directly, with the parameters being the filename of the shell script, such as
/bin/sh test.sh /bin/php test.php
View file size, memory size, CPU information, hard drive space, etc.
# View current folder size du -sh * # Statistics the current folder (directory) size and sort by file size du -sh * | sort -n # view specified file size du -sk filename
These commands get information about your processor:
# Number of cpu: cat /proc/cpuinfo | grep "physical id" | uniq | wc -l # cpu cores: cat /proc/cpuinfo | grep "cpu cores" | uniq # cpu model: cat /proc/cpuinfo | grep 'model name' |uniq # cpu information: cat /proc/cpuinfo
Get information about your computers memory
cat /proc/meminfo | grep MemTotal # View total memory grep MemTotal /proc/meminfo # View the amount of free memory grep MemFree /proc/meminfo # View memory usage and swap zone usage free -m
Navigation the Linux file system
fdisk -l | grep Disk # list files in directory ls # enter directory cd dir # move up directory cd .. # current directory pwd
Retrieve information about the Linux file system
# View usage by partition df -h # View the size of the specified directory du -sh # View system load disks and partitions cat /proc/loadavg # View partition status of the mount mount | column -t # View all partitions fdisk -l # View all swap partitions swapon -s # View disk parameters (for IDE devices only) hdparm -i /dev/hda
view system information:
# View the linux system commands for CPU related parameters cat /proc/cpuinfo # system information command to view linux hard disk and partition information cat /proc/partitions # linux system command to view linux system memory information cat /proc/meminfo # view version, similar to uname -r cat /proc/version # view device io port cat /proc/ioports # view interrupt cat /proc/interrupts # View information about the PCI device cat /proc/PCI # view all swap partitions cat /proc/swaps # lists all PCI devices lspci -TV # List all linux system information commands for USB devices lsusb -tv # lists loaded kernel modules lsmod
More bash commands for your Linux or UNIX system
# linux system information to view kernel/OS/CPU information uname -a # View OS version head -n l /etc/issue # View linux system information command for computer name hostname # View environment variable resources env # View system uptime, number of users, load uptime # View network of IDE device detection status at boot dmesg | grep IDE # View properties of all network interfaces ifconfig # View firewall settings iptables -L # View route table route -n # View all listening ports netstat -lntp # View all established connections netstat -antp # View network statistics process netstat -s # View all processes ps -ef # Real-time display of process status users top # View active users w # View specified user information ID # View user login log last # View all system users cut -d: -f1 /etc/passwd # View all groups on the system cut -d: -f1 /etc/group # View the current user's scheduled task service crontab -l # list all system services chkconfig -list # List all started system services chkconfig -list | grep on # View all installed packages rpm -qa