linux里面什么是管道符?题主你好linux管道符号命令,
首先linux管道符号命令 , linux下的管道符使用"竖杠"表示:
|
它的作用是:
连接两个命令,将第一个命令的输出作为第二个命令的输入.
形象一点的比喻:
管道符好比流水线上的传送带,比如 , 一个流水线是由两步组成的,先由第一道工序将黄桃洗净,然后通过传送带将洗净的黄桃送到第二道工序装罐,用管道的思维去处理这个过程就是:
清洗 黄桃 | 装罐
需要注意的是 , 其实每个过程都是由 "动作 被作用对象"组成,也就是说,上面的例子其实是:
清洗 黄桃
装罐 洗净的黄桃
这两步组成的,但由于管道符的使用 , 除了第一道工序需要"被作用对象"外,后面的工序使用的是管道符传过来的"前一道工序处理过的对象".
举例来说,使用ls和grep这两个命令实现只输出文件的详细信息,不输出目录的详细信息.正常情况下这俩半个命令的用法是:
ls 选项 路径
grep 模式 文件流
而使用管道连在一起的写法:
ls -l /root/ok/tmp | grep '^-'
*.在使用管道符的组合命令中, 只有第一个命令需要 "被作用对象"
希望对题主有帮助,欢迎追问
linux中管道符的使用linux中管道符的使用非常普遍
管道符的用法是将第一个命令的结果传递给第二个命令作为输入
管道符的使用有两个条件:
格式: 命令1 | 命令2
常见应用举例:netstat -an | grep ESTABLISHED | wc -l #查看服务器上连接了多少客户端
wc -l 是查看输入了多少行
16. Linux 管道符( ‘|’ )利用Linux所提供的管道符“|”将两个命令隔开 , 管道符左边命令的输出就会作为管道符右边命令的输入 。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推 。下面来看看管道是如何在构造一条Linux命令中得到应用的 。
注意:
1、管道命令只处理前一个命令正确输出,不处理错误输出 。
2、管道命令右边命令,必须能够接收标准输入流命令才行 。
这条命令使用一个管道符“|”建立linux管道符号命令了一个管道 。管道将rpm -qa命令的输出(包括系统中所有安装的RPM包)作为grep命令的输入,从而列出带有licq字符的RPM包来 。
这条命令使用了两个管道,利用第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,grep命令找出含有“/bin /bash”的所有行linux管道符号命令;第二个管道将grep的输出送给wc命令,wc命令统计出输入中的行数 。这个命令的功能在于找出系统中有多少个用户使用bash 。
区别是:
1、左边的命令应该有标准输出 | 右边的命令应该接受标准输入
左边的命令应该有标准输出右边只能是文件
左边的命令应该需要标准输入右边只能是文件
2、管道触发两个子进程执行"|"两边的程序;而重定向是在一个进程内执行
这些都是网上总结很多的 , 其实只要多加清楚用法,也一定有自己的一份不同描述 。
linux系统符号说明01 系统特殊符号
02 系统通配符号
03 系统正则符号
说明: 查询信息的时候,会带来便利
1) 基础符号系列
$
a 调取变量信息
b 区分用户类型$ 普通用户
c 结合awk对文件进行取列
xargs -n 2 test01.txt|awk '{print $2}'
!
a 强制的作用wq!
b 可以实现取反
awk '!/oldgirl/' test02.txt (排除oldgirl)
find /oldboy_dir/ ! -type f (排除文件)
c !信息可以快速调取执行历史命令(慎用)
cat ~/.bash_history-- 记录历史命令信息, 但是不会实时记录
history-- 显示所有输入过的历史命令
|
a 实现管道功能
将前一个命令执行的结果交给管道后面的命令进行处理
一般管道符号 会经常和xargs命令配合使用
批量删除操作
find /oldboy -type f -name "oldboy*.txt"|xargs rm
find /oldboy_dir/ -type f -delete
find /oldboy_dir/ -type f -exec rm -f {} \;
查找指定数据信息进行复制
find /oldboy -type f -name "oldboy*.txt" |xargs -i cp {} /oldgirl/
find /oldboy -type f -name "oldboy*.txt" |xargs cp -t /oldgirl/
find /oldboy -type f -name "oldboy*.txt" -exec cp -a {} /oldgirl \;
查找指定数据信息进行移动
find /oldboy -type f -name "oldboy*.txt" |xargs -i mv {} /oldgirl/
find /oldboy -type f -name "oldboy*.txt" |xargs mv -t /oldgirl/
find /oldboy -type f -name "oldboy*.txt" -exec mv {} /oldgirl \;
xargs(火眼金睛)后面跟的命令,不识别别名信息
#
a 表示对配置文件信息进行注释
b 表示用户的身份信息 超级管理员用户
2) 引号符号系列
"" 基本上和单引号功能类似 但是可以对一些特殊符号做出解析$ `命令`==$(命令)
'' 里面编写的什么内容就输出什么内容所见即所得
作用:
01. 指定需要输出的信息
02. 利用引号将空格分隔的信息汇总为一个整体
``($()) 将引号里面命令执行结果,交给引号外面命令进行使用
3) 重定向符号
/1标准输出重定向符号
/1标准输出追加重定向符号
2错误输出重定向符号
2错误输出追加重定向符号
标准输入重定向符号
tr xargs
标准输入追加重定向符号
4) 逻辑符号系列
逻辑: 在完成一件事情的时候,有合理先后顺序
前一个命令操作执行成功了,再操作执行后面的命令
||前一个命令操作执行失败了,再操作执行后面的命令
mkdir /old_direcho "create dir sucess" || echo "create dir failed"
create dir sucess
mkdi /old_direcho "create dir sucess" || echo "create dir failed"
-bash: mkdi: command not found
create dir failed
什么通配符号: 用于匹配文件名称信息, 便于快速查找文件信息 find
*匹配所有信息
find /oldboy -type f -name "oldboy*"---以oldboy开头的信息都查询出来
find /oldboy -type f -name "*oldboy"---以oldboy开头的信息都查询出来
find /oldboy -type f -name "oldgirl*oldboy"
---以oldgirl 开头的信息
以oldboy结尾的信息都查询出来
{} 产生序列信息
连续序列:
echo {01..05}
echo {a..z}
echo {A..Z}
生成不连续序列
a 有规律的不连续序列
echo {01..05..2}
01 03 05
echo {a..z..2}
b 没规律的不连续序列
echo {www,bbs,blog}
www bbs blog
生成组合序列
echo {1,2}{a,b}
1a 1b 2a 2b
echo {1,2}{a,b}{A,B}
1aA 1aB 1bA 1bB 2aA 2aB 2bA 2bB
echo A{a,b}
Aa Ab
A=oldboy.txt
echo oldboy.txt{a,b}
oldboy.txta oldboy.txtb
echo A{,b}
A Ab
A=oldboy.txt
b=.bak
cp oldboy.txt{,.bak} == cp oldboy.txt oldboy.txt.bak
快速备份文件命令
cp oldboy.txt{,.bak}
快速还原数据方法
cp oldboy.txt{.bak,}
echo A{B,}
AB A
oldboy.txt{.bak,} == cp oldboy.txt.bak oldboy.txt
基础正则符号:basic regular expression(BRE)
扩展正则符号:extended regular expression (ERE)
基础正则符号:
a 尖角符号linux管道符号命令:^
以什么开头的信息进行过滤出来
grep -v "^#" nginx.conf.default nginx.conf(对不需要关注的信息取反)
常见错误
find / -type f -name "^oldboy"错误
find / -type f -name "oldboy*"正确
b 美元符号linux管道符号命令:$
以什么结尾的信息进行过滤出来
以m结尾信息, 并且显示上1行 和 下2行的信息
grep "m$" -A 2 -B 1 test.txt
常见错误:
如果过滤不出来,确认每行结尾是否有空格信息
方法一:
cat -A test.txt
方法二
vim 底行模式输入命令 --- :set list
c 尖角美元符号:^$
取出文件中空行信息
grep "^$" test.txt
grep -v "^$" test.txt
d 点符号: .
表示匹配任意一个且只有一个字符
grep "." test.txt-o(更直观的显示过程)
e 星号符号: *
匹配星号前面一个字符连续出现0次或多次
f 点和星号组合: .*
匹配所有信息
说明: 正则符号在匹配数据信息的时候具有贪婪特性
避免贪婪特性的方法,是在指定一行信息中唯一节点信息
g 转译符号: \
1) 将一些有意义的符号进行转译, 变为一个普通符号
grep "\.$" ~/oldboy_test.txt
2) 将一些没有意义的符号进行转译,变为有意义符号
\n换行符号 linux
3) 可以将扩展正则符号转换成普通正则让grep sed命令可以直接识别'
grep "o\?" test.txt
h 括号符号:[]
匹配括号中每一个字符,并且匹配的关系是或者的关系
需求: 找出文件中oldboy 和 oldbey两个单词信息
grep "oldb[oe]y" test.txt
企业应用: 找寻文件中字母 数字信息
grep "[0-9a-zA-Z]" test.txt
i 尖号和中括号组合使用 : [^]
对中括号里面匹配的字符信息进行排除
grep"[^0-9a-zA-Z]" test.txt--- 将字母数字都排除,只留下符号信息
尖号和中括号组合使用 : ^[]
以中括号里面匹配的字符作为一行开头的字符
grep "^[zx]" test.txt
正则符号注意事项
按照每行信息进行过滤处理
注意正则表达符号禁止中文
附上颜色信息进行正则过滤 --color=auto/--color
基础正则符号可以被三剑客命令直接识别 grep sed awk
扩展正则符号不可以被三剑客命令中老二和老三直接识别
sed命令想识别正则符号: sed -r
grep命令想识别正则符号: egrep / grep -E
a 加号符号:+
匹配加号前面一个字符连续出现1次或者多次
b 竖线符号:|
或者关系符号
egrep "oldboy|oldbey" test.txt
c 括号符号:()
将多个字符信息进行汇总为一个整体
egrep "(oldboy)" test.txt
进行后向引用前向的一个操作(sed)
echo "123456"|sed -r "s#(..)(..)(..)#\1\2\3#g"
修改配置文件内容
sed -rn "s#(^S.*UX=).*#\1enforcing#gp" /etc/selinux/config
SELINUX=enforcing
d 括号符号:{}
指定花扩号前一个字符连续匹配多少次
* 连续匹配 0 次 或 多次
连续匹配 1 次 或 多次
1) {n,m}n表示最少连续匹配多少次m表示最多连续匹配多少次
2) {n}n表示只连续匹配n次
3) {n,}n表示至少连续匹配n次,至多没有限制
4) {,m}m表示至多连续匹配n次,至少0次
e 问号符号:?
表示匹配问号前面一个字符出现0次或者1次
linux运算符 ; & && | 得作用用;号隔开每个命令, 每个命令按照从左到右的顺序,顺序执行linux管道符号命令,彼此之间不关心是否失败linux管道符号命令,所有命令都会执行 。
上一条命令的输出,作为下一条命令参数
方式: command1 | command2
Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入 。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推
利用一个管道
rpm -qa|grep licq
这条命令使用一个管道符“|”建立linux管道符号命令了一个管道 。管道将rpm -qa命令的输出(包括系统中所有安装的RPM包)作为grep命令的输入,从而列出带有licq字符的RPM包来 。
利用多个管道
cat /etc/passwd | grep /bin/bash | wc -l
这条命令使用了两个管道,利用第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,grep命令找出含有“/bin /bash”的所有行linux管道符号命令;第二个管道将grep的输出送给wc命令 , wc命令统计出输入中的行数 。这个命令的功能在于找出系统中有多少个用户使用bash
放在启动参数后面表示设置此进程为后台进程
方式: command1
默认情况下,进程是前台进程,这时就把Shell给占据了,linux管道符号命令我们无法进行其他操作 , 对于那些没有交互的进程,很多时候,我们希望将其在后台启动 , 可以在启动参数的时候加一个''实现这个目的 。
shell 在执行某个命令的时候,会返回一个返回值 , 该返回值保存在 shell 变量? 中,可以通过 $? 获取当前变量的值,当 $?==0 时表示执行成功,当时 $?==1 (我认为是非0的数,返回值在0-255间) , 表示执行失败 。
有时候,下一条命令依赖前一条命令是否执行成功 。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等 。shell 提供了和 || 来实现命令执行控制的功能,shell 将根据或 || 前面命令的返回值来控制其后面命令的执行 。
语法格式如下:
command1command2 [ command3 ...]
命令之间使用连接,实现逻辑与的功能 。
只有在左边的命令返回真(命令返回值$? == 0 ),右边的命令才会被执行 。
只要有一个命令返回假(命令返回值$? == 1 ) , 后面的命令就不会被执行 。
逻辑或的功能
语法格式如下:
command1 || command2 [|| command3 ...]
命令之间使用 || 连接,实现逻辑或的功能 。
只有在|| 左边的命令返回假(命令返回值$? == 1 ),
|| 右边的命令才会被执行 。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作 。只要有一个命令返回真(命令返回值$? == 0 ),后面的命令就不会被执行 。–直到返回真的地方停止执行 。
举例,ping 命令判断存活主机
注意 要连起来写
参考
【linux管道符号命令 linux 管道操作符】linux管道符号命令的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于linux 管道操作符、linux管道符号命令的信息别忘了在本站进行查找喔 。
推荐阅读
- 拍摄人群叫什么,拍摄人群等场景的拍摄方法
- 如何调excel放大的表,excel如何放大缩小表格
- 骑士类单机游戏,骑士类单机游戏排行榜
- go语言极简一本 go语言极简一本通豆瓣
- chatgpt美国论文,美国用chatGPT写论文
- 颜冬网红直播怎么样,颜冬网红直播怎么样了
- python函数名写错 python变量名区分大小写吗
- 电脑自学有什么好处,自学英语有什么好处
- 恋爱养成的游戏攻略披萨,恋爱养成游戏中文版