输入输出重定向
输出重定向(命令执行结果 --> 文件):把原本要输出到屏幕的数据写入到指定文件。
标准输出信息:文件相关权限、所有者、所属组、文件大小以及修改时间等信息。
错误输出信息:报错提示信息。
关于重定向的符号">":一个">",即">",为清空写入;两个">",即">>",为追加写入。
标准输出重定向:仅重定向标准输出信息。符号:> 清空写入;>> 追加写入。
错误输出重定向:仅重定向错误输出信息。符号:2> 清空写入;2>> 追加写入。
标准/错误输出重定向:不论是标准输出信息还是错误输出信息都能重定向。符号:&> 清空写入;&>> 追加写入。
输入重定向(文件内容 --> 命令):把文件导入到命令中,Linux命令可以从文件获取输入。
命令 < 文件:将文件作为命令的标准输入
命令 << 分界符:从标准输入中读入,直到遇见分界符才停止
命令 < 文件1 > 文件2:将文件1作为命令的标准输入并将标准输出到文件2
管道命令符
管道符的作用:把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入。格式: 命令A | 命令B。
管道符的适用场景很多,可以组合多次:命令A | 命令B | 命令C。
命令行的通配符
通配符:通用的匹配信息的符号。
常用通配符:
星号(*):代表匹配零个或多个字符;
问号(?):代表匹配单个字符;
中括号([ ]):数字、字母;中括号是不支持匹配超过两位以上的内容的,只能匹配单个字符。
常用的转义字符
反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。
单引号(''):转义其中所有的变量为单纯的字符串。
双引号(""):保留其中的变量属性,不进行转义处理。
反引号(``):把其中的命令执行后返回结果。
重要的环境变量
命令在Linux中的执行步骤:
第1步:判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是则直接执行。
第2步:Linux系统检查用户输入的命令是否为“别名命令”。
第3步:Bash解释器判断用户输入的是内部命令还是外部命令。若是内部命令则直接执行,若是外部命令则进入下一步。
第4步:系统在多个路径中查找用户输入的命令文件。
1.命令别名:
alias命令:为命令创建别名。格式:alias 别名=命令。
unalias命令:取消命令别名。格式:unalias 别名。
2.type命令:用于判断用户输入的命令是内部命令还是外部命令。格式:type 命令名称。
type echo #输出结果:echo is a shell builtin,说明echo命令是内部命令
type rm #输出结果:rm is aliased to 'rm -i',
type mkdir #输出结果:mkdir is /usr/bin/mkdir,说明mkdir命令是外部命令
3.PATH变量:由多个执行命令的路径值组成的变量,每个路径之间用冒号:间隔。当用户输入的是外部命令,就需要通过PATH变量去查找外部命令的所在位置。
这里有比较经典的问题:“为什么不能将当前目录(.)添加到PATH中呢? ” 原因是,尽管可以将当前目录(.)添加到PATH变量中,从而在某些情况下可以让用户免去输入命令所在路径的麻烦。但是,如果黑客在比较常用的公共目录/tmp中存放了一个与ls或cd命令同名的木马文件,而用户又恰巧在公共目录中执行了这些命令,那么就极有可能中招了。
Linux系统中最重要的10个环境变量
4.export命令:用于设置全局变量。格式:export 变量名。
Vim编辑器与Shell命令脚本
Vim编辑器用于编辑文本文件内容,是vi编辑器的升级版,与Vi相比,Vim编辑器有代码着色。
Vim编辑器有3中模式:
命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
输入模式:正常的文本录入。
末行模式:保存或退出文档,以及设置编辑环境。
vim中常用的命令
末行模式中可用的命令
编写Shell脚本
Shell脚本名称随意,但一般后缀为.sh,以表示是脚本文件。
Shell脚本格式:(脚本声明和脚本正文必须有,脚本注释可以没有)
#!/bin/bash #脚本声明,告诉系统用那种shell解释器执行该脚本
#This is a test program #脚本注释
pwd #脚本正文,常见命令配合流程控制语句等组成有一定功能的脚本程序
运行Shell脚本方法:
1)bash 脚本文件所在位置/脚本文件名。bash Desktop/test.sh
2)./脚本文件所在位置/脚本文件名。这种方式需要有文件的执行权限(默认没有)。要用chmod命令为文件增加执行权限。
bash Desktop/test.sh #方法1:bash 脚本的相对位置。
/Desktop/test.sh #方法2:./脚本的相对位置。现在执行会报错,因为创建的脚本文件默认是没有执行权限的
chmod u+x Desktop/test.sh #为脚本文件增加属主的执行权限。
./Desktop/test.sh #现在执行就可以了。
Shell脚本内设的用于接收参数的变量:
$0:当前Shell脚本程序的名称
$#:总共有几个参数
$*:所有位置的参数值
$?:显示上一次命令的执行返回值
$1、$2、$3...:分别对应着第N个位置的参数值