文件操作
cd
pwd
rm -f
or rm -rf
or rmdir
touch
or cat > xxx
mktemp testing.XXXXXX
, 文件名末尾加6个Xmktemp -d dir.XXXXXX
, 目录名末尾加6个Xmkdir
mv
cp
ln
or ln -s
ls
find
alias
dirname
basename
which
whereis
locate
文件查看
cat
more
or less
head
tail
stat
file
文本编辑
sed
awk
and gawk
ed
sort
vim
or emacs
查询/统计
wc -c
or wc -l
or wc -w
nl
grep
文件权限
cat /etc/passwd
or cat /etc/shadow
useradd
userdel
usermod
or chsh
or chfn
or chage
passwd
or chpasswd
cat /etc/group
groupadd
groupdel
usermod
groupmod
umask
chmod
chown
or chgrp
sudo
id
压缩/归档
tar
zip
or unzip
or zipcloak
or zipnote
or zipsplit
bzip2
or bunzip2
or bzcat
gzip
or gunzip
or gzcat
# 仅打包,不压缩
tar -cvf /usr/local/test.tar /usr/local/test
# 解包
tar –xvf test.tar
# 打包后,用bzip2压缩
tar -jcvf /usr/local/test.tar.bz2 /usr/local/test
# 解压bzip2包
tar -jxvf /usr/local/test.tar.bz2
# 打包后,用gzip压缩
tar -zcvf /usr/local/test.tar.gz /usr/local/test
# 解压gzip包
tar -zxvf /usr/local/test.tar.gz
程序安装
apt-get
yum
or rpm
rpm -q xxx
rpm -qa
rpm -ivh xxx
rpm -ql xxx
./configure
then make -j & make install
chkconfig
# 列出所有服务
chkconfig --list
# 增加httpd服务
chkconfig --add httpd
# 删除httpd服务
chkconfig --del httpd
update-alternatives
# 列出系统中所有安装java程序的路径,并选择默认程序
update-alternatives --config java
后台运行
command &
nohup command &
jobs
bg
at [-f filename] time
atq
atrm
nice
and renice
cron min hour dayofmonth month dayofweek command
crontab -l
ls /etc/cron.*ly
anacron
screen
sh -c "cd /home; ls"
系统监控
cat /proc/meminfo
ipcs -m
ps aux
or ps -ef
top
kill
or killall
mount
or umount
df
or du
who
lsof
trap
uname -a
cat /etc/redhat-release
日期/时间
date
sleep
time
打印/输出
printf
or echo
>
>>
<
<<
|
read
echo $?
exit return_number
echo $#
echo ${!#}
$*
or $@
shift
# ./testing -a -b test1 -d
# Found the -a option
# Found the -b option. with parameter value test1
# -d is not an option
# extracting command line options and values
while [ -n "$1" ]
do
case "$1" in
-a) echo "Found the -a option";;
-b) param="$2"
echo "Found the -b option, with parameter value $param"
shirt 2;;
-c) echo "Found the -c option";;
--) shift
break;
*) echo "$1 is not an option";;
esac
shift
done
count=1
for param in "$@"
do
echo "Parameter #$count: $param"
count=$[ $count + 1 ]
done
getopt
command >&2
return_number>
, 重定向所有输出 &>
# 文件或路径不存在的返回码是2
ls -al badfile 2> testfile
cat testfile
# ls: cannot access badfile: No such file or directory
ls -al test test2 test3 badtest 2> testfile 1> testfile2
cat testfile
# ls: cannot access test: No such file or directory
# ls: cannot access badtest: No such file or directory
cat testfile2
# -rw-rw-r--. 1 rich rich 158 2010-10-16 11:32 test2
# -rw-rw-r--. 1 rich rich 0 2010-10-16 11:33 test3
exec return_number>
or exec return_number<
command > /dev/null
cat /dev/null > filename
tee filename
date | tee testfile
# Sun Oct 17 18:56:21 EDT 2010
clear
select
# smenu1
PS3="Enter option: "
select option in "Display disk space" "Display logged on users" "Display memory usage" "Exit program"
do
case $option in
"Exit program")
break ;;
"Display disk space")
df -k ;;
"Display logged on users")
who ;;
"Display memory usage")
cat /proc/meminfo ;;
*)
clear
echo "Sorry, wrong selection" ;;
esac
done
clear
# ./smenu1
# 1) Display disk space 3) Display memory usage
# 2) Display logged on users 4) Exit program
# Enter option:
数学运算
expr xxx
$[ xxx ]
bc
# 2个变量相除,结果为4位小数
var1=100
var2=45
var3=`echo "scale=4; $var1 / $var2" | bc`
echo The answer for this is $var3
# The answer for this is 2.2222
运算符
test condition
or [ condition ]
(( expression ))
[[ expression ]]
( )
# 数组遍历
array_name=(value0 value1 value2 value3 value4)
for value in ${array_name[@]}; do
echo value
done
网络通信
mail
ifconfig
or ip addr
netstat
or ss
wget
curl
, 此命令也包含文件下载功能ping
tracepath
or traceroute
ping
和tracepath
功能的工具 mtr
host
whois
ifplugstatus
ifdown
and ifup
dhclient -r
## 常用ss命令
ss -l #显示本地打开的所有端口
ss -pl #显示每个进程具体打开的socket
ss -t -a #显示所有tcp socket
ss -u -a #显示所有的UDP Socekt
ss -o state established '( dport = :smtp or sport = :smtp )' #显示所有已建立的SMTP连接
ss -o state established '( dport = :http or sport = :http )' #显示所有已建立的HTTP连接
ss -x src /tmp/.X11-unix/* #找出所有连接X服务器的进程
ss -s #列出当前socket详细信息
结构化命令
if-then-else
if command1
then
commands
elif command2
then
more commands
else
more commands
fi
# or
if command1; then
commands
elif command2; then
more commands
else
more commands
fi
case
case variable in
pattern1 | pattern2)
commands1;;
pattern3)
commands2;;
*)
default commands;;
esac
for
for var in list
do
commands
done
# or
for var in list; do
commands
done
# or
for (( variable assignment ; condition ; iteration process )); do
commands
done
while
while test command
do
commands
done
# or
while test command; do
commands
done
# or 读取文件
while read line; do
echo "$line"
done
until
与while
条件判断刚好相反,command返回非0才执行commandsuntil test command
do
commands
done
# or
until test command; do
commands
done
break
and continue
函数
function name {
commands
}
# or
name() {
commands
}
return
,范围0~255function db1 {
read -p "Enter a value: " value
echo $[ $value * 2 ]
}
result=`db1`
echo "The new value is $result"
func value1 value2
local
. ./myfuncs
环境变量
printenv
set
export xxx
unset xxx
附录:默认shell环境变量
变量 | 描述 |
---|---|
CDPATH | 冒号分隔的目录列表,作为cd命令的搜索路径 |
HOME | 当前用户的主目录 |
IFS | shell用来分隔文本字符串的一列字符 |
当前用户收件箱的文件名;bash shell会检查这个文件来看有没有新邮件 | |
MAILPATH | 冒号分隔的当前用户收件箱的文件名列表;bash shell会检查列表中的每个文件来看有没有新邮件 |
OPTARG | getopts命令处理的最后一个选项参数值 |
OPTIND | getopts命令处理的最后一个选项参数的索引号 |
PATH | 冒号分隔的shell查找命令的目录列表 |
PS1 | shell命令行界面的主提示符 |
PS2 | shell命令行界面的次提示符 |
附录:Linux本地开机文件位置
发行版 | 文件位置 |
---|---|
debian | /etc/init.d/rc.local |
Fedora | /etc/rc.d/rc.local |
Mandriva | /etc/rc.local |
openSuse | /etc/init.d/boot.local |
Ubuntu | /etc/rc.local |
附录:登录shell文件处理顺序
编号 | 交互式login shell | 交互式non-login shell |
---|---|---|
1) 系统全局环境变量 | /etc/profile | /etc/bashrc |
2) 私有环境变量 | $HOME/.bash_profile | - |
3) 私有环境变量 | $HOME/.bash_login | - |
4) 私有环境变量 | $HOME/.profile | $HOME/.bashrc |
附录:expr命令操作符
操作符 | 描述 |
---|---|
ARG1 | ARG2 | 如果没有参数是null或零值,返回ARG1;否则返回ARG2 |
ARG1 & ARG2 | 如果没有参数是null或零值,返回ARG1;否则返回0 |
ARG1 < ARG2 | 如果ARG1小于ARG2,返回1;否则返回0 |
ARG1 <= ARG2 | 如果ARG1小于或等于ARG2,返回1;否则返回0 |
ARG1 = ARG2 | 如果ARG1等于ARG2,返回1;否则返回0 |
ARG1 != ARG2 | 如果ARG1不等于ARG2,返回1;否则返回0 |
ARG1 >= ARG2 | 如果ARG1大于或等于ARG2,返回1;否则返回0 |
ARG1 > ARG2 | 如果ARG1大于ARG2,返回1;否则返回0 |
ARG1 + ARG2 | 返回ARG1和ARG2的算术运算和 |
ARG1 - ARG2 | 返回ARG1和ARG2的算术运算差 |
ARG1 * ARG2 | 返回ARG1和ARG2的算术运算乘积 |
ARG1 / ARG2 | 返回ARG1被ARG2除的运算商 |
ARG1 % ARG2 | 返回ARG1被ARG2除的算术余数 |
STRING : REGEXP | 如果REGEXP匹配到了STRING中的某个模式,返回该模式匹配 |
match STRING REGEXP | 如果REGEXP匹配到了STRING中的某个模式,返回该模式匹配 |
substr STRING POS LENGTH | 返回起始位置为POS(从1开始计数)、长度为LENGTH个字符的子字符串 |
index STRING CHARS | 返回在STRING中找到CHARS字符串的位置;否则,返回0 |
length STRING | 返回字符串STRING的数值长度 |
+ TOKEN | 将TOKEN解释成字符串,即使是个关键字 |
(EXPRESSION)) | 返回EXPRESSION的值 |
附录:Linux退出状态码
状态码 | 描述 |
---|---|
0 | 命令成功结束 |
1 | 通用未知错误 |
2 | 误用shell命令 |
126 | 命令不可执行 |
127 | 没找到命令 |
128 | 无效退出参数 |
128+x | Linux信号x的严重错误 |
130 | 命令通过Ctrl+C终止 |
255 | 退出状态码越界 |
附录:test命令的数值比较功能
比较 | 描述 |
---|---|
n1 -eq n2 | 检查n1是否与n2相等 |
n1 -ge n2 | 检查n1是否大于或等于n2 |
n1 -gt n2 | 检查n1是否大于n2 |
n1 -le n2 | 检查n1是否小于或等于n2 |
n1 -lt n2 | 检查n1是否小于n2 |
n1 -ne n2 | 检查n1是否不等于n2 |
附录:test命令的字符串比较功能
比较 | 描述 |
---|---|
str1 = str2 | 检查str1是否和str2相同 |
str1 != str2 | 检查str1是否和str2不同 |
str1 < str2 | 检查str1是否比str2小 |
str1 > str2 | 检查str1是否比str2大 |
-n str1 | 检查str1的长度是否非0 |
-z str1 | 检查str1的长度是否为0 |
附录:test命令的文件比较功能
比较 | 描述 |
---|---|
-d file | 检查file是否存在并是一个目录 |
-e file | 检查file是否存在 |
-f file | 检查file是否存在并是一个文件 |
-r file | 检查file是否存在并可读 |
-s file | 检查file是否存在并非空 |
-w file | 检查file是否存在并可写 |
-x file | 检查file是否存在并可执行 |
-O file | 检查file是否存在并并属当前用户所有 |
-G file | 检查file是否存在并且默认组与当前用户相同 |
file1 -nt file2 | 检查file1是否比file2新 |
file1 -ot file2 | 检查file1是否比file2旧 |
附录:通用的Linux命令选项
选项 | 描述 |
---|---|
-a | 显示所有对象 |
-c | 生成一个计数 |
-d | 指定一个目录 |
-e | 扩展一个对象 |
-f | 指定读入数据的文件 |
-h | 显示命令的帮助信息 |
-i | 忽略文本大小写 |
-l | 产生输出的长格式版本 |
-n | 使用非交互模式(批量) |
-o | 指定将所有输出重定向到输出文件 |
-q | 以安静模式运行 |
-r | 递归地处理目录和文件 |
-s | 以安静模式运行 |
-v | 生成详细输出 |
-x | 排除某个对象 |
-y | 对所有问题回答yes |
附录:Linux信号
信号 | 值 | 描述 |
---|---|---|
1 | SIGHUP | 挂起进程 |
2 | SIGINT | 终止进程 |
3 | SIGQUIT | 停止进程 |
9 | SIGKILL | 无条件终止进程 |
15 | SIGTERM | 可能的话终止进程 |
17 | SIGSTOP | 无条件停止进程,但不是终止进程 |
18 | SIGTSTP | 停止或者暂停进程,但不终止进程 |
19 | SIGCONT | 继续运行停止的进程 |