
我使用的是 Mac OS X,通常從終端機開啟 PDF 檔案(使用 bash)
open myfile.pdf
現在我只能打字
myfile.pdf
並使用上面的命令打開它。是否有機會配置 bash 來為我運行該命令?如果這僅適用於 PDF 文件,我會很高興,但當然歡迎更通用的解決方案。
其實它並不純粹是為了節省一些按鍵次數。如果一個解決方案需要我兩個小時,我懷疑在接下來的幾年裡我會透過減少兩次按鍵來節省這麼多時間。我想了解這是否可能以及如何實現。
答案1
有一種方法可以將這個功能加入到bash
.
當您嘗試「執行」檔案時,bash 將發出command not found
錯誤:
$ 1.pdf
bash: 1.pdf: command not found
之後它也會發出ERR
「訊號」。使用內建功能,trap
您可以捕獲這種類型的訊號並定義處理錯誤的函數。
腳本有很好的註釋,因此根據您的需求修改它應該不成問題。
捕獲後,ERR
它檢查最後一個命令的錯誤代碼。如果是錯誤的話2、126 或 127它將繼續。在下一步中,它將檢查最後一個命令並將其拆分為命令部分和參數。
首先if..fi
“處理可能涉及忘記前導斜線的錯誤”,這樣您就可以將其刪除。
在下一語句開始時,if
會檢查您的指令是否為目錄,因此也可以將其刪除。更有趣的是第二部分if
- 腳本檢查文件類型並列印一些如何打開該類型文件的建議。相反,您可以只輸入類似open $cmd
或的內容APPLICATION_TO_OPEN_PDF $cmd
(當然您需要添加檢查文件是否為 PDF)。
安全說明:如果您想使用該功能,您應該使用APPLICATION_TO_OPEN_PDF $cmd
而不是open $cmd
.您還應該為特定檔案類型設定操作,而不是對所有類型的檔案使用 open 或 exec 以避免執行某些惡意腳本或類似的東西。
還有另一種方法可以做到這一點,但我認為這可能會導致一些問題,因為它更具侵入性。
您可以重新定義函數command_not_found_handle()
並將檢查和open
s 放在那裡。這將導致不會出現錯誤訊息,但我不確定在您不想處理的情況下它將如何處理錯誤代碼和訊息。
答案2
在 zsh 中,定義一個後綴別名在你的.zshrc
:
alias -s pdf=open
zsh 一般比 bash 有更好的互動功能和更好的程式功能。至少從 10.4 版本開始,它就隨 Mac OS X 一起提供。
答案3
open
我想你可以為名稱建立一個別名o
,然後輸入
o myfile.pdf
雖然我不知道這是否可以節省您打字的時間open
:-) 在任何情況下都必須指定檔案名稱。
所以對於別名:
alias o="open"
應該進入你的~/.bashrc file