高效SHELL環境 step by step(二): 目錄與文件

本文主要關注高效SHELL環境中目錄與文件的相關操做。python

1 目錄

1.1 目錄定位

可以快速定位目錄的腳本項目不少,比較熱門的項目是:linux

這幾個項目功能都很是相似。裝一個就能夠了。以autojump爲例子。首先經過git

$: brew install autojump
複製代碼

進行安裝。完成安裝後,在oh-my-zsh中開啓相應的插件autojump。測試其經常使用操做:github

  • j 快速跳轉到指定目錄
  • jc 快速跳轉到指定子目錄
  • jo 快速經過圖形界面打開目錄

經過j -s查詢緩存的檢索目錄優先級。web

1.2 目錄展現

常規進行目錄展現的命令是ls,但其太過單薄,特別是對於嵌套較深子目錄,要進行屢次操做才能達到預期效果。這裏介紹兩個擴展命令:正則表達式

MacOS安裝:shell

$: brew install tree
$: brew install exa
複製代碼

tree命令功能比較單一, exa除了支持tree命令的功能外,在色彩展現以及文件詳情上展現的信息更加豐富。vim

exa

爲了方便本身使用,按各人喜愛定義別名。緩存

2 文件

對於文件的定位以及操做,應該儘可能的靠近文件的位置,減小比必要的檢索範圍。在SHELL環境中一般所謂查詢都是進行正則匹配。因此熟悉正則表達式很是重要。收集的如下正則表達式的教程很是適合全部級別的讀者:bash

2.1 按名稱檢索

  • fd

    fd命令是對find命令的擴展。其在功能上與find命令相似,但操做接口更加友好。

2.2 按歷史檢索

fasd是將autojump命令原理擴展到了文件上,固然它也支持目錄。autojump提供了關鍵的跳轉命令j; fasd則提供四個關鍵命令:

  • f 文件快速檢索
  • a 文件 + 目錄快速檢索
  • s 交互選擇檢索
  • d 目錄快速檢索

2.3 按內容檢索

按文件內容檢索系統提供的命令grep太古老,不管是展現上仍是操做接口上都不夠友好。如下擴展命令明顯更加易於使用, 並且會在查詢文件時使用 .gitignore 中的規則.

具體操做演示,能夠經過 tldrman 命令查詢一下。

2.4 文件操做

文件操做按行爲可劃分爲: 文件預覽、文件編輯、文件刪除。按此類型劃分,分別列舉幾個擴展命令。

文件預覽

  • bat 該命令提供更加友好的圖形展現,結合文件內容語法進行高亮展現, 同時支持git變動對比。

文件編輯

文件編輯命令實在太多了,有人喜歡 IDE, 有人喜歡命令行。貼一篇文章,不少編輯工具都羅列了。

刪除文件

其實文件刪除命令,系統提供的 rm 命令就很是好用。但該命令風險很高,萬一一個不當心刪錯了就沒有回頭路了。因此有人寫了下面這個工具:

提供的功能挺好的:

trash-put           trash files and directories.
trash-empty         empty the trashcan(s).
trash-list          list trashed files.
trash-restore       restore a trashed file.
trash-rm            remove individual files from the trashcan.
複製代碼

只是這個工具使用python寫的安裝過程有點費事,改天本身寫一個純SHELL版本。

2.5 從檢索到操做

快速定位目錄或者文件,再執行相應的操做,已經夠快了。若是還想更快一點,推薦下面這個工具:

它能夠將檢索操做兩個過程直接關聯起來。先看一張預覽圖:

fzf

兩個簡單的使用例子:

# 預覽
$: fzf --preview 'bat {}'

# 定位文件後,按F1開啓編輯工具
$: fzf --bind 'f1:execute(vim {})'
複製代碼

3 小結

高效SHELL須要大量的實踐練習,和對舊習慣的拋棄。相關文章:

相關文章
相關標籤/搜索