主要内容:
1、定向技术的5种模式
2、管道命令符
3、Linux系统命令中常见的通配符和转义符
输入输出重定向
输入重定向是将文件导入到命令中
输出重定向是将输出到屏幕的结果导入文件中(分类:标准输出重定向 || 错误输出重定向)
标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可以从其他文件或命令中输入
标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕
错误输出重定向(STDREE,文件描述符为2):默认输出到屏幕
输入重定向中用到的符号及作用
符号 | 作用 |
---|---|
命令 < 文件 | 将文件作为命令的标准读入 |
命令 << 分界符 | 从标准输出中读入,知道遇见分界符停止 |
命令 < 文件1 > 文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
输出重定向中用到的符号将其作用
符号 | 作用 |
---|---|
命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 2> 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有内容的后面) |
命令 2 >> 文件 | 将错误输出重定向到一个文件中(追加到原有内容的后面) |
命令 >> 文件 2 >&1 或 命令 &>> 文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) |
注:对于输出重定向的标准输出模式。可省略文件描述符1不写,但是错误输出模式的文件描述符2必须写
管道命令符
格式:命令A | 命令B 或 命令A | 命令B | 命令C
管道命令符的作用:把前一个命令原本要输出到屏幕的标准正常数据作为后一个命令的标准输入
例如:
1、用文本搜索命令找出被限制登录的用户
2、修改用户密码是往往需要将新密码输入两次,在编写自动化脚本时是个非常致命的缺陷,可用如下命令
3、让用户一直输入 mail 邮件直到用户输出自定义分界符
命令行的通配符
用于查找开头为几个特定字母的文件
需要了解Linux中的存储规律,如:硬盘设备文件都以sda开头存在/dev目录中
通配符就是通用的匹配信息的符号
1、 * 代表匹配零个或多个字符,例如:匹配所有/dev目录中以sda开头的文件
2、 ? 代表匹配单个字符,例如:匹配以sda开头,后面紧跟一个其他字符的文件
3、中括号内加上数字【0-9】表示匹配0-9之间的单个数字字符,括号内加上字母或数字【abc】表示匹配abc三个字符中任意一个字符
常用的转义字符
常用的转义字符如下:
1、反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串
2、单引号(’’) :转义其中所有的变量为单纯的字符串
3、双引号(”“):保留其中的变量属性,不进行转移处理
4、反引号(··):把其中的命令执行后返回结果
重要的环境变量
用户执行一条命令之后发生了什么?
第一步:判断用户是否以绝对路径或相对路径的方式输入命令(如:/bin/ls),如果是则执行
第二步:检查用户输入的命令是否为 ”别名命令“ ,即自定义一个命令替换原有命令
可用alias来创建别名 格式:alisa 别名=命令
可用unalisa来取消别名 格式:unalisa 别名
例如:用rm删除文件时会询问是否删除以防止误删,rm命令即可取消询问的过程
第三步:bash解释器判断用户输入的是内部命令还是外部命令
内部命令是解释器内部的指令,会被直接执行
用户输入的大部分是外部命令,交给第四步执行,type可查看命令是内部还是外部
第四步:系统在多个路径中查找用户输入的命令文件
定义这个路径的变量是PATH,作用是告诉bash解释器待执行的命令可能存放的位置,然后bash解释器会逐个查找,PATH是由多个路径值组成的变量,用冒号分隔
注:不能将当前目录( . )添加到 PATH 中,原因是如果黑客在比较常用的公共目录 /tmp 中存放与 ls命令 或 cd命令同名的木马,而用户恰巧又在公共目录中执行这些命令,就有可能中招。在接受 Linux 系统后要先检查 PATH 变量中是否有可疑目录
环境变量
Linux 重要的环境变量
变量名称 | 作用 |
---|---|
HOME | 用户的主目录(即家目录) |
SHELL | 用户在使用的 shell 解释器的名称 |
HISTSIZE | 输出的历史命令记录条数 |
HISTFILESIZE | 保存的历史命令记录条数 |
邮件保存路径 | |
LANG | 系统语言、语系名称 |
RANDOM | 生成一个随机数字 |
PS1 | bash解释器的提示符 |
PATH | 定义解释器搜索用户执行命令的路径 |
EDITOR | 用户默认的文本编辑器 |
注:
1、Linux 系统中同一个变量会因用户身份的不同赋予不同的值
2、变量是由固定的变量名与用户或系统设置的变量值两部分组成,用户完全可以自己定义变量值
例如:此定义可以更加方便的进入更深层次的目录
变量名默认用大写字母,约定俗成的规矩
3、定义全局变量(其他用户也可以使用)使用 export 命令