การทำให้เสร็จสิ้นเส้นทาง Bash ทำงานกับ sudo อย่างไร


11

การทำให้แท็บเสร็จสมบูรณ์ไม่ทำงาน (อย่างน้อยใน Ubuntu และ AFAIK Arch) ด้วย

sudo mount <whatever>

แฟ้ม ISO /etc/fstabฉันพยายามที่จะติดตั้งไม่ได้อยู่ใน ถ้าฉันพิมพ์

mount <whatever>

การทำงานให้เสร็จสมบูรณ์ (แต่แน่นอนว่าคำสั่งล้มเหลวเนื่องจากฉันไม่ใช่รูต) เห็นได้ชัดว่ามันเป็นsudoตัวแบ่งมัน

การทำให้เสร็จสมบูรณ์ทำงานกับ sudo ได้อย่างไร

มันเป็นเรื่องที่น่าแปลกใจด้วย

sudo umount <whatever>

งานเสร็จสมบูรณ์ มันประสบความสำเร็จได้อย่างไร? มันดูเป็น/etc/fstabอย่างไร

การแก้ไข:ฉันแค่ใส่เชลล์สคริปต์ลงในการ/usr/local/binโทรนั้นsudo mount ...โดยมีการส่งผ่านอาร์กิวเมนต์ไป การดำเนินการให้เสร็จสมบูรณ์เมื่อเรียกสคริปต์นี้เนื่องจากไม่มีsudoในทาง

คำตอบ:


11

นี้ไม่ได้ที่ทุกคนจะทำอย่างไรกับแต่มันขึ้นอยู่กับความสำเร็จที่ตั้งโปรแกรมในแพคเกจbashbash-completion

จากความคิดเห็นบางส่วนในไฟล์/etc/bash_completion.d/mount:

# mount(8) completion. This will pull a list of possible mounts out of
# /etc/{,v}fstab, unless the word being completed contains a ':', which
# would indicate the specification of an NFS server. In that case, we
# query the server for a list of all available exports and complete on
# that instead.
#

# umount(8) completion. This relies on the mount point being the third
# space-delimited field in the output of mount(8)
#

นอกจากนี้คุณยังพบ/etc/bash_completionความคิดเห็นต่อไปนี้ในไฟล์หลักซึ่งพูดถึงmountและumountคำสั่งอย่างชัดเจน:

# A meta-command completion function for commands like sudo(8), which need to
# first complete on a command, then complete according to that command's own
# completion definition - currently not quite foolproof (e.g. mount and umount
# don't work properly), but still quite useful.
#

อัปเดต :
ความคิดเห็นเกี่ยวกับmountและumountคำสั่งถูกลบออกจากbash_completion การกระทำ :

_command_offset: Restore compopts used by called command.

This fixes completions that rely on their compopts, most notably
mount(8).
Fixes bash-completion bug #313183.

เผยแพร่ในbash-completion 1.90


4

สิ่งนี้สามารถแก้ไขได้อย่างง่ายดายโดยดูที่Arch Wiki :

มันจะมีประโยชน์ที่จะมีคุณลักษณะอัตโนมัติสมบูรณ์ (กดปุ่ม Tab สองครั้งบนแป้นพิมพ์) sudoหลังจากที่คุณพิมพ์คำสั่งบางอย่างเช่น

หากต้องการทำสิ่งนี้ให้เพิ่มบรรทัดในรูปแบบนี้ลงใน~/.bashrcไฟล์ของคุณ:

สมบูรณ์ -cf your_command

ตัวอย่างเช่นหากต้องการเปิดใช้งานการเติมข้อมูลอัตโนมัติหลังจากsudoและman:

complete -cf sudo
complete -cf man

ขอบคุณ sudo umountโปรดทราบว่าการทำงานอัตโนมัติสมบูรณ์น่าแปลกใจที่ดีในกรณีของ เมื่อ enzotib ชี้ให้เห็นคุณลักษณะนี้เสียด้วยmountและครั้งสุดท้ายที่ฉันตรวจสอบมันก็แตกบน Arch ด้วย
อาลี

ฉันเพิ่งลองทำสิ่งนี้บน Arch และ sudo mount / me <TAB> เสร็จสมบูรณ์ไปยังเส้นทางเดียวที่ฉันได้กำหนดค่าไว้ใน/etc/fstabที่เริ่มต้นด้วย / media
Wieland

ในกรณีของฉัน, ไฟล์ฉันพยายามที่จะยึดติดไม่ได้/etc/fstabใน คุณกรุณาตรวจสอบสิ่งนี้ได้ไหม
Ali

0

ไม่มันไม่ได้ดูใน fstab Bash เสร็จสิ้นค้นหาคำสั่งในเส้นทางนามแฝงใน bashrc และ / หรือ bash_profile และเส้นทาง ดังนั้นหากคุณพิมพ์สิ่งที่ต้องการsudo mount /mnt/some_folderให้สมบูรณ์โดยอัตโนมัติ บางทีเมื่อคุณทำสิ่งที่umountคุณอยู่ในเส้นทางญาติสำหรับปลายทางของคุณและมันก็ทำโดยอัตโนมัติ


ขอบคุณ ฉันแน่ใจว่าการเติมข้อความอัตโนมัติไม่ทำงานsudo mount /mnt/some_folderแน่นอน 100% AFAIK มันไม่ทำงานบน Arch Linux เช่นกัน เมื่อฉันทำumountฉันไม่ได้อยู่ในเส้นทางญาติสำหรับปลายทาง
อาลี

-1

ฉันเดาว่าทุบตีไม่ต้องการที่จะซับซ้อนเกินไปและพกพาสะดวกดังนั้นพวกเขาจะไม่มองใน / dev เพื่อเสนอการดำเนินการติดตั้งให้เสร็จ

อย่างไรก็ตามเมื่อเรียก umount จะสามารถดูเอาต์พุตของ df / mount / etc ได้อย่างง่ายดายเพื่อทราบว่าอุปกรณ์ใดบ้างที่ถูกเมาท์และที่ใด

บางที zsh จะจัดเตรียมให้สมบูรณ์สำหรับการเมานท์ heck zsh เติมข้อความอัตโนมัติแม้เมื่อทำคำสั่ง scp ...


ไฟล์ที่ฉันพยายามเมาต์คือไฟล์ iso ในโฮมไดเร็กตอรี่ของฉัน ความสมบูรณ์ไม่ทำงาน โอ้ฉันลืมไปแล้วว่างานเมานท์เสร็จแล้วถ้าฉันไม่ใช้ sudo มันคือ sudo ที่ทำลายมัน ความคิดใด ๆ
อาลี

แม้แต่ใช้เส้นทางที่สมบูรณ์? / home / user / myiso <TAB> -> myisofile.iso แก้ปัญหาด้วย sudo echo $ SHELL; sudo pwd, หวังว่ามันจะให้ข้อมูลเชิงลึกกับคุณ
Aki

ใช่กับเส้นทางที่แน่นอน ฉันจะลองแก้จุดบกพร่องที่คุณแนะนำ การดีบักที่คุณแนะนำจะให้/bin/bash /home/aliตามที่คาดไว้
Ali
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.