Shell第一章:shell常用的基础命令

1.diff

用法:diff [options] files|directorys

输出信息:
[num1,num2] [a|c|d] [num3,num4]
num1,num2    ##第一个文件中的行
a        ##添加
c        ##更改
d        ##删除
<        ##第一个文件中的内容
>        ##第二个文件中的内容
num3,num4    ##第二个文件中的行

常用参数:

-b	##忽略空格
-B	##忽略空行
-i	##忽略大小写
-c	##显示文件所有内容并标示不同
-r	##对比目录
-u	##合并输出

  

 

  2.patch
patch    原文件 布丁文件
-b        ##备份原文件

3.cut

cut 
-d :    ##指定:为分隔符
-f     ##指定显示的列 5第五列| 3,5 3和5列|3-5 3到5列|5- 第五列以后|-5 到第五列
-c    ##指定截取的字符(数字用法同-f)

 4.sort

-n    ##纯数字排序
-r    ##倒叙
-u    ##去掉重复
-o    ##输出到指定文件
-t    ##指定分隔符
-k    ##指定排序的列

 5.uniq

-c    #合并重复并统计重复个数
-d    #显示重复的行
-u    #显示唯一的行

 6.tr

tr 'a-z' 'A-Z'        ##小写转大写
tr  'A-Z' 'a-z'        ##大写转小写
vim westos
   hello word
tr 'l' 'a' < westos
    heaao word
tr 'a-z' 'A-Z' < westos
   HELLO WORD

 7.&& ||
&&      符合条件作动作
||        不符合条件作动作

ping -c1 -w1 172.25.254.17  #ping 这个ip等待一秒且执行一次
ping -c1 -w1 172.25.254.17 &> /dev/null   #执行完放到系统垃圾箱里
ping -c1 -w1 172.25.254.17 &> /dev/null && echo yes || echo no   #如果ping这个命令可以成功则执行yes,如果不能成功则执行no
vim test.sh   #编写如要执行的脚本
    ping -c1 -w1 172.25.254.17 &> /dev/null &&{
         echo yes
         echo hello westos
         date
         cal
    }||{
         echo no
    }
sh test.sh   #执行刚才编写的脚本
vim ~/.vimrc   #设置显示文件里面的行数
   set nu ts=2 ai et sw=2   #显示行数,tab键相当于两个字符,

 

 8.test
test = []    ##[] 就相当于test命令
"test $a = $b" = [ "$a" = "$b" ]

test数字对比

=
!=
-eq        ##等于
-ne        ##不等于
-le        ##小于等于
-lt        ##小于
-ge        ##大于等于
-gt        ##大于

实验:

a=1
b=1
test "$a" = "$b" && echo yes || echo no       #a=b的话,显示yes,否则显示no
[ "$a" = "$b" ] && echo yes || echo no        #a=b的话,显示yes,否则显示no
[ "$a" != "$b" ] && echo yes || echo no       #a不等于b如果成立,显示yes,否则显示no
a=2
[ "$a" != "$b" ] && echo yes || echo no       #a不等于b如果成立,显示yes,否则显示no
[ "$a" -gt "$b" ] && echo yes || echo no      #a大于b如果成立,显示yes,不成立显示no
[ "$a" -ge "$b" ] && echo yes || echo no      #a大于等于b如果成立,显示yes,不成立显示no
b=3
[ "$a" -ge "$b" ] && echo yes || echo no      #a大于等于b如果成立,显示yes,不成立显示no
[ "$a" -lt "$b" ] && echo yes || echo no      #a小于b如果成立,显示yes,不成立显示no
[ "$a" -le "$b" ] && echo yes || echo no      #a小与等与b如果成立,显示yes,不成立显示no
[ "$a" -ne "$b" ] && echo yes || echo no      #a不等于b如果成立,显示yes,不成立显示no
[ "$a" -eq "$b" ] && echo yes || echo no      #a等于b如果成立,显示yes,不成立显示no

 test的条件关系
-a    ##并且
-o    ##或者

实验:

c=5
a=1
b=8
[ "$c" -ge "$a" -a "$c" -le "$b" ] && echo yes || echo no      #c大于等于a 并且 c小于等与b ,如果成立,显示yes,不成立显示no
[ "$c" -le "$a" -o "$c" -ge "$b" ] && echo yes || echo no      #c小于等于a 或者 c大于等与b ,如果成立,显示yes,不成立显示no
c=20
[ "$c" -le "$a" -o "$c" -ge "$b" ] && echo yes || echo no      #c小于等于a 并且 c大于等与b ,如果成立,显示yes,不成立显示no

 test对空的判定

-n	##nozero 判定内容不为空
-z	##zero	判定内容为空
[ -z "$d" ] && echo no || echo yes       #如果d的值是空的,成立的话,显示no,不成立显示yes
[ -n "$d" ] && echo yes || echo no       #如果d的值是不是空的,成立的话,显示yes,不成立显示no

 test对于文件的判定

-ef        ##文件节点号是否一致(硬链)
-nt        ##文件1是不是比文件2新
-ot        ##文件1是不是比文件2老
-d        ##目录
-S        ##套结字
-L        ##软连接
-e        ##存在
-f        ##普通文件
-b        ##快设备
-c        ##字符设备
rm -rf *
touch westos
touch westos1
ls -i    #查看文件节点号
[ "westos" -nt "westos1" ] && echo yes || echo no   #westos文件比westos1文件新,是的话显示yes,不是显示no
[ "westos" -ot "westos1" ] && echo yes || echo no   #westos文件比westos1文件老,是的话显示yes,不是显示no
[ -f "westos" ] && echo yes || echo no         #westos是不是普通文件,是的话显示yes,不是显示no
[ -e "westos" ] && echo yes || echo no         #westos是不是存在,是的话显示yes,不是显示no
[ -d "westos" ] && echo yes || echo no         #westos是不是目录,是的话显示yes,不是显示no
[ -d "/mnt" ] && echo yes || echo no           #/mnt是不是目录,是的话显示yes,不是显示no
[ -L "westos" ] && echo yes || echo no         #westos是不是软连接,是的话显示yes,不是显示no
ln -s /mnt/westos /mnt/test                #创建软连接
[ -L "test" ] && echo yes || echo no            #test是不是软连接,是的话显示yes,不是显示no
[ -b "test" ] && echo yes || echo no            #test是不是块设备,是的话显示yes,不是显示no
[ -b "/dev/vda" ] && echo yes || echo no        #/dev/vda是不是软连接,是的话显示yes,不是显示no
[ -c "/dev/vda" ] && echo yes || echo no        #/dev/vda是不是字符设备,是的话显示yes,不是显示no
[ -c "/dev/pts/0" ] && echo yes || echo no      #/dev/pts/0是不是字符设备,是的话显示yes,不是显示no
[ -S "/dev/pts/0" ] && echo yes || echo no      #/dev/pts/0是不是套接字,是的话显示yes,不是显示no
dnf install mariadb-server -y    #下载mariadb
systemctl start mariadb          #开启mariadb服务
[ -S "/var/lib/mysql/mysql.sock" ] && echo yes || echo no  #/var/lib/mysql/mysql.sock是不是套接字,是的话显示yes,不是显示no

 测试题:

1.ifconfig 网卡 可以显示此网卡的信息
  显示信息中包含此网卡使用的ip地址
  请用命令过滤此ip并在输出时只显示ip其他信息不显示

ifconfig ens3 | head -n 2 | tail -n 1 | cut -d " " -f 10

 2.找出能登陆系统用户中UID最大的用户,并显示其名称

 编写脚本完成以下条件
file_check.sh 在执行时
如果脚本后未指定检测文件报错“未指定检测文件,请指定”
如果脚本后指定文件不存在报错“此文件不存在”
当文件存在时请检测文件类型并显示到输出中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值