文件操作更改当前目录cd
获取当前目录pwd
删除文件/目录rm -forrm -rforrmdir
创建文件touchorcat > xxx
创建临时文件mktemp testing.XXXXXX, 文件名末尾加6个X
创建临时目录mktemp -d dir.XXXXXX, 目录名末尾加6个X
创建目录mkdir
移动文件/文件重命名mv
复制cp
硬链接/软链接lnorln -s
显示文件列表ls
实际搜索硬盘查询文件名称find
别名alias
查看文件所在路径dirname
查看文件名(过滤路径)basename
查看可执行文件的位置which
查看文件的位置whereis
配合数据库查看文件位置locate
文件查看文件内容查看cat
按页查看文件内容moreorless
查看文件前几行head
查看文件后几行tail
查看文件统计信息stat
查看文件类型file
文本编辑字符流编辑器sed
模式匹配的程序设计语言awkandgawk
行编辑器ed
排序sort
编辑工具vimoremacs
查询/统计统计文件中数量wc -corwc -lorwc -w
计算行号nl
搜索数据grep
文件权限系统用户cat /etc/passwdorcat /etc/shadow
添加用户useradd
删除用户userdel
修改用户usermodorchshorchfnorchage
修改密码passwdorchpasswd
系统用户组cat /etc/group
添加用户组groupadd
删除用户组groupdel
添加用户到用户组usermod
修改用户组groupmod
设置创建文件默认权限umask
修改权限chmod
修改所属关系chownorchgrp
执行root命令sudo
显示用户id和所属组信息id
压缩/归档归档tar
zip压缩ziporunziporzipcloakorzipnoteorzipsplit
bzip2压缩bzip2orbunzip2orbzcat
gzip压缩gziporgunziporgzcat#仅打包,不压缩
tar-cvf/usr/local/test.tar/usr/local/test
#解包
tar–xvftest.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
程序安装Debian & Ubuntuapt-get
Redhat & CentOSyumorrpm
查询rpm包是否安装rpm -q xxx
列出所有被安装的rpm包rpm -qa
安装RPM包rpm -ivh xxx
查看yum安装后,机器里都装了哪些东西rpm -ql xxx
手动安装./configurethenmake -j & make install
系统服务chkconfig#列出所有服务
chkconfig--list
#增加httpd服务
chkconfig--addhttpd
#删除httpd服务
chkconfig--delhttpd创建、删除、修复、软连接,还能显示出已存在软连接的信息update-alternatives#列出系统中所有安装java程序的路径,并选择默认程序
update-alternatives--configjava
后台运行控制台下后台模式运行脚本command &
非控制台下后台模式运行脚本nohup command &
查看shell当前处理的作业jobs
重启停止的作业bg
计划执行作业at [-f filename] time
列出等待的作业atq
删除作业atrm
调整命令的调度优先级niceandrenice
计划定期执行脚本cron min hour dayofmonth month dayofweek command
列出当前用户所有cron时间表crontab -l
列出cron目录ls /etc/cron.*ly
运行服务器问题错过的的计划anacron
后台新窗口screen
创建新shell后台执行,完成后退出sh -c "cd /home; ls"
系统监控虚拟内存cat /proc/meminfo
共享内存ipcs -m
系统进程ps auxorps -ef
实时监测进程top
结束进程killorkillall
挂载媒体mountorumount
查看磁盘使用情况dfordu
查看登录用户who
查看所有进程和登陆用户lsof
捕捉信息trap
打印确切的系统信息uname -a
打印操作系统信息cat /etc/redhat-release
日期/时间当前时间date
休息暂停sleep
打印出一条命令或一个程序的执行时间time
打印/输出打印printforecho
输出重定向(覆盖)>
输出重定向(底部追加)>>
输入重定向<
内联输入重定向<<
管道|
标准键盘输入read
退出状态码echo $?
shell脚本结束设置退出状态码exit return_number
命令行参数数量echo $#
命令行最后一个参数echo ${!#}
命令行所有参数$*or$@
命令行参数位移shift#./testing-a-btest1-d
#Foundthe-aoption
#Foundthe-boption.withparametervaluetest1
#-disnotanoption
#extractingcommandlineoptionsandvalues
while[-n"$1"]
do
case"$1"in
-a)echo"Foundthe-aoption";;
-b)param="$2"
echo"Foundthe-boption,withparametervalue$param"
shirt2;;
-c)echo"Foundthe-coption";;
--)shift
break;
*)echo"$1isnotanoption";;
esac
shift
done
count=1
forparamin"$@"
do
echo"Parameter#$count:$param"
count=$[$count+1]
done命令行参数分析getopt
结果输出到和标准错误一样command >&2
重定向错误和数据return_number>, 重定向所有输出&>#文件或路径不存在的返回码是2
ls-albadfile2>testfile
cattestfile
#ls:cannotaccessbadfile:Nosuchfileordirectory
ls-altesttest2test3badtest2>testfile1>testfile2
cattestfile
#ls:cannotaccesstest:Nosuchfileordirectory
#ls:cannotaccessbadtest:Nosuchfileordirectory
cattestfile2
#-rw-rw-r--.1richrich158-10-1611:32test2
#-rw-rw-r--.1richrich0-10-1611:33test3永久重定向exec return_number>orexec return_number<
阻止命令输出command > /dev/null
清空文件cat /dev/null > filename
记录消息到日志文件tee filenamedate|teetestfile
#SunOct1718:56:21EDT清屏clear
创建脚本菜单select#smenu1
PS3="Enteroption:"
selectoptionin"Displaydiskspace""Displayloggedonusers""Displaymemoryusage""Exitprogram"
do
case$optionin
"Exitprogram")
break;;
"Displaydiskspace")
df-k;;
"Displayloggedonusers")
who;;
"Displaymemoryusage")
cat/proc/meminfo;;
*)
clear
echo"Sorry,wrongselection";;
esac
done
clear
#./smenu1
#1)Displaydiskspace3)Displaymemoryusage
#2)Displayloggedonusers4)Exitprogram
#Enteroption:
数学运算数学表达式expr xxx
方括号数学表达式$[ xxx ]
bash计算器bc#2个变量相除,结果为4位小数
var1=100
var2=45
var3=`echo"scale=4;$var1/$var2"|bc`
echoTheanswerforthisis$var3
#Theanswerforthisis2.2222
运算符测试条件并返回退出状态码(常用在if里)test conditionor[ condition ]
双尖括号(针对数学表达式, 常用在if里)(( expression ))
双方括号(针对字符串比较, 常用在if里)[[ expression ]]
数组( )#数组遍历
array_name=(value0value1value2value3value4)
forvaluein${array_name[@]};do
echovalue
done
网络通信输出邮件发送mail
输出网络接口配置ifconfigorip addr
显示网络接口信息netstatorss
文件下载wget
http请求curl, 此命令也包含文件下载功能
验证服务器是否连通ping
跟踪网络访问路由tracepathortraceroute
结合ping和tracepath功能的工具mtr
DNS查询host
查询指定站点的whois记录whois
网线是否插到在网络接口上ifplugstatus
网卡禁用和开启ifdownandifup
释放IP地址并从DHCP服务器上获得一个新的dhclient -r##常用ss命令
ss-l#显示本地打开的所有端口
ss-pl#显示每个进程具体打开的socket
ss-t-a#显示所有tcpsocket
ss-u-a#显示所有的UDPSocekt
ss-ostateestablished'(dport=:smtporsport=:smtp)'#显示所有已建立的SMTP连接
ss-ostateestablished'(dport=:httporsport=:http)'#显示所有已建立的HTTP连接
ss-xsrc/tmp/.X11-unix/*#找出所有连接X服务器的进程
ss-s#列出当前socket详细信息
结构化命令条件判断if-then-elseifcommand1
then
commands
elifcommand2
then
morecommands
else
morecommands
fi
#or
ifcommand1;then
commands
elifcommand2;then
morecommands
else
morecommands
fi条件分支casecasevariablein
pattern1|pattern2)
commands1;;
pattern3)
commands2;;
*)
defaultcommands;;
esac循环forforvarinlist
do
commands
done
#or
forvarinlist;do
commands
done
#or
for((variableassignment;condition;iterationprocess));do
commands
done循环whilewhiletestcommand
do
commands
done
#or
whiletestcommand;do
commands
done
#or读取文件
whilereadline;do
echo"$line"
done循环until与while条件判断刚好相反,command返回非0才执行commandsuntiltestcommand
do
commands
done
#or
untiltestcommand;do
commands
done控制循环breakandcontinue
函数基本脚本函数functionname{
commands
}
#or
name(){
commands
}退出函数并返回退出状态码return,范围0~255
函数返回真实数据functiondb1{
read-p"Enteravalue:"value
echo$[$value*2]
}
result=`db1`
echo"Thenewvalueis$result"函数参数func value1 value2
函数内局部变量local
脚本中调用另一个脚本. ./myfuncs
环境变量显示全局环境变量printenv
显示环境变量(局部+全局)set
设置全局环境变量export xxx
删除环境变量unset xxx
附录:默认shell环境变量变量描述CDPATH冒号分隔的目录列表,作为cd命令的搜索路径
HOME当前用户的主目录
IFSshell用来分隔文本字符串的一列字符
MAIL当前用户收件箱的文件名;bash shell会检查这个文件来看有没有新邮件
MAILPATH冒号分隔的当前用户收件箱的文件名列表;bash shell会检查列表中的每个文件来看有没有新邮件
OPTARGgetopts命令处理的最后一个选项参数值
OPTINDgetopts命令处理的最后一个选项参数的索引号
PATH冒号分隔的shell查找命令的目录列表
PS1shell命令行界面的主提示符
PS2shell命令行界面的次提示符
附录: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 shell1) 系统全局环境变量/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+xLinux信号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信号信号值描述1SIGHUP挂起进程
2SIGINT终止进程
3SIGQUIT停止进程
9SIGKILL无条件终止进程
15SIGTERM可能的话终止进程
17SIGSTOP无条件停止进程,但不是终止进程
18SIGTSTP停止或者暂停进程,但不终止进程
19SIGCONT继续运行停止的进程