搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家小花儿
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Android Studio下载_android studio help improve
2
Android将View的内容转换为图片_android将view变成图片
3
查看postgresql 磁盘占用_一个能融会贯通PostgreSQL监控的人,大概率是高手
4
制作tensorflow数据集_labels_file
5
使用recycleView中拖拽条目移动重排序的代码实现_baserecyclerviewadapterhelper拖动顺序
6
LeetCode 30. Substring with Concatenation of All Words(词语拼接组合)
7
[学习笔记]SubstanceDesigner制作泥土材质
8
【有效的PyQt5打包】
9
A*算法_a*算法 同学 杠
10
org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, cm_test_nested exception is org.apache.rocketmq.client.exc
当前位置:
article
> 正文
Linux下命令执行顺序控制与管道_liunx管道操作,第一个管道没执行
作者:我家小花儿 | 2024-03-09 00:44:00
赞
踩
liunx管道操作,第一个管道没执行
一、命令执行顺序的控制
顺序执行多条命令
通常情况下,每次只能在终端输入一条命令,执行完成后,再输入第二条命令,然后再按回车执行。要想一次性输入完执行,可以使用简单的顺序执行";"来完成。例如:
sudo apt-get update
sudo apt-get install cowsay
cowsay hello curry
可以一次性输入sudo apt-get update; sudo apt-get install cowsay; cowsay hello curry
有选择的执行命令
在顺序执行任务时,如果前面的命令执行不成功,而后面的命令又依赖于上一条命令的结果,那么就会造成花了时间,最终却得到一个错误的结果。那么需要能够有选择性的来执行命令。比如:上一条命令执行成功才继续下一条,或者不成功又该做出其他什么处理,比如:可以使用which来查看是否安装某个命令,如果找不到就执行该命令,否则什么也不做。which cowsay> /dev/null && cowsay -f -head -in ohch~
在C语言中,&&表示逻辑与,||表示逻辑或,同样shell中也有这两个符号。它们的区别在于,shell中的这两个符号除了可以用于表示逻辑的与和或之外,也可以实现命令执行顺序的简单控制。&&表示如果前面的命令执行结果返回0时,则执行后面的指令;否则不执行。||就是与&&相反的控制效果,当上一条命令执行结果不是0时,则执行它后面的命令。可以从$?环境变量获取上一次命令的返回结果:
which cowsay
echo $? cowsay未安装,结果为1
which cat
echo $? 结果为0
除了基本的使用外,还可以结合&&和||来实现一些操作,比如:
which cowsay> /dev/null && echo “exist” || echo “not exist”
二、管道
管道是一种通信机制,通常用于进程间的通信(也可以通过socket进行网络通信),它表现出来的形式就是将前面每一个进程的输出stdout直接作为下一个进程的输入stdin。
管道又分为匿名管道和具名管道,在使用一些过滤程序时会经常用到的就是匿名管道,在命令行中由|分隔符表示。
试用
先试用一下管道,比如查看/etc目录下有哪些文件和目录,使用ls命令来查看:
ls -al /etc
有太多的内容,屏幕不能完全显示,这时候可以使用滚动条或快捷键滚动窗口来查看。不过这时候可以使用管道:
ls -al /etc | less
通过管道将前一个命令ls的输出作为下一个命令less的输入,然后就可以一行一行的查看。
cut命令,打印每一行的某一段
打印/etc/passwd文件中以:分隔符的第一个字段和第六个字段分别表示用户名和home目录:
cut /etc/passwd -d ‘:’ -f 1,6
grep命令,在文本或stdin中查找匹配字符串
grep命令是很强大的,也是相当常用的一个命令,它结合正则表达式可以实现很复杂却很高效的匹配和查找。搜索/home/cdl目录下所有包含"cdl"的所有文本文件,并显示出现在文本中的行号:
grep -rnI “cdl” ~
参数说明:
-r:表示递归搜索子目录中的文件
-n:表示打印匹配的行号
-I:表示忽略二进制文件
也可以在匹配字段中使用正则表达式,查看环境变量中以"roon"结尾的字符串
export | grep “.*roon$” 注:$表示一行的末尾
wc命令,简单小巧的计数工具
wc命令用于统计并输出一个文件中行、单词和字节的数目,参数可以通过wc --help查看。输出/etc/passwd文件的统计信息:
wc /etc/passwd
再来结合管道来操作一下,下面统计/etc下面的所有目录数:
ls -dl /etc/*/ | wc -l
sort排序命令
sort功能很简单就是将输入按照一定的方式排序,然后再输出,它支持的排序有按字典排序、数字排序,按月排序,随机排序,反转排序,指定特定字段进行排序等等。
默认为字典排序:
cat /etc/passwd | sort
按特定字段排序:
cat /etc/passwd | sort -t ‘:’ -k 3 -n
参数说明:
-t:用于指定字段的分隔符
-k:用于指定对哪个字段进行排序
-n:如果安装数字排序就要加上-n参数
uniq去重命令
uniq命令可以用于过滤或输出重复行,使用history命令查看最近执行过的命令:
history | cut -c 8- | cut -d ’ ’ -f 1 | uniq
然后,经过层层筛选和过滤,可以发现的确只输出了执行的命令那一列。不过,去重效果不明显,之所以不明显是因为uniq命令只能去除连续重复的行,所以要达到预期效果,需要先进行排序:
history | cut -c 8- | cut -d ’ ’ -f 1 | sort | uniq
输出重复过的行(重复的只输出一个)及重复次数:
history | cut -c 8- | cut -d ’ ’ -f 1 | sort | uniq -dc
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家小花儿/article/detail/213101
推荐阅读
article
linux
c
嵌入式
工程师
笔试题,
嵌入式
软件
工程师
/
linux
c
程序员 笔试题...
一、什么叫可重入?可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数...
赞
踩
article
linux
编译
mqtt
静态库,无法为
arm
-
none
-
linux
-
gnueabi
-g ++编译器找...
I have the
arm
-
none
-
linux
-
gnueabi
-g++ compiler in the below ...
赞
踩
article
linux
下解决
qt
项目
error
while
loading
shared
libraries: ...
linux
下运行
qt
项目,能编译通过,但不能运行出应用程序_./
qt
-
unified
-
linux
-x64-4.6.1-o...
赞
踩
article
ubuntu
在线安装qt碰到的问题及解决_./qt-
unified
-
linux
-
x64
-4.6.1-...
ubuntu
中在线安装qt碰到的问题。_./qt-
unified
-
linux
-
x64
-4.6.1-
online
.
run
:...
赞
踩
article
Ubuntu安装QT:
error
whi
le
loading
shared
libraries: l...
【代码】Ubuntu安装QT:
error
whi
le
loading
shared
libraries:
libxcb
-...
赞
踩
article
解决
dbus
-
1
.
so.3
: no
version
information available 造成...
删除错误的lib
dbus
-
1
.
so.3
快捷方式,并将正确的lib
dbus
-
1
.
so.3
.XX.X拷贝到usr/lib64...
赞
踩
article
解决问题:
libbz2
.so.1: cannot open
shared
object
file
:...
解决缺少
libbz2
.so.1文件的问题。
err
or
while
loading
shared
libraries: l...
赞
踩
article
ubuntu
Linux
安装QT_qt-
unified
-
linux
-x64-4.6.1-
online
...
ubuntu
Linux
安装QT下载开源QT
Linux
安装包地址https://www.qt.io/download-o...
赞
踩
article
Linux
Qt6
安装
教程及错误解决_
ubuntu
安装
qt6
...
在
Linux
环境,通常为Ubuntu,
安装
Qt开发环境,
安装
教程以及遇到的错误解决_
ubuntu
安装
qt6
ubuntu
...
赞
踩
article
Ubuntu
安装Qt出现
bash
: ./
qt
-
unified
-
linux
-x64-
4.6
.1-onl...
Ubuntu
安装Qt出现
bash
: ./
qt
-
unified
-
linux
-x64-
4.6
.1-
online
.
run
: 权...
赞
踩
article
linux
ubuntu安装
qt
creater,配置
qt
环境到可运行
qt
项目_./
qt
-unifie...
一、安装
qt
creater1、搜索清华源,打开路径到
qt
位置,选择第二个文件,下载下来2、打开下载路径,执行chmod ...
赞
踩
article
linux
下
C++
#
include
的
搜索
路径
问题_
linux
include
搜索
路径
...
Linux c++_
linux
include
搜索
路径
linux
include
搜索
路径
...
赞
踩
article
linux
c
之g
c
c
编译出现error:
lvalue
required
as
unary
‘&‘ ...
1、问题 今天搞epoll实现io复用的时候g
c
c
编译出现这个错误
lvalue
required
as
unary
'&...
赞
踩
article
linux
使用
gcc
提示
后缀
无效
,
linux
– Gcc
编译
“无法计算对象文件的
后缀
:无法
编译
”.....
我实际上正在阅读LFS书(7.1版)
,
我在第53页被阻止.尝试
编译
gcc
,
我尝试了以下命令:./configure --...
赞
踩
article
arm
-
linux
-
gnueabihf
-gcc 5.2编译qt4.8.5_
dialogs
/qprin...
arm
-
linux
-
gnueabihf
-gcc 5.2编译qt4.8.5_
dialogs
/
qprintdialog
_un...
赞
踩
article
linux
signal
编译
不过,
Linux
编译
中
的各种
error
处理...
LDD3
中
的第一个例程就是scull,但是在新内核上
编译
的过程那叫一个坎坷。。。在此做出总结,希望可以帮到同路人。。。一...
赞
踩
article
【
FastDFS
】小伙伴们说按照我写的方式在
CentOS
8
服务器
上搭建
FastDFS
环境总报错?_...
这下在
CentOS
8
服务器
上
安装
FastDFS
不会报错了吧!_
c
entos
安装
fastdfs4.0
.6
c
ommon
...
赞
踩
article
Linux
学习
笔记(
12
)...
acpid 否 监听精灵进程 此进程监听并分配内核中的 acpi 事件adsl 否 内部 ADSL 开关控制 只...
赞
踩
article
Linux
:修改
文件
权限...
在
Linux
系统中,权限管理是
文件
和目录安全性的核心。
文件
权限是非常重要的,它们决定了哪些用户可以读取、写入或执行
文件
。...
赞
踩
article
linux
中文
语音
合成
软件,分享|
eSpeak
:
Linux
文本
转
语音
工具
...
eSpeak
是一款
Linux
命令行
工具
,能把
文本
转换成
语音
。它是一款简洁的
语音
合成
器,用C语言编写而成,它支持英语和...
赞
踩
相关标签
linux c嵌入式工程师笔试题
linux 编译mqtt静态库
linux
qt
ubuntu
运维
开发语言
qtcreator
qt5
installer
UOS
bash
权限