ฉันจะขอความช่วยเหลือเกี่ยวกับคำสั่งเทอร์มินัลได้อย่างไร


33

ฉันมักจะเห็นสิ่งต่าง ๆ เช่น

อ่าน ข้อมูลเพิ่มเติมอ่านหน้า man ของxyz ดูman xyz

info xyz

ดังนั้นฉันสงสัย:

  • ฉันจะขอความช่วยเหลือเกี่ยวกับคำสั่งเทอร์มินัลได้อย่างไร?
  • หน้าคนและข้อมูลเหล่านี้คืออะไรกันแน่?
  • ฉันจะค้นหาและดูพวกเขาได้อย่างไร

1
บางส่วนเป็นคู่หู
muru


ฉันต้องการพูดถึงtldr.shซึ่งเป็นความพยายามในการทำให้หน้าเว็บของมนุษย์ง่ายขึ้นและแสดงวิธีที่ดีขึ้น
ไม่ไม่แสดงชื่อจริงของฉัน

@ Nodon'tshownmyrealname คุณช่วยเขียนคำตอบเกี่ยวกับเรื่องนี้ได้tldrไหม? คุณสามารถพูดถึงcheatและอาจจะโกงด้วย
ของหวาน

คำตอบ:


44

คืออะไรหน้าคน ?

man page (ย่อมาจาก manual manual) เป็นรูปแบบดั้งเดิมของเอกสารซอฟต์แวร์บนระบบปฏิบัติการ Unix-like เช่น Ubuntu สำหรับคำสั่งและโปรแกรมส่วนใหญ่จะมี man page ซึ่งแสดงรายการตัวเลือกและอธิบายการใช้งาน

ฉันจะค้นหาและดูหน้าคนได้อย่างไร

ออฟไลน์ในเทอร์มินัล

หน้า Man จะถูกติดตั้งโดยอัตโนมัติในระบบของคุณพร้อมกับคำสั่งที่อธิบาย ในการดูและค้นหาหน้าคนมีคำสั่งman:

man mv

แสดงหน้าคนmvในขณะที่

man -k mv

ชื่อการค้นหาและคำอธิบายสั้น ๆ mvของทั้งหมดที่ติดตั้งหน้าคนสตริง อนุญาตให้ใช้นิพจน์ทั่วไปเพิ่มเติมของ POSIX และเป็นการค้นหาดังนั้นจะเป็นการค้นหาเช่นgit-mvและsemverถ้าคุณต้องการค้นหาการmvใช้งาน^mv$แทนทั้งหมด

ดูความแตกต่างระหว่าง 'man' และ `man (#) 'คืออะไร? เพื่ออ่านเกี่ยวกับส่วนหน้าคน สำหรับข้อมูลเพิ่มเติมอ่านmanman page ของ ;)

ฉันจะมีอิทธิพลต่อวิธีแสดงหน้า man ได้อย่างไร?

lessโปรแกรมเริ่มต้นไปยังหน้าจอแสดงผลเป็นมนุษย์ เพจเจอร์ที่เรียกว่านี้มีฟังก์ชันการค้นหาที่เป็นประโยชน์เพียงป้อน/ตามด้วยคำค้นหาเช่น

/--version

Enterและกด สิ่งนี้จะทำเครื่องหมายทุกการค้นพบและเลื่อนไปที่รายการแรก กดNเพื่อไปที่การค้นหาถัดไปและ⇧ Shift+ Nเพื่อไปยังการค้นหาก่อนหน้า (ดูที่ฉันจะค้นหาภายใน manpage ได้อย่างไร ) สำหรับรายการของคำสั่งกดH, เพื่อออกกดlessQ

ข้างlessมีวิทยุติดตามตัวอื่น ๆที่ใช้ได้: pg, mostและw3mเพียงสามรายการ ผมขอแนะนำmost: มันมาพร้อมกับสีที่มีประโยชน์มากของคำสำคัญทำให้หน้าคนมากง่ายต่อการอ่านและการสำรวจดูตัวเอง:

สกรีนช็อตส่วนใหญ่แสดง manpage ของ mv

ในการดูหน้าคนที่แตกต่างจากเพจเจอร์เริ่มต้นให้ใช้-Pตัวเลือกเช่น:

man -P most mv

หากคุณต้องการเปลี่ยนเพจเจอร์เพจเจอร์เริ่มต้นจะแสดงพร้อมกับคุณมีสองตัวเลือก:

  • เปลี่ยนเพจเจอร์เริ่มต้นเพียงอย่างเดียว man

    export MANPAGER=most
    

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

  • เปลี่ยนเพจเจอร์เริ่มต้นของระบบทั้งหมดของคุณ

    sudo update-alternatives --config pager
    

แฟน ๆ สามารถแม้กระทั่ง (AB) ใช้vimเป็นMANPAGERดูบทความนี้เขียนโดยMuru

หน้า Man จะแสดงในแบบอักษรที่ระบุในการตั้งค่าเทอร์มินัลอีมูเลเตอร์ของคุณ หากคุณทำงานกับเครื่องเป็นประจำคุณอาจต้องการเปลี่ยนแบบอักษรนี้ ฉันสามารถแนะนำแฮ็คเท่านั้น- แบบอักษรที่ออกแบบมาสำหรับซอร์สโค้ดดูภาพหน้าจอด้านบนเพื่อความสวยงาม

ออฟไลน์ผ่าน GUI

วิธีที่ดีและง่ายในการแสดงหน้าคนด้วยGUI อย่างง่ายคือyelpโปรแกรมที่ติดตั้งไว้ล่วงหน้า ในการเริ่มต้น man page ด้วยyelpexecute yelp man:PROGRAMหรือgnome-help man:PROGRAMเช่น:

yelp man:mv

คุณยังสามารถดูหน้าคนด้วยเบราว์เซอร์ที่คุณต้องการดูฉันจะทำให้หน้าคนเปิดในเว็บเบราว์เซอร์ได้อย่างไร เช่นman mvในfirefox:

man -Hfirefox mv

สุดท้าย แต่ไม่ท้ายสุดคุณสามารถแปลง man page เป็น PDFและดูด้วยโปรแกรมดู PDF ที่คุณต้องการดู: มีวิธีพิมพ์ข้อมูล / man pages เป็น PDF หรือไม่?

ออนไลน์

http://manpages.ubuntu.com

คุณสามารถดูหน้าคนของโปรแกรมที่สามารถใช้ได้ผ่านทางที่เก็บของทุกรุ่นอูบุนตูสนับสนุนในขณะนี้ที่มี URL ชวเลขที่manpg.es/PROGRAMเช่นhttp://manpg.es/mv หน้านี้เปิดขึ้นmvสำหรับรุ่นล่าสุดของ Ubuntu คุณสามารถเลือกรุ่นอื่นในแถบด้านบน ในการค้นหาหน้าคนที่คุณสามารถใช้เช่นhttp://manpages.ubuntu.com/cgi-bin/search.py?q=mv

ตามที่อธิบายไว้ข้างต้นmanสามารถแสดง man page ของซอฟต์แวร์ที่ติดตั้งในระบบเท่านั้น เพื่อดูหน้าคนจากhttp://manpages.ubuntu.comโดยใช้เพจเจอร์เทอร์มินัลที่มีdmanอยู่ในbikeshedแพคเกจ

แหล่งอื่น ๆ

เมื่อคุณอ่านเอกสารจากแหล่งข้อมูลออนไลน์อื่น ๆ เป็นความคิดที่ดีที่จะจับตาดูรุ่นของโปรแกรม โปรแกรมส่วนใหญ่มี--versionตัวเลือกที่แสดงเวอร์ชันของโปรแกรมที่เป็นปัญหาเช่น

$ mv --version
mv (GNU coreutils) 8.25

มีเว็บไซต์จำนวนมากที่อุทิศตนเพื่อทำให้หน้าคนสามารถใช้งานได้ง่ายฉันแค่จะนำเสนอสองสิ่งที่ฉันชอบมากที่สุด:

  • man7.orgมาพร้อมกับการเน้นไวยากรณ์ที่มีประโยชน์ แต่มีเฉพาะรุ่นที่ออกล่าสุดของโปรแกรม
  • manpag.esโฮสต์ man page ของ Ubuntu ออกมานาน EOL

แหล่งที่มาไม่ได้เชื่อมโยง: https://wiki.ubuntuusers.de/man/


เคล็ดลับที่มีประโยชน์อีกอย่างหนึ่ง (อย่างน้อยถ้าคุณเป็นโปรแกรมเมอร์) คือการเขียนสคริปต์ขนาดเล็กเพื่อถ่ายโอนข้อมูลของมนุษย์ลงในโปรแกรมแก้ไขข้อความที่คุณเลือก เช่น (\ n คือบรรทัดใหม่) #! / bin / tcsh \ n ชื่อ set = $ argv [$ # argv] \ n set file = /tmp/man.$name.out\n / usr / bin / man $ * | col-bx> $ file \ n (พา ธ ไปยังเครื่องมือแก้ไขของคุณ) $ file \ n rm $ file \ n แมโครที่คล้ายกัน แต่เฉพาะเอดิเตอร์จะอนุญาตให้คุณเรียกคนจากภายในเครื่องมือแก้ไขซึ่งมีประโยชน์มาก
jamesqf

@jamesqf ที่น่าสนใจทำไมคุณถึงต้องทำและเมื่อไหร่ที่คุณใช้สิ่งนั้น ในฐานะที่เป็นบรรณาธิการมักจะมีความสามารถในการอ่านจาก stdin คุณสามารถลดความซับซ้อนของมันเช่นหรือman $*|col -bx|nano - man $*|col -bx|kate -i
ของหวาน

@jamesqf หากคุณส่งออก man page ไปยังไฟล์ข้อความเพื่อค้นหาหรือนำทางได้ง่ายคุณควรพิจารณาดูที่หน้า "สรุปคำสั่งน้อย" มันสามารถเปิดได้โดยการพิมพ์ 'h' ในless( manใช้lessคำสั่งสำหรับการแบ่งหน้า ดังนั้นจึงใช้งานได้manเช่นกัน)
Ludovic Ronsin

@ Ludovic Ronsin: ฉันทำมันในตัวแก้ไขมากกว่าน้อยด้วยเหตุผลสองประการ ครั้งแรกเพราะฉันรู้ว่าคำสั่งบรรณาธิการของฉัน (ซึ่งมีประสิทธิภาพมากกว่าคำสั่งน้อยกว่า) และไม่ต้องกังวลกับการเรียนรู้อีกชุดคำสั่งซึ่งฉันจะสับสนในบริบทที่แตกต่างกันอย่างหลีกเลี่ยงไม่ ประการที่สองเพราะฉันสามารถขอรุ่นบรรณาธิการไปกดปุ่มกด (Alt-m ตามที่เกิดขึ้น) และได้รับความช่วยเหลือในการเรียกใช้ฟังก์ชั่นใด ๆ ที่มีหน้าคน สำหรับสาเหตุที่ฉันทำอย่างที่ฉันทำฉันเขียนมันเมื่อ 20 ปีก่อนและมันใช้ได้ดีพอ
jamesqf

@jamesqf เพียงแค่ตั้งค่า PAGER = "vim -" ทำอย่างไร
d33tah

13

พื้นฐานได้รับการครอบคลุมแล้ว แต่เว็บไซต์หนึ่งที่ฉันคิดว่าค่อนข้างมีประโยชน์สำหรับบอกคุณว่าคำสั่งทำอะไรคือhttps://explainshell.comซึ่งแบ่งคำสั่งลงในส่วนของมันและแสดงให้เห็นว่าแต่ละบิตทำอะไร

ป้อนคำอธิบายรูปภาพที่นี่


1
+1 นั่นไม่ใช่สิ่งที่ฉันทำหลังจากที่ฉันเขียนคำถามและคำตอบนี้ แต่เป็นแหล่งข้อมูลที่ดีที่ฉันไม่รู้ - ขอบคุณมาก! เป็นคำตอบอื่น ๆ โดยเจตนาครอบคลุมหัวข้อหลักหนึ่งคุณอาจขยายคำตอบของคุณเพื่อให้ครอบคลุมเครื่องมือออนไลน์ทั่วไป? shellcheck.netอยู่ในใจ ...
ขนม

12

เป็นสิ่งที่หน้าข้อมูล ?

คู่ขนาน

man program-name

มีบ่อยเช่นกัน

info program-name

บางครั้งอาจเหมือนกัน (ซ้ำกัน) แต่บางครั้งหน้าใดหน้าหนึ่งเหล่านี้มีข้อมูลเพิ่มเติม ตัวอย่างเช่น

info ddrescue

มีข้อมูลมากกว่า

man ddrescue

และ

info date

มีข้อมูลมากกว่า

man date

ความสมดุลระหว่างmanและinfoขึ้นอยู่กับนโยบายของผู้ที่ดูแลโปรแกรมเฉพาะ [แพ็คเกจ]

ดูลิงค์นี้สำหรับรายละเอียดเพิ่มเติม

unix.stackexchange.com/questions/19451/difference-between-help-info-and-man-command


11

อะไรคือสิ่งที่helpคำสั่ง?

helpแสดงข้อมูลที่เป็นประโยชน์เกี่ยวกับbashคำสั่งในตัว มันให้ความช่วยเหลือสำหรับคำสั่ง bash shell เท่านั้น คุณสามารถใช้typeเพื่อตรวจสอบว่าคำสั่งดังกล่าวในตัวเช่นเมื่อเทียบกับtype echotype rm

มันถูกเรียกว่ามีรูปแบบเป็นอาร์กิวเมนต์:

help if

แสดงหน้าช่วยเหลือสำหรับifคำสั่ง หากคุณสนใจเพียงแค่ในไวยากรณ์ของคำสั่งที่ใช้-sตัวเลือกถ้าคุณต้องการhelpที่จะส่งออกผลผลิตในการใช้งานรูปแบบหน้าman -mหากต้องการดูข้อความช่วยเหลือแบบยาวคุณสามารถส่งออกไปยังเพจเจอร์ที่คุณต้องการ (ดูหัวข้อ“ ฉันจะมีอิทธิพลต่อคำตอบนี้ ”) ได้อย่างไร:

help -m if | less

เปรียบเทียบกับmanและinfo

คุณสามารถเรียกใช้และเปรียบเทียบคำสั่งต่อไปนี้:

help echo  # for the bash built-in command `echo`
man echo   # for the program `/bin/echo`
info echo  # for the program `/bin/echo`

เช่นในตัวอย่างนี้มีโปรแกรมที่มีทั้งแบบบิวด์อินและโปรแกรมปกติ (ดูเหตุใดจึงมี / bin / echo และทำไมฉันถึงต้องการใช้มัน? ) ในกรณีนี้หน้าคนมักจะมี หมายเหตุระบุว่า

ดูลิงค์นี้สำหรับรายละเอียดเพิ่มเติม: ความแตกต่างระหว่างวิธีใช้ข้อมูลและคำสั่ง man · U&L

ตัวเลือกของโปรแกรม-hและ / หรือ--help

มักจะมีในตัวช่วยในการโปรแกรมที่ตัวเองสามารถใช้ได้ผ่านทางอย่างน้อยหนึ่งตัวเลือก-h, --helpหรือ-?:

PROGRAM -h
PROGRAM --help
PROGRAM -?

หากทั้งสองตัวเลือก-hและ--helpมีอยู่พวกเขามักจะเทียบเท่า แต่บางครั้งคุณจะได้รับ 'ความช่วยเหลือเพิ่มเติมด้วย--help, -H, --longhelp, --help-allหรือคำสั่งที่คล้ายกัน พฤติกรรมนี้มีการบันทึกไว้ในโปรแกรมman/ infoหน้า

มักจะมีข้อมูลเพิ่มเติมผ่านทางmanและแต่บางครั้งมีข้อมูลพิเศษผ่านinfo -hเรียกใช้และเปรียบเทียบผลลัพธ์ของ

man lsblk

และ

lsblk -h

บางโปรแกรมต้องการdf, tarและrsyncใช้ตัวเลือก-hอย่างอื่น อธิบายไว้ในman/ infoหน้าของแต่ละโปรแกรม

อีกครั้งคุณสามารถไพพ์เอาต์พุตไปยังเพจเจอร์ที่คุณต้องการเช่น:

lsblk -h | less

ขอบคุณสำหรับการกล่าวถึง--helpซึ่งมักเป็นสิ่งเดียวที่ฉันต้องการด้วยคำสั่งส่วนใหญ่และมักจะเป็นสิ่งแรกที่ฉันลอง
JPhi1618

6

การสอนคืออะไรและฉันจะหาสิ่งที่มีประโยชน์ได้อย่างไร

เมื่อคุณมีประสบการณ์เกี่ยวกับ linux หน้าman , info page และตัวเลือกช่วยเหลือจะมีประโยชน์มาก แต่ในตอนแรกพวกเขาอาจเข้าใจยาก คุณต้องการความช่วยเหลืออย่างละเอียดเพื่อเริ่มต้น

คุณสามารถค้นหาช่วยให้รายละเอียดในบทเรียน ,

  • คำอธิบายโดยละเอียดเกี่ยวกับวิธีใช้คำสั่ง
  • ตัวอย่าง

โดยปกติแล้วคุณจะพบบทเรียนผ่านทางอินเทอร์เน็ตบางครั้งมีการสอนที่มีประโยชน์ในหน้าคนหรือหน้าข้อมูล

  • ลองใช้สตริงการค้นหาเมื่อคุณใช้โปรแกรมค้นหาของเว็บเบราว์เซอร์

    • กำลังมองหาเครื่องมือที่ระบุ

      • กวดวิชานาโน
      • กวดวิชา
      • กวดวิชา imagemagick
      • กวดวิชา rsync
    • กำลังมองหางาน (และหาบทช่วยสอนสำหรับเครื่องมือต่าง ๆ )

      • กวดวิชาแก้ไขโหมดข้อความ linux
      • กวดวิชาแก้ไขรูปภาพโหมด linux batch

สั้น ๆ ดูที่ไม่กี่ของการเชื่อมโยงที่คุณพบและเริ่มต้นการทำงานกับการกวดวิชาที่เหมาะกับสิ่งที่คุณต้องการ

  • man rsync มีรายละเอียดเพียงพอสำหรับฉันที่จะใช้เป็นบทช่วยสอน แต่คุณอาจต้องการรายละเอียดเพิ่มเติม (และมองหาบทช่วยสอนผ่านทางอินเทอร์เน็ต)
  • info ddrescue มีการสอนในตัวที่ดี

สมบูรณ์แบบขอบคุณสำหรับการสนับสนุนอย่างต่อเนื่องของคุณ - ฉันรู้สึกว่าคำถามนี้จะเติบโตขึ้นเป็นแหล่งข้อมูลที่มีประโยชน์มากซึ่งเราสามารถเริ่มต้นได้ ฉันจะเพิ่มดัชนีเนื้อหาลงในคำถามและเชื่อมโยงคำตอบเพื่อเลื่อนการอ่าน
ขนม

1
@ ขนมหวานนี่เป็นความคิดริเริ่มที่ดีโดยคุณและฉันดีใจที่มีส่วนร่วม :-)
sudodus


2

สิ่งที่ฉันชอบคือcommandlinefu.comมีฟังก์ชั่นในตัวคุณ.bashrcหรือ.zshrcแบบนี้

cmd() { curl "http://www.commandlinefu.com/commands/matching/$(echo "$@" \
    | sed 's/ /-/g')/$(echo -n $@ | base64)/plaintext" ;}

ลองcmd mount cdฉันเรียกว่าฟังก์ชั่นของฉันcmdคุณสามารถเรียกมันว่าสิ่งที่คุณต้องการ

ป้อนคำอธิบายรูปภาพที่นี่

ฟังก์ชั่นด้านบนค้นหาเว็บไซต์ commandlinefu มันเป็นเว็บไซต์ที่ขับเคลื่อนโดยชุมชนเหมือนที่นี่ผู้ใช้มีความสามารถในการถอนคำสั่งและอื่น ๆ จากนั้นจะแสดงผลลัพธ์สูงสุดตามที่แสดงในรูปภาพ

หรือมีวิธีการใหม่ที่จะทำโดยใช้นี้

http://samirahmed.github.io/fu/

นี่คือการกวดวิชา

มาทำกัน fu cron

ป้อนคำอธิบายรูปภาพที่นี่


1

คิดออกว่าจะเปิดหน้าต่าง terminal man manและออกคำสั่ง พิมพ์ space bar เพื่อไปยังหน้าจอถัดไปทุกครั้งที่มีข้อความ "More" ที่ด้านล่าง คุณกำลังอ่านหน้าคู่มือสำหรับโปรแกรมอ่านคู่มือman!

มีปัญหาไก่และไข่ขนาดเล็กมากสำหรับคุณที่จะผ่าน manคำสั่งช่วยให้คุณอ่านคู่มือเกี่ยวกับทุกคำสั่งในระบบ แต่การส่งออกใช้คำสั่งอื่นที่เรียกว่าman moreนอกจากนี้คุณยังสามารถอ่านเพื่อเรียนรู้คำสั่งเพิ่มเติมสำหรับการนำทางman moremore

และนั่นคือทุกอย่าง! ฉันเรียนรู้ทุกสิ่งที่ฉันรู้เกี่ยวกับยูนิกซ์โดยอ่าน man pages สำหรับคำสั่งหลายร้อยคำสั่ง


3
บน Ubuntu manใช้โดยค่าเริ่มต้นไม่ได้less more
muru

0

หลายคนได้กล่าวmanไปแล้ว มีคุณสมบัติที่ยอดเยี่ยมเล็กน้อยสำหรับmanบางคนที่ตระหนักถึงคือ

man -t $ (manpage) > manpage.ps

ซึ่งสร้างไฟล์ PostScript สำหรับหน้าคู่มือ PostScript สามารถแปลงเป็น PDF ได้อย่างง่ายดาย ผลนี้ในการจัดรูปแบบมาก nicer manกว่ารุ่นคำสั่งเริ่มต้นสายขั้ว

ตัวอย่างเช่น:

man -t man> man.ps

pstopdf man.ps

ฉันเพิ่งทดสอบบน Ubuntu (และควรทำงานกับ Linuces อื่น ๆ ) และ Mac OS

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