Ich versuche so etwas zu tun
alias ftp='echo do not use ftp. Use sftp instead.'
nur damit das ftp
nicht versehentlich benutzt wird. Aber das habe ich bemerkt
ftp abcd.com
bewirkt, dass der Befehl wiedergegeben wird
do not use ftp. Use sftp instead. abcd.com
weil das abcd.com
als Argument für genommen wird echo
.
Gibt es eine Möglichkeit, Bash dazu abcd.com
zu bringen, die Substitution nicht zu ergänzen oder echo
nicht als zusätzliche Argumente zu verwenden? (Gibt es für jeden Ansatz eine Lösung?)
Ich nahm an, ich könnte es schaffen
alias ftp='sftp'
aber ich möchte nur, dass der Befehl alle zusammen stoppt, um mich daran zu erinnern, ihn nicht zu verwenden ftp
.
ftp
auf andere Weise verbieten , aber wenn Sie dies möchten - verwenden Sieprintf
anstelle vonecho
:printf "Do not use ftp. Use sftp instead.\n\c"
echo
zumsftp
Alias? dhalias ftp='echo "Do not use ftp"; sftp'
. Sie erhalten die Erinnerung, müssen aber auch verwendensftp
.ftp
Antworten:
Wenn Sie einen Alias definieren, wird der von Ihnen festgelegte Befehl anstelle des von Ihnen geschriebenen ausgeführt. Dies bedeutet, dass beim Ausführen
ftp abc.com
tatsächlich Folgendes ausgeführt wirdEine einfache Lösung besteht darin, eine Funktion anstelle eines Alias zu verwenden:
Alternativ können Sie
printf
wie von Costas vorgeschlagen Folgendes verwenden:quelle
quelle
Fügen Sie einfach ein Leerzeichen und das Kommentarzeichen
#
am Ende der Alias-Zeichenfolge ein:Dadurch werden die Parameter als Kommentar behandelt. Vergessen
#
Sie jedoch nicht, vorher ein Leerzeichen hinzuzufügen, da es sonst nach der Alias-Erweiterung nicht als separates Token interpretiert wird.quelle