Linux 就该这么学 CH03 管道符、重定向和环境变量
0 概述
1 输入输出重定向
重定向技术有5种模式:
- 标准覆盖输出重定向
- 标准追加输出重定向
- 错误覆盖输出重定向
- 错误追加输出重定向
- 输入重定向
输入重定向是将文件导入到命令中。
输出重定向是将输入到屏幕的数据写入到指定文件中。输出重定向分为标准输出和错误输出两种,模式有追加和覆盖2种。
- 标准输入重定向(STDIN,文件描述符为0)。
- 标准输出重定向(STDOUT,文件描述符为1)。
- 错误输出重定向(STDERR,文件描述符为2)。
对于重定向中的标准输出模式,可以省略文件描述符1不写,而错误输出模式文件描述符2必须写。
[root@RHEL Desktop]# echo "i love linux." > test.txt
[root@RHEL Desktop]# cat test.txt
i love linux.
[root@RHEL Desktop]# echo "i love linux." > test.txt
[root@RHEL Desktop]# cat test.txt
i love linux.
[root@RHEL Desktop]# echo "i love linux." >> test.txt
[root@RHEL Desktop]# cat test.txt
i love linux.
i love linux.
[root@RHEL Desktop]#
如果标准和错误输出重定向只使用一种,那么另外一种依然会打印到屏幕上。
当用户执行一个shell脚本时,可以使用错误重定向将错误信息保存到文本中。
输入重定向是将文件内容导入命令中。
[root@linuxprobe ~]# wc -l < test.txt
2 管道符命令
管道符命令 | 是把前一个命令原本要输出到屏幕上的标准正常数据当做后一个命令的标准输入。格式为"命令A|命令B|命令C"。
例1:用grep 命令来筛选nologin账户,然后再统计有多少个。
[root@RHEL Desktop]# grep "sbin/nologin" /etc/passwd | wc -l
33
例2:用管道符修改密码
[root@RHEL Desktop]# echo "111" | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.
例3:使用mail邮件命令和输入重定向的分界符,让用户一直输入内容直到用户输入自定义的分界符,才结束输入。
[root@RHEL Desktop]# mail -s readme root@felix << over
> i love linux.
> you love linux.
> we love linux.
> over
[root@RHEL Desktop]#
上个例子中over是分界符,输入over 才会结束输入。
3)命令行的通配符
- *代表匹配0个或多个字符。
- ?代表匹配单个字符。必须有一个字符与之对应。
- 后面可以跟条件来限制字符的范围,比如 ?[0-9],限制数字,?[a-z]限制小写字母。
[root@RHEL Desktop]# ls -l /dev/sda*
brw-rw----. 1 root disk 8, 0 Aug 28 2019 /dev/sda
brw-rw----. 1 root disk 8, 1 Aug 28 2019 /dev/sda1
brw-rw----. 1 root disk 8, 2 Aug 28 2019 /dev/sda2
[root@RHEL Desktop]# ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 Aug 28 2019 /dev/sda1
brw-rw----. 1 root disk 8, 2 Aug 28 2019 /dev/sda2
[root@RHEL Desktop]# ls -l /dev/sda[0,2,4,6,8]
brw-rw----. 1 root disk 8, 2 Aug 28 2019 /dev/sda2
[root@RHEL Desktop]#
4) 常用的转义字符
转义字符是用来处理输入的特殊数据。
- 反斜杠 (): 使\后面的一个变量变为单纯的字符串。
- 单引号(’ '):使其中所有的变量变为单纯的字符串。
- 双引号(" "):保留其中的变量属性,不进行转义处理。
- 反引号(` `) :把其中的命令执行后返回结果。反引号在esc键下面,英文输入法。
[root@RHEL Desktop]# PRICE=5
[root@RHEL Desktop]# echo "Price is $PRICE"
Price is 5
[root@RHEL Desktop]# echo "Price is \$PRICE"
Price is $PRICE
[root@RHEL Desktop]# echo 'Price is $PRICE'
Price is $PRICE
[root@RHEL Desktop]# echo `uname -a`
Linux RHEL 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
5) 重要的环境变量
变量使计算机系统用于保存可变值的数据类型。一般变量名大写。可以通过变量名直接得到变量的值。
Linux的执行命令分为4个步骤:
- 判断用户是否是以相对路径还是以绝对路径的方式输入命令,是则执行。
- 检测用户输入的是否是“别名变量”。
- Bash判断用户输入的命令是内部命令还是外部命令。内部命令会直接执行,外部命令则有第4步执行。
- 系统在多个路径中查找用户输入的命令文件,定义路径的变量叫PATH。PATH是告诉Bash待执行的命令可能存放的位置。PATH由多个路径组成,每个路径之间用 冒号: 间隔。
因为linux 是一个多用户多任务的操作系统,每个用户是独立的工作运行环境,所以一个相同的变量会因为用户的不同而具有不同的值。
注: Linux中的一切都是文件,命令就是命令文件,根据命令名称搜索命令文件。PATH是命令文件的集合路径。
1) alias
alias命令用于给变量创建别名或者查看一个别名命令的实际命令,格式为: alias 别名=命令。(=两边不能有空格)。如:alias rm=‘rm -i’ ,命令有参数则应用" "或 ’ '括起来。
[root@RHEL Desktop]# alias rm
alias rm='rm -i'
2) unalias
unalias命令用于取消一个命令别名。格式为:unalias 别名。
[root@RHEL Desktop]# unalias rm
[root@RHEL Desktop]# alias rm
bash: alias: rm: not found
[root@RHEL Desktop]# alias rm='rm -i'
[root@RHEL Desktop]# alias rm
alias rm='rm -i'
3) type
type用于查看命令是内部命令还是外部命令。格式为 “type 命令名称”。
[root@RHEL Desktop]# type ls
ls is aliased to `ls --color=auto'
[root@RHEL Desktop]#
4)env
env命令来查看linux系统中所有的环境变量。
[root@RHEL Desktop]# env
XDG_VTNR=1
XDG_SESSION_ID=1
DBUS_STARTER_ADDRESS=unix:abstract=/tmp/dbus-ramjWdxtkg,guid=689276827ab3ad6ef0db54d65d65ca90
5)export
export可以将变量提升为全局变量,这样其他用户也可以使用。格式为:export 变量名。
[root@RHEL Desktop]# PRICE=5
[root@RHEL Desktop]# echo $PRICE
5
[root@RHEL Desktop]# su felix]
su: user felix] does not exist
[root@RHEL Desktop]# su felix
[felix@RHEL Desktop]$ echo $PRICE
[felix@RHEL Desktop]$ exit
exit
[root@RHEL Desktop]# export PRICE
[root@RHEL Desktop]# su felix
[felix@RHEL Desktop]$ echo $PRICE
5
[felix@RHEL Desktop]$
Linux 就该这么学 CH03 管道符、重定向和环境变量的更多相关文章
- 《Linux就该这么学》培训笔记_ch03_管道符、重定向与环境变量
<Linux就该这么学>培训笔记_ch03_管道符.重定向与环境变量 文章最后会post上书本的笔记照片. 文章主要内容: 输入输出重定向 管道命令符 命令行的通配符 常用的转义字符 重要 ...
- Linux管道符、重定向与环境变量
——<Linux就该这么学>笔记 输入输出重定向输入重定向 指把文件导入到命令中输出重定向 指把原本要输出到屏幕的数据信息写入到指定文件中 输出重定向 分为标准输出重定向和错误输出重定向 ...
- Linux就该这么学(3)-管道符、重定向与环境变量(学习笔记)
1.Linux命令与文件读写操作有关的重定向技术: 学习目标:主要解决输出信息的保存问题. 标准覆盖输出重定向: 标准追加输出重定向 错误覆盖输出重定向 错误追加输出重定向 输入重定向 标准输入(ST ...
- linux入门系列7--管道符、重定向、环境变量
前面文章我们学习了linux基础命令,如果将不同命令组合使用则可以成倍提高工作效率.本文将学习重定向.管道符.通配符.转义符.以及重要的环境变量相关知识,为后面的shell编程打下基础. 一.IO重定 ...
- Linux学习Day4:管道符、重定向与环境变量
仅仅是学习Linux系统的命令还不够,只有把多个命令按照自己想要的方式进行组合使用,才能提高工作效率.今天的内容主要是关于如何把命令组合在一起使用,使得输入的命令更准确.更高效,也为接下来的Shell ...
- linux系统下将php和mysql命令加入到环境变量中的方法
在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行 “php -v”命令查看当前php版本信息时时 ...
- window 远程在Linux(centOS7.0)上安装JDK以及配置环境变量
本人是在windows 7 上安装了虚拟机,虚拟机安装的是linux(centOS7.0)系统现在在Windows 上安装SecureCRT 远程虚拟机的linux系统,安装JDK以及配置环境变量. ...
- Linux学习总结(十)-文件复制及查看, 环境变量
一 文件复制及移动 1.命令 cp --------copy 的意思格式 cp 选项 源文件 目标文件a: 对于文件我们直接cp 文件 目标文件假定我们在普通用户家目录下/home/lv新建两个普通文 ...
- 记一次Linux bash 命令行卡顿排查之警惕LD_PRELOAD环境变量
现象: 通过屏幕或者ssh登录Linux操作系统(本例:Ubuntu)后,执行ls 需要数秒才返回 strace -c ls 查看实际命令调用耗时并不长 对比和正常执行的主机命令执行时,加载的库文件差 ...
随机推荐
- python 连接 redis cluster 集群
一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群 二. python 连接 ...
- ECMAScript规范解读this
在<JavaScript深入之执行上下文栈>中讲到,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution conte ...
- pom.xml中使用“import”的scope来解决Maven项目单继承问题
测试环境 maven 3.3.9 想必大家在做SpringBoot应用的时候,都会有如下代码: <parent> <groupId>org.springframework.bo ...
- Codeforces Round #603 (Div. 2) B. PIN Codes
链接: https://codeforces.com/contest/1263/problem/B 题意: A PIN code is a string that consists of exactl ...
- Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method 'POST' not supported (附带其余好几个坑)
yml: feign: httpclient: enabled: true properties: #feign feign.httpclient.enabled=true <!-- https ...
- 上传OSS报错
修改OSS
- [洛谷P3092]【[USACO13NOV]没有找零No Change】
状压\(DP\) + 二分 考虑构成:\(k<=16\)所以根据\(k\)构造状压\(dp\),将所有硬币的使用情况进行状态压缩 考虑状态:数组\(dp[i]\)表示用\(i\)状态下的硬币可以 ...
- 51 Nod 1135 原根
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m)表示m的欧拉函数) 给出1个质数P ...
- A@G!C005
AGC005 A STring 不会,有没有老鸽蕉蕉我/kk/kel/dk https://agc005.contest.atcoder.jp/submissions/7926986 B Minimu ...
- APIO2019 游记
\(\text {Cu}\)滚粗了,滚粗选手不配拥有游记.