管道符、重定向与环境变量

不管全世界所有人怎么说,我都认为自己的感受才是正确的。
无论别人怎么看,我绝不打乱自己的节奏。喜欢的事自然可以坚持,不喜欢怎么也长久不了。
                              ———《当我谈跑步时我谈些什么》

输入输出重定向

输入重定向是指把文件导入到命令中.
输出重定向是指把原本要输出到屏幕的数据信息写入到指定文件中
在日常学习和工作中,使用输出重定向的频率更高,所以又将输出重定向分为标准输出重定向和错误输出重定向两种不同的技术,以及清空写入与追加写入两种模式.
输入重定向
- 标准输入重定向(STDIN, 文件描述符为0):默认从键盘输入,也可以从其他文件或命令中输入.
输入重定向
- 标准输出重定向(STDOUT, 文件描述符为1):默认输出到屏幕
- 错误输出重定向(STDERR, 文件描述符为2):默认输出到屏幕

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

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

输出重定向中用到的符号及其作用

符号作用
命令 > 文件将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1 或 命令 &>> 文件将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

管道命令符

执行格式为”命令A | 命令B
命令符的作用是”把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准输入”

//例:将 root 密码更改为 linuxprobe
[root@linuxprobe ~]# echo "linuxprobe" | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.

命令行的通配符

通配符就是通用的匹配信息的符号

符号作用
*代表匹配零个或多个字符
?代表匹配单个字符
[0-9]代表匹配0~9之间的单个数字的字符
[abc]代表匹配a,b,c 三个字符中的任意一个字符
//例:
[root@linuxprobe ~]# ls -l /dev/sda*
brw-rw----. 1 root disk 8, 0 May 11 10:55 /dev/sda
brw-rw----. 1 root disk 8, 1 May 11 10:55 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 11 10:55 /dev/sda2
[root@linuxprobe ~]# ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 May 11 10:55 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 11 10:55 /dev/sda2
[root@linuxprobe ~]# ls -l /dev/sda[0-9]
brw-rw----. 1 root disk 8, 1 May 11 10:55 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 11 10:55 /dev/sda2
[root@linuxprobe ~]# ls -l /dev/sda[135]
brw-rw----. 1 root disk 8, 1 May 11 10:55 /dev/sda1

常用的转义字符

常用转义字符

符号含义
反斜杠(\)使反斜杠后面的一个变量变为单纯的字符串
单引号(”)转义其中所有的变量为单纯的字符串
双引号(“”)保留其中的变量属性, 不进行转义处理
反引号(“)把其中的命令执行后返回结果
//例:定义名为PRICE的变量并赋值为5,然后输出"Price is $5"
[root@linuxprobe ~]# PRICE=5
[root@linuxprobe ~]# echo "Price is $PRICE"
Price is 5
[root@linuxprobe ~]# echo "Price is $$PRICE"
Price is 107449PRICE
//$$作用是显示当前程序的进程ID号码
[root@linuxprobe ~]# echo "Price is \$$PRICE"
Price is $5
//通过转义字符"\"来使第一个 $ 作为美元符

//例2:使用 反引号 输出 系统版本和内核信息 
[root@linuxprobe ~]# echo `uname -a`
Linux linuxprobe.com 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux

重要的环境变量

在Linux系统中,变量名称一般都是大写的,这是一种约定俗成的规范.
Linux系统中的环境变量是用来定义系统运行环境的一些参数.
为了通过环境变量帮助Linux系统构建起能够为用户提供服务的工作运行环境,需要数百个变量协同工作才能完成.
如何理解环境变量
通过一个例子理解变量
在Linux系统中一切都是文件,Linux命令也不例外.
简单来说,命令在Linux中的执行分为四个步骤
第一步:判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话则直接执行.
第二步:Linux系统检查用户输入的命令是否为 “别名命令”,即用一个自定义的命令名称来替换原来的命令名称.可以用 alias 命令来创建一个属于自己的命令别名,格式为 “alias 别名=命令“.若要取消一个命令别名,则是用 unalias 命令,格式为 “unalias 别名”.在使用 rm 命令删除文件时,Linux 系统都会要求我们再确认是否执行删除操作,其实这就是 Linux 系统为了防止用户误删除文件而特意设置的 rm 别名命令,接下来我们把它取消掉:

[root@linuxprobe ~]# ls
haha  heihei  linuxprobe  readme2.txt  readme.txt  stderr.txt
[root@linuxprobe ~]# rm haha 
rm: remove regular empty file ‘haha’? y
[root@linuxprobe ~]# alias rm
alias rm='rm -i'
[root@linuxprobe ~]# unalias rm
[root@linuxprobe ~]# rm heihei 
[root@linuxprobe ~]# 

第三步: Bash解释器判断用户输入的是内部命令还是外部命令.内部命令是解释器内部的命令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤4继续处理.可以使用”type 命令名称”来判断用户输入的命令是内部命令还是外部命令.
第四步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作PATH,可以简单地把它理解成是”解释器的小助手”,作用是告诉Bash解释器待执行的命令可能存放的位置.然后Bash解释器就会在这些位置中逐个查找.PATH是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将会影响到Bash解释器对Linux命令的查找

[root@linuxprobe ~]# echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/linuxprobe/.local/bin:/home/linuxprobe/bin
[root@linuxprobe ~]# PATH=$PATH:/root/bin
[root@linuxprobe ~]# echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/linuxprobe/.local/bin:/home/linuxprobe/bin:/root/bin

Linux中重要的10个环境变量

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

Linux作为一个多用户多任务的操作系统,能够为每个用户提供独立的,合适的工作运行环境,因此,一个相同的变量会因为用户身份的不同而具有不同的值.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值