1. 输入输出重定向

  • 输出重定向:>、 >>(追加),输出到屏幕或者导入到指定文件;

  • 输入重定向:<、<<(分界符),把文件信息导入到命令中;

三个关键数字及意义:

  • 标准输入重定向( STDIN,文件描述符为 0):默认从键盘输入,也可从其他文件或命
    令中输入。

  • 标准输出重定向( STDOUT,文件描述符为 1):默认输出到屏幕。

  • 错误输出重定向( STDERR,文件描述符为 2):默认输出到屏幕

【注意】:

  1. > 表示覆盖清空原有文件;>>在文件尾追加;
  2. 正常输出1可省略,如:cat result.txt 1> new.txt;
  3. 对于错误输出,2不可省略,如:cat result.log 2> new.log(当log不存在是必须用2重定向)
  4. 对于不区分正确输出和错误输出,采用 &>

【总结】:

  • 1> : 代表标准正确输出,即如果命令的执行结果是正确,则执行输出

  • 2> : 代表标准错误输出,即如果命令的执行结果是错误,则执行输出

  • &>: 代表标准正确输出+标准错误输出

1
2
3
2>&1							# 表示将错误输出到屏幕,注意区分2>1是输出到“1”文件
cat test.log >result.txt 2>&1 # 如果命令执行成功,则将结果输出到文件;否则将错误输出到文件
cat test.log 2>result.txt # 只能将错误信息写入到文件

附录:输入重定向用得比较少,如:wc -l < trace.txt # 统计文件行数

表 1 输入重定向中用到的符号及其作用

符号 作用
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
命令 < 文件 1 > 文件 2 将文件 1 作为命令的标准输入并将标准输出到文件 2

2. 管道命令符

“|”:把前一个命令原本要输出到屏幕的标准正常数据,作为后一个命令的标准输入。可多层嵌套。

直接通过用例说明:

1
2
3
4
5
6
7
8
9
ls -l /etc/ | more		# 目录太长,结合more来翻页查看
grep "time:" /home/result.txt | wc -l # 统计包含指定字符的行数
echo "Huawei12#$" | passwd --stdin root # 修改root用户密码
echo "Content" | mail -s "Subject" root # 给root用户发送一封名为Subject,内容为Contest的邮件
mail -s "Letter" 2155***@qq.com << over # 给qq邮箱发一封名为Letter的邮件,输入over结束
> I think linux is very practical
> I hope to learn more
> can you teach me?
> over # 自定义分界符(输入重定向)

经常会有grep / awk / xargs搭配管道命令符一起使用。

3. 通配符、转义符、环境变量

1. 通配符
  • (*) : 0个或多个
  • (?): 单个字符
  • [abc] : 三个字符中任意一个
  • [0-9]、[a-z] 、[A-Z]: 数字配置或字母匹配
2. 转义符

4个常见转义符:

  • 反斜杠( \):使反斜杠后面的一个变量变为单纯的字符串。
  • 单引号( ‘’):转义其中所有的变量为单纯的字符串。
  • 双引号( “”):保留其中的变量属性,不进行转义处理。
  • 反引号( ``):把其中的命令执行后返回结果。

$SHELL: 变量取值

$$ : 返回当前进程ID号

3. 环境变量
1
2
3
4
5
6
7
8
9
alias rm=`rm -i`	# 自定义指令
unalias rm
type command # 查看是内部命令还是外部命令

# 查看环境变量和新增
[root@linuxprobe ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
[root@linuxprobe ~]# PATH=$PATH:/root/bin # 新增
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

表 2 Linux OS重要的环境变量表

变量名称 作用
HOME 用户的主目录(即家目录)
SHELL 用户在使用的 Shell 解释器名称
HISTSIZE 输出的历史命令记录条数
HISTFILESIZE 保存的历史命令记录条数
MAIL 邮件保存路径
LANG 系统语言、语系名称
RANDOM 生成一个随机数字
PS1 Bash 解释器的提示符
PATH 定义解释器搜索用户执行命令的路径
EDITOR 用户默认的文本编辑器

【注意】:同一个变量名,不同的用户可以具有不同的值;

​ 使用export WORKDIR,可以将命令提升为全局变量,这样其他用户也可以使用。

​ 写入指令文件,可使 alias 永久生效.

1
2
3
4
5
6
7
8
vim /root/.bashrc

# 设置终端代理
export http_proxy=”http://127.0.0.1:1080”
export https_proxy=”http://127.0.0.1:1080”

# 全局生效
source /root/.bashrc