网易首页 > 网易号 > 正文 申请入驻

如何在 Linux 上使用 Bash 自动化任务 | Linux 中国

0
分享至

导读:Bash 有一些方便的自动化功能,可以让我在 Linux 上处理文件时更轻松。

本文字数:3293,阅读时长大约: 4分钟

Bash 有一些方便的自动化功能,可以让我在 Linux 上处理文件时更轻松。

通过 Bash 命令行进行自动化任务是极好的一种方式。不论你使用运行在服务器上的 Linux 进行管理日志文件或其他文件,还是你在个人电脑上整理文件以使桌面保持整洁,使用 Bash 的自动化功能会使你的工作变得更轻松。

自动执行文件任务:for

如果你对一堆文件要同时处理,并且对每个文件进行相同的操作,请使用for命令。该命令会遍历文件列表,并执行一个或多个命令。for命令如下所示:

  1. for 变量 in 列表

  2. do

  3. 命令

  4. done

我在示例中添加了额外的空白和换行,来分开for命令中不同的部分。看起来好像无法在命令行中同时运行多个命令,不过你可以使用;将所有命令放在同一行中,就像这样:

  1. for 变量 in 列表 ; do 命令 ; done

让我们看看它的实际效果。我使用for命令来重命名一些文件。最近,我有一些截图,想要重命名。这些截图名称为filemgr.pngterminal.png,我想将screenshot放在每个名称前。我可以使用for命令一次性将 30 个文件重命名。这是两个文件的示例:

  1. $ ls

  2. filemgr.png terminal.png

  3. $ for f in *.png ; do mv $f screenshot-$f ; done

  4. $ ls

  5. screenshot-filemgr.png screenshot-terminal.png

for命令使得在一系列文件中执行一种或多种操作变得容易。你可以用一些有意义的变量名,比如imagescreenshot,或者你用示例中“缩写的”变量f。当我在使用for循环写脚本的时候,会选择有意义的变量名。但是当我在命令行中使用for,我通常会选择缩写变量名,比如f代表文件,d代表目录等。

不论你选择怎样的变量名,请确保在引用变量时添加$符号。这会将变量扩展为你正在处理的文件的名称。在 Bash 提示符下键入help for以了解有关for命令的更多信息。

按条件执行:if

当你需要对每个文件执行相同操作时,使用for循环遍历一些文件很有帮助。但是,如果你需要对某些文件做一些不同的事情怎么办?为此,你需要使用if语句进行条件执行。if语句如下所示:

  1. if 测试

  2. then

  3. 命令

  4. fi

你也可以使用ifelse语句进行判断:

  1. if 测试

  2. then

  3. 命令

  4. else

  5. 命令

  6. fi

你可以使用ifelifelse语句来实现更复杂的程序。当我一次性需要自动处理很多文件时,我会在脚本中使用:

  1. if 测试1

  2. then

  3. 命令

  4. elif 测试2

  5. then

  6. 命令

  7. elif 测试3

  8. then

  9. 命令

  10. else

  11. 命令

  12. fi

if命令可以让你进行各种判断,例如判断一个文件是否是一个文件,或者一个文件是否为空文件(零字节)。在命令行中输入help test,可以立即查看使用if语句能够进行的各种测试。

例如,假设我想清理一个包含几十个文件的日志目录。日志管理中的一个常见任务是删除所有空日志文件,并压缩其他日志。解决这个问题的最简单方法是删除空文件。没有可以完全匹配的if测试,但是我们有-s选项来判断是否是一个文件,并且判断该文件不是空的(大小不为零)。这与我们想要的相反,但我们可以使用!来否定测试,以判断某些内容不是文件或为空。

让我们用一个示例来看看这个过程。我创建了两个测试文件:一个是空的,另一个包含一些数据。我们可以使用if判断,如果文件为空打印消息empty

  1. $ ls

  2. datafile emptyfile

  3. $ if [ ! -s datafile ] ; then echo "empty" ; fi

  4. $ if [ ! -s emptyfile ] ; then echo "empty" ; fi

  5. empty

我们可以将iffor命令结合起来,检查日志文件列表中的空文件并删除:

  1. $ ls -l

  2. total 20

  3. -rw-rw-r--. 1 jhall jhall 2 Jul 1 01:02 log.1

  4. -rw-rw-r--. 1 jhall jhall 2 Jul 2 01:02 log.2

  5. -rw-rw-r--. 1 jhall jhall 2 Jul 3 01:02 log.3

  6. -rw-rw-r--. 1 jhall jhall 0 Jul 4 01:02 log.4

  7. -rw-rw-r--. 1 jhall jhall 2 Jul 5 01:02 log.5

  8. -rw-rw-r--. 1 jhall jhall 0 Jul 6 01:02 log.6

  9. -rw-rw-r--. 1 jhall jhall 2 Jul 7 01:02 log.7

  10. $ for f in log.* ; do if [ ! -s $f ] ; then rm -v $f ; fi ; done

  11. removed 'log.4'

  12. removed 'log.6'

  13. $ ls -l

  14. total 20

  15. -rw-rw-r--. 1 jhall jhall 2 Jul 1 01:02 log.1

  16. -rw-rw-r--. 1 jhall jhall 2 Jul 2 01:02 log.2

  17. -rw-rw-r--. 1 jhall jhall 2 Jul 3 01:02 log.3

  18. -rw-rw-r--. 1 jhall jhall 2 Jul 5 01:02 log.5

  19. -rw-rw-r--. 1 jhall jhall 2 Jul 7 01:02 log.7

使用if命令可以在需要时执行一些操作,使脚本变得智能。我经常会在脚本中使用if,当我需要判断文件在我的系统上存在或不存在时,或者判断脚本正在检查的条目是文件或目录时。使用if使得脚本能够根据需要采取不同的操作。

via:

作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

LCTT 译者 :Donkey

翻译: 18.0 篇

贡献: 81 天

2022-06-09

2022-08-29

https://linux.cn/lctt/Donkey-Hao

欢迎遵照 CC-BY-SA 协议规定转载,

如需转载,请在文章下留言 “ 转载:公众号名称”,

我们将为您添加白名单,授权“ 转载文章时可以修改”。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
万达集团创始人王健林宣布退出公司并将全部股权转让给中国儒意

万达集团创始人王健林宣布退出公司并将全部股权转让给中国儒意

鹏飞深文
2024-04-22 12:19:28
英国AI发现不含稀土磁铁,或将彻底改变整个世界!

英国AI发现不含稀土磁铁,或将彻底改变整个世界!

徐德文科学频道
2024-06-20 08:43:52
照片作者,被枪毙了!

照片作者,被枪毙了!

人间颂
2024-06-20 13:17:27
清纯唯美,可爱迷人

清纯唯美,可爱迷人

娱乐八卦木木子
2024-06-01 01:47:05
把纳税人当假想敌?警税作战中心惹争议,税务总局澄清没有全国性税务检查

把纳税人当假想敌?警税作战中心惹争议,税务总局澄清没有全国性税务检查

叮当当科技
2024-06-20 21:57:17
创新低,人民币闷声下跌!

创新低,人民币闷声下跌!

暴财经
2024-06-20 11:56:34
《玫瑰的故事》结局大圆满!总算是没让广大网友失望

《玫瑰的故事》结局大圆满!总算是没让广大网友失望

白公子探剧
2024-06-20 16:19:24
7月将至,告诉大家一个不好的消息,每个人都应该提前做好准备!

7月将至,告诉大家一个不好的消息,每个人都应该提前做好准备!

三农老历
2024-06-20 18:05:28
小米空调销量暴涨!京东配送:送10台空调有7台是小米

小米空调销量暴涨!京东配送:送10台空调有7台是小米

手机中国
2024-06-20 09:46:13
专家预测,不出意外的话,2025年国内可能出现6大变化趋势

专家预测,不出意外的话,2025年国内可能出现6大变化趋势

蓝色海边
2024-06-20 21:54:49
河南女学霸2次高考查分,从627分变成335分,到底怎么回事?

河南女学霸2次高考查分,从627分变成335分,到底怎么回事?

莉雅细细谈
2024-06-17 20:44:48
北京楼市全军覆没,拖累了石家庄楼市,石家庄老破小跌至7000多元

北京楼市全军覆没,拖累了石家庄楼市,石家庄老破小跌至7000多元

有事问彭叔
2024-06-20 17:36:18
中小学将恢复“留级制度”?教育部正式回应,一锤定音!

中小学将恢复“留级制度”?教育部正式回应,一锤定音!

华人星光
2024-06-20 16:40:07
第一次性生活有多痛?进不去怎么办

第一次性生活有多痛?进不去怎么办

喜马拉雅主播暮霭
2024-06-12 09:53:49
“人造数学天才”,一个非常拙劣的谎言,彻头彻尾的炒作

“人造数学天才”,一个非常拙劣的谎言,彻头彻尾的炒作

爆角追踪
2024-06-18 17:25:17
周琦突然离开国家队,中国男篮内线告急,郭士强又要抓瞎了

周琦突然离开国家队,中国男篮内线告急,郭士强又要抓瞎了

懂球哥评球
2024-06-20 07:23:20
通知!中小学生到校时间要变了,8点上课即将退出历史舞台?

通知!中小学生到校时间要变了,8点上课即将退出历史舞台?

今日搞笑分享
2024-06-20 08:38:44
认怂了!刚刚,以色列宣布大消息!

认怂了!刚刚,以色列宣布大消息!

大嘴说天下
2024-06-20 21:47:28
70-80岁幸福老人12条标志,满足8条就很厉害,看看你占几条

70-80岁幸福老人12条标志,满足8条就很厉害,看看你占几条

爱情大使馆
2024-06-19 20:35:14
斯坦福博士拟被录用乡镇公务员?是否“大材小用”引热议

斯坦福博士拟被录用乡镇公务员?是否“大材小用”引热议

新晚报
2024-06-19 10:29:33
2024-06-21 04:30:44
Linux
Linux
Linux 中国开源社区
8016文章数 73124关注度
往期回顾 全部

科技要闻

小米SU7流量泼天,富贵却被蔚来接住了

头条要闻

欧洲杯:凯恩破门 英格兰1-1丹麦

头条要闻

欧洲杯:凯恩破门 英格兰1-1丹麦

体育要闻

千夫所指的关系户 成了拯救葡萄牙的英雄

娱乐要闻

叶舒华参加柯震东生日聚会,五毒俱全

财经要闻

楼市新“王炸”!释放何信号?

汽车要闻

售价11.79-14.39万元 新一代哈弗H6正式上市

态度原创

亲子
教育
健康
房产
艺术

亲子要闻

夫妻俩趁孩子睡着后聊聊一天的琐事,这就是向往的婚姻吧?

教育要闻

学霸的题目,当然要学霸来做了!学渣挤眉弄眼一个字都没写出来

晚餐不吃or吃七分饱,哪种更减肥?

房产要闻

海棠湾!一所重量级国际学校真的来了!

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

无障碍浏览 进入关怀版