透過輸入檔名開啟 PDF 文件

透過輸入檔名開啟 PDF 文件

我使用的是 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()並將檢查和opens 放在那裡。這將導致不會出現錯誤訊息,但我不確定在您不想處理的情況下它將如何處理錯誤代碼和訊息。

答案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

相關內容