在 Linux 作業系統下,我們經常使用 cat 命令去連線多個檔案並列印到標準輸出,合成幾個檔案為一個目標檔案,追加幾個檔案到目標檔案中。
最近我在 GitHub 上發現了一個具有相似作用的命令叫做 「Bat」,它是 cat 命令的替代品,具有一些例如語法高亮、 Git 整合和自動分頁等非常酷的特性。
在這篇文章中,就來給大家介紹下如何在 Linux 中安裝和使用 bat 命令。
1、bat
安裝 bat
Arch Linux
bat 可以在 Arch Linux 作業系統的預設軟體源中進行獲取,可直接使用 pacman 命令在任何基於 Arch 的系統上來安裝它。
pacman -S bat
Fedora
dnf install bat
macOS
brew install bat
Ubuntu 21.10
我是通過 Ubuntu 環境下安裝的 bat,從 bat 的釋出頁面下載.deb檔案,可執行如下命令進行下載和安裝。
sudo apt-get install wget wget https://github.com/sharkdp/bat/releases/tag/v0.18.3/bat_0.18.3_amd64.deb sudo dpkg -i bat_0.18.3_amd64.deb
對於其他系統,也許需要從軟體源編譯並安裝,或參考 GitHub 上 bat 的其他作業系統安裝方式。
bat 命令的使用
bat 命令的使用與 cat 命令的使用非常相似。
使用 bat 命令建立一個新檔案:
bat > jiaoben1.sh
使用 bat 命令檢視檔案內容:
bat jiaoben1.sh
使用 bat 命令同時檢視多個檔案:
bat jiaoben1.sh jiaoben2.sh
使用 bat 命令將多個檔案的內容合併到一個單獨的檔案中:
bat jiaoben1.sh jiaoben2.sh > test.txt
上述介紹了 bat 建立新檔案、檢視檔案內容、將多個檔案的內容合併到一個單獨的檔案中的方式。
接下來,我們就來看一下 bat 命令一些非常酷的特性。
bat 命令支援大多數程式設計和標示語言的語法高亮,那麼我們就來使用 cat 和 bat 命令展示下 jiaoben1.sh 裡面的內容做個鮮明的對比。
可以看出,cat 命令以純文字格式顯示檔案的內容,而 bat 命令顯示了語法高亮和整齊的文字對齊格式。
從上面 bat 命令的輸出,可以看出是有表格線的,如果你只想顯示行號(而沒有表格)可以使用-n引數來實現,雖然 cat 執行也會顯示行號,但還是沒有 bat 執行輸出後的效果美觀。
bat -n jiaoben2.sh
bat 命令支援 Git 整合,可以輕鬆檢視和編輯 Git 儲存庫中的檔案,bat 與 Git 連線可顯示關於索引的修改。
bat 支援自動分頁,這點特性也是需要值得注意的。
支援分頁意思也就是說,當檔案的輸出內容超出螢幕顯示的時候,bat 命令會自動將自己輸出的內容傳到 less 命令中,你將可以使用確認鍵一頁一頁的檢視輸出內容,使用空格鍵可直接跳轉至文末最後一行。
當你使用 bat 命令時這些都是不必要的,bat 命令將自動傳輸跨越多個頁面的檔案的輸出。
bat jiaoben3.sh
對比下 cat 命令,檢視 jiaoben3.sh 跨多個頁面檔案內容時,提示符會直接跳到檔案的最後一頁,將無法看到跨多個頁面檔案開頭及中間部分的內容。
cat jiaoben3.sh
如果你想要通過 cat 來實現 bat 命令的效果,則需要去使用 cat 的輸出傳輸到 less 命令中去,這樣就可以從開頭部分一頁一頁的檢視內容了。
cat jiaoben3.sh | less
同樣,這種方式也是可以使用確認鍵一頁一頁的檢視輸出內容以及使用空格鍵可直接跳轉至文末最後一行。
bat 客製化主題
目前 bat 客製化主題有 24 種,包括:Coldark-Cold、GitHub、Monokai Extended Light、OneHalfDark、Solarized (light)、TwoDark、Visual Studio Dark+、base16、zenburn 等;
如果你不喜歡預設主題,也是可以根據自己的風格進行修改,只需執行:bat --list-themes命令,即可顯示可用的主題。
# bat --list-themes Theme: 1337 // Output the square of a number. fn print_square(num: f64) { let result = f64::powf(num, 2.0); println!("The square of {:.2} is {:.2}.", num, result); } ......
例如你要選擇Dracula主題,可直接執行:bat --theme=Dracula 檔名
如果你想永久改變某一個主題,可使用export BAT_THEME="Dracula"在你的 shell 啟動檔案,以使更改為永久。
您可以使用--style引數選項來控制bat輸出的外觀,設定元素包括:行號、檔案頭、網格邊框、Git修改來顯示除檔案內容之外的東西,引數是一個逗號分隔的列表。
--style=numbers,changes可以使用僅顯示 Git修改和行號,而不顯示網格和檔案標題,設定BAT_STYLE環境變數以使這些更改為永久。
關於更多 bat 的使用方法可通過執行命令man bat或bat --help。
除此之外,也可以通過 bat 專案的 GitHub 庫檢視更多詳細資訊,我用過 bat 後就不會再想用回 cat 了!
2、duf
在 Linux 環境下,我們知道 df 命令是用於顯示磁碟分割區上可使用的磁碟空間,預設顯示單位為 KB,你還可以利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊。
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 18439940 4943264 12559972 29% / tmpfs 506176 76 506100 1% /dev/shm /dev/sda1 99150 30003 64027 32% /boot /dev/sr0 4363088 4363088 0 100% /media/CentOS_6.5_Final
除此之外,du 命令也是檢視使用空間的,但與 df 命令不同的是 Linux du 命令是對檔案和目錄磁碟使用的空間的檢視,和 df 命令還是有一些區別的。
# du 4 ./.abrt 8 ./.dbus/session-bus 12 ./.dbus 4 ./.nautilus 40 ./.local/share/gvfs-metadata 24 ./.local/share/applications 68 ./.local/share 72 ./.local
接下來就跟大家介紹一款終端工具,你可以理解為傳統的 Linux 命令 df 和 du 整合版 —— duf。
duf 是一個用 Golang 編寫的跨平臺磁碟使用情況工具,可以讓你輕鬆地檢查可用磁碟空間,對輸出進行分類,並以使用者友好的方式進行呈現,適用於 Linux、Windows、macOS、Android、FreeBSD;
Ubuntu 安裝方式:
$ sudo apt install gdebi #如果報錯,Failed to fetch http://security.ubuntu.com...... # sudo apt-get update $ sudo gdebi duf_0.5.0_linux_amd64.deb #要先在下載duf_0.5.0_linux_amd64.deb,下載地址為:https://github.com/muesli/duf/releases/download/v0.5.0/duf_0.5.0_linux_amd64.deb
MacOS 安裝方式:
#先安裝Homebrew,按照提示安裝即可。 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" #安裝duf brew install duf #或者 sudo port selfupdate && sudo port install duf
Windows 安裝方式:
choco install duf #或者 scoop install duf
安裝完畢後,可直接使用 duf,方法也非常簡單。
不新增任何引數,會輸出所有本地裝置、已掛載的任何雲端儲存裝置以及任何其他特殊裝置(包括臨時儲存位置等)的詳細資訊;
$ duf
如果你只想檢視本地連線裝置的詳細資訊,而不想看其他的,可執行:
$ duf --only local
如果你只想根據大小按特定順序對輸出資訊進行排序,可執行:
$ duf --sort size
更多引數使用方式:
duf /home /some/file 根據引數,則 duf 將僅列出特定的裝置和安裝點 duf --all 列出所有內容 duf --hide-network 隱藏網路檔案系統,與之對應的 --hide-fuse --hide-special --hide-loops --hide-binds duf --inodes 列出inodes duf --output mountpoint,size,usage 指定輸出的格式 對應的還有(mountpoint, size, used, avail, usage, inodes, inodes_used, inodes_avail, inodes_usage, type, filesystem) duf --json 以json格式輸出 duf --theme light 如果 duf 無法正確檢測終端的顏色,可以設定一個主題 duf --help 檢視所有 duf 的可用命令
3、tldr
對於初學者學習 Linux 來說,遇到最多的問題就是在 Linux 作業系統下有記不完的命令以及包括各種引數的使用方法,其實你根本不用死記硬背它,當你用到時去查詢相關資料或通過man命令來檢視相關檔案,man手冊輸出的資訊也比較多,而對於引數較多的命令來說,翻看man手冊也非常吃力。
這次就給大家介紹一款工具:tldr,它的全稱是:Too Long, Don't Read,中文意思:太長不看的意思。
其實跟man命令的結果基本上就是太長不看,tldr這個工具你可以理解為簡化了 man 命令的幫助檔案,把 Linux 命令最常用的一些命令用法列舉出來,非常容易看懂。
同時,tldr包括非常多語言編寫的使用者端,比如:C、Go、iOS、Python、nodejs 等等,你可以使用不同的使用者端來安裝;
我這裡的環境是 Ubuntu,需要先安裝 Node.js,然後根據下述安裝方式操作:
sudo apt-get install nodejs sudo apt-get install npm sudo npm install -g tldr
執行完上述三條命令後,還需要再執行tldr --update,更新tldr至最新的狀態,然後就可以直接使用了;
tldr --update
tldr 的使用:
tldr 命令的使用也非常簡單,只需 tldr + 你所要查詢的命令即可;
4、htop
在 Linux 作業系統上顯示程序執行狀態資訊最常用工具是我們熟悉的 top,它是每位系統管理員的好幫手。
htop 可以說是 top 的絕佳替代品,它是用 C 寫的,是一個跨平臺的互動式的程序監控工具,具有更好的視覺效果,一目瞭然更容易理解當前系統的狀況,允許垂直和水平捲動程序列表以檢視它們的完整命令列和相關資訊,如記憶體和 CPU 消耗。還顯示了系統範圍的資訊,例如平均負載或交換使用情況。
顯示的資訊可通過圖形設定進行設定,並且可以互動排序和過濾,與程序相關的任務(例如終止和重新處理)可以在不輸入其 PID 的情況下進行完成。
安裝也很簡單,只需執行命令:apt install htop即可完成。
htop 比起 top,優勢很明顯,除了功能更加完善以外,它的色彩搭配也很豐富,整體上使用起來更加友好。
5、glances
Glances 是用 Python 寫的一個跨平臺的監控工具,旨在通過 curses 或基於 Web 的介面呈現大量系統監控資訊,該資訊根據使用者介面的大小動態調整,是 GNU/Linux、BSD、Mac OS 和 Windows 作業系統的 top/htop 替代品。
它可以在使用者端/伺服器模式下工作,遠端監控可以通過終端、Web 介面或 API(XML-RPC 和 RESTful)完成,統計資料也可以匯出到檔案或外部時間/值資料庫。
除了列出所有程序及其 CPU 和記憶體使用情況之外,它還可以顯示有關係統的其他資訊,比如:
網路及磁碟使用情況
檔案系統已使用的空間和總空間
來自不同感測器(例如電池)的資料
以及最近消耗過多資源的程序列表
6、exa
提到 ls 命令,大家都不陌生,在 Linux 環境下,其主要作用:列出當前目錄下所包含的檔案及子目錄,如果當前目錄下檔案過多,則使用命令 ls 不是很好,因為這輸出出來的結果跟你所要查詢的檔案未能達成一致,第一:需要進行二次過濾查詢;第二:檔案過多時,終端輸出結果較慢;
EXA 是 Unix 和 Linux 作業系統附帶的命令列程式的 ls 現代替代品,賦予它更多功能和更好的預設值。它使用顏色來區分檔案型別和後設資料。它瞭解符號連結、擴充套件屬性和 Git。它體積小、速度快,而且只有一個二進位制檔案。
EXA 與 LS 有什麼不同之處?
終端螢幕不再是瓶頸:exa 功能強大,比 ls 要友好,輸出結果會更快;
顏色:exa 大量使用顏色;
不與 ls 命令衝突
EXA 的特徵
色彩:檔案型別列表以及如何區分檔案;
網格檢視:在與終端視窗大小相同的網格中顯示檔案;
長遠:在表中顯示檔案及其後設資料;
樹檢視:在樹中顯示檔案及其子代;
Git 整合:在儲存庫中時,檢視檔案的 Git 狀態;
篩選:隱藏列表中的檔案,顯示不可見的檔案,並對輸出進行排序;
Xattrs:列出檔案的擴充套件屬性;
Ubuntu 21.10 安裝只需執行命令:apt install exa即可。
顯示選項
-1,--oneline:每行顯示一個條目
-G,--grid:將條目顯示為網格(預設)
-l,--long:顯示擴充套件細節和屬性
-R,--recurse:遞迴到目錄
-T,--tree:作為樹遞迴到目錄中
-x,--across:對網格進行排序,而不是向下排序
-F,--classify:按檔名顯示型別指示器
--colo[u]r:何時使用終端顏色
--colo[u]r-scale : 清楚地突出顯示檔案大小的級別
--icons : 顯示圖示
--no-icons : 不顯示圖示(總是覆蓋 --icons)
過濾選項
-a,--all:顯示隱藏和「點」檔案
-d,--list-dirs:像普通檔案一樣列出目錄
-L,--level=(depth):限制遞迴深度
-r,--reverse:反轉排序順序
-s,--sort=(field):按哪個欄位排序
--group-directories-first:在其他檔案之前列出目錄
-D,--only-dirs:只列出目錄
--git-ignore:忽略中提到的檔案.gitignore
-I,--ignore-glob=(globs):要忽略的檔案的全域性模式(管道分隔)
傳遞該--all選項兩次以同時顯示.和..目錄。
7、fd
fd 是一個在檔案系統中查詢條目的程式,它是 find 命令的一個簡單、快速且使用者友好的替代品,fd 目的不是取代 find 命令所提供的全部功能,而是在多數用例中提供了合理的預設值,在某些情況下非常有用。
fd 輸出是彩色的,類似於某些 ls 模式,它是遞迴的,在包含 Git 儲存庫的目錄中搜尋原始碼檔案時,fd 會自動排除隱藏的檔案和目錄,包括.、.git目錄,並忽略.gitignore檔案中的模式。一般來說,搜尋速度更快,而且第一次搜尋時會提供了更多相關結果。
預設情況下,fd 在當前目錄中執行不區分大小寫的模式搜尋,但是,如果你的搜尋模式包含一個大寫字母,fd 將以區分大小寫的模式進行執行。當然,也可以重寫預設值,但在許多情況下還是有利的。同樣使用 find 進行相同的搜尋需要你提供額外的命令列引數。
fd 可用於許多 Linux 發行版,執行以下命令,可以使用標準儲存庫在 Ubuntu 中安裝:
sudo apt install fd-find
在 Ubuntu 作業系統中,命令是 fdfind,避免與其他現有的實用程式名稱發生衝突,如果希望它是 fd,可以設定一個別名:
alias fd=fdfind
要使別名保持不變,在重新啟動後仍然可用,請將其放入「.bashrc」或「.bash_aliases」檔案中。
使用不帶引數選項的 fd,則類似於 ls,不同之處在於它預設情況下也會將子目錄中的檔案進行列出。
fd bat_0.18.3_amd64.deb fd_8.3.0_amd64.deb jiaoben1.sh jiaoben2.sh jiaoben3.sh snap snap/firefox snap/firefox/631 snap/firefox/731 snap/firefox/common snap/firefox/current snap/snap-store snap/snap-store/557 snap/snap-store/558 snap/snap-store/common snap/snap-store/current test.md
在當前目錄中搜尋所有的 markdown 檔案(.md 或.MD ),find 命令如下:
find . -iname "*.md" ./test.md
使用 fd 進行同樣的搜尋:
fd *.md test.md
在某些情況下,fd 需要額外的選項;例如,如果你想包含隱藏檔案和目錄,則必須使用選項 -H,而這在 find 中是不需要的,關於 fd 更多命令列引數選項的使用方法,可查閱 fd GitHub 儲存庫。
8、ag
ack和ag是兩個文字搜尋工具,比自帶的grep要好用得多。
在指定目錄下搜尋文字時,不需要像 grep 那樣指定各種命令列選項,輸出結果也會包含檔名和行號,並且會高亮顯示搜尋鍵碼。
ag是可以比grep、ack更快的遞迴搜尋檔案內容。
Ubuntu 21.10 安裝 ag 和 ack apt-get install silversearcher-ag apt install ack
ag 命令常用引數
ag -g (檔名):類似於 find . -name (檔名)
ag -i sed:忽略大小寫搜尋含 sed 文字
ag -A sed:搜尋含 sed 文字,並顯示匹配內容之後的 n 行文字
ag -B sed:搜尋含 sed 文字,並顯示匹配內容之前的 n 行文字
ag -C sed:搜尋含 sed 文字,並同時顯示匹配內容以及它前後各 n 行文字的內容
ag -w sed:全匹配搜尋,只搜尋與所搜內容完全匹配的文字
ag --java sed:在 java 檔案中搜尋含 sed 的文字
ag --xml sed:在 XML 檔案中搜尋含 sed 的文字
ag 命令的使用
根據檔名進行搜尋對應的檔案,可使用-g引數選項。
ag -g jiaoben jiaoben2.sh jiaoben1.sh jiaoben3.sh
搜尋當前目錄下有關 sed 關鍵字的文字。
ag -w sed jiaoben1.sh 10: sed -i '2d' "$new_filename"
更多引數選項,大家可根據自身實際場景進行運用。
9、axel
axel 是命令列多執行緒下載工具,下載檔案時可以替代 curl、wget。
Ubuntu 21.10 安裝 axel
apt-get install axel
axel 引數選項
-n:指定執行緒數
-o:指定另存為目錄
-s:指定每秒的最大位元數
-q:靜默模式
案例
# axel -n 10 -o /tmp/ http://mirrors.163.com/ubuntu/ls-lR.gz # exa /tmp/ls-lR.gz /tmp/ls-lR.gz
可以看出,我們通過 axel 也是可以把 ls-lR.gz 這個檔案正常下載到 /tmp 目錄下的。
10、pydf
在 Linux 系統下,我們可以使用df命令來顯示磁碟的相關資訊。
# df 檔案系統 1K-塊 已用 可用 已用% 掛載點 tmpfs 199180 1660 197520 1% /run /dev/sda3 19946096 10317864 8589692 55% / tmpfs 995884 0 995884 0% /dev/shm tmpfs 5120 4 5116 1% /run/lock /dev/sda2 524252 5344 518908 2% /boot/efi tmpfs 199176 100 199076 1% /run/user/1000 /dev/sr0 3043440 3043440 0 100% /media/jacktian/Ubuntu 21.10 amd64 tmpfs 199176 60 199116 1% /run/user/0
Ubuntu 21.10 安裝 pydf
apt install pydf
pydf 可以說是 df 的替代品,它以更簡潔的方式顯示磁碟使用狀態。
相關推薦:《Linux視訊教學》
以上就是總結分享十個Linux環境下的替代工具的詳細內容,更多請關注TW511.COM其它相關文章!