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 查看实际命令调用耗时并不长 对比和正常执行的主机命令执行时,加载的库文件差 ...
随机推荐
- 利用伪寄存器对MSVC++进行调试的介绍
简介 让我们从我写这篇文章的原因开始.一天,一个同事让我帮他调试他遇到的问题.所以我看着他在输入代码,这时我注意到下面一行: int test = GetLastError(); 他这样做是因为他想知 ...
- 关于api创建监控项,添加灵活调度的事件间隔
在api文档中没有明确说明,可以查询数据库,得到的是一个字符串,
- Python3 连接各类数据库
Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口.它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多 ...
- 洛谷/Codeforces CF865D 题解
若想要深入学习反悔贪心,传送门. Description: 已知接下来 \(n\) 天的股票价格,每天可以买入当天的股票,卖出已有的股票,或者什么都不做,求 \(n\) 天之后最大的利润. Metho ...
- 反素数 Antiprime(信息学奥赛一本通 1625)(洛谷 1463)
题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6 ...
- ftp使用
1.pom文件中添加依赖 <!-- ftp使用 --><dependency> <groupId>commons-net</groupId> <a ...
- mac 搭建Java Spring boot 环境(eclipse)
安装 下载安装Springboot 安装完成后,创建项目 1. 2. 3. 完成创建!
- Linux后台运行和关闭程序、查看后台任务
fg.bg.jobs.&.ctrl+z 1.& (最经常被用到) 这个用在一个命令的最后,可以把这个命令放到后台执行 2.ctrl + z 可以将一个正在 ...
- 【Beta】Scrum meeting 5
目录 写在前面 进度情况 任务进度表 Beta-1阶段燃尽图 遇到的困难 照片 commit记录截图 小程序前端仓库 后端代码仓库 技术博客 写在前面 例会时间:5.9 22:30-23:30 例会地 ...
- 【Gamma】Scrum Meeting 4 & 助教参会记录
目录 前言 任务分配 燃尽图 会议照片 签入记录 上周助教交流总结 技术博客 一些说明 前言 第4次会议于5月29日22:00线上交流形式召开. 交流确认了各自的任务进度,并与助教进行了沟通.时长20 ...