自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一套有用的Unix實(shí)用程序

系統(tǒng) Linux
我們都了解 GNU 核心實(shí)用程序,所有類 Unix 操作系統(tǒng)都預(yù)裝了它們。它們是 GNU 操作系統(tǒng)中與文件、Shell 和 文本處理相關(guān)的基礎(chǔ)實(shí)用工具。GNU 核心實(shí)用程序包括很多日常操作命令,例如 cat、ls、rm、mkdir、rmdir、touch、tail 和 wc 等。

[[242149]]

我們都了解 GNU 核心實(shí)用程序GNU Core Utilities,所有類 Unix 操作系統(tǒng)都預(yù)裝了它們。它們是 GNU 操作系統(tǒng)中與文件、Shell 和 文本處理相關(guān)的基礎(chǔ)實(shí)用工具。GNU 核心實(shí)用程序包括很多日常操作命令,例如 cat、lsrm、mkdir、rmdir、touch、tailwc 等。除了這些實(shí)用程序,還有更多有用的實(shí)用程序沒有預(yù)裝在類 Unix 操作系統(tǒng)中,它們匯集起來(lái)構(gòu)成了 moreutilis 這個(gè)日益增長(zhǎng)的集合。moreutils 可以在 GNU/Linux 和包括 FreeBSD,openBSD 及 Mac OS 在內(nèi)的多種 Unix 類型操作系統(tǒng)上安裝。

截至到編寫這份指南時(shí), moreutils 提供如下實(shí)用程序:

  • chronic – 運(yùn)行程序并忽略正常運(yùn)行的輸出
  • combine – 使用布爾操作合并文件的行
  • errno – 查詢 errno 名稱及描述
  • ifdata – 獲取網(wǎng)絡(luò)接口信息,無(wú)需解析 ifconfig 的結(jié)果
  • ifne – 在標(biāo)準(zhǔn)輸入非空的情況下運(yùn)行程序
  • isutf8 – 檢查文件或標(biāo)準(zhǔn)輸入是否采用 UTF-8 編碼
  • lckdo – 帶鎖運(yùn)行程序
  • mispipe – 使用管道連接兩個(gè)命令,返回***個(gè)命令的退出狀態(tài)
  • parallel – 同時(shí)運(yùn)行多個(gè)任務(wù)
  • pee – 將標(biāo)準(zhǔn)輸入傳遞給多個(gè)管道
  • sponge – 整合標(biāo)準(zhǔn)輸入并寫入文件
  • ts – 為標(biāo)準(zhǔn)輸入增加時(shí)間戳信息
  • vidir – 使用你默認(rèn)的文本編輯器操作目錄文件
  • vipe – 在管道中插入信息編輯
  • zrun – 自動(dòng)解壓并將其作為參數(shù)傳遞給命令

 

在 Linux 上安裝 moreutils

由于 moreutils 已經(jīng)被打包到多種 Linux 發(fā)行版中,你可以使用發(fā)行版對(duì)應(yīng)的軟件包管理器安裝 moreutils。

Arch Linux 或衍生的 AntergosManjaro Linux 上,運(yùn)行如下命令安裝 moreutils:

  1. $ sudo pacman -S moreutils

Fedora 上,運(yùn)行:

  1. $ sudo dnf install moreutils

RHEL,CentOSScientific Linux 上,運(yùn)行:

  1. $ sudo yum install epel-release
  2. $ sudo yum install moreutils

DebianUbuntuLinux Mint 上,運(yùn)行:

  1. $ sudo apt-get install moreutils

Moreutils – 打包更多有用的 Unix 實(shí)用程序

讓我們看一下幾個(gè) moreutils 工具的用法細(xì)節(jié)。

 

combine 實(shí)用程序

正如 combine 名稱所示,moreutils 中的這個(gè)實(shí)用程序可以使用包括 and,not,orxor 在內(nèi)的布爾操作,合并兩個(gè)文件中的行。

  • and – 輸出 file1file2 都包含的行。
  • not – 輸出 file1 包含但 file2 不包含的行。
  • or – 輸出 file1file2 包含的行。
  • xor – 輸出僅被 file1file2 包含的行

下面舉例說(shuō)明,方便你理解該實(shí)用程序的功能。這里有兩個(gè)文件,文件名分別為 file1file2,其內(nèi)容如下:

  1. $ cat file1
  2. is
  3. was
  4. were
  5. where
  6. there
  7.  
  8. $ cat file2
  9. is
  10. were
  11. there

下面,我使用 and 布爾操作合并這兩個(gè)文件。

  1. $ combine file1 and file2
  2. is
  3. were
  4. there

從上例的輸出中可以看出,and 布爾操作只輸出那些 file1file2 都包含的行;更具體的來(lái)說(shuō),命令輸出為兩個(gè)文件共有的行,即 is,were 和 there。

下面我們換成 not 操作,觀察一下輸出。

  1. $ combine file1 not file2
  2. was
  3. where

從上面的輸出中可以看出,not 操作輸出 file1 包含但 file2 不包含的行。

 

ifdata 實(shí)用程序

ifdata 實(shí)用程序可用于檢查網(wǎng)絡(luò)接口是否存在,也可用于獲取網(wǎng)絡(luò)接口的信息,例如 IP 地址等。與預(yù)裝的 ifconfigip 命令不同,ifdata 的輸出更容易解析,這種設(shè)計(jì)的初衷是便于在 Shell 腳本中使用。

如果希望查看某個(gè)接口的 IP 地址,不妨以 wlp9s0 為例,運(yùn)行如下命令:

  1. $ ifdata -p wlp9s0
  2. 192.168.43.192 255.255.255.0 192.168.43.255 1500

如果只查看掩碼信息,運(yùn)行如下命令:

  1. $ ifdata -pn wlp9s0
  2. 255.255.255.0

如果查看網(wǎng)絡(luò)接口的物理地址,運(yùn)行如下命令:

  1. $ ifdata -ph wlp9s0
  2. A0:15:46:90:12:3E

如果判斷接口是否存在,可以使用 -pe 參數(shù):

  1. $ ifdata -pe wlp9s0
  2. yes

 

pee 命令

該命令某種程度上類似于 tee 命令。

我們先用一個(gè)例子看一下 tee 的用法。

  1. $ echo "Welcome to OSTechNIx" | tee file1 file2
  2. Welcome to OSTechNIx

上述命令首先創(chuàng)建兩個(gè)文件,名為 file1file2;接著,將 “Welcome to OSTechNix” 行分別附加到兩個(gè)文件中;***,在終端中打印輸出 “Welcome to OSTechNix”。

pee 命令提供類似的功能,但與 tee 又稍微有些差異。查看下面的例子:

  1. $ echo "Welcome to OSTechNIx" | pee cat cat
  2. Welcome to OSTechNIx
  3. Welcome to OSTechNIx

從上面的命令輸出中可以看出,有兩個(gè) cat 命令實(shí)例獲取 echo 命令的輸出并執(zhí)行,因而終端中出現(xiàn)兩個(gè)同樣的輸出。

 

sponge 實(shí)用程序

這是 moreutils 軟件包中的另一個(gè)有用的實(shí)用程序。sponge 讀取標(biāo)準(zhǔn)輸入并寫入到指定的文件中。與 Shell 中的重定向不同,sponge 接收到完整輸入后再寫入輸出文件。

查看下面這個(gè)文本文件的內(nèi)容:

  1. $ cat file1
  2. I
  3. You
  4. Me
  5. We
  6. Us

可見,文件包含了一些無(wú)序的行;更具體的說(shuō),這些行“沒有”按照字母順序排序。如果希望將其內(nèi)容安裝字母順序排序,你會(huì)怎么做呢?

  1. $ sort file1 > file1_sorted

這樣做沒錯(cuò),對(duì)吧?當(dāng)然沒錯(cuò)!在上面的命令中,我將 file1 文件內(nèi)容按照字母順序排序,將排序后的內(nèi)容保存在 file1_sorted 文件中。但如果使用 sponge 命令,你可以在不創(chuàng)建新文件(即 file1_sorted)的情況下完成同樣的任務(wù),命令如下:

  1. $ sort file1 | sponge file1

那么,讓我們檢查一下文件內(nèi)容是否已經(jīng)按照字母順序排序:

  1. $ cat file1
  2. I
  3. Me
  4. Us
  5. We
  6. You

看到了吧?并不需要?jiǎng)?chuàng)建新文件。在腳本編程中,這非常有用。另一個(gè)好消息是,如果待寫入的文件已經(jīng)存在,sponge 會(huì)保持其權(quán)限信息permissions不變。

 

ts 實(shí)用程序

正如名稱所示,ts 命令在每一行輸出的行首增加時(shí)間戳timestamp

查看如下命令的輸出:

  1. $ ping -c 2 localhost
  2. PING localhost(localhost.localdomain (::1)) 56 data bytes
  3. 64 bytes from localhost.localdomain (::1): icmp_seq=1 ttl=64 time=0.055 ms
  4. 64 bytes from localhost.localdomain (::1): icmp_seq=2 ttl=64 time=0.079 ms
  5.  
  6. --- localhost ping statistics ---
  7. 2 packets transmitted, 2 received, 0% packet loss, time 1018ms
  8. rtt min/avg/max/mdev = 0.055/0.067/0.079/0.012 ms

下面,結(jié)合 ts 實(shí)用程序運(yùn)行同樣地命令:

  1. $ ping -c 2 localhost | ts
  2. Aug 21 13:32:28 PING localhost(localhost (::1)) 56 data bytes
  3. Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.063 ms
  4. Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.113 ms
  5. Aug 21 13:32:28
  6. Aug 21 13:32:28 --- localhost ping statistics ---
  7. Aug 21 13:32:28 2 packets transmitted, 2 received, 0% packet loss, time 4ms
  8. Aug 21 13:32:28 rtt min/avg/max/mdev = 0.063/0.088/0.113/0.025 ms

對(duì)比輸出可以看出,ts 在每一行行首增加了時(shí)間戳。下面給出另一個(gè)例子:

  1. $ ls -l | ts
  2. Aug 21 13:34:25 total 120
  3. Aug 21 13:34:25 drwxr-xr-x 2 sk users 12288 Aug 20 20:05 Desktop
  4. Aug 21 13:34:25 drwxr-xr-x 2 sk users 4096 Aug 10 18:44 Documents
  5. Aug 21 13:34:25 drwxr-xr-x 24 sk users 12288 Aug 21 13:06 Downloads
  6. [...]

 

vidir 實(shí)用程序

vidir 實(shí)用程序可以讓你使用 vi 編輯器(或其它 $EDITOR 環(huán)境變量指定的編輯器)編輯指定目錄的內(nèi)容。如果沒有指定目錄,vidir 會(huì)默認(rèn)編輯你當(dāng)前的目錄。

下面的命令編輯 Desktop 目錄的內(nèi)容:

  1. $ vidir Desktop/

vidir

vidir

上述命令使用 vi 編輯器打開了指定的目錄,其中目錄內(nèi)的文件都會(huì)對(duì)應(yīng)一個(gè)數(shù)字。下面你可以按照 vi 的操作方式來(lái)編輯目錄中的這些文件:例如,刪除行意味著刪除目錄中對(duì)應(yīng)的文件,修改行中字符串意味著對(duì)文件進(jìn)行重命名。

你也可以編輯子目錄。下面的命令會(huì)編輯當(dāng)前目錄及所有子目錄:

  1. $ find | vidir -

請(qǐng)注意命令結(jié)尾的 -。如果 - 被指定為待編輯的目錄,vidir 會(huì)從標(biāo)準(zhǔn)輸入讀取一系列文件名,列出它們讓你進(jìn)行編輯。

如果你只想編輯當(dāng)前目錄下的文件,可以使用如下命令:

  1. $ find -type f | vidir -

只想編輯特定類型的文件,例如 .PNG 文件?你可以使用如下命令:

  1. $ vidir *.png

這時(shí)命令只會(huì)編輯當(dāng)前目錄下以 .PNG 為后綴的文件。

 

vipe 實(shí)用程序

vipe 命令可以讓你使用默認(rèn)編輯器接收 Unix 管道輸入,編輯之后使用管道輸出供下一個(gè)程序使用。

執(zhí)行下面的命令會(huì)打開 vi 編輯器(當(dāng)然是我默認(rèn)使用的編輯器),你可以編輯 echo 命令的管道輸入(即 “Welcome to OSTechNix”),***將編輯過的內(nèi)容輸出到終端中。

  1. $ echo "Welcome to OSTechNIx" | vipe
  2. Hello World

從上面的輸出可以看出,我通過管道將 “Welcome to OSTechNix” 輸入到 vi 編輯器中,將內(nèi)容編輯為 “Hello World”,***顯示該內(nèi)容。

好了,就介紹這么多吧。我只介紹了一小部分實(shí)用程序,而 moreutils 包含更多有用的實(shí)用程序。我在文章開始的時(shí)候已經(jīng)列出目前 moreutils 軟件包內(nèi)包含的實(shí)用程序,你可以通過 man 幫助頁(yè)面獲取更多相關(guān)命令的細(xì)節(jié)信息。舉個(gè)例子,如果你想了解 vidir 命令,請(qǐng)運(yùn)行:

  1. $ man vidir

希望這些內(nèi)容對(duì)你有所幫助。我還將繼續(xù)分享其它有趣且實(shí)用的指南,如果你認(rèn)為這些內(nèi)容對(duì)你有所幫助,請(qǐng)分享到社交網(wǎng)絡(luò)或?qū)I(yè)圈子,也歡迎你支持 OSTechNix 項(xiàng)目。 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2010-07-30 13:58:20

DB2 實(shí)用程序

2020-05-11 12:13:16

GNULinux

2020-12-08 08:12:14

SQL腳本行轉(zhuǎn)列

2010-02-04 15:29:40

Android實(shí)用程序

2011-05-27 15:24:28

DB2

2010-11-30 15:04:31

Office Web

2010-09-30 15:29:56

DB2查詢管理

2022-10-24 15:29:34

TypeScript開發(fā)程序類型

2023-02-28 15:20:31

TypeScript開發(fā)編程

2010-11-26 14:21:49

Office 套件

2010-11-30 15:18:32

Office

2010-07-26 09:14:22

Perl命令行

2010-11-30 15:20:53

Office

2009-06-23 18:01:45

Ajax框架源代碼

2010-11-26 13:58:54

2014-12-02 10:02:21

Android異步任務(wù)

2023-03-03 17:00:00

部署Linux內(nèi)核

2010-04-14 08:49:43

Oracle數(shù)據(jù)庫(kù)系統(tǒng)

2022-09-20 12:59:36

JavaScript函數(shù)

2022-08-29 19:52:34

socat命令Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)