如果不能把 Linux 命令进行组合使用,则无法提升工作效率。
重定向技术的5种模式:标准覆盖输出重定向、标准追加输出重定向、错误覆盖输出重定向、错误追加输出重定向、输入重定向。
输入输出重定向
格式:“命令A 重定向符号 文件”
输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。相较于输入重定向,使用输出重定向的频率更高,所以又将输出重定向分为了标准输出重定向和错误输出重定向两种不同的技术,以及清空写入与追加写入两种模式。
标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。
标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。
错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。
备注: 正常信息输入到文件时使用 “>”,错误信息输入到文件时使用“2>”,如果不区分正常或错误信息都输入到文件可以使用“&>”。
例:
man bash > readme.txt #重定向中的标准输出模式(将man bash命令原本要输出到屏幕的信息写入到文件readme.txt中)
![](/qrcode.jpg)
echo "Welcome to Linux" > readme.txt #重定向技术中的覆盖写入
echo "Quality linux learning materials" >> readme.txt #重定向技术中的追加写入
ls -l linuxxxxxx 2> /root/stderr.txt #将错误信息记录到/root/stderr.txt 文件中
wc -l < readme.txt #将文件的内容作为标准输入的信息,导入到命令中,统计一下文件中的内容行数。
tee: 指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件,语法格式:tee [参数] [文件]。
管道命令符 ( | 任意门 )
格式:“命令A | 命令B”
作用:把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入。
例:
grep "/sbin/nologin" /etc/passwd | wc -l #通过匹配关键词/sbin/nologin找出了所有被限制登录系统的用户,并统计文本行数
ls -l /etc/ | more #用翻页的形式查看/etc目录中的文件列表及属性信息
echo "user" | passwd --stdin root #在修改用户密码时,通常都需要输入两次密码以进行确认,这在编写自动化脚本时将成为一个非常致命的缺陷。通过把管道符和passwd命令的--stdin参数相结合,可以用一条命令来完成密码重置操作
echo "Content" | mail -s "Subject" user #给本机其他用户发生邮件
mail -s "Readme" [email protected] << over #使用了mail邮件命令与输入重定向的分界符,其目的是让用户一直输入内容,直到用户输入了其自定义的分界符时,才结束输入。
grep /bin/bash /etc/passwd | wc -l #查询可登录系统的用户数
echo 123456 | passwd --stdin user #一句命令设置用户密码
命令行的通配符
*代表匹配零个或多个字符
?代表匹配单个字符
[0-9] 代表匹配0~9之间的单个数字的字符
[a,b,c] 则是代表匹配a、b、c三个字符中的任意一个字符,没有匹配到的不会报错
{a,b,c} 匹配指定字母,没有匹配到的会有错误信息
[a-z] 则代表a-z的26个小写字母
[A-Z] 则代表A-Z的26个大写字母
例:
ls -l /dev/sda*
ls -l /dev/sda?
ls -l /dev/sda[0-9]
ls -l /dev/sda[135]
常用的转义字符
反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。
单引号(''):转义其中所有的变量为单纯的字符串。
双引号(""):保留其中的变量属性,不进行转义处理。
反引号(``):把其中的命令执行后返回结果。
例:
echo `uname -a` 不执行命令,将命令以字符输出
环境变量
第1步:判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话则直接执行。
第2步:Linux系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。可以用alias命令来创建一个属于自己的命令别名,格式为“alias 别名=命令”。若要取消一个命令别名,则是用unalias命令,格式为“unalias 别名”。
3步:Bash解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤4继续处理。可以使用“type命令名称”来判断用户输入的命令是内部命令还是外部命令。
第4步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作PATH,可以简单地把它理解成是“解释器的小助手”,作用是告诉Bash解释器待执行的命令可能存放的位置,然后Bash解释器就会乖乖地在这些位置中逐个查找。PATH是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash解释器对Linux命令的查找
在接手了一台Linux系统后一定会在执行命令前先检查PATH变量中是否有可疑的目录。
使用export命令可将普通变量提升为全局变量。
使声明的变量永久生效需要更改 /etc/profile 或 ~/.bashrc 文件。
显示出系统中所有的环境变量:env (environment)
显示出所有的变量:set
其他
修改提示符
PS1=名称 (修改回去, exit 退出,重新启动)
永久修改 vim ~/.bashrc 在文件中新起一行增加 PS1=名称 保存退出,exit退出再重启终端