【Linux编程Shell自动化脚本】04 其他实用的Shell命令

文章目录

    • 一、tail命令
    • 二、uniq与sort命令
      • 1. uniq命令
      • 2. sort命令
    • 三、echo命令
    • 四、iptables命令
    • 五、wc命令
    • 六、scp命令
    • 七、rsync命令
      • 1. -a选项
      • 2. -P选项
      • 3. --delete选项
      • 4. -v选项
    • 八、alias命令
    • 九、cp命令
    • 十、dmidecode命令
    • 十一、cut命令
    • 十二、uptime命令
    • 十三、fdisk命令
    • 十四、free命令
    • 十五、sz命令
    • 十六、mail命令
    • 十七、ps命令
    • 十八、dos2unix命令
    • 十九、如何理解 2>&1

一、tail命令

打印末尾n行

tail -n 10 file

实时监控文件(对于日志文件非常实用)

tail -f file

二、uniq与sort命令

1. uniq命令

uniq 可检查文本文件中重复出现的行列。

  • c或–count 在每列旁边显示该行重复出现的次数。
$ uniq -c testfile      #删除重复行后的内容  
3 test 30             #前面的数字的意义为该行共出现了3次  
4 Hello 95            #前面的数字的意义为该行共出现了4次  
2 Linux 85            #前面的数字的意义为该行共出现了2次 

2. sort命令

sort 可针对文本文件的内容,以行为单位来排序。

  • -n 依照数值的大小排序
  • -r 以相反的顺序来排序

三、echo命令

echo常用选项参数

  • -n 不输出末尾换行符

四、iptables命令

iptables常用选项参数

  • -L, --list
    列出所选chain中的所有规则。如果没有选择chain,则列出所有chain。请注意,它通常与-n选项一起使用,以避免长时间的反向DNS查找。
  • -n, --numeric
    数字输出。IP地址和端口号将以数字格式打印。默认情况下,程序将尝试将它们显示为主机名、网络名或服务(只要适用)。

五、wc命令

wc常用选项参数

  • -l 统计行数

六、scp命令

scp常用选项参数

  • -r Recursively copy entire directories.

七、rsync命令

rsync 是一个常用的 Linux 应用程序,用于文件同步。

它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代cpmv命令。

它名称里面的r指的是 remote,rsync 其实就是"远程同步"(remote sync)的意思。与其他文件传输工具(如 FTP 或 scp)不同,rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。

1. -a选项

-a参数可以替代-r,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新,所以-a-r更有用。下面的用法才是常见的写法。

$ rsync -a source destination

目标目录destination如果不存在,rsync 会自动创建。执行上面的命令后,源目录source被完整地复制到了目标目录destination下面,即形成了destination/source的目录结构。

如果只想同步源目录source里面的内容到目标目录destination,则需要在源目录后面加上斜杠。

$ rsync -a source/ destination

上面命令执行后,source目录里面的内容,就都被复制到了destination目录里面,并不会在destination下面创建一个source子目录。

2. -P选项

-P参数是--progress--partial这两个参数的结合。

--partial参数允许恢复中断的传输。不使用该参数时,rsync会删除传输到一半被打断的文件;使用该参数后,传输到一半的文件也会同步到目标目录,下次同步时再恢复中断的传输。
--progress参数表示显示进展。

3. --delete选项

默认情况下,rsync 只确保源目录的所有内容(明确排除的文件除外)都复制到目标目录。它不会使两个目录保持相同,并且不会删除文件。如果要使得目标目录成为源目录的镜像副本,则必须使用--delete参数,这将删除只存在于目标目录、不存在于源目录的文件。

$ rsync -a --delete source/ destination

上面命令中,--delete参数会使得destination成为source的一个镜像。

4. -v选项

-v参数表示输出细节

八、alias命令

alisa 用来给命令创建一个别名。若直接输入该命令且不带任何参数,则列出当前 Shell 进程中使用了哪些别名。llls -l的效果是一样的就是这个原因。
看一下有哪些命令被默认创建了别名:

[mozhiyan@localhost ~]$ alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

使用 alias 命令自定义别名的语法格式为:

alias new_name='command'

九、cp命令

cp命令常用选项参数

  • -a, --archive
    -dR --preserve=all的效果一样
  • -R, -r, --recursive
    递归复制目录
  • –preserve[=ATTR_LIST]
    保留指定属性(默认:模式、所有权、时间戳)

十、dmidecode命令

dmidecode命令主要是通过DMI获取主机的硬件信息,通常是在不打开计算机机箱的情况下使用该命令来查找硬件详细信息。其输出的信息包括BIOS、系统、主板、处理器、内存、缓存等等。

什么是DMI?DMI (Desktop Management Interface, DMI)的主要组成部分是Management InformationFormat (MIF)数据库,这个数据库包括了所有有关电脑系统和配件的信息。

十一、cut命令

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。

常用选项参数:

  • -d :自定义分隔符,默认为制表符。
  • -f :与-d一起使用,指定显示哪个区域。

十二、uptime命令

示例:

uptime 10:34:55 up 904 days, 23:11,  1 user,  load average: 0.04, 0.06, 0.08

uptime提供一行显示以下信息:

  • 当前时间(10:34:55)
  • 系统运行时间(系统运行多久了)(up 904 days)
  • 当前登录用户数(1 user)
  • 过去1,5和15分钟的系统load average(load average: 0.04, 0.06, 0.08)

十三、fdisk命令

fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。

常用选项参数:

  • -l 列出所有分区表

十四、free命令

free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

常用选项参数:

  • -m  以MB为单位显示内存使用情况。

十五、sz命令

sz命令来自英文词组“send ZMODEM”的缩写,其功能是基于ZModem协议从远程服务器下载文件到本地。当我们在使用例如Xshell、SecureCRT、PuTTY等虚拟终端软件时,可以使用sz命令将远程文件直接下载到本地,在软件弹出的窗口选择本地保存路径即可。

若您的系统中找不到sz与rz命令,请配置好软件仓库后执行“yum install lszrz”这条命令。

语法格式:

sz [参数] 文件名 # …………弹出窗口中选择本地保存路径即可…………

十六、mail命令

mail命令可以在linux系统上发送或接受邮件。

常用命令选项:

  • -s:指定消息标题;
  • -c<地址>:指定邮件副本的收信人地址;
  • -b<地址>:指定密件副本的收信人地址;
  • -f<邮件文件>:读取指定邮件文件中的邮件;
  • -F:将要发送的邮件保存在以第一个收件人地址的本地部分命名的文件中。

指定邮件内容示例:

mail -s "[告警]" [email protected] < content.txt

十七、ps命令

常用命令选项:

  • -e 选择所有进程。等价于 -A
  • -f 执行完整格式的列表。该选项可以与许多其他unix风格的选项组合使用,以添加额外的列。它还会打印命令参数。

十八、dos2unix命令

dos2unix 命令用于将纯文本文件从 DOS 或 Mac 格式转换为 Unix。DOS 下的文本文件是以 \r\n 作为换行符,而 Unix 下的文本文件是以 \n 作为换行符。

十九、如何理解 2>&1

在Linux系统中0 1 2是一个文件描述符

名称 代码 操作符
标准输入(stdin) 0 < 或 <<
标准输出(stdout) 1 >, >>, 1> 或 1>>
标准错误输出(stderr) 2 2> 或 2>>

从上表看的出来,我们平时使用的

echo "hello" > t.log 

其实也可以写成

echo "hello" 1> t.log

2>&1表明将文件描述2(标准错误输出)的内容重定向到文件描述符1(标准输出)。当没有&时,1会被认为是一个普通的文件,有&表示重定向的目标不是一个文件,而是一个文件描述符。

示例:

python index.py task >/dev/null 2>&1

这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null

为何2>&1要写在后面?
可以理解为,左边是标准输出,现在标准输出直接输出到 /dev/null 中,而2>&1是将标准错误重定向到标准输出,所以当程序产生错误的时候,相当于错误流向左边,依旧是输出到/dev/null中。
因此如果写在中间,那会把标准错误输出指定到标准输出上,此时标准输出目标为终端,之后>/dev/null会将标准输出指定到/dev/null文件中,而此时标准错误输出则不会改变了

你可能感兴趣的:(Linux,Shell,linux,自动化,运维)