Mac下iTerm2配置lrzsz功能
rz,sz是Linux/Unix同Windows進行ZModem文件傳輸的命令行工具。
優點就是不用再開一個sftp工具登錄上去上傳下載文件。
近期在mac上通過終端連接服務器,想通過rz和sz實現快速簡單的文件上傳下載功能
1、安裝iTerm2
iTerm2是Mac OS下的一款終端利器,相對於系統自帶的終端軟件具有很多更好的功能和擴展。官方地址為https://www.iterm2.com
安裝iTerm2主要有下面兩種方法:
- 從官網下載安裝包進行安裝
下載的是壓縮文件,解壓后是執行程序文件,你可以直接雙擊,或者直接將它拖到 Applications 目錄下。
- 使用homebrew進行安裝
homebrew是mac下的一個包管理器,雖然蘋果官方沒有相關說明,很多的軟件包可以利用homebrew輕松的在命令行進行安裝,homebrew的安裝可參考官方網站或某博客,安裝后最好將軟件源替換為國內源,例如阿里雲或者清華大學源
2、下載iterm2-send-zmodem.sh和iterm2-recv-zmodem.sh腳本文件
腳本文件在iterm2的官方github倉庫上,地址為:
https://github.com/mmastrac/iterm2-zmodem
腳本下載后需要放在mac的/usr/local/bin目錄下,並且添加可執行權限
127:~ ssgeek$ cd /usr/local/bin/
127:bin ssgeek$ wget -c https://raw.githubusercontent.com/mmastrac/iterm2-zmodem/master/iterm2-recv-zmodem.sh
127:bin ssgeek$ wget -c https://raw.githubusercontent.com/mmastrac/iterm2-zmodem/master/iterm2-send-zmodem.sh
127:bin ssgeek$ chmod +x iterm2-recv-zmodem.sh
127:bin ssgeek$ chmod +x iterm2-send-zmodem.sh
3、安裝lrzsz
通過homebrew安裝,執行brew install lrzsz安裝即可
4、配置iterm2
此步驟是關鍵步驟,打開iTerm2終端,依次點擊"Preference"——>"Profiles"——>"Default"——>"Advanced"——>"Edit"
添加兩個觸發器Triggers,意味着在iTerm2中執行某個命令或輸出某個結果(歸根到底還是腳本)時,會根據定義的觸發器觸發某個動作
觸發器中需要定義到Regular Expression
正則表達式、Action
動作、Parameters
參數這三項
正則表達式設置方法:
打開終端,分別輸入rz命令查看輸出
127:~ honganrong$ rz
rz waiting to receive.**B0100000023be50
輸入sz命令,查看輸出
127:~ honganrong$ sz Desktop/a.txt
**B00000000000000
將輸出rz waiting to receive.**B0100000023be50
和**B00000000000000
加上轉義符號后填寫至Regular Expression
下即可,也可進一步加上正則表達式簡寫后再填寫,為了精確起見,保留原樣即可
Action
選擇Run Silent Coprocess...
,Parameters
填寫的就是之前下載的兩個腳本,同時還需要勾選Instant
選項,表示立即執行觸發器
關於參數和正則表達式的對應關系可以這樣理解:我們利用rz
上傳和sz
下載文件一般都是通過終端登錄到Linux
服務器上之后執行的:在服務器上執行rz
上傳,那么對於Mac電腦來說,它就是需要從本地發送一個文件到服務器,即send
;同樣的,在服務器上執行sz
下載,那么對於mac電腦來說,它就是需要從服務器接收一個文件到本地,即receive
,簡寫為recv
,配置好之后的最終效果如下:
5、文件傳輸測試
打開終端,通過終端登錄到服務器,再分別執行rz和sz命令,會自動彈出一個界面選擇要上傳文件所在的位置或選擇下載文件的保存位置,大功告成
sz下載文件
rz上傳文件
6、rz命令和sz命令參數
sz命令
用途說明:sz命令是利用ZModem協議來從Linux服務器傳送文件到本地,一次可以傳送一個或多個文件。相對應的從本地上傳文件到Linux服務器,可以使用rz命令。
常用參數:
-a 以文本方式傳輸(ascii)。
-b 以二進制方式傳輸(binary)。
-e 對控制字符轉義(escape),這可以保證文件傳輸正確。
如果能夠確定所傳輸的文件是文本格式的,使用 sz -a files
如果是二進制文件,使用 sz -be files
rz命令
-b 以二進制方式,默認為文本方式。(Binary (tell it like it is) file transfer override.)
-e 對所有控制字符轉義。(Force sender to escape all control characters; normally XON, XOFF, DLE, CR-@-CR, and Ctrl-X are escaped.)
如果要保證上傳的文件內容在服務器端保存之后與原始文件一致,最好同時設置這兩個標志,如下所示方式使用:
rz -be
此命令執行時,會彈出文件選擇對話框,選擇好需要上傳的文件之后,點確定,就可以開始上傳的過程了。上傳的速度取決於當時網絡的狀況。
如果執行完畢顯示“0錯誤”,文件上傳就成功了,其他顯示則表示文件上傳出現問題了。