як Bash, як не включати зайві аргументи в псевдонім?


10

Я намагаюся зробити щось подібне

alias ftp='echo do not use ftp. Use sftp instead.'

просто так, що ftpвипадково не буде використано. Але я це помітив

ftp abcd.com

призведе до відлуння команди

do not use ftp. Use sftp instead. abcd.com

оскільки abcd.comаргумент вважається аргументом echo.

Чи є спосіб змусити Баша не додавати abcd.comзаміни або echoне сприймати це як додаткові аргументи? (Чи є рішення для кожного підходу?)

Я гадав, що зможу це зробити

alias ftp='sftp'

але я просто хочу змусити команду зупинити всіх разом, щоб нагадати себе не використовувати ftp.


3
Здебільшого ви можете заборонити ftpпо-різному, але якщо ви хочете це зробити - використовуйте printfзамість echo:printf "Do not use ftp. Use sftp instead.\n\c"
Costas

Додайте echoдо sftpпсевдоніму? тобто alias ftp='echo "Do not use ftp"; sftp'. Ви отримаєте нагадування, а також будете змушені користуватися sftp.
Джош Джоллі

@JoshJolly Я хотів зробити команду припинити всіх разом, а не давати їй "проплисти через" просто так, щоб мені постійно нагадували про ftp
невживання

1
Зауважте, що псевдоніми надзвичайно прості; вони є не що інше, як проста підміна рядків (з додатковими обмеженнями, що (1) підміна відбувається лише на початку командного рядка, і (2) нерекурсивна). Немає способу "налаштувати", як працює псевдонім поза визначенням самого псевдоніма.
Кайл Странд

Е ... вибачте, псевдоніми є рекурсивними. Не впевнений, що я думав.
Кайл Странд

Відповіді:


18

Коли ви визначаєте псевдонім, команда, яку ви встановили, виконується замість тієї, яку ви написали. Це означає, що коли ви запускаєте ftp abc.com, те, що насправді виконується

echo do not use ftp. Use sftp instead abc.com

Просте рішення - використовувати функцію замість псевдоніму:

ftp(){ echo 'do not use ftp. Use sftp instead'; }

Як варіант, ви можете використовувати, printfяк пропонує Костас:

alias ftp="printf 'do not use ftp. Use sftp instead\n'"


9

Просто поставте пробіл та символ коментаря #в кінці рядка псевдоніму:

alias ftp='echo do not use ftp. Use sftp instead. #'
ftp abcd.com
do not use ftp. Use sftp instead.

Це призведе до того, що параметри будуть розглядатись як коментар. Тільки не забудьте додати пробіл раніше, #інакше воно не буде трактуватися як окремий маркер після розширення псевдоніму.

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