PDFファイルの名前を入力して開く

PDFファイルの名前を入力して開く

私はMac OS Xを使用しており、通常はターミナル(bashを使用)からPDFファイルを開きます。

open myfile.pdf

今なら入力するだけで

myfile.pdf

そして、上記のコマンドで開きます。そのコマンドを実行するように bash を設定する方法はありますか? PDF ファイルのみで機能すれば嬉しいですが、もちろん、より一般的な解決策があれば歓迎します。

実際のところ、これは単にキー入力を少し節約するためだけのものではありません。解決に 2 時間かかる場合、今後数年間でキー入力を 2 回減らすことでそれほど多くの時間を節約できるとは思えません。これが可能かどうか、またその方法を知りたいです。

答え1

この機能を に追加する方法がありますbash

ファイルを「実行」しようとすると、bash はcommand not foundエラーを出力します:

$ 1.pdf
bash: 1.pdf: command not found

その後、ERR「シグナル」も発行されます。buildin を使用すると、trapこのタイプのシグナルをキャッチし、エラーを処理する関数を定義できます。

の上そのページそのエラーを処理するスクリプトが見つかります(こちらもご覧ください)説明)。

スクリプトには適切なコメントが付いているため、必要に応じて変更しても問題はありません。

キャッチした後、ERR最後のコマンドのエラーコードをチェックします。エラーの場合2、126、または127続行されます。次のステップでは、最後のコマンドをチェックし、それをコマンド部分と引数に分割します。

まずif..fi、「先頭のスラッシュを忘れることに関連する可能性のあるエラーを処理する」ので、スラッシュを削除できます。

次のステートメントの先頭には、ifコマンドがディレクトリであるかどうかのチェックがあるので、これも削除できます。さらに興味深いのは、その 2 番目の部分です。スクリプトはファイル タイプをチェックし、そのタイプのファイルを開く方法の提案をいくつか出力します。その代わりに、またはのifようなものを追加できます(もちろん、ファイルが PDF であるかどうかを確認する必要があります)。open $cmdAPPLICATION_TO_OPEN_PDF $cmd

セキュリティに関する注意: その関数を使用する場合は、 ではなく を使用する必要がありますAPPLICATION_TO_OPEN_PDF $cmdopen $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

関連情報