Открытие 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"сигнал". Используя buildin, 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. Он поставляется с Mac OS X по крайней мере с версии 10.4.

решение3

Я полагаю, вы могли бы создать псевдоним для openимени oи затем ввести

 o myfile.pdf

хотя я не знаю, сэкономит ли это вам столько усилий при наборе текста open:-) Имя файла придется указывать в любом случае.

Итак, псевдоним:

alias o="open"

должны войти в ваш~/.bashrc file

Связанный контент