Próbuję zrobić coś takiego
alias ftp='echo do not use ftp. Use sftp instead.'
tak, ftp
aby nie zostało przypadkowo wykorzystane. Ale zauważyłem to
ftp abcd.com
spowoduje echo polecenia
do not use ftp. Use sftp instead. abcd.com
ponieważ abcd.com
uważa się, że jest argumentem echo
.
Czy istnieje sposób, aby Bash nie dodawał abcd.com
do podstawienia lub echo
nie traktował tego jako dodatkowych argumentów? (Czy istnieje rozwiązanie dla każdego podejścia?)
Myślałem, że dam radę
alias ftp='sftp'
ale chcę po prostu zatrzymać polecenie, aby przypomnieć sobie, żebym nie używał ftp
.
ftp
w inny sposób, ale jeśli chcesz to zrobić - użyjprintf
zamiastecho
:printf "Do not use ftp. Use sftp instead.\n\c"
echo
dosftp
aliasu? tjalias ftp='echo "Do not use ftp"; sftp'
. Otrzymasz przypomnienie, będąc jednocześnie zmuszonym do korzystaniasftp
.ftp
Odpowiedzi:
Po zdefiniowaniu aliasu ustawione polecenie jest uruchamiane zamiast napisanego. Oznacza to, że po uruchomieniu
ftp abc.com
jest to, co jest faktycznie wykonywaneProstym rozwiązaniem jest użycie funkcji zamiast aliasu:
Alternatywnie możesz użyć
printf
zgodnie z sugestią Costasa:źródło
źródło
Wystarczy umieścić spację i znak komentarza
#
na końcu ciągu aliasu:Spowoduje to, że parametry będą traktowane jako komentarz. Po prostu nie zapomnij dodać spacji wcześniej, w
#
przeciwnym razie nie będzie interpretowane jako osobny token po rozwinięciu aliasu.źródło