4.1shell的基本命令和用法

本文介绍了Linux中几个常用的命令行工具,如diff、cut、sort、tr、逻辑操作符以及test命令的使用方法,包括文件比较、文本处理、排序、字符转换以及条件判断等功能。通过实例展示了如何在日常工作中高效地运用这些工具。
摘要由CSDN通过智能技术生成

==========diff===========

基本参数:
a  ##添加   c  ##更改  d  ##删除   <:第一个文件中的内容    >:第二个文件中的内容
[num1,num2][a][d][c][num3][num4]     ###[num1][num2]:第一个文件中的行   [num3][num4]:第二个文件中的行
1c1      第一个文件的第一行和第二个文件的第一行不同:更改
< Hello westos
---
> hello westos
2a3      ##第一个文件第二行和第二个文件的第三行:添加
> 456         ###第二个文件的456

diff westos westos1     ##对比
diff -i westos westos1  ##忽略大小写
diff -b westos westos1  ##忽略空格
diff -B westos westos1  ##忽略空行
diff -c westos westos1  ##显示所有内容并显示不同
diff -u westos westos1  ##合并输出(用于补丁)
diff -r file file1      ##对比目录
patch补丁
patch 原文件 补丁文件
diff -u westos westos1 > westos.patch    ###合并输出生成补丁文件
dnf install patch -y        ###下载服务
patch -b westos westos.patch  ###给westos打补丁并备份原文件

 

 

 

 

2.==========cut================

-d :  ###指定':'为分隔符   -c  #指定截取的字符   -f  ##指定截取的列

 head -n1 passwd        ###查看文件第一行
 head -n3 passwd | tail -n1    ###查看前三行 | 再看前三行的最后一行=查看第三行
 cut -c 1-3 passwd           ###查看第1-3个字符
 cut -c 5- passwd            ###查看第五个字符之后
 cut -c -2 passwd            ###查看前两个字符
 cut -d : -f 1,4 passwd      ###指定:为分隔符,查看第1列和第4列

 

 

 

3. ============sout========

sort westos    ###按第一个字符排序
sort -n westos  ###数字排序
sort -nr westos   ###数字倒序
sort -nru westos   ###去掉重复数字倒序
sort -nru westos -o westos1   ###去掉重复数字倒序输出为westos1  '-o'='>'
sort -t : -k 2 -n westos      ###指定:为分隔符,指定第二列按纯数字排序
sort -n westos | uniq -d      ###显示重复的行
sort -n westos | uniq -u      ###显示唯一的行
sort -n westos | uniq -c      ###合并重复并统计重复个数
sort -t : -k 2 -n westos | uniq -c   ###指定:为分隔符,指定第二列按纯数字排序,合并重复并统计重复个数

 

 

 

 

5.=========tr================
tr 'a-z' 'A-Z' < westos    ###将westos中a-z转换为大写
tr 'l' 'g' < westos         ###将wesots中l换为g

 6.==========&&/||=============

ping -c1 -w1 172.25.254.3 &> /dev/null && echo yes || echo no      ###等待1秒ping一次,成功输出yes,失败输出no

 7.=============test==============

a=1
b=1
test "$a" = "$b" && echo yes || echo no 等效于[ "$a" = "$b" ] && echo yes || echo no    ###a=b:yes,否则为no
[ "$a" != "$b" ] && echo yes || echo no        ###不等于
a=2
[ "$a" != "$b" ] && echo yes || echo no     
b=3
[ "$a" -ge "$b" ] && echo yes || echo no     ###大于等于  greater or equal
[ "$a" -gt "$b" ] && echo yes || echo no     ###大于   greater than
[ "$a" -lt "$b" ] && echo yes || echo no     ###小于   less than
[ "$a" -le "$b" ] && echo yes || echo no     ###小于等于 less or equal
[ "$a" -ne "$b" ] && echo yes || echo no     ###不等于  not equal
[ "$a" -eq "$b" ] && echo yes || echo no     ###等于   equal
c=5
a=2
b=7
[ "$c" -ge "$a" -a "$c" -le "$b" ] && echo yes || echo no  ###-a:并且 c大于等于a且c小于等于b
[ "$c" -ge "$a" -o "$c" -le "$b" ] && echo yes || echo no   ###-o:或
[ "$c" -le "$a" -o "$c" -ge "$b" ] && echo yes || echo no
[ ! "$c" -le "$a" -o "$c" -ge "$b" ] && echo yes || echo no  ###!:非
[ -z "$d" ] && echo no || echo yes    ###-z:为空,输出no
[ -n "$d" ] && echo yes || echo no    ###-n:非空,输出yes
[ ! -n "$d" ] && echo yes || echo no  ###非空的非:不是非空,输出yes

 

 

文件中的test:

touch westos westos1  
ls -i
[ "westos" -ef "westos1" ] && echo yes || echo no   ####文件节点号是否一致
rm -fr westos1
ln /mnt/westos /mnt/westos1   ###复制
[ "westos" -ef "westos1" ] && echo yes || echo no
rm -fr westos1
touch westo1
[ "westos" -nt "westos1" ] && echo yes || echo no   ###new time  ##westos是否比westos1新
[ "westos" -ot "westos1" ] && echo yes || echo no  ###old time westos是否比westos1老
[ -f "westos" ] && echo yes || echo no    ###-f 普通文件
[ -d "/mnt" ] && echo yes || echo no      ###-d 目录
ln -s /mnt/westos /mnt/test1
[ -L "test1" ] && echo yes || echo no     ###-L软链接
[ -b "/dev/vdb" ] && echo yes || echo no  ###-b块设备
[ -c "/dev/pts/0" ] && echo yes || echo no  ###-c 字符设备
-S   套结字

练习:

1.ifconfig ens3     显示网卡信息时只显示ip信息,其他不显示

ifconfig ens3 | head -n2 | tail -n1 | cut -c 14-27
ifconfig ens3 | head -n2 | tail -n1 | cut -d " " -f 10

 2.运行脚本test.sh,找出能登陆系统用户中最大UID的用户,并显示其名称

#!/bin/bash
cat /etc/passwd | grep -e /bin/bash -e /bin/sh | sort -t : -k 3 -nr | cut -d : -f 1 | head -n1      ###过滤以bash或sh结尾的行,第三列以数字倒序,cut第一列,查看第一行

 3.脚本file_check.sh在执行时。若脚本后未指定文件,显示:请指定文件,若指定了文件,但文件不存在,则显示:文件不存在,若文件存在请检测类型并显示到输出中

 

vim file_check.sh
  1 #!/bin/bash
  2 [ -z "$*" ] && {
  3   echo please input file for check
  4   exit
  5 }
  6 
  7 [ ! -e "$*" ] && {
  8   echo "$* is not exist"
  9   exit
 10 }
 11 
 12  [ -L "$*" ] && {
 13    echo "$* is a symbolic link"
 14    exit
 15  }
 16 
 17 [ -f "$*" ] && {
 18   echo "$* is a regular file"
 19   exit
 20 }
 21 
 22 [ -d "$*" ] && {
 23   echo "$* is a directory"
 24   exit
 25 }
 26 
 27 [ -b "$*" ] && {
 28   echo "$* is a block special"
 29   exit
 30 }
 31 
 32 [ -c "$*" ] && {
 33   echo "$* is a character special"
 34   exit
 35 }
 36 
 37 [ -S "$*" ] && {
 38   echo "$* is a socket"
 39   exit
 40 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值