文档章节

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

Venus7
 Venus7
发布于 02/22 17:52
字数 2519
阅读 73
收藏 0

 

  • 重定向
  • 管道符
  • 通配符
  • 转义符
  • 环境变量

 

 

 

重定向

 

重定向(把命令和文件结合起来使用)

 

  1. 输入重定向<

将文件重定向到命令里,让文件去匹配命令执行,与正常的名命令对文件的执行方向相反,但结果一样  将数据流导入到命令中去跑! 给命令传参

     符号

    作用

命令 < 文件

将文件作为命令的标准输入

命令 << 分界符

从标准输入中读入,直到遇见分界符才停止

命令 < 文件1 > 文件2

将文件1作为命令的标准输入并将标准输出到文件2

 

 

 

   2.   输出重定向>(用的比较多)  

就是把原本要输出的屏幕上的东西输出到重定向的文件中,又分=细分两种模式

 符号                             作用

       命令 > 文件

   将标准输出重定向到一个文件中(清空原有文件的数据)

       命令 2> 文件

   将错误输出重定向到一个文件中(清空原有文件的数据)

       命令 >> 文件

   将标准输出重定向到一个文件中(追加到原有内容的后面)

       命令 2>> 文件

   将错误输出重定向到一个文件中(追加到原有内容的后面)

       命令 &> 文件

   将标准输出与错误输出共同写 (逻辑和)

           

 

 

 

管道符

 

把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入做二次处理

 

   命令A |  命令B

将A输出的信息交给B继续处理

:修改linuxprobe用户的的密码

echo redhat | passwd --stdin linuxprobe    通过管道符传送密码到下一步动作实现重置密码

grep bash /etc/passwd | wc -l                      统计有多少用户能登录系统

grep "/sbin/nologin" /etc/passwd | wc -l    统计有多少用户被限制登录

 

通配符

 

   *表示空值  匹配所有 

:ls /dev/sda*       匹配所有sda相关的值

      ls /dev/sda?        只匹配sda后一位字符,但不会显示dev/sda因为不能匹配空值

      ls /dev/sda????        匹配后四位字符

      ls /dev/sda[0-9]   只匹配数字后缀相关

      ls /dev/sda[a-z]    匹配大写字母

      ls /dev/sda[A-Z]    匹配大写字母

      ls /dev/sda[a-zA-Z]    匹配字母不区分大小写

      ls /dev/sda[1,3,5]   针对性匹配 数字

      ls /dev/sda[a,c,h]   针对性匹配 字母

 

 

 

 

转义符

 

如果变量 参数 对象之间有间隔的要用双引号引起

 

反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。

单引号(''):转义其中所有的变量为单纯的字符串全局转义。

双引号(""):保留其中的变量属性,不进行转义处理。

反引号(``):把其中的命令执行后返回结果。

 

例:

 命令用反引号=echo 'uname -a'  只取返回结果  如执行uname -a 

PRRICE=5

echo "price is  $PRICE"     输出变量信息

Price is 5

echo "price is  \$$PRICE"     输出这个东西5$

Price is $5

如果不用转义符 两个$$显示的是pid号码需要转义为\转换为单纯的文本,去掉其特殊功能

 

 

 

 

 

环境变量

 

分类

   按照生命周期来分,Linux环境变量可以分为两类:

1、永久的:需要用户修改相关的配置文件,变量永久生效。

2、临时的:用户利用export命令,在当前终端下声明环境变量,关闭Shell终端失效。

 

   按照作用域来分,Linux环境变量可以分为:

1、系统环境变量:系统环境变量对该系统中所有用户都有效。

2、用户环境变量:顾名思义,这种类型的环境变量只对特定的用户有效。

 

 

 

在Linux系统中,变量名称一般都是大写的,这是一种约定俗成的规范,我们可以直接通过变量名称来提取到对应的变量值。Linux系统中的环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录、邮件存放位置等,他告诉机器,你输入的命令到哪里去执行。指定命令执行的路径。shell必须搜索系统来找到对应的程序。 PATH环境变量定义了用于进行命令和程序查找的目录。

     环境变量存储各种工具、命令的路径,当使用工具或者命令的时候,系统回去PATH中查找对应的工具与命令

     当自己下载了某个工具或者自己写了某个可执行程序,想要不加路径直接执行,则需要将该工具、程序的路径添加入PATH中

 

shell和操作系统 就像蜗牛壳和蜗牛的关系

在用户执行了一条命令之后,Linux系统中到底发生了什么事情呢?简单来说,命令在Linux中的执行分为4个步骤

 

第1步:判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话则直接执行

     相对路径是相对于程序当前所在的目录,当前目录随着程序的执行不断地发生变化。但是,绝对路径是相对于根路径/的,根路径是恒定不变的

   cd  /root/usr/local/src   绝对路径  ( 路径的写法一定是由根目录 )

          cd  /local/src  相对路径     路径从local起

 

 

第2步:Linux系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称

 别名定义格式  alias= renetwork=”sysd dretrsasda dasdas ssd   一次性的,如果需要永久要写入etc策略文件夹

Alias  查看所有别名

Unalias renetworf   删除定义的别名

 

 

第3步:Bash解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤4继续处理。可以使用“type命令名称”来判断用户输入的命令是内部命令还是外部命令

       内部命令和外部命令最大的区别之处就是性能。内部命令由于构建在shell中而不必创建多余的进程,要比外部命令执行快得多。因此和执行更大的脚本道理一样,执行包含很多外部命令的脚本会损害脚本的性能。

1.内部命令在系统启动时就调入内存,是常驻内存的,所以执行效率高。

2.外部命令是系统的软件功能,用户需要时才从硬盘中读入内存。

 

   内部命令(shell脚本自带的功能命令,用得很少)

        内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等

     

   外部命令(用的很多)whereis ls 查看命令路径type查看命令类型内部外部

         外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin......等等。可通过“echo $PATH”命令查看外部命令的存储路径,比如:lsvi等。

 

 

 

第4步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作PATH,可以简单地把它理解成是“解释器的小助手”,作用是告诉Bash解释器待执行的命令可能存放的位置,然后Bash解释器就会乖乖地在这些位置中逐个查找。PATH是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash解释器对Linux命令的查找

 

常用环境变量

变量名称

作用

HOME

用户的主目录(即家目录)

SHELL

用户在使用的Shell解释器名称

HISTSIZE

输出的历史命令记录条数

HISTFILESIZE

保存的历史命令记录条数

MAIL

邮件保存路径

LANG

系统语言、语系名称

RANDOM

生成一个随机数字

PS1

Bash解释器的提示符

PATH

定义解释器搜索用户执行命令的路径

EDITOR

用户默认的文本编辑器(vim)

 

Echo "HOME"   显示HOME变量路径

Env                   查询系统所有变量

 

dpjx=usr/bin/etc    创建dpjx变量

export   dpjx    提升dpjx变量为全局变量

set | grep dpjx  查询dpjx变量

 

 

 

© 著作权归作者所有

Venus7
粉丝 2
博文 14
码字总数 44972
作品 0
昆明
私信 提问
加载中

评论(0)

Linux学习日记(二)

今天学习了管道符,重定向与环境变量。 首先是系统对文件操作的的重定向技术,分为五种模式,分别为标准覆盖输出重定向/标准追加输出重定向/错误覆盖输出重定向/错误追加输出重定向以及输入重...

新Linuxer
2017/05/12
0
0
一步一步实现自己的shell程序(三)---IO重定向和管道

代码见github 基本知识 IO重定向 Unix系统中,每个程序都有三个数据流,分别为: 标准输入stdin——-需要处理的数据流 标注输出stdout——–结果数据流 标准错误输出stderr—–错误消息流 默认...

wutao02
03/31
0
0
chapter 11. 构建基本脚本

创建shell脚本 shell脚本第一行为指定具体shell来运行该脚本,可以指定shell(待验证) echo 使用echo输出时,可以使用-n参数来不进行换行,例如 环境变量 可以使用命令查看全部环境变量 可以...

莫显辉
2017/12/25
0
0
Linux操作系统基础解析之(七)——Bash(Shell)基础知识(2)

三、命令历史 bash从Korn Shell和C Shell中吸收了很多的精华,其中之一正式为已经执行过的命令保存一个缓存副本的特性,我们称之为"命令历史"功能。 我们为什么要使用命令历史功能呢? 每个用...

phoenixkiki
2016/06/02
0
0
BAT命令学习记录

set 用于设置变量,等同于linux中的export 命令,可用于设置环境变量,这个有利于编写启动脚本时需要设置变量的地方; echo. 用于换行,注意echo后面紧跟英文句号; 获取变量值使用双百分号,...

jcc_codingBoy
2016/04/12
70
0

没有更多内容

加载失败,请刷新页面

加载更多

入门级科普:五分钟让你的应用拥有高精度定位功能

本文作者:用户_123456789 什么是智能定位服务 定位能力即帮助用户解决“我在哪”的问题,依托百度位置大数据及多种混合定位方式,百度地图开放平台为智能穿戴、用车出行、快递物流、生活服务...

百度开发者中心
2019/08/14
9
0
在Ruby on Rails中对nil v。空v。空白的简要解释 - A concise explanation of nil v. empty v. blank in Ruby on Rails

问题: I find myself repeatedly looking for a clear definition of the differences of nil? 我发现自己一再寻找nil?差异的明确定义nil? , blank? , blank? , and empty? , empty? in ......

javail
今天
15
0
DevOps与NoOps现状分析

时下的IT趋势中,DevOps 正是一个热语。它起源于几年前SPA (单页面应用) 的前端应用.我认为常态的IT技术适应就是,在新技术爆发的那一时刻开始,立马就会被敏锐的人们所采用,然后被快速传播...

tidings_
今天
21
0
OSChina 周六乱弹 —— 代码创造人工生命

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @小小编辑推荐:《inner universe》 - ORIGA 《inner universe》 - ORIGA 手机党少年们想听歌,请使劲儿戳(这里) 当机器人具有意识的时候,...

小小编辑
今天
20
1
怎么创建远程桌面连接

1、IIS7远程桌面 管理中文最新版是一款专业的远程桌面管理工具,更新了原09网络远程桌面管理,较之以前的版本,操作更加便捷,能够同时远程多台服务器,多台服务器间自由切换,完全无压力。I...

吹的心痒痒
今天
22
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部