Saya mencoba melakukan sesuatu seperti
alias ftp='echo do not use ftp. Use sftp instead.'
hanya supaya ftp
tidak akan sengaja digunakan. Tapi saya perhatikan itu
ftp abcd.com
akan menyebabkan perintah bergema
do not use ftp. Use sftp instead. abcd.com
karena abcd.com
dianggap sebagai argumen untuk echo
.
Apakah ada cara untuk membuat Bash tidak menambah abcd.com
substitusi, atau menjadikannya echo
sebagai argumen tambahan? (Apakah ada solusi untuk setiap pendekatan?)
Saya kira saya bisa melakukannya
alias ftp='sftp'
tapi saya hanya ingin membuat perintah berhenti bersama untuk mengingatkan diri saya untuk tidak menggunakan ftp
.
ftp
dengan cara yang berbeda, tetapi jika Anda ingin melakukannya - gunakanprintf
alih-alihecho
:printf "Do not use ftp. Use sftp instead.\n\c"
echo
kesftp
alias? yaitualias ftp='echo "Do not use ftp"; sftp'
. Anda akan mendapatkan pengingat, sementara itu juga dipaksa untuk digunakansftp
.ftp
Jawaban:
Saat Anda mendefinisikan alias, perintah yang Anda tetapkan dijalankan alih-alih yang Anda tulis. Ini berarti bahwa ketika Anda menjalankan
ftp abc.com
, apa yang sebenarnya dieksekusi adalahSolusi sederhana adalah menggunakan fungsi alih-alih alias:
Atau, Anda dapat menggunakan
printf
seperti yang disarankan oleh Costas:sumber
sumber
Cukup beri spasi dan karakter komentar
#
di akhir string alias:Ini akan menyebabkan parameter diperlakukan sebagai komentar. Hanya saja, jangan lupa untuk menambahkan spasi sebelum
#
jika tidak maka tidak akan ditafsirkan sebagai token terpisah setelah ekspansi alias.sumber