本文主要介绍Bash中关于尖括号的相关信息。这篇文章非常适合初学者。通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的话一起学吧。
前言
Bash内置了ls、cd、mv等很多重要的命令,以及grep、awk、sed等很多有用的工具。但除此之外,Bash中其实还有很多标点符号可以起到胶水的作用,比如dot(。)、逗号(,)、括号()、引号()等。让我们来看看可以用于数据转换和传输的尖括号()。
转移数据
如果你对其他编程语言有所了解,你会知道尖括号和一般用作逻辑运算符来比较两个值之间的大小关系。如果你也用尖括号作为各种标签的一部分来写HTML,不会让你觉得奇怪。
在shell脚本语言中,尖括号可以将数据从一个地方传输到另一个地方。例如,数据可以存储在这样的文件中:
ls目录_内容. txt
在上面的示例中,该符号让shell将ls命令的输出结果写入dir_content.txt,而不是直接在命令行上显示。需要注意的是,如果dir_content.txt文件不存在,Bash会为你创建;但如果dir_content.txt是现有的非空文件,其内容将被覆盖。所以在进行类似操作之前要小心。
您也可以在不使用它的情况下使用它,这样新数据可以附加到文件的末尾,而不会覆盖文件中的现有数据。例如:
ls $ HOME dir _ content.txtwc -l目录_内容. txt目录_内容. txt
在这一系列命令中,首先将主目录的内容写入dir_content.txt文件中,然后使用wc -l计算dir_content.txt文件中的行数(即主目录中的文件数)并追加到dir _ content.txt的末尾。
在我的机器上执行上述命令后,dir_content.txt的内容将如下所示:
应用程序
箱子
云
桌面
文档
下载
比赛
ISOs
解放运动
日志
音乐
OpenSCAD
图片
公共
模板
测试目录
录像
17目录_内容. txt
你可以理解为箭头。当然,这个箭头的方向也可以反过来。比如科恩兄弟(LCTT译名:科恩兄弟,美国电影导演组)的一些演员以及他们出演电影的次数都保存在CBActors文件中,像这样:
约翰古德曼5
约翰图图罗3
乔治克鲁尼2
弗兰西斯麦克多蒙德6
史蒂夫巴斯米5
乔鲍里托4
托尼夏尔赫布3
詹姆斯甘多菲尼1号
您可以执行这样的命令:
排序CBActors
弗兰西斯麦克多蒙德6 #你会得到这样的输出
乔治克鲁尼2
詹姆斯甘多菲尼1号
约翰古德曼5
约翰图图罗3
乔鲍里托4
史蒂夫巴斯米5
托尼夏尔赫布3
您可以使用sort命令按字母顺序输出这个列表。但是,sort命令已经可以接受一个传入的文件,所以在这里使用它有点多余。您可以通过直接执行sort CBActors来获得所需的结果。
如果你想知道科恩斯最喜欢的演员是谁,你可以这样做。首先:
一边看指名道姓的片子;do echo $ films $ name $ surname films first . txt;完成CBActors
上面的命令字符串如果写成多行,可能更容易阅读:
一边看指名道姓的片子;
做
echo $ films $ name $ surname films first;
完成CBActors
让我们分析一下这些命令的作用:
而……;Do … done是一个循环结构。当while之后的条件成立时,do和done之间的部分会重复执行;
read语句逐行读入内容。Read将继续从标准输入中读取,直到没有可读取的内容;
CBActors文件的内容将从标准输入中读入,所以while循环将逐行读入CBActors文件;
read命令可以把每一行按照空格分成三个字段,然后把这三个字段赋给名字、姓氏、影片三个变量,这样你就可以轻松的先通过echo $ films $ name $ surname films重新排列几个字段的放置顺序,并将它们放入filmfirst文件中。
执行后,检查filmsfirst文件。内容将如下所示:
5约翰古德曼
3约翰图图罗
乔治克鲁尼
6弗兰西斯麦克多蒙德
5史蒂夫巴斯米
4乔鲍里托
3托尼夏尔赫布
1詹姆斯甘多菲尼
然后使用排序命令:
电影优先排序
你可以看到科恩斯最喜欢的演员是弗兰西斯麦克多蒙德。(-r参数表示降序,因此McDormand将排在第一位)
总结
这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。