shell基础命令

//学shell推荐书籍 Unix shell范例精讲(第四版)
1:文件比较:
if [ -f  file ]    如果文件存在   (yum install nfs-utils -y)安装nfs
if [ -d ...   ]    如果目录存在
if [ -s file  ]    如果文件存在且非空 
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
2:字符串比较:
if [ -z "字符串" ] 长度为0为真,zero
if [ -n "字符串" ] 长度不为0为真,no zero
if [ "串1" =  "串2" ] 串1等于串2为真 注意:串1与串2与等号之间要有空格。
if [ "串1" !=  "串2" ] 串1不等于串2为真 注意:串1与串2与等号之间要有空格。
3:整数操作符比较
if [ int1 -eq int2 ]    如果int1等于int2   equal
if [ int1 -ne int2 ]    如果不等于         not equal
if [ int1 -gt int2 ]    如果大于           greater than
if [ int1 -ge int2 ]    如果大于等于       greater equal
if [ int1 -lt int2 ]    如果小于           less than 
if [ int1 -le int2 ]    如果小于等于       less equal
注意:数字比较最好用上面的,在操作符左右最好用空格隔开,否则容易出错。
[ -n "abc" ]&&echo 0 || echo 1 
[ -f wupeng ]echo 1 ||echo0 (如果有文件返回1,否则返回0)
[ -f wupeng ]&&echo 1 (如果有文件返回1)注意:如果是路径指定的文件要加引号。
[ -f /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog(执行该文件)
4:$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误);
  $# 这个程式的参数个数;
  $$ 这个程式的PID(脚本运行的当前进程ID号);
5: cat <<end
   ;;;;;;
   end
将;;的内容输出到屏幕中;"\"转义字符;
6:awk命令,$0表示显示整行,$NF显示当前行最后一列。$1,$2,$3显示当前行第一列,第二列,第三列。
free -m|grep cache\:|awk '{print($NF)}'
free -m|awk 'NR==3{print($NF)}'/取第二行的最后一列的值。
7:linux mail 命令参数:
使用mail发邮件时,必须先将sendmail服务启动。
mail –s “邮件主题” –c”抄送地址” –b “密送地址” -- -f 发送人邮件地址 –F 发件人姓名 < 要发送的邮件内容
mail -s "$chars" 962952375@qq.com
8:定时发送:
1:/var/spool/cron/目录下存放定时任务;*/5 * * * * /home/npstest/work/bin/free.sh 每5分种
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。每天早上6点。
9:killall+进程数,杀进程。
10:date +"%Y-%m-%d %H-%M-%S"取时间的shell指令。date -d "1 day ago" +"%Y%m%d"获取前一天日期的方法
11:函数的执行方法
1)不带参数的函数执行方法
函数名
2)带参数的函数执行方法
函数名 参数1   参数2
在函数中调用参数时,由于开始定义函数不带参数名,所以与脚本调用参数一样,用$1,$2来调用。
注意的是$0比较特殊,它仍然是代表父脚本的名称而不是函数的名称。
11:wc filename 输出信息依次:行数,字数,字节数(wc后面只能加文件名,不能是内容)
   wc -l filename 文件行数
   wc -c filename  字节数
   wc -m filename 字符数
   wc -L filename 最长行长度
12:[特别注意]
比如通过echo $line|wc -m得出一个数值,只能通过i=$(echo $line|wc -m)来获取,然后echo $i,这个弄了一个小时,开始单双引号等都试了。不行。
13:ls test|awk -F '[_.]' '{print $1}'
显示文件名,然后以下划线和.为分隔符,输出$1为_前面的,$2为_和.之间的,$3为.之后的。
awk -F "[f:]"+ '{print $4}'
显示第四个中内容截取f:之后的内容
14:ls |awk -F '[_]' '{print "mv" $0,$1".jpg"}'
显示文件名,然后遇到_结掉为$1然后修改文件名。
15:rename "_finished.html" ".jpg" *.html
修改*.html文件名,将_finished.html替换为.jpg
16: break n表示跳出循环的层数
    continue n 表示退到第n次继续循环
    exit n 退出当前脚本,n为返回值,下一个shell里通过$?接收这个n的值
    return n 用在函数的返回值,用于判断函数执行是否正确
17:sh -x *.sh;调试脚本,将脚本信息显示出来。
但是这个输出是全部输出,有时候脚本太大,这样显示出来不太好,所以要显示出来指定行数的输出,可以在行前
加set -x,在行后加set +x。这样执行就可以显示选中行的信息。
18:netstat -an|grep EST|awk -F "[f:]+" '{print $4}'  -F选取得值$4以f:为分割符
19:netstat -an|grep EST|awk -F "[f:]+" '{print $4}'|sort -n |uniq -c 先排序,然后计数,记相同ip的数目。(空格)
20:echo $RANDOM|md5sum|cut -c 1-8 生成MD5数字然后切割1到8位。
21:curl -I www.baidu.com  测一下和百度的连通性
22:sed 's# #\n#g' c.txt|sort|uniq -c|sort -nr   降序排列,计数。
   tr '\n' ' '<c.txt|sed '# ##g'|grep -o "\w"|sort|uniq -c|sort -nr按字母数降序排列
23:trap "" 2使得信号2失效(ctrl+c),trap 2使得信号复原。(和kill类似)。(注意只是在当前界面中不能使用这个信号)。
   trap -p查看当前信号列表。
24:系统在启动时会自动调用root下面/etc/profile.d的脚本
25:如果是通过windows上传。并且打开这个文件.一定要在linux服务器cat -v 文件名|head -5看一下文件末尾是不是^M
cat -A 文件名等价于cat -vET
26:产生随机数的方法 echo $RANDOM|md5sum|cut -c 2-9
27:wc -L计算单词长度
28:>/dev/null 2>&1 
     标准输出 错误输出        丢弃 
     标准输出 错误输出        丢弃 
  2>&1 >/dev/null 
     标准输出 错误输出        丢弃 
     标准输出 错误输出        屏幕 



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值