Anton8830 |
|
Темы:
23
Сообщения:
175
Участник с: 16 ноября 2013
|
Я хочу написать алиас для команды mount вида alias mnt='sudo mount $1 /mnt' Т.е. вводишь "mnt /dev/sda6" и выполняется команда "sudo mount /dev/sda6 /mnt" НО! При выполнении получаю ответ: /mnt не является блочным устройством. Модернизирую алиас в alias mnt='echo "sudo mount $1 /mnt"' В итоге вижу: sudo mount /mnt /dev/sda6 Пробовал уже выставлять переменные типа alias mnt='export d="$1"; export s="/mnt"; sudo mount $d $s', результат такой же... В чем я ошибся? |
arcanis |
|
![]()
Темы:
31
Сообщения:
1496
Участник с: 09 сентября 2012
|
запилите функциюmount() { sudo mount $1 /mnt } ну или хотя бы уберите одинарные кавычки)) замените их двойными |
Anton8830 |
|
Темы:
23
Сообщения:
175
Участник с: 16 ноября 2013
|
Спасибо, помогло. Я ещё чутка извратился: m () { sudo mount /dev/sd$1 /mnt } Теперь можно вызвать m a2 и выполнится команда sudo mount /dev/sda2 /mnt |
akorop |
|
Темы:
111
Сообщения:
1755
Участник с: 29 февраля 2012
|
Anton8830В том, что алиас - это не командный файл и не функция. Это тупая текстовая подстановка строки вместо одиночного слова, без подстановок внутри строки. Так что получается "sudo mount $1 /mnt /dev/sda6". |
arcanis |
|
![]()
Темы:
31
Сообщения:
1496
Участник с: 09 сентября 2012
|
akoroporly? А вы крайние кавычки замените на ". Работает как в баше, так и в zsh. Для понимания разницы: echo "$PATH" echo '$PATH' Хотя да, обычно почему то про это забывается =) |
akorop |
|
Темы:
111
Сообщения:
1755
Участник с: 29 февраля 2012
|
arcanisНепонятен смысл слова "работает".akoroporly? А вы крайние кавычки замените на ". Работает как в баше, так и в zsh. В рассматриваемом случае совершенно пофиг, какие кавычки. По-любому параметр команды mnt не подставится вместо $1. Особенно прикалывают такие вещи в скрипте. Для понимания ситуации: /tmp % cat ./a_test echo \[$1\] alias p1='echo \[$1\]' alias p1 p1 p1 alias p2="echo \[$1\]" alias p2 p2 p2 /tmp % ./a_test par [par] p1='echo \[$1\]' [par] p1 p2='echo \[par\]' [par] p2 |
nafanja |
|
![]()
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
akorop [email protected] ~ % alias dddd=echo $1 [email protected] ~ % dddd d d [email protected] ~ % alias dddd='echo $1' [email protected] ~ % dddd d d [email protected] ~ % alias dddd="echo $1" [email protected] ~ % dddd ds ds
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
akorop |
|
Темы:
111
Сообщения:
1755
Участник с: 29 февраля 2012
|
nafanjaТак в чём вопрос-то? Ну сгинул тихо $1, а всякие d и ds остались. Это не тот случай, что у ТС, тут не интересно. Интересно вот так: alias dddd="echo $1 zzz", ну и остальное аналогично. А ещё интереснее скрипт, который я приводил. В нём ясно видно, в какой момент происходит подстановка $1 и на что.akorop (Только если его в bash выполнять, то фигню со скобочками лучше убрать. А в zsh выполняется и так.) |
nafanja |
|
![]()
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
akorop, Ы да точно, не работает (((, простейшие примеры хоть и выполнились как бы правильно, а на самом деле облом. что то я тупанул... akorop +1
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
arcanis |
|
![]()
Темы:
31
Сообщения:
1496
Участник с: 09 сентября 2012
|
а да, пардон, вы правы. Я не правильно к тестам подошел =) когда то раньше писал для этого дела функции, потому что алиасы не смог заставить работать, а сейчас just-for-lulz попробовал по другом, но неправильные команды для теста выбрал |