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 查看实际命令调用耗时并不长 对比和正常执行的主机命令执行时,加载的库文件差 ...
随机推荐
- HttpClient学习研究---第二章:连接管理
第二章.Connection management连接管理2.1. 2.1.Connection persistence连接持久性The process of establishing a conne ...
- RabbitMQ六种队列模式-主题模式
前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主题模式 [ ...
- js replace(a,b)替换指定字符
var a="aaabbb" a= a.replace("aaa", "ccc") console.log(a) //a ="c ...
- ent 基本使用八 索引
我们可以在ent 的schema 中定义index 可以方便的控制数据约束,使用索引可以加速我们的访问以及数据的唯一性处理 配置字段索引 多字段索引 package schema import ( ...
- 5.学习springmvc响应json数据
一.配置不过滤静态资源文件:用来访问webapp中js,css,images文件 1.修改springmvc.xml <!--配置前端控制器,用于设置哪些资源不拦截--> <mvc: ...
- 如果用了flex去加一个箭头怎么让他剧中
左边是做了一个flex:1 右边是span的display:inline-block样式 父元素 .search-car-arrow display flex align-items center' ...
- R 指定安装镜像的方法
方法一 options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) install ...
- 第一章 Electron介绍 | Electron in Action(中译)
Github 官方地址 代表作: Visual Studio Code Atom - Code editor. Github开源的代码编辑器,Electron起源地 Visual Studio Cod ...
- Unity制作地形的常用插件之GAIA
用Unity制作大型游戏少了地形制作怎么行,用原生的Unity工具制作地形效率较低而且也不甚美观,后期运行的效率也得不到保证.下面推荐的专业地形制作工具可以帮助开发者解决地形制作的相关问题. 打开Un ...
- Systemd笔记
Systemd管理的启动脚本位于 /usr/lib/systemd/system/ 下 Systemd启动顺序约定为: 当前服务满足启动条件, 则立即创建进程进行并行启动, 启动条件指服务的依赖关系( ...