Как передать аргументы командной строки псевдониму? Вот образец:
псевдоним mkcd = 'mkdir $ 1; CD $ 1; '
Но в этом случае $ xx переводится во время создания псевдонима, а не во время выполнения. Однако я создал обходной путь, используя функцию оболочки (после небольшого приближения), как показано ниже:
function mkcd () { mkdir $ 1 CD $ 1 }
Просто хотел узнать, есть ли способ сделать псевдонимы, которые принимают параметры CL.
Кстати, я использую 'bash' в качестве оболочки по умолчанию.
mkdir mydirectoryname && cd $_
Ответы:
Вы нашли способ: создать функцию вместо псевдонима. Оболочка C имеет механизм для аргументов псевдонимов, но bash и оболочка Korn этого не делают, потому что механизм функций более гибкий и предлагает те же возможности.
источник
.bashrc
файле. Например, # создайте псевдоним, который принимает номер порта от пользователя. Псевдоним serve = "python -m SimpleHTTPServer $ 1" После внесения изменений в файл .bashrc обязательно введите следующую команду. ~ $ source .bashrc Вы можете использовать это примерно так ~ $ serve 8998Просто чтобы повторить то, что было опубликовано для других оболочек, в Bash следующие работы:
Запуск следующего:
Дает вывод ниже:
источник
Bash
заменить$1
и$2
параметрами, переданными в функцию. Одиночные кавычки говорят Bash не делать этого.function blah(){ echo "First: $1"; echo "Second: $2"; }
Вы не можете в ksh, но вы можете в csh.
В ksh функция - это путь. Но если вы действительно хотите использовать псевдоним:
источник
csh
обычно это не то, что современный человек должен хотеть использовать. Косвенная псевдоним «который создает созданную функцию, а затем выполняет эту функцию» является относительно популярным, но, насколько я могу судить, не дает никаких преимуществ по сравнению с правильной функцией. (В любом случае, функция должна правильно указывать свой аргумент.)Чтобы процитировать страницу руководства bash:
Похоже, вы ответили на свой вопрос - используйте функцию вместо псевдонима
источник
Вы также можете найти эту команду полезной:
mkdir dirname && cd $_
где dirname - это имя каталога, который вы хотите создать
источник
$_
- вывод последней команды unix.stackexchange.com/a/271693/169772Я обнаружил, что функции не могут быть записаны в
~/.cshrc
файл. Здесь в псевдониме, который принимает аргументынапример, аргументы, переданные команде 'find'
где abc - аргумент, передаваемый как!: 1
источник
!:1
значит. Мне пришлось прокрутить вниз, чтобы увидеть, что это был аргумент. Хороший ответ не оставляет больше вопросов, даже если бы не было типа оболочки OPs.Самый простой способ - использовать функцию, а не псевдоним. Вы все еще можете вызвать функцию в любое время из кли. В bash вы можете просто добавить функцию name () {command}, которая загружается так же, как псевдоним.
Не уверен насчет других оболочек
источник
Вы на самом деле не можете делать то, что вы хотите с псевдонимами Bash, так как псевдонимы являются статическими. Вместо этого используйте функцию, которую вы создали.
Смотрите здесь для получения дополнительной информации: http://www.mactips.org/archives/2008/01/01/increase-productivity-with-bash-aliases-and-functions/ . (Да, я знаю, что это mactips.org, но речь идет о Bash, так что не волнуйтесь.)
источник
Это работает в ksh:
Опция "-x" делает псевдоним "экспортированным" - псевдоним виден в подоболочках.
И имейте в виду, что псевдонимы, определенные в сценарии, не видны в этом сценарии (поскольку псевдонимы раскрываются при загрузке сценария, а не при интерпретации строки). Это можно решить, выполнив другой файл сценария в той же оболочке (используя точку).
источник
Я думаю, что вы можете сделать это с помощью функций оболочки, если вы используете bash: http://www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/
источник
function count () {python -c "для num в xrange ($ 1): print num";}
источник
Пустой псевдоним выполнит свои аргументы:
источник