LINUX.ORG.RU

Алиасы в zsh

 ,


0

2

Алиасы в командном интерпретаторе zsh очень хороши (впрочем, как и почти в любом другом). Например, можно настроить алиасы для команды «ls»:

alias l='ls'
alias ll='ls -l'
alias la='ls -a'
alias lal='ls -la'
alias lddi='ls -l /dev/disk/by-id'
Теперь я привык к этим всяким «ll» или «lal», что не удивительно: они гораздо быстрее вводятся.
Есть и другие сокращения к разным командам. Например, к «sudo»:
alias s='sudo'
Теперь вместо «sudo ls -la» можно вводить «s ls -la». То есть мы используем алиас. А вот так вот сделать уже не получится: «s lal».

В этом и заключается суть проблемы. Кто-нибудь сталкивался с этим, знает решение?

Ответ на: комментарий от kalterfive

Да, сработало. Хитро, однако...

Так специально сделано зачем-то. Как говорит man zshbuiltins, «A trailing space in value causes the next word to be checked for alias expansion.» Не знаю, почему нельзя было сделать как-то по-человечески.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Очевидно, чтобы не возникало трудностей с другими командами. sudo же принимает команду с ключами как аргумент. Если бы было разрешена такая штука без этого пробела, то zsh мог бы портить аргументы из-за алиасов, которые могут быть какими угодно.

kalterfive ★★
() автор топика
Ответ на: комментарий от kalterfive

zsh мог бы портить аргументы из-за алиасов, которые могут быть какими угодно

На самом деле, можно сделать и глобальный алиас, который будет раскрываться везде alias -g name=value. Нет, понятно, что различать алиасы, где следующее слово раскрывается, и те, где нет, очень удобно, просто, наверное, можно было какую-то опцию к alias для этого сделать, а не этот странный синтаксис. Но ладно, как есть.

proud_anon ★★★★★
()

lal

lal
А вообще алиасы для команд типа ls не нужно. Они и так упрощены до невозможности. Максимум для pacman/yaourt для которых очень утомительно вводить параметры.

sudopacman ★★★★★
()

А чисто гипотетически если кто-то засунет в хомяк троян, сделает на него alias с su|sudo, то получит рут пароль?

Freyr69 ★★★
()
Ответ на: комментарий от Freyr69

Ну... Нет. Вы имеете ввиду что-то вроде этого? alias='sudo troyan' Попросят ввести пароль. Или не попросят... Ну если не попросят, то можно и без алиаса запустить его. В общем, от конфига sudo зависит.

kalterfive ★★
() автор топика
Ответ на: комментарий от sudopacman

Ну это уже кто как привык. Если в основном ничего кроме параметров 'l' и 'a' ничего не использется в ls, то почему бы и нет? Алиасы типа pm=pacman у меня тоже есть.

kalterfive ★★
() автор топика
Ответ на: комментарий от Freyr69

Ну, в общем-то, да. Но ведь если доступа к root у него нет, особо не разгонишься. Но да, идея эффективна, хитра и банальна. Можно, например, в этом трояне сэмитировать ввод пароля для sudo, а потом уже от настоящего sudo выполнить команду.

kalterfive ★★
() автор топика
Ответ на: комментарий от kalterfive

Но это же просто обходится. Именно поэтому и нужно писать полный путь до таких команд как sudo.

kalterfive ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.