Linux Shell学习笔记(2):关于Linux中的特殊符号、重定向、环境变量

一、输入输出重定向

文件读写操作有关的重定向技术的五种模式

1.输入重定向是指把文件导入命令中;
2. 输出重定向指把原本要输出到屏幕的内容写入指定文件;

一般而言,相较于输入重定向,我们一般使用输出重定向比较多,输出重定向分为:标准输出重定向错误输出重定向

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

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

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

重点看一下两种输出重定向,这个是什么意思呢,下面举个栗子~

# 查询一个不存在的文件夹
find . -name xxxx.txt
# 输出如下信息
find: ‘xxxx.txt’: No such file or directory
# 现在需要把错误信息输出到文件a.txt中
find . -name xxxx.txt > a.txt

此时使用cat命令查看 a.txt

cat a.txt
# 这个时候是不会出现任何输出的,因为a文件是空的。

重新将查询结果输出到a文本文件中

find . name xxxx.txt 2> a.txt
# 使用cat命令查看
cat a.txt
# 输出内筒如下
find: ‘xxxx.txt’: No such file or directory

懂了啵~

  1. 输入重定向
符号作用
命令 < 文件将文件作为命令的标准输入
命令 << 分解符从标准输入中读入,直到遇到分解符才停止
命令 < 文件1 > 文件2将文件1作为命令的标准输入,并将标准输出到文件2
  1. 输出重定向
符号作用
命令 > 文件将标准输出重定向到一个文件中(覆盖)
命令 2> 文件将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件将错误输出重定向到一个文件中(追加到一个文件后面)
命令 >> 文件 2>&1 或,命令 & >> 文件将标准输出与错误输出共同写入到文件中(追加)

输出重定向,1 可以省略,2 不能省略

一个输入重定向的栗子~

# 什么意思自己猜
wc -l < a.txt

二、管道命令符

管道符 “ | ” 使用的命令格式是:

命令1 | 命令2

把前一个命令(命令1)原本要输出屏幕的数据当做是后一个命令(命令2)的标准输入

管道符对于命令的组合使用有很大的用处

# 统计当前目录下tensorflow用例数量
find . -name  *.pb | wc -l
# 一条命令修改用户密码,解决自动化脚本无法修改密码的缺陷
# echo "linuxpas" | passwd --stdin root

对于第二条命令,有时候我们需要修改用户密码,但是linux修改用户密码需要输入两次(修改和确认修改),这对于编写自动化脚本来说十分不友好! 但是管道符可以完美解决,将密码用过管道符输入给passwd命令并结合–stdin 参数,完美解决~

三、命令行的通配符

了解正则匹配的同学应该也就对命令行的通配符不会感觉到陌生,顾名思义,通配符就是通用匹配信号的符号,比如(*)、(?)、([0-9] )、( [a-z] )、( [abc] )

上面用到的一个命令

find . -name  *.pb | wc -l

这 (*.pb) 的含义就是匹配所有的后缀名为pb的文件。

符号含义
*匹配0个或者多个字符
匹配单个字符
[a-z]匹配a-z的单个字母的字符
等等……

具体用到的时候可以百度,当然也可以学习点正则表达式

四、常用的转义字符

转义字符用于处理输出的特殊数据,这个没啥说的,比如编程语言中的\n、\t 和\等等
在shell中有数十种转义字符,其中有四种最常用的。

字符含义
\使反斜杠后面的一个变量变为单纯的字符串
"转义其中所有的变量为单纯的字符串
“”保留其中的变量属性,不进行转义处理
``把其中的命令执行后返回结果
root@橘座:/home/test/20200504 price=18
root@橘座:/home/test/20200504 echo "Price is $price"
Price is 18

然后使用转义

root@橘座:/home/test/20200504 echo "Price is \$$price"
Price is $18

五、重要的环境变量

变量是计算机系统用于保存可变值的数据类型。在Linux系统中,变量名称一般都是大写,这是一种约定俗成的规范。
直接通过变量名称来提取变量名

root@橘座:/home/test/20200504 echo $HOME
/root

Linux系统中的环境变量是用来定义系统运行环境的一些参数。

变量名称作用
HOME用户的家目录
SHELL用户在使用的shell解释器的名称
HISTORY输出的历史命令记录条数
HISTORYSIZE保存的历史命令记录条数
等等……

一个相同的环境变量会因用户不同而具有不同的值 如下~
用户gw:

root@……:/home/test/20200504 su - gw
gw@……:~$ echo $HOME
/home/gw

用户root:

root@……:/home/test echo $HOME
/root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值