Чи впливає один псевдонім на інший псевдонім?


14

У мене в файлі .bash_aliases ще не багато налаштованих псевдонімів. Лише нещодавно я виявив, наскільки вони можуть бути корисними.

Я бачу, що я досить зачепився за псевдоніми, тому перш ніж файл стане занадто громіздким, я хотів би щось уточнити, задавши дуже просте запитання. Чи впливає один псевдонім на інший, чи завжди псевдонім повертається до початкової команди?

Приклад може зробити це більш зрозумілим:

Мені lsпришвидшено ls -lF. Скажімо , я хотів би також псевдонім dдля ls -l | grep -E "^d": це dтепер використовувати ls -lFзамість ls? Якщо так, то це питання порядку в файлі конфігурації .bash_aliases?

man alias не просвітили мене.

Відповіді:


20

З псевдонімів (розділ 6.6 Інструкції з Баша) :

Перше слово кожної простої команди, якщо не цитується, перевіряється, чи є у неї псевдонім. Якщо так, це слово замінюється текстом псевдоніма.

Це відбувається, коли ви використовуєте псевдонім, а не тоді, коли ви його визначаєте. Ось приклад:

$ alias a1='a2 hello'
$ alias a2='echo'
$ a1
hello
$ unalias a2
$ a1
bash: a2: command not found

1
Гаразд чудово, дякую за цей приклад (а також за посилання на керівництво Bash). Я цитую посібник: "Правила щодо визначення та використання псевдонімів дещо заплутані ... Практично з будь-якою метою функції оболонки віддають перевагу псевдонімам". Я думаю, я б краще навчився робити функції оболонок тоді. :)
boehj

1
Так. Псевдоніми можуть заощадити набравши для загальних команд, але для будь-якого, навіть віддаленого складного написання користувацьких функцій для обробки, як правило, кращий варіант.
Калеб

@Caleb @Gilles - Дякую, люди. BTW, ls = 'ls --color' Я можу бачити, що це дуже зручно. Любіть цей сайт. :)
boehj

2
@boehj: Основне правило полягає в тому, щоб використовувати псевдонім, коли ви хочете мати автоматичні аргументи для команди, використовуючи ім'я команди або незначну варіацію, і функціонує інакше. Отже alias ls='ls --color', alias cp='cp -i'але функціонує для більш складних речей. Зокрема, я зробив би вашу dфункцію, щоб ви могли передавати аргументи ls. [коментар репонований, щоб виправити заплутаний Braino, спасибі @cjm]
перестань бути злим"

@Gilles - Гаразд, моє завдання на сьогодні - навчити себе реплікувати dяк функцію оболонки.
boehj
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.