Linux学习之管道符、重定向、通配符、转义符、环境变量
Linux学习之管道符、重定向、通配符、转义符、环境变量
1. 输入输出重定向
输入重定向是指把文件导入命令中。
输出重定向是指把原本要输出到屏幕的数据信息写入指定文件中。
a 标准输入重定向(STDIN,文件描述符0):默认从键盘输入,也可从其他文件或命令中输入。
b 标准输出重定向(STDOUT,文件描述符1):默认输出到屏幕,一般省略。
c 错误输出重定向(STDERR,文件描述符2):默认输出到屏幕,文件描述符必须写上。
输入重定向中用到的符号及作用:
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,直到遇见分界符停止
1 1 %mail -s "Readme" root@gmail.com << over #over为分界符,用户输入内容直到over结束
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2
输出重定向中用到的符号及其作用:
命令 > 文件 将标准输出重定向到一个文件中(重写,清空原有数据)
命令 2> 文件 将错误输出重定向到一个文件中(重写,清空原有数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加,至原文件内容后面)
命令 2>> 文件 将错误输出重定向到一个文件中(追加,至原文件内容后面)
命令 >> 文件 2>&1 将标准输出与错误输出共同写入到文件中(追加,至原文件内容后面)
或 命令 &>> 文件
标准输出与错误输出的区别:
若命令没有错误输出,错误输出时把信息输出到屏幕上;若命令有错误输出,则写入文件中,无返回值。标准输出相反
例 若ss文件存在
%ls -l ss > /root/stderr.txt #没报错,信息写入文件
%ls -l ss 2> /root/stderr.txt #没报错,将信息输出到屏幕(不写入)
2 管道符
作用:将前一命令原本要输出到屏幕的标准正常数据当作后一命令的标准输入。
%grep "/sbin/nologin" /etc/passwd | wc -l
例:用一条命令完成密码重置操作(修改密码需输入2次密码确认)
%echo "linux" | passwd --stdin root
用一条命令打包内容和标题并发送邮件
1 %echo "Content" | mail -s "Subject" linux 2 %su - linux 3 %$ mail
管道符也可以用于多个命令,如:命令1 | 命令2 | 命令3
3 命令行的通配符
* 代表匹配0个或多个
? 代表匹配单个字符
[0-9] 代表匹配0-9之间的单个数字字符
[135][abc] 代表匹配1、3或5(a、b、c)中的单个字符
4 常用转义字符
反斜杠(\) 使反斜杠后面的一个变量变为单纯的字符串
单引号('') 转义其中所有的变量为单纯的字符串
双引号("") 保留其中的变量属性,不进行转义处理
反引号(``) 把其中的命令执行后返回结果
1 %PRICE=5 2 %echo "Price is \$$PRICE" #$$作用是显示当前程序的ID号,需用\使$变为一个单纯的字符串
输出结果为:
1 Price is $5
5 环境变量
变量是计算机系统用于保存可变值得数据类型,在Linux系统中,变量名称一般是大写。环境变量是用来定义系统运行环境的一些参数。
命令在Linux系统中执行共有4步:
第一步: 判断用户是否以绝对路径或相对路径方式输入命令(如/bin/ls),如果是则直接执行。
第二步: Linux系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。
第三步: Bash解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由第四步继续处理。
第四步: 系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫做PATH,Bash解释器会在PATH中逐个查找。
其他知识点:
alias、unalias命令
用来创建或取消一个属于自己的命令别名,格式为“alias [别名]”或“unalias [别名]”,rm命令删除文件需用户确认即是为防止误删而设置的别名命令
取消rm删除时的用户确认:
%unalias rm #删除rm的别名命令,即删除用户确认
设置rm删除时的用户确认:
%alias rm='rm -i' #-i参数为用户确认
添加PATH路径
PATH是由多个路径值组成的变量,每个路径值之间用:间隔,添加删除命令影响Bash解释器对Linux命令的查找
%PATH=$PATH:/root/bin
注:将当前目录(.)添加到PATH可以让用户在某些情况下省去输入命令所在路径的麻烦,但如果黑客在比较常用的目录/tmp中存放了一个与ls或cd命令相同的木马文件,而用户在公共目录中执行了这些命令就会中招,接手一台Linux系统后一定首先要在执行命令前检查PATH变量中是否有可疑的目录。
env命令
用于查看Linux系统中的所有环境变量
Linux系统最重要的10个环境变量
HOME 用户的主目录(即家目录)
SHELL 用户在使用的SHELL解释器名称
HISTSIZE 输出的历史命令记录条数
HISTFILESIZE 保存的历史命令记录条数
MAIL 邮件保存路径
LANG 系统语言、语系名称
RANDOM 生成一个随机数字
PS1 Bash解释器的提示符
PATH 定义解释器搜索用户执行命令的路径
EDITOR 用户默认的文本编辑器
su命令
用于切换用户身份,格式为“su - [其他用户名]”
%su - liang
export命令
将变量提升为全局变量
例:设置一个变量,方便用户更轻松地进入一个较深层次目录:
1 %mkdir /home/workdir
2 %WORKDIR=/home/workdir
3 %export WORKDIR #提升为全局变量,即所有用户均可使用此变量