输入输出重定向
输入重定向:将文件内容导入到命令中;输出重定向:将命令执行后显示到屏幕上的内容导入到文件中,不在屏幕中显示。共分为:标准输入重定向(文件描述符为0)、标准覆盖输出(1)、标准追加输出(1)、错误覆盖输出(2)、错误追加输出(2)。0,1可省略不写,2必须要写。
标准输入:wc -l < zsx.txt 等效于 cat zsx.txt | wc -l 也可以直接: wc -l zsx.txt 命令 << 截止符 直到输入内容为截止符(再确认)为止,将输入内容作为命令的输入 如 wc -l << over
标准输出: 命令 > 文件 覆盖,即清空原文件内容 命令 >> 文件 追加 如果命令执行后显示的是出错信息,如 ls -l xxx(xxx为不存在的文件),则依然会在屏幕上显示信息,不会写入到文件中
错误输出: 命令 2> 文件 覆盖 命令 2>> 文件 追加 标准与错误信息都输出: 命令 >> 文件 2>&1 追加 或者 命令 &>> 文件 追加 命令 &> 文件 覆盖
管道命令符
命令A | 命令B 前一个命令的输出(不会在屏幕上显示)作为后一个命令的输入。
grep "/sbin/nologin" /etc/passwd | wc -l ls -l /etc | more
命令A | 命令B | 命令C ······
通配符 * ? [] {} (也叫正则表达式)
*匹配零个或多个字符; ?匹配单个字符; [0-9]匹配数字0至9中的单个数字;[135]匹配1、3、5中的单个数字;[a-z] [abc] {1,3,5}匹配匹配1、3、5中的单个数字,且没有的数据项会报错 ls -l /dev/sda{1,3,5} ls -l /dev/sda{12,1,23,24} [a-z][A-Z]匹配的 是两个字符,第一个为小写,第二个为大写。
转义字符
\(反斜杠) :将其后面的一个变量变为单纯的字符串 ''(单引号):转义其中的所有变量为单纯的字符串
``(反引号):把其中的命令执行后返回结果 ""(保留其中的变量属性,不做转义处理)
$为变量提取符号(是一个变量) VALUE=5 //定义一个变量VALUE值为5 echo "the value is $VALUE" $ $表示显示当前程序的进程号码 echo "the value is $ $VALUE" 输出为 the value is 3427VALUE echo"the value is \$ $VALUE" 输出为 the value is $5 echo 'the value is $ $VALUE' 输出为 the value is$$VALUE echo `uname -a` 与 uname -a的效果一样 也等价于: echo $(uname -a) 即 `uname -a`与$(uname -a)是等效的 `命令`与$(命令)等效
环境变量
Linux系统中的变量名都为大写(规定),环境变量是用来定义系统运行环境的一些参数,如:用户家目录、存放路径等。可用env命令查看当前用户所有的环境变量。 不同用户的环境变量值都不一定相同,Linux为每个用户提供独立的、合适的工作环境 HOME 用户的家目录 HISTSIZE 输出的历史命令条数 HISTFILESIZE保存的历史命令条数 SHELL 用户使用的SHELL解释器名称(/bin/bash,为一个二进制文件) MALL 邮件保存路径 RANDOM生成一个随机数字 PS1 Bash解释器的提示符,可以自己定义(修改其值即可) PATH 解释器搜索用户执行命令的路径。USER 系统的当前用户
在Linux系统中一切都是文件,命令也是文件,服务也是一种文件,而对服务程序进行配置自然也就是编辑程序的配置文件,即在配置一个服务时就是在修改这个服务的配置文件。系统中的硬件都会以硬件-文件的形式进行映射,形成设备文件存放在/dev中。命令在Linux系统中执行时会发生4个步骤:判断用户是以绝对路径(/bin/ls)还是相对路径(ls)的方式输入命令,如果是绝对路径,则直接可以得到命令文件,进行执行,否则需要到PATH中去找(当然内部命令不需要);判断用户输入的命令是否为别名命令;判断命令是内部命令还是外部命令,内部命令(解释器内部的命令)直接执行,外部命令则需要查找该命令的命令文件(PATH);Bash解释器在会在环境变量PATH中的多个路径中依次查找对应的命令文件(若有多个相同名字的这个文件,则第一个找到就不再找了,因此黑客可能会创建一个跟其同名的木马文件)。PATH中的路径的增加和删除都会影响到Bash解释器对命令的查找,因为有了PATH,/bin/ls 与 ls才会有相同的效果。 修改PATH: PATH=$PATH:/root/bin 即增加一个路径。Linux有4种命令:路径命令(占所有命令的1%);alias别名(2%);内部命令(1%);外部命令(96%)。
变量由变量名和变量值两部分组成,可以轻松创建: WORKDIR=/root/work cd $WORKDIR 但是这样创建的变量为局部变量,即不能被其它用户使用,可以使用export命令将其提升为全局变量。export WORKDIRsu命令和su - 命令最大的本质区别就是:前者只是切换了身份,但Shell环境仍然是原来用户的Shell(环境不变);而后者连用户和Shell环境一起切换成新用户身份了。只有切换了Shell环境才不会出现PATH环境变量错误。