首页
读书
网课

正文

命令执行的判断依据:; && ||

;命令

在命令和命令之间加上分号(;),分号前的命令执行完成后会立刻执行后面的命令


$?(命令返回值)与&& ||

若前一个命令的执行的结果为正确,在linux 下会返回一个$?=0的值借住&& 与 || 来判断后续的命令是否继续执行


命令的执行情况 说明

cmd1 && cmd2 1.若cmd1执行完毕且正确($?=0),则开始执行cmd 2 ;2.若cmd1执行完毕且错误($?=0),则不执行cmd 2

cmd1 || cmd2 1.若cmd1执行完毕且正确($?=0),则不执行cmd 2 ;2.若cmd1执行完毕且错误($?=0),则开始执行cmd 2

使用ls查看目录/tmp/abc 是否存在,若存在则用touch 创建/tmp/abc/heh

ls /tmp/abc && touch /tmp/abc/heh


cut命令

cut - 在文件的每一行中提取片断

cut [OPTION]... [FILE]...


在 每个文件 FILE 的 各行 中, 把 提取的 片断 显示在 标准输出.


cut命令 描述

-b, --bytes=LIST 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

-c, --characters=LIST 以字符为单位进行分割。

-d, --delimiter=DELIM 自定义分隔符,默认为制表符。

-f, --fields=LIST 与-d一起使用,指定显示哪个区域。

-n 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除

-s, --only-delimited 不显示 没有 分隔符 的 行

#将 PATH 变量取出,我要找出第五个路径

echo $PATH | cut -d ':' -f 5

#将 PATH 变量取出,列出第 3 与第 5

echo $PATH | cut -d ':' -f 3,5

#将 PATH 变量取出,列出第 3 以后的

echo $PATH | cut -d ':' -f 3-

#将 PATH 变量取出,列出第 3 到5

echo $PATH | cut -d ':' -f 3-5

#用 last 将显示的登陆者的信息中,仅留下用户大名

last | cut -d ' ' -f 1


grep 命令

在我们日常 Linux 运维过程中,最多的就是对 Linux 文件进行处理,grep(global search regular expression (RE) and print out the line)作为一款非常方便且强大的文本搜索工具,其能使用正则表达式搜索文本,并把匹配的行打印出来,其使用对象为 Linux 系统的所有用户,使得我们日常操作更加方便简单。


Unix 的 grep 家族包括 grep、egrep 和 fgrep。egrep 和 fgrep 的命令跟 grep 只有很小不同。


egrep 是 grep 的扩展,其支持更多 re 元字符,和扩展正则表达式等。

fgrep 就是 fixed grep 或 fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示其自身的字面意义,不再特殊。

linux 使用 GNU 版本的 grep。它功能更强,可以通过 - G、-E、-F 命令行选项来使用 egrep 和 fgrep 的功能。

grep [options] PATTERN [FILE...]

grep [options] [-e PATTERN | -f FILE] [FILE...]


PATTERN 表示:匹配的模式,通常为一个表达式。

FilE 为具体的需要处理的问题,当然也可以为标准输入。


不加参数,匹配 文件中符合条件的行


grep 命令 描述

-A 显示模式匹配后的几行

-B 显示模式匹配行的前几行

-C 显示模式匹配的前后各几行

-i 忽略大小写匹配

-o 只显示匹配到的字符串

-n 输出匹配到的行的行号

-v 反向选择,即显示除过 匹配’搜寻字符串’ 内容的那一行

-c 计算找到 ‘搜寻字符串’ 的次数

#不加参数,匹配 /etc/passwd 文件中的 root 行

grep "root" /etc/passwd

#显示模式匹配后的几行

grep -A2 "^root" /etc/passwd

#显示模式匹配行的前几行

grep -B1 "^bin" /etc/passwd

#显示模式匹配的前后各几行

grep -C2 "^ftp" /etc/passwd     

#忽略大小写匹配 /etc/passwd 包含 "Nobody" 的行

grep -i "Nobody" /etc/passwd

#匹配出 /etc/passwd 文件中包含 root 的字符串的行

grep -n "root" /etc/passwd

#匹配出 /etc/passwd 中不包含 bash 的行

grep -v "nologin" /etc/passwd    

# 计算 /etc/passwd 文件中 root 字符串出现的次数

grep -c "root" /etc/passwd


结合使用

#在 last 的输出信息中,只要有 root 就取出,并且仅取第一栏

last | grep 'root' |cut -d ' ' -f1


sort 命令

sort [OPTION]... [FILE]...


sort 命令 描述

-t 指定以什么作为列分割

-k 用来制定利用那列进行排序,通常-t于-k配合使用

-r 将文本文件降序输出

-n 以数组来进行生序排序

-f 忽略大小写字母

-u 取消重复的行

-M 以月份的名字来排序,例如 JAN, DEC 等等的排序方法

#个人账号都记录在 /etc/passwd 下,请将账号进行排序

cat /etc/passwd | sort

#/etc/passwd 内容是以 : 来分隔的,我想以第三栏来排序

cat /etc/passwd | sort -t ':' -k 3

#利用 last ,将输出的数据仅取账号,并加以排序

last | cut -d ' ' -f1 | sort


uniq 命令

对于一些重复输出的行进行去重。


uniq 命令 描述

-c 打印出现的次数,只能统计相邻的;

-d 只打印重复行;

-u 只打印不重复行;

-D 只打印重复行,并且把所有重复行打印出来。

#使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位

last | cut -d ' ' -f1 | sort | uniq

#使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位,并统计出现次数

last | cut -d ' ' -f1 | sort | uniq -c


wc 命令

wc 命令 描述

-l 仅列出行;

-w 仅列出多少字(英文单字);

-m 多少字符;

cat /etc/passwd | wc

    141     722    4617

# 输出的三个数字中,分别代表: 『行、字数、字符数』

#使用 last 取得这个月份登陆系统的总人次

last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l 



上一篇: 没有了
下一篇: 没有了
圣贤书院