Я пытаюсь создать псевдонимы в Bash. То , что я хочу сделать , это карта ls -la
дляls -la | more
В моем файле .bashrc это то, что я пытался:
alias 'ls -la'='ls -la | more'
Однако это не работает, потому что (я предполагаю) у него есть пробелы в псевдониме. Есть ли обходной путь для этого?
alias lsm='ls -la | more'
Ответы:
Документация Bash гласит: «Практически для любых целей функции оболочки предпочтительнее псевдонимов». Вот функция оболочки, которая заменяет
ls
и вызывает вывод,more
если аргумент состоит из (только)-la
.Как однострочник:
Автоматически выводить трубу:
источник
command
предотвращает рекурсивный вызов функции.Из справочной страницы псевдонима :
Таким образом, только первое слово проверяется на совпадения псевдонимов, что делает невозможным псевдонимы из нескольких слов. Вы можете написать сценарий оболочки, который проверяет аргументы и вызывает вашу команду, если они совпадают, а в противном случае просто вызывает нормальный
ls
(см. Ответ @Dennis Williamson )источник
Немного улучшенный подход, взятый из ответа Денниса:
Или однострочник:
Это позволяет добавлять дополнительные параметры / аргументы после команды, если это необходимо, например,
ls -la -h
источник
ls -lat
быть исключенным из этого лечения? Я должен был бы поместить случай, чтобы обращаться с этим выше-la*
входа, да?Вы можете вызвать этот псевдоним еще, но вам нужна цитата, чтобы пробел был частью командного слова. Так
"ls -la" -p pattern
что передам-p pattern
опциюmore
, а неls
.источник