成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在 Linux 上使用 Bash 自動化任務

系統 Linux
Bash 有一些方便的自動化功能,可以讓我在 Linux 上處理文件時更輕松。

通過 Bash 命令行進行自動化任務是極好的一種方式。不論你使用運行在服務器上的 Linux 進行管理日志文件或其他文件,還是你在個人電腦上整理文件以使桌面保持整潔,使用 Bash 的自動化功能會使你的工作變得更輕松。

自動執行文件任務:for

如果你對一堆文件要同時處理,并且對每個文件進行相同的操作,請使用 for? 命令。該命令會遍歷文件列表,并執行一個或多個命令。for 命令如下所示:

for 變量 in 列表
do
命令
done

我在示例中添加了額外的空白和換行,來分開 for? 命令中不同的部分。看起來好像無法在命令行中同時運行多個命令,不過你可以使用 ; 將所有命令放在同一行中,就像這樣:

for 變量 in 列表 ; do 命令 ; done

讓我們看看它的實際效果。我使用 for? 命令來重命名一些文件。最近,我有一些截圖,想要重命名。這些截圖名稱為 filemgr.png? 或 terminal.png?,我想將 screenshot? 放在每個名稱前。我可以使用 for 命令一次性將 30 個文件重命名。這是兩個文件的示例:

$ ls
filemgr.png terminal.png
$ for f in *.png ; do mv $f screenshot-$f ; done
$ ls
screenshot-filemgr.png screenshot-terminal.png

for? 命令使得在一系列文件中執行一種或多種操作變得容易。你可以用一些有意義的變量名,比如 image? 或 screenshot?,或者你用示例中“縮寫的”變量 f?。當我在使用 for? 循環寫腳本的時候,會選擇有意義的變量名。但是當我在命令行中使用 for?,我通常會選擇縮寫變量名,比如 f? 代表文件,d 代表目錄等。

不論你選擇怎樣的變量名,請確保在引用變量時添加 $? 符號。這會將變量擴展為你正在處理的文件的名稱。在 Bash 提示符下鍵入 help for? 以了解有關 for 命令的更多信息。

按條件執行:if

當你需要對每個文件執行相同操作時,使用 for? 循環遍歷一些文件很有幫助。但是,如果你需要對某些文件做一些不同的事情怎么辦?為此,你需要使用 if? 語句進行條件執行。if 語句如下所示:

if 測試
then
命令
fi

你也可以使用 if、else 語句進行判斷:

if 測試
then
命令
else
命令
fi

你可以使用 if、elif、else 語句來實現更復雜的程序。當我一次性需要自動處理很多文件時,我會在腳本中使用:

if 測試1
then
命令
elif 測試2
then
命令
elif 測試3
then
命令
else
命令
fi

if? 命令可以讓你進行各種判斷,例如判斷一個文件是否是一個文件,或者一個文件是否為空文件(零字節)。在命令行中輸入 help test?,可以立即查看使用 if 語句能夠進行的各種測試。

例如,假設我想清理一個包含幾十個文件的日志目錄。日志管理中的一個常見任務是刪除所有空日志文件,并壓縮其他日志。解決這個問題的最簡單方法是刪除空文件。沒有可以完全匹配的 if? 測試,但是我們有 -s? 選項來判斷是否是一個文件,并且判斷該文件不是空的(大小不為零)。這與我們想要的相反,但我們可以使用 ! 來否定測試,以判斷某些內容不是文件或為空。

讓我們用一個示例來看看這個過程。我創建了兩個測試文件:一個是空的,另一個包含一些數據。我們可以使用 if? 判斷,如果文件為空打印消息 empty:

$ ls
datafile emptyfile
$ if [ ! -s datafile ] ; then echo "empty" ; fi
$ if [ ! -s emptyfile ] ; then echo "empty" ; fi
empty

我們可以將 if? 和 for 命令結合起來,檢查日志文件列表中的空文件并刪除:

$ ls -l
total 20
-rw-rw-r--. 1 jhall jhall 2 Jul 1 01:02 log.1
-rw-rw-r--. 1 jhall jhall 2 Jul 2 01:02 log.2
-rw-rw-r--. 1 jhall jhall 2 Jul 3 01:02 log.3
-rw-rw-r--. 1 jhall jhall 0 Jul 4 01:02 log.4
-rw-rw-r--. 1 jhall jhall 2 Jul 5 01:02 log.5
-rw-rw-r--. 1 jhall jhall 0 Jul 6 01:02 log.6
-rw-rw-r--. 1 jhall jhall 2 Jul 7 01:02 log.7
$ for f in log.* ; do if [ ! -s $f ] ; then rm -v $f ; fi ; done
removed 'log.4'
removed 'log.6'
$ ls -l
total 20
-rw-rw-r--. 1 jhall jhall 2 Jul 1 01:02 log.1
-rw-rw-r--. 1 jhall jhall 2 Jul 2 01:02 log.2
-rw-rw-r--. 1 jhall jhall 2 Jul 3 01:02 log.3
-rw-rw-r--. 1 jhall jhall 2 Jul 5 01:02 log.5
-rw-rw-r--. 1 jhall jhall 2 Jul 7 01:02 log.7

使用 if? 命令可以在需要時執行一些操作,使腳本變得智能。我經常會在腳本中使用 if?,當我需要判斷文件在我的系統上存在或不存在時,或者判斷腳本正在檢查的條目是文件或目錄時。使用 if 使得腳本能夠根據需要采取不同的操作。

責任編輯:趙寧寧 來源: Linux中國
相關推薦

2019-11-14 10:00:18

Linuxcron任務自動化任務

2022-12-16 09:01:24

2019-01-07 09:50:06

Linuxtarball命令

2023-01-17 07:40:59

LinuxAppImage應用程序

2019-11-26 16:58:51

Linuxpkgsrc

2021-10-02 10:10:47

LinuxBusyBox命令

2020-08-24 12:37:54

Linuxxargs命令

2024-06-12 12:36:48

CrontabPython

2019-05-15 09:47:06

網絡自動化網絡中斷網絡

2020-04-09 10:18:51

Bash循環Linux

2019-05-29 08:00:00

Linux計劃任務cron

2019-08-27 20:00:23

2020-03-20 10:47:49

人工智能技術機器人

2024-11-21 15:24:49

2014-04-24 09:49:57

Android測試異步任務

2013-08-28 10:38:01

2022-03-30 09:32:32

BashtestLinux

2022-03-10 10:12:04

自動化腳本Bash

2021-03-09 10:08:15

Linux 自動化操作系統

2022-01-27 13:23:15

Linux技巧命令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线看亚洲 | 成人欧美一区二区 | 国产一区不卡 | 一区二区三区四区免费观看 | 午夜精品久久久久久久久久久久久 | 亚洲视频免费在线观看 | 亚洲三区在线观看 | 综合色导航 | 国产精品精品视频一区二区三区 | 欧美性视频在线播放 | 国内精品免费久久久久软件老师 | 午夜国产精品视频 | 久久久久久久av | 亚洲不卡在线观看 | 亚洲a视| 国产精品久久av | 国产欧美一区二区三区久久手机版 | 欧美久久一区二区 | 久久免费小视频 | 国产7777 | 欧美视频偷拍 | 91精品国产91久久久久久三级 | 亚洲精品一 | 蜜桃传媒av | 欧洲一区二区三区 | 国产欧美一级 | 天天视频成人 | 国产日韩欧美中文字幕 | 久久亚洲天堂 | 成人av一区 | 嫩草视频在线免费观看 | 二区在线视频 | 欧美精品欧美精品系列 | 91精品久久久久久久久中文字幕 | 人人做人人澡人人爽欧美 | 久久久久国色av免费观看性色 | 日韩中文字幕一区 | 久久久国产视频 | 91免费电影 | 日本欧美国产在线 | 午夜精品久久久久久久久久久久久 |