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