linux/unix 上那些炫酷的命令行工具(一)

工欲善其事,必先利其器,做爲一名手藝人, 咱們應該利用好工具,以便將咱們的時間用在更有效率的事情上,類 Linux 上不少原生的如 catgrep 等命令給咱們帶來了不少便利,但其實都或多或少有能夠改進的地方,市面上其實出現了大量的第三方開發者開發的對這些原生作了很大改進的命令,比原生的命令更好用,今天就給你們推薦這些命令,大部分能夠說是秒殺原生命令了,能讓你事半功倍,強烈推薦php

如何執行原生的命令

我的以爲即將介紹的命令很好用,徹底能夠替代原生命令,也設置了大量的 alias 語句來替代原生命令,不過每一個人的習慣不同,若是你以爲即將介紹的命令用得不習慣 ,想用回原生的命令也能夠,按相似如下的操做便可node

\cat # 忽略全部 alias 爲 cat 的命令 - explanation: https://stackoverflow.com/a/16506263/22617
#
command cat # 忽略全部函數和 aliases
複製代碼

廢話不說,讓咱們看看哪此命令足以替代原生命令吧git

bat > cat

原生的 cat 命令只是簡單地打印某個文件的內容,但 bat 命令在此基礎上還能夠作到如下功能github

  • 自動識別文件擴展名並進行高亮顯示
  • 顯示行號
  • 文件內容過長時自動分頁
  • 若是文件內容過長,還能夠用 / 來搜索相關的內容 功能演示以下
    image

推薦用 alias 命令將 cat 設置成 batshell

alias cat='bat'
複製代碼

💾 點擊這裏可安裝 batbash

fzf > ctrl+r

什麼是 fzf 呢函數

It's an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.工具

它是一款使用 GO 語言編寫的交互式的 Unix 命令行工具。能夠用來查找任何列表內容、文件、歷史命令、 本機綁定的host、 進程、 Git 分支、進程等。全部的命令行工具能夠生成列表輸出的均可以再經過管道 pipe 到 fzf 上進行搜索和查找性能

咱們簡單介紹一下它的查找歷史命令的功能,查看歷史輸入的終端命令咱們通常用 ctrl+r,在這方面,fzf 能夠說是秒殺 ctrl+r 了,ctrl+r 只能呼出最近一條包含輸入字符串的歷史命令,並且只能作精確匹配,而安裝了 fzf 後,當呼出 ctrl+r 會顯示全部包含輸入字符串的命令(默認匹配最近一條符合搜索條件的命令),按上下箭頭便可自由選擇你想要的命令,並且支持模糊搜索,這個特性針對那些經常只是隱約記得歷史命令的人特別有用,好比若是我隱約記得有個命令和 gitfinance 有關,我能夠這麼搜 ui

image
固然若是你不須要模糊搜索也能夠關掉

fzf 的功能遠不止於此,與其餘命令結合讓你的效率飛速提高,自動補全功能徹底秒殺默認的 tab 功能,再安裝一個具備預覽功能的 highlight 插件,好用到爆炸,不信看如下功能展現

image

💾 點擊這裏可安裝 fzf

htop > top

top 命令能夠說是查看進程與系統運行的利器了,不過 htop 不只具有 top 的全部功能,還有一些 top 不具有但很實用的功能,簡單列舉幾個

  • 顯示每一個 CPU 的負載狀況,若是 CPU 是四核八線程的,會顯示每一個線程的負載狀況,並且不一樣的指標用顏色區分開來,更直觀,對用戶更友好

    image

  • 交互式

    1. 能夠左右滑動顯示此進程的全部信息與對應的 COMMAND,也能夠上下滑動顯示全部的進程信息,而 top 只能最消耗資源的進程列表
    2. 能夠以樹狀圖的方式查看進程對應的多個子線程或進程佔用的文件
      image
    3. 方便追蹤進程的運行狀況,若是咱們要觀察某個進程的運行狀況,使用 top 無法定位某個進程,進程在屏幕上的顯示會忽上忽下,每次 top 刷新咱們都必須去用肉眼追蹤咱們正在觀察的進程,很不方便(全部進程的顏色都同樣),而用 htop 就簡單了,咱們能夠按下空格鍵標記咱們想要的進程,被標記的進程會高亮展現,同時按 F 能夠保證被標記的進程出如今屏幕裏
    4. 用 htop 能夠直接給多個進程發信號,這樣能很方便地實現像 kill 進程之類的操做,通常咱們要 kill 掉某個進程要通過兩個步驟: 一、輸入 top 得到咱們想要 kill 線程的 pid. 二、退出 top 輸入 kill PID,因爲 top 命令不能執行搜索功能,光是找 PID 這一步就夠嗆, 而用 htop 能夠很輕易地作到,輸入 htop 後,按 F3 輸入進程名稱進行查找,而後換空格選中此進程(也能夠選中多個進程),再換 F9 選中左邊的 SIGKILL 便可將選中的進程 kill 掉,以 kill 掉 htop 進程爲例,操做以下
      image
      能夠看到效率上比 top 不知高了多少倍

咱們能夠設置 top 的 alias 以便利用 htop 的強大功能

alias top="sudo htop" # alias top and fix high sierra bug
複製代碼

💾 點擊這裏可安裝 htop

diff-so-fancy > diff

默認的 git diff 顯示不太友好,也不支持定製配色方案,並且僅能支持行級別的 diff, diff-so-fancy 默認的配色方案不只是 human readable,並且支持字符級別的 diff,因此推薦 git diffdiff-so-fancy,默認的 diff 和 diff-so-fancy 對好比下

image
💾 點擊 這裏可安裝配置 diff-so-fancy

fd > find

默認的 find 命令不太好用,查找命令比較複雜冗餘,考慮如下三種情形

  1. 查找全部擴展名爲 md 的後綴
  2. 查找全部文件名包含 cli 的文件
  3. 查找全部包含 cli 的文件中的單詞數 咱們來看下分別用 find 和 fd 的對比
// use find
find . -type f -name "*.md"
find . -name '*cli*'
find ./ -type f -name "*php*" -exec wc -w {} +

// use fd
fd -e md 
fd md # all with .md extension
fd cli -x wc -w 
複製代碼

能夠看到,用 fd 命令極簡,更關鍵的是在文件多的狀況下 fd 還有另外一大優點:性能!fd 的搜索效率能夠達到 find 的 20 倍以上 💾 點擊這裏可安裝配置 fd

##ncdu > du ncdu 能夠理解爲是交互式的 du。咱們通常用 du 來查找某個目錄佔用了多少磁盤空間,但若是咱們須要查看這個目錄下的子目錄/文件佔用了多少空間並對其進行排序 du 就無能爲力了,而用 ncdu 的話咱們只要在目錄輸入此命令便可顯示按空間大小降序排序的全部文件/目錄

並且比較方便的一點是 ncdu 是交互式的,若是咱們還想看子目錄裏的文件/目錄大小,只須要按上下箭頭選中相關目錄按回車便可查看子目錄詳情的空間佔用狀況,速度極快!另外也可刪除文件,能夠在選中子目錄時執行至關於 cd 到此子目錄的命令(此時會退出ncdu, 並 cd 到此子目錄)。還有一個比較騷的功能是點擊 cmd + 選中的目錄/文件能夠打開當前目錄/文件 咱們能夠爲 du 設置 ncdu 的 alias,配上主題優雅不少

// --color 設置主題,--rr 只讀模式,防止執行 ncdu 時刪除文件以及 cd 到某個子目錄 
alias du="ncdu --color dark -rr -x --exclude .git --exclude node_modules"
複製代碼

效果以下

image
💾 點擊 這裏可安裝配置 ncdu

原文連接點擊這裏

我的公衆號: 碼農蛻變之路,按期分享各類 IT 技能,期待與你們交流

image
相關文章
相關標籤/搜索