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个步骤:

  1. 判断用户是否是以相对路径还是以绝对路径的方式输入命令,是则执行。
  2. 检测用户输入的是否是“别名变量”。
  3. Bash判断用户输入的命令是内部命令还是外部命令。内部命令会直接执行,外部命令则有第4步执行。
  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 管道符、重定向和环境变量的更多相关文章

  1. 《Linux就该这么学》培训笔记_ch03_管道符、重定向与环境变量

    <Linux就该这么学>培训笔记_ch03_管道符.重定向与环境变量 文章最后会post上书本的笔记照片. 文章主要内容: 输入输出重定向 管道命令符 命令行的通配符 常用的转义字符 重要 ...

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

    ——<Linux就该这么学>笔记 输入输出重定向输入重定向 指把文件导入到命令中输出重定向 指把原本要输出到屏幕的数据信息写入到指定文件中 输出重定向 分为标准输出重定向和错误输出重定向 ...

  3. Linux就该这么学(3)-管道符、重定向与环境变量(学习笔记)

    1.Linux命令与文件读写操作有关的重定向技术: 学习目标:主要解决输出信息的保存问题. 标准覆盖输出重定向: 标准追加输出重定向 错误覆盖输出重定向 错误追加输出重定向 输入重定向 标准输入(ST ...

  4. linux入门系列7--管道符、重定向、环境变量

    前面文章我们学习了linux基础命令,如果将不同命令组合使用则可以成倍提高工作效率.本文将学习重定向.管道符.通配符.转义符.以及重要的环境变量相关知识,为后面的shell编程打下基础. 一.IO重定 ...

  5. Linux学习Day4:管道符、重定向与环境变量

    仅仅是学习Linux系统的命令还不够,只有把多个命令按照自己想要的方式进行组合使用,才能提高工作效率.今天的内容主要是关于如何把命令组合在一起使用,使得输入的命令更准确.更高效,也为接下来的Shell ...

  6. linux系统下将php和mysql命令加入到环境变量中的方法

    在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行 “php -v”命令查看当前php版本信息时时 ...

  7. window 远程在Linux(centOS7.0)上安装JDK以及配置环境变量

    本人是在windows 7 上安装了虚拟机,虚拟机安装的是linux(centOS7.0)系统现在在Windows 上安装SecureCRT 远程虚拟机的linux系统,安装JDK以及配置环境变量. ...

  8. Linux学习总结(十)-文件复制及查看, 环境变量

    一 文件复制及移动 1.命令 cp --------copy 的意思格式 cp 选项 源文件 目标文件a: 对于文件我们直接cp 文件 目标文件假定我们在普通用户家目录下/home/lv新建两个普通文 ...

  9. 记一次Linux bash 命令行卡顿排查之警惕LD_PRELOAD环境变量

    现象: 通过屏幕或者ssh登录Linux操作系统(本例:Ubuntu)后,执行ls 需要数秒才返回 strace -c ls 查看实际命令调用耗时并不长 对比和正常执行的主机命令执行时,加载的库文件差 ...

随机推荐

  1. wordpress角色权限汇总

    我们在用wordpress开发的时候有时候需要设置不同的用户组及权限,具体有哪些角色权限呢?随ytkah一起来看看吧.WordPress使用了角色的概念,旨在让站点所有者能够控制用户在站点中可以做什么 ...

  2. redux有价值的文档

    使用 Redux 管理状态,第 1 部分 https://www.ibm.com/developerworks/cn/web/wa-manage-state-with-redux-p1-david-g ...

  3. (4)给树莓派安装中文输入法Fcitx及Google拼音输入法

    sudo apt-get install fcitx fcitx-googlepinyin fcitx-module-cloudpinyin fcitx-sunpinyin 安装完毕,重启即可.

  4. Python高级函数--filter

    def is_palindrome(n): return str(n) == str(n)[::-1] #前两个‘:’表示整个范围,‘-’表示从后面,‘1’表示数据间隔 output = filter ...

  5. CentOS7 配置阿里云yum源,vim编辑器,tab自动补全

    1.进入yum的文件夹 命令:cd   /etc/yum.repos.d/ 2.下载wget 命令:yum -y install wget 3.删除yum文件夹所有yum源 命令:rm -rf    ...

  6. ksh与bash的异同

    (1) 在ksh是,数组的index只能从0到1023,而bash中没有这样的限制. (2) ksh与bash初始化数组的语法不同: 如下所示 icymoon# ksh icymoon# set -A ...

  7. 工作拾记 - 关于easyui模板后台改为vue-element

    图1: 数据接口,模拟实现一些基本的数据条目 图2: 获取数据,接口都在src/api中 TODO LIST: 接下来要做的呢: 1. 完善此demo,基本的CURD,现在只有getAll,需要将增加 ...

  8. 13--网页,网站,微信公众号基础入门(PHP获取网页的get请求)

    https://www.cnblogs.com/yangfengwu/p/11148976.html 大家在访问网页的时候有没有注意一件事情 现在咱来看这种哈 现在咱做个功能哈,类似于这样 长话短说 ...

  9. [RN] React Native 使用 AsyncStorage 存储 缓存数据

    React Native 使用 AsyncStorage 存储 缓存数据 AsyncStorage是一个简单的.异步的.持久化的Key-Value存储系统,它对于App来说是全局性的.这是官网上对它的 ...

  10. 怎么把ubuntu升级到最新版本

    首先是Ctrl+Alt+T 打开终端,然后在终端中输入指令(更新资源) sudo apt-get update 接着是对软件进行升级.(这是一个漫长的过程,需要下载资源) sudo apt-get u ...