#bash #shell #unix #ksh #zsh
#bash #оболочка #unix #ksh #zsh
Вопрос:
Я пытаюсь создать псевдоним на моем mac-терминале в оболочке zsh.
некоторая информация когда я делаю echo $SHELL, я получаю /bin/zsh, доказывающий, что я использую оболочку zsh.
у mac есть команда, которую вы можете использовать для открытия таких вещей в Chrome, как это :
open -a "google chrome" myfile.html
Мне нужно создать псевдоним для этого, но он не будет работать, но работают другие псевдонимы.
я бы хотел, чтобы псевдоним выполнялся следующим образом
chrome myfile.html
вот мой файл псевдонима:
alias x="echo 'y "
alias chrome="open -a 'google chrome' "
итак, если я запускаю x в командной строке, y выводится, но если я запускаю chrome в командной строке, он сообщает, что не может найти файл. Должен ли я использовать xargs или что-то в этом роде?
Комментарии:
1.В качестве отступления:
$SHELL
всегда отражает вашу оболочку по умолчанию, не обязательно ту, которую вы используете в данный момент. Простой способ определения исполняемого файла, выполняющего текущую оболочку,ps -o comm= -p $$
Ответ №1:
Примечание: этот ответ применим не только к zsh
, но и к bash
and ksh
.
Попробуйте:
alias chrome='open -a "Google Chrome"'
Используя одинарные кавычки вокруг всего определения (что обычно предпочтительнее при определении псевдонима, чтобы предотвратить преждевременное расширение строки во время определения псевдонима, а не во время выполнения), вы можете использовать двойные кавычки внутри, не экранируя.
Проблема с вашим определением заключалась в том, что '
оно буквально стало частью псевдонима (а не просто '
) — нет необходимости экранировать '
строковый литерал в двойных кавычках.
Таким образом, вы также можете использовать следующее (но, как указано, предпочтительнее использовать одинарные кавычки для заключения всего определения):
alias chrome="open -a 'Google Chrome'"
Ответ №2:
Вам не нужно заключать одинарные кавычки в двойные кавычки, иначе вы получите буквальные кавычки. Просто попробуйте с echo
:
$ alias chrome="echo open -a 'google chrome' "
$ chrome
open -a 'google chrome'
Кавычки, которые показаны здесь, являются буквальными частями аргумента.
Просто используйте один из:
alias chrome="open -a 'google chrome'"
alias chrome='open -a "google chrome"'
alias chrome="open -a "google chrome""
Все они эквивалентны.
Комментарии:
1. Ваш список всех параметров кавычек полезен, но стоит отметить, что использование строк в двойных кавычках для определения псевдонимов сложно, поскольку строка может быть расширена преждевременно (во время определения псевдонима, а не выполнения ).