Нечто похожее на $ 1, но собирает все входные данные независимо от пробелов - PullRequest
0 голосов
/ 16 сентября 2011

Есть ли что-то похожее на $ 1, но оно собирает весь ввод с терминала, включая пробельные символы?Это будет использоваться для сбора вставленного пути к каталогу, который может содержать пробелы - мне нужна вся строка.

Заранее спасибо

К счастью, я получил ответ на свой первый вопрос.В исполнении, однако, я не могу заставить его работать.Вот мой кодМожет кто-нибудь объяснить, что я делаю не так?Спасибо.

alias finder='cd $* && open .'

Он возвращает сегментированные результаты - каждый раз, когда он попадает в пробел, он обрабатывает его как отдельную запись.

Ответы [ 2 ]

3 голосов
/ 16 сентября 2011

Попробуйте $* или $@.

$* Все позиционные параметры рассматриваются как одно слово

$@То же, что и $*, но каждый параметр является строкой в ​​кавычках, то есть параметры передаются без изменений, без интерпретации или расширения.

0 голосов
/ 16 сентября 2011

Как правило, вы просто ссылаетесь на первый аргумент как "$1", включая кавычки.Если вы хотите использовать имя каталога в качестве аргумента, а в имени есть пробелы, вы, как правило, заключаете его в кавычки в командной строке:

alias finder='cd "$1" && open .'

...

finder "/some/dir/with spaces/in its name"

Это также хорошо работает с завершением табуляции, которое экранируетсяпробел для вас.И в этом конкретном случае вы, вероятно, могли бы также использовать команду open напрямую.

Но если вы хотите, чтобы псевдоним finder объединял несколько аргументов в одну строку, разделенную пробелами, которая фактически превращаетбыть тяжелее.Я пробовал некоторые возможности, используя $* и $@, но они не работают правильно.Для тестирования я использую собственную команду echol, которая печатает каждый из своих аргументов в отдельной строке.

$ echol foo bar
foo
bar
$ alias e='echol "$*"'
$ e foo bar

foo
bar
$ alias e='eval echo \""$*"\"'
$ e foo bar
 foo bar

Эта последняя из них является ближайшей, которую я получил, но она добавляет дополнительнуюначальный пробел.

Я думаю, вам лучше просто процитировать имя каталога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...