ฉันได้เขียนบรรทัดใน .bashrc

alias untar='sudo tar –xvzf'

ตอนนี้เมื่อฉันใช้ "untar" ใน bash ฉันได้รับข้อผิดพลาด:

untar filename.tar.gz

tar: invalid option -- '�'
Try 'tar --help' or 'tar --usage' for more information.

แต่เมื่อผมใช้คำสั่งจริงแทนนามแฝง

sudo tar –xvzf filename.tar.gz

มันทำงานได้ดี

ฉันวิ่งไป. ~/.bashrcแล้ว ดังนั้นนามแฝงจึง "รู้จัก" (หรือคุณจะเรียกมันว่าอย่างไร) ซึ่งเห็นได้ชัดจากข้อความแสดงข้อผิดพลาดที่ยอมรับว่าเป็นคำสั่ง tar มีนามแฝงอื่น ๆ ใน bashrc ซึ่งยังทำงานได้ดี

เหตุใดนามแฝงของฉันจึงใช้ไม่ได้

answer

นามแฝงของคุณมีอักขระที่ไม่ถูกต้อง ไม่ใช่สัญลักษณ์ ASCII มาตรฐาน (เครื่องหมายลบ) แต่มีอีกตัวหนึ่ง ซึ่งแบบอักษรบางตัวจะแสดงเป็นเส้นประที่ยาวกว่า

นามแฝงนี้ใช้ได้สำหรับฉัน

alias untar='sudo tar -xvf'

$ printf '-'|hexdump -C
00000000  2d                                                |-|
00000001
$ printf '–'|hexdump -C
00000000  e2 80 93                                          |...|
00000003