讓你的Mac iTerm優雅的上傳下載文件

我理解優雅是指支持拖拽、支持進度條、支持穿透容器/多層主機。  而今天的主角是trzsz .

 

trzsz ( trz / tsz ) 是一個兼容 tmux 的文件傳輸工具,和 lrzsz ( rz / sz ) 類似,並且有進度條和支持目錄傳輸。

trzsz-iterm2 是 trzsz 在 iTerm2 上使用的客戶端。

GitHub: https://github.com/trzsz/trzsz

MIT License PyPI trzsz-iterm2 中文網站

安裝指南

  • 用 Python3 安裝
    sudo python3 -m pip install --upgrade trzsz-iterm2
  • 用 Homebrew 安裝
    brew update
    brew install trzsz

配置指南

  • 找出 trzsz-iterm2 安裝的絕對路徑 ( 可以是軟鏈,但不支持相對路徑 )。
    which trzsz-iterm2

    下文中的 /usr/local/bin/trzsz-iterm2 請自行替換成真實的 trzsz-iterm2 絕對路徑。

  • 打開 iTerm2 -> Preferences... -> Profiles -> ( 在左邊選中一個 Profile ) -> Advanced -> Triggers -> Edit -> [+],如下配置:

    Name Value Note
    Regular Expression :(:TRZSZ:TRANSFER:[SRD]:\d+\.\d+\.\d+:\d+) 前後無空格
    Action Run Silent Coprocess...  
    Parameters /usr/local/bin/trzsz-iterm2 \1 前後無空格
    Enabled 選中
    • 不要選中最下面的 Use interpolated strings for parameters

    • 注意 /usr/local/bin/trzsz-iterm2 要替換成真實的 trzsz-iterm2 絕對路徑。

    • 不同 Profile 的 Trigger 是互相獨立的,也就是每個用到的 Profile 都要進行配置。

    • Trigger 的配置是允許輸入多行的,但只會顯示一行,注意不要多複製了一個換行符進去。

    iTerm2觸發器配置

  • 打開 iTerm2 -> Preferences... -> General -> Magic,選中 Enable Python API

    iTerm2 Enable Python API

  • 設置 ITERM2_COOKIE 環境變量可以使啓動速度更快。

    打開 iTerm2 -> Preferences... -> Advanced,篩選 COOKIE,選擇 Yes

    iTerm2 Enable ITERM2_COOKIE

進度條配置

可選1:使用文本進度條

  • text 進度條示例 using trzsz in iTerm2 with text progress bar

  • 升級 iTerm2 到 Build 3.5.20220503-nightly 以上的版本。

  • Trigger 的 Parameters 配置增加 -p text 參數。

    /usr/local/bin/trzsz-iterm2 -p text \1

    注意 /usr/local/bin/trzsz-iterm2 要替換成真實的 trzsz-iterm2 絕對路徑。

可選2:使用 zenity 進度條

  • zenity 進度條示例 using trzsz in iTerm2 with zenity progress bar

  • 安裝 zenity
    brew install ncruces/tap/zenity
  • 如果 Mac M1 安裝失敗,可以試試用 go 進行編譯安裝:
    brew install go
    go install 'github.com/ncruces/zenity/cmd/zenity@latest'
    sudo cp ~/go/bin/zenity /usr/local/bin/zenity
  • 執行 ls -l /usr/local/bin/zenity 應該輸出 zenity 可執行文件或軟鏈。不然可以建個軟鏈:
    sudo ln -sv $(which zenity) /usr/local/bin/zenity

默認保存路徑

如果你想自動下載文件到指定目錄,而不是每次都彈窗詢問。

例如,自動下載文件到 /Users/xxxxx/Downloads

  • 使用文本進度條,將 /usr/local/bin/trzsz-iterm2 -p text \1 改爲:
    /usr/local/bin/trzsz-iterm2 -p text -d '/Users/xxxxx/Downloads' \1
  • 使用 zenity 進度條,將 /usr/local/bin/trzsz-iterm2 \1 改爲:
    /usr/local/bin/trzsz-iterm2 -p zenity -d '/Users/xxxxx/Downloads' \1

注意 /usr/local/bin/trzsz-iterm2 要替換成真實的 trzsz-iterm2 絕對路徑。

拖文件和目錄上傳

  • 升級 iTerm2 到 Build 3.5.20220806-nightly 以上的版本。

  • 打開 iTerm2 -> Preferences... -> Advanced,篩選 files are dropped into,配置如下:

    /usr/local/bin/trzsz-iterm2 -p text dragfiles \(filenames)

    iTerm2 enable drag files

注意 /usr/local/bin/trzsz-iterm2 要替換成真實的 trzsz-iterm2 絕對路徑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章