ฉันจะใช้ man pages เพื่อเรียนรู้วิธีใช้คำสั่งได้อย่างไร


92

ขณะที่การวิจัยปัญหาอื่นฉันมาข้ามคำสั่ง ,

locate something | xargs -I {} bash -c "if [ -d "{}" ]; then echo {}; fi"

ที่ฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ ดังนั้นฉันวิ่งman xargsและได้รับผลลัพธ์ต่อไปนี้:

XARGS(1)                    General Commands Manual                   XARGS(1)

NAME
       xargs - build and execute command lines from standard input

SYNOPSIS
       xargs  [-0prtx]  [-E  eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null]
       [-d delimiter] [--delimiter delimiter]  [-I  replace-str]  [-i[replace-
       str]]    [--replace[=replace-str]]   [-l[max-lines]]   [-L   max-lines]
       [--max-lines[=max-lines]] [-n max-args] [--max-args=max-args] [-s  max-
       chars]  [--max-chars=max-chars]  [-P max-procs] [--max-procs=max-procs]
       [--interactive]      [--verbose]      [--exit]      [--no-run-if-empty]
       [--arg-file=file]   [--show-limits]   [--version]   [--help]   [command
       [initial-arguments]]

DESCRIPTION
       This manual page documents the GNU version of xargs...

ฉันพยายามใช้เอกสารเพื่อเรียนรู้เกี่ยวกับโปรแกรม Linux ได้ดีขึ้น แต่ส่วน "เรื่องย่อ" กำลังข่มขู่ผู้ใช้รายใหม่ แท้จริงมันดูเหมือนไม่มีความหมายเมื่อเทียบกับหรือman locateman free

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

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


17
อ่าน man page ต่อไป ส่วน "ตัวเลือก" อธิบายตัวเลือกทั้งหมดที่มีอยู่ในส่วน "SYNOPSIS"
จอห์น

7
เริ่มต้นด้วยman man
mikeserv

14
บ่อยกว่านั้นไม่ให้ไปที่ด้านล่างสุดแล้วมองหาส่วนของตัวอย่าง
teppic

9
และอย่าเพียงสแกนหน้าคำหลักเพื่อค้นหาคำหลัก อ่านจริงๆ! ควรมีการอธิบายพฤติกรรมแปลก ๆ ไว้อย่างดี
FloHim เองเมื่อ

6
หลังจากอ่านman man man intro
mikeserv

คำตอบ:


102

นี่เป็นวิธีส่วนตัวในการอ่าน manpages:

ผู้จัดการ

เมื่อคุณเปิด manpage โดยใช้manคำสั่งเอาต์พุตจะแสดง / แสดงผลโดยคำสั่งlessหรือmoreคำสั่งหรือคำสั่งอื่นใดที่จะถูกตั้งค่าเป็นเพจเจอร์ของคุณ (manpager)

หากคุณใช้ Linux คุณอาจได้รับบริการโครงสร้างพื้นฐานของมนุษย์ที่กำหนดค่าให้ใช้งานแล้ว/usr/bin/less -is(เว้นแต่คุณจะติดตั้ง distro น้อยที่สุด) ให้man(1)อธิบายในส่วนของตัวเลือก:

-P pager
Specify which pager to use. This option overrides the MANPAGER environment variable, 
which in turn overrides the PAGER variable. By default, man uses /usr/bin/less -is.

ใน FreeBSD และ OpenBSD เป็นเพียงเรื่องของการแก้ไขMANPAGERตัวแปรสภาพแวดล้อมเนื่องจากส่วนใหญ่จะใช้moreและคุณลักษณะบางอย่างเช่นการค้นหาและการไฮไลต์ข้อความอาจหายไป

มีคำตอบที่ดีสำหรับคำถามของสิ่งที่แตกต่างคือmore, lessและmostมีที่นี่ (ไม่เคยใช้most) ความสามารถในการเลื่อนไปข้างหลังและเลื่อนไปข้างหน้าทีละหน้าด้วยSpaceหรือทั้งสองวิธีตามบรรทัดที่มีหรือ(ด้วยการใช้viการเชื่อมjและk) เป็นสิ่งจำเป็นในขณะที่เรียกดู manpages กดhในขณะที่ใช้lessเพื่อดูข้อมูลสรุปของคำสั่งต่างๆ

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

คำสั่งจัดรูปแบบอย่างไร

ข้อกำหนดของยูทิลิตี้ : ข้อกำหนดเฉพาะของ Open Group Base ฉบับที่ 7 - IEEE Std 1003.1, 2013 Edition คุณควรเยี่ยมชมลิงค์นั้นก่อนที่จะพยายามทำความเข้าใจกับ manpage การอ้างอิงออนไลน์นี้อธิบายถึงไวยากรณ์ของอาร์กิวเมนต์ของโปรแกรมอรรถประโยชน์มาตรฐานและแนะนำคำศัพท์ที่ใช้ตลอด POSIX.1-2017 สำหรับการอธิบายอาร์กิวเมนต์ที่ประมวลผลโดยยูทิลิตี้ สิ่งนี้จะช่วยให้คุณได้รับการปรับปรุงเกี่ยวกับความหมายที่แท้จริงของคำเช่นพารามิเตอร์อาร์กิวเมนต์ตัวเลือกอาร์กิวเมนต์ ...

หัวหน้า manpage ใด ๆ จะมีความลับน้อยกว่าสำหรับคุณหลังจากทำความเข้าใจกับสัญลักษณ์ของอนุสัญญายูทิลิตี้:

utility_name[-a][-b][-c option_argument]
    [-d|-e][-f[option_argument]][operand...]

มีอยู่ในใจว่าคุณต้องการทำอะไร

เมื่อทำการวิจัยเกี่ยวกับxargsคุณทำเพื่อวัตถุประสงค์ใช่มั้ย คุณมีความต้องการเฉพาะที่อ่านเอาต์พุตมาตรฐานและดำเนินการคำสั่งตามเอาต์พุตนั้น

แต่เมื่อฉันไม่รู้คำสั่งที่ฉันต้องการ

ใช้man -kหรือapropos(พวกเขาเทียบเท่า) ถ้าฉันไม่รู้วิธีค้นหาไฟล์: man -k file | grep search. อ่านคำอธิบายและค้นหาคำที่เหมาะสมกับความต้องการของคุณมากขึ้น ตัวอย่าง:

apropos -r '^report'
bashbug (1)          - report a bug in bash
df (1)               - report file system disk space usage
e2freefrag (8)       - report free space fragmentation information
filefrag (8)         - report on file fragmentation
iwgetid (8)          - Report ESSID, NWID or AP/Cell Address of wireless network
kbd_mode (1)         - report or set the keyboard mode
lastlog (8)          - reports the most recent login of all users or of a given user
pmap (1)             - report memory map of a process
ps (1)               - report a snapshot of the current processes.
pwdx (1)             - report current working directory of a process
uniq (1)             - report or omit repeated lines
vmstat (8)           - Report virtual memory statistics

Apropos ทำงานร่วมกับนิพจน์ทั่วไปตามค่าเริ่มต้น ( man aproposอ่านคำอธิบายและค้นหาว่า-rทำอะไร) และในตัวอย่างนี้ฉันกำลังมองหาทุก manpage ที่คำอธิบายเริ่มต้นด้วย "รายงาน"

หากต้องการค้นหาข้อมูลที่เกี่ยวข้องกับการอ่านการประมวลผลอินพุต / เอาต์พุตมาตรฐานและเข้าถึงxargsเป็นตัวเลือกที่เป็นไปได้:

man -k command| grep input
xargs (1)            - build and execute command lines from standard input

ควรอ่านDESCRIPTIONก่อนเริ่มต้น

ใช้เวลาและอ่านคำอธิบาย เพียงแค่อ่านคำอธิบายของxargsคำสั่งเราจะได้เรียนรู้ว่า:

  • xargsอ่านจาก STDIN และดำเนินการคำสั่งที่จำเป็น นอกจากนี้ยังหมายความว่าคุณจะต้องมีความรู้เกี่ยวกับการทำงานของอินพุตมาตรฐานและวิธีการจัดการผ่านคำสั่งไพพ์ไปยังเชน
  • /bin/echoพฤติกรรมเริ่มต้นคือการทำหน้าที่เหมือน นี่เป็นเคล็ดลับเล็ก ๆ น้อย ๆ ที่ว่าหากคุณต้องการเชื่อมโยงมากกว่าหนึ่งรายการxargsคุณไม่จำเป็นต้องใช้ echo ในการพิมพ์
  • นอกจากนี้เรายังได้เรียนรู้ว่าชื่อไฟล์ยูนิกซ์สามารถมีช่องว่างและบรรทัดใหม่ได้ซึ่งอาจเป็นปัญหาและอาร์กิวเมนต์-0เป็นวิธีการป้องกันสิ่งต่าง ๆ โดยใช้ตัวคั่นตัวละครแบบ null คำอธิบายเตือนคุณว่าคำสั่งที่ใช้เป็นอินพุตจำเป็นต้องสนับสนุนคุณลักษณะนี้ด้วยและ GNU findก็สนับสนุน ยิ่งใหญ่ xargsเราใช้จำนวนมากพบกับ
  • xargs จะหยุดถ้าถึงสถานะออก 255

คำอธิบายบางอย่างสั้นมากและนั่นเป็นเพราะซอฟต์แวร์ทำงานในวิธีที่ง่ายมาก อย่าคิดข้ามส่วนนี้ของ manpage ;)

สิ่งอื่นที่ต้องใส่ใจ ...

findคุณรู้ว่าคุณสามารถค้นหาไฟล์โดยใช้ มีตัวเลือกมากมายและหากคุณดูเพียงอย่างเดียวSYNOPSISคุณจะได้รับความเสียหายจากสิ่งเหล่านั้น มันเป็นเพียงส่วนปลายของภูเขาน้ำแข็ง ไม่รวมNAME, SYNOPSISและDESCRIPTIONคุณจะมีส่วนต่อไปนี้:

  • AUTHORS: ผู้ที่สร้างหรือช่วยเหลือในการสร้างคำสั่ง

  • BUGS: แสดงรายการข้อบกพร่องที่ทราบ อาจเป็นข้อ จำกัด ในการใช้งานเท่านั้น

  • ENVIRONMENT: ลักษณะของเชลล์ที่อาจได้รับผลกระทบจากคำสั่งหรือตัวแปรที่จะใช้

  • EXAMPLESหรือNOTES: อธิบายตนเอง

  • REPORTING BUGS: ใครที่คุณจะต้องติดต่อถ้าคุณพบข้อบกพร่องในเครื่องมือนี้หรือในเอกสารประกอบ

  • COPYRIGHT: บุคคลที่สร้างและปฏิเสธความรับผิดชอบเกี่ยวกับซอฟต์แวร์ ทั้งหมดที่เกี่ยวข้องกับลิขสิทธิ์ของซอฟต์แวร์นั้นเอง

  • SEE ALSO: คำสั่งเครื่องมือหรือลักษณะการทำงานอื่น ๆ ที่เกี่ยวข้องกับคำสั่งนี้และไม่สามารถพอดีกับส่วนอื่น ๆ

คุณอาจพบข้อมูลที่น่าสนใจเกี่ยวกับแง่มุมที่คุณต้องการของเครื่องมือในส่วนตัวอย่าง / บันทึกย่อ

ตัวอย่าง

ในขั้นตอนต่อไปนี้ฉันจะใช้findเป็นตัวอย่างเนื่องจากแนวคิดเป็น "ง่ายกว่า" กว่าที่xargsจะอธิบาย (คำสั่งหนึ่งค้นหาไฟล์และข้อตกลงอื่น ๆ ที่มี stdin และการดำเนินการตามคำสั่ง pipelined ของเอาต์พุตคำสั่งอื่น ๆ ) สมมติว่าเราไม่รู้อะไรเกี่ยวกับคำสั่งนี้ (หรือน้อยมาก)

ฉันมีปัญหาเฉพาะคือฉันต้องมองหาทุกไฟล์ที่มี.jpgนามสกุลและด้วย 500KiB (KiB = 1024 byte หรือที่เรียกกันทั่วไปว่า kibibyte) หรือมากกว่านั้นในโฟลเดอร์ ftp server

ก่อนอื่นให้เปิดคู่มือ: man find. SYNOPSISเป็นบาง ลองค้นหาสิ่งต่าง ๆ ในคู่มือ: พิมพ์/บวกคำที่คุณต้องการ ( size) มันจะทำดัชนีรายการจำนวนมาก-sizeที่จะนับขนาดเฉพาะ ได้ติดอยู่. ไม่ทราบวิธีค้นหาด้วย "มากกว่า" หรือ "น้อยกว่า" ขนาดที่กำหนดและชายคนนั้นไม่ได้แสดงให้ฉันเห็น

nขอให้มันลองและค้นหารายการถัดไปพบได้โดยการกดปุ่ม ตกลง. find \( -size +100M -fprintf /root/big.txt %-10s %p\n \)พบสิ่งที่น่าสนใจ: บางทีตัวอย่างนี้แสดงให้เราเห็นว่า-size +100Mมันจะค้นหาไฟล์ที่มี 100MB หรือมากกว่า ฉันจะยืนยันได้อย่างไร ไปที่หัวของ manpage และค้นหาคำอื่น ๆ

greaterอีกครั้งลองคำ การกดgจะนำเราไปที่หัวของ manpage /greaterและรายการแรกคือ:

 Numeric arguments can be specified as

    +n     for **greater** than n,

    -n     for less than n,

     n      for exactly n.

ฟังดูดี. ดูเหมือนว่าบล็อกของคู่มือนี้ยืนยันสิ่งที่เราสงสัย อย่างไรก็ตามสิ่งนี้จะไม่ใช้กับขนาดไฟล์เท่านั้น มันจะนำไปใช้กับสิ่งnที่สามารถพบได้ใน manpage นี้ (ตามวลีที่กล่าวว่า: "อาร์กิวเมนต์ที่เป็นตัวเลขสามารถระบุเป็น")

ดี. g /insensitiveให้เราหาวิธีที่จะกรองตามชื่อ: ทำไม? ตาย? WTF? เรามีเซิร์ฟเวอร์ FTP สมมุติที่ว่า "ระบบปฏิบัติการอื่น ๆ" คนที่จะให้ชื่อไฟล์ที่มีนามสกุลเป็น.jpg, ,.JPG .JpGสิ่งนี้จะนำเราไปสู่:

-ilname pattern
              Like  -lname,  but  the  match  is  case insensitive.  If the -L
              option or the -follow option is in  effect,  this  test  returns
              false unless the symbolic link is broken.

อย่างไรก็ตามหลังจากที่คุณค้นหาlnameคุณจะเห็นว่านี่จะเป็นการค้นหาลิงก์สัญลักษณ์เท่านั้น เราต้องการไฟล์จริง รายการถัดไป:

   -iname pattern
          Like -name, but the match is case insensitive.  For example, the
          patterns `fo*' and `F??' match  the  file  names  `Foo',  `FOO',
          `foo',  `fOo',  etc.   In these patterns, unlike filename expan‐
          sion by the shell, an initial '.' can be matched by  `*'.   That
          is, find -name *bar will match the file `.foobar'.   Please note
          that you should quote patterns as a matter of course,  otherwise
          the shell will expand any wildcard characters in them.

ยิ่งใหญ่ ฉันไม่จำเป็นต้องอ่าน-nameเพื่อดูว่า-inameเป็นกรณีที่ไม่มีความรู้สึกของการโต้แย้งนี้ ให้รวบรวมคำสั่ง:

คำสั่ง: find /ftp/dir/ -size +500k -iname "*.jpg"

อะไรคือความหมายที่นี่: ความรู้ที่ว่าไวด์การ์ดนั้น?หมายถึง "ตัวละครใด ๆ ที่ตำแหน่งเดียว" และ*แสดงถึง "ศูนย์หรือมากกว่าของตัวละครใด ๆ " -nameพารามิเตอร์จะให้บทสรุปของความรู้นี้

เคล็ดลับที่ใช้กับคำสั่งทั้งหมด

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

  • โดยทั่วไป-vหมายถึง verbose -vvvเป็นรูปแบบ "verbose มาก" ในซอฟต์แวร์บางตัว
  • ตามมาตรฐาน POSIX โดยทั่วไปแล้วหนึ่งอาร์กิวเมนต์อาร์กิวเมนต์สามารถซ้อนกันได้ ตัวอย่าง: tar -xzvf, cp -Rv.
  • โดยทั่วไป-Rและ / หรือ-rหมายถึงการเรียกซ้ำ
  • คำสั่งเกือบทั้งหมดมีความช่วยเหลือสั้น ๆ เกี่ยวกับ--helpตัวเลือก
  • --version แสดงเวอร์ชันของซอฟต์แวร์
  • -pในการคัดลอกหรือย้ายยูทิลิตี้หมายถึง "สงวนสิทธิ์"
  • -y หมายถึงใช่หรือ "ดำเนินการต่อโดยไม่มีการยืนยัน" ในกรณีส่วนใหญ่

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

ค่าเริ่มต้นของคำสั่ง

ในก้อนเพจเจอร์ของคำตอบนี้เราเห็นว่าเป็นเพจเจอร์ของless -is manพฤติกรรมเริ่มต้นของคำสั่งจะไม่แสดงที่ส่วนที่แยกจากกันบน manpages เสมอหรือในส่วนที่อยู่ด้านบนสุด

คุณจะต้องอ่านตัวเลือกเพื่อค้นหาค่าเริ่มต้นหรือหากคุณโชคดีการพิมพ์/pagerจะนำคุณไปสู่ข้อมูลนั้น สิ่งนี้ยังทำให้คุณต้องทราบแนวคิดของเพจเจอร์ (ซอฟต์แวร์ที่เลื่อน manpage) และนี่คือสิ่งที่คุณจะได้รับหลังจากอ่าน manpages จำนวนมากเท่านั้น

เหตุใดจึงสำคัญ ซึ่งจะเป็นการเปิดการรับรู้ของคุณถ้าคุณพบความแตกต่างในการเลื่อนและสีพฤติกรรมในขณะที่อ่านman(1)บน Linux ( less -isเพจเจอร์) หรือ FreeBSD man(1)ตัวอย่างเช่น

แล้วSYNOPSISไวยากรณ์ล่ะ

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

  • ตัวเลือกคือสวิตช์ที่กำหนดพฤติกรรมคำสั่ง " ทำสิ่งนี้ " " อย่าทำอย่างนี้ " หรือ " ทำแบบนี้ " มักเรียกว่าสวิตช์
  • ตัวเลือกอาร์กิวเมนต์จะใช้ในกรณีส่วนใหญ่เมื่อตัวเลือกไม่ได้เป็นไบนารี (เปิด / ปิด) เช่น-tบนภูเขาที่ระบุประเภทของระบบแฟ้ม ( -t iso9660, -t ext2) " ทำสิ่งนี้ด้วยดวงตาที่ปิด " หรือ "ให้อาหารสัตว์ แต่มีเพียงสิงโต " เรียกว่าข้อโต้แย้ง
  • ตัวถูกดำเนินการเป็นสิ่งที่คุณต้องการให้คำสั่งนั้นดำเนินการ ถ้าคุณใช้ cat file.txtตัวถูกดำเนินการเป็นไฟล์ในไดเรกทอรีปัจจุบันของคุณและเนื้อหานั้นจะปรากฏSTDOUTขึ้น lsเป็นคำสั่งที่ตัวถูกดำเนินการเป็นตัวเลือก จุดสามจุดหลังจากตัวถูกดำเนินการโดยปริยายจะบอกคุณว่าcatสามารถดำเนินการกับตัวถูกดำเนินการหลายตัว (ไฟล์) ในเวลาเดียวกัน คุณอาจสังเกตเห็นว่าคำสั่งบางอย่างได้ตั้งค่าชนิดของตัวถูกดำเนินการที่จะใช้ ตัวอย่าง:cat [OPTION] [FILE]...

เรื่องย่อที่เกี่ยวข้อง:

วิธีนี้จะไม่ทำงานเมื่อใด

  • Manpages ที่ไม่มีตัวอย่าง
  • จัดการที่ตัวเลือกมีคำอธิบายสั้น ๆ
  • เมื่อคุณใช้คำหลักทั่วไปเช่นand, to, forภายใน manpages
  • Manpages ที่ไม่ได้ติดตั้ง ดูเหมือนว่าจะชัดเจน แต่ถ้าคุณไม่ได้lftpติดตั้ง (และ manpages) คุณไม่สามารถรู้ได้ว่าเป็นตัวเลือกที่เหมาะสมในฐานะไคลเอนต์ ftp ที่ซับซ้อนยิ่งขึ้นโดยการรันman -k ftp

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

อื่น ๆ : ภาษาโปรแกรมและโมดูล:

หากคุณกำลังเขียนโปรแกรมหรือสร้างสคริปต์โปรดจำไว้ว่าบางภาษามีระบบ manpages ของตัวเองเช่นperl( perldocs), python ( pydocs), ฯลฯ โดยเก็บข้อมูลเฉพาะเกี่ยวกับวิธี / funcions ตัวแปรพฤติกรรมและข้อมูลสำคัญอื่น ๆ เกี่ยวกับโมดูล คุณกำลังพยายามใช้และเรียนรู้ สิ่งนี้มีประโยชน์สำหรับฉันเมื่อฉันสร้างสคริปต์เพื่อดาวน์โหลดอีเมล IMAP ที่ยังไม่ได้อ่านโดยใช้perl Mail::IMAPClientโมดูล

คุณจะต้องคิดออก manpages เฉพาะเหล่านั้นโดยใช้man -kหรือค้นหาออนไลน์ ตัวอย่าง:

[root@host ~]# man -k doc | grep perl
perldoc              (1)  - Look up Perl documentation in Pod format


[root@host ~]# perldoc Mail::IMAPClient
IMAPCLIENT(1)         User Contributed Perl Documentation        IMAPCLIENT(1)

NAME
       Mail::IMAPClient - An IMAP Client API

SYNOPSIS
         use Mail::IMAPClient;

         my $imap = Mail::IMAPClient->new(
           Server   => ’localhost’,
           User     => ’username’,
           Password => ’password’,
           Ssl      => 1,
           Uid      => 1,
         );

... สิ่งอื่น ๆ อีกมากมายที่นี่พร้อมส่วนเหมือน manpage ปกติ ...

ด้วยหลาม:

[root@host ~]# pydoc sys
Help on built-in module sys:

NAME
    sys

FILE
    (built-in)

MODULE DOCS
    http://www.python.org/doc/current/lib/module-sys.html

DESCRIPTION
    This module provides access to some objects used or maintained by the
    interpreter and to functions that interact strongly with the interpreter.
...again, another full-featured manpage with interesting info...

หรือhelp()funcion ภายในเปลือกหลามถ้าคุณต้องการอ่านรายละเอียดเพิ่มเติมของวัตถุ:

nwildner@host:~$ python3.6
Python 3.6.7 (default, Oct 21 2018, 08:08:16)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help(round)

Help on built-in function round in module builtins:

round(...)
    round(number[, ndigits]) -> number

    Round a number to a given precision in decimal digits (default 0 digits).
    This returns an int when called with one argument, otherwise the
    same type as the number. ndigits may be negative.

โบนัส:wtfคำสั่งสามารถช่วยให้คุณมีตัวย่อและการทำงานเป็นwhatisถ้าย่อที่มันไม่มีฐานข้อมูลจะพบ แต่สิ่งที่คุณกำลังค้นหาเป็นส่วนหนึ่งของฐานข้อมูลคนที่ ใน Debian คำสั่งนี้เป็นส่วนหนึ่งของbsdgamesแพ็คเกจ ตัวอย่าง:

nwildner@host:~$ wtf rtfm
RTFM: read the fine/fucking manual
nwildner@host:~$ wtf afaik
AFAIK: as far as I know
nwildner@host:~$ wtf afak
Gee...  I don't know what afak means...
nwildner@host:~$ wtf tcp
tcp: tcp (7)              - TCP protocol.
nwildner@host:~$ wtf systemd
systemd: systemd (1)          - systemd system and service manager

man find | grep ...นอกจากนี้คุณยังสามารถทำ ฉันชอบman command | sed -n '/^[[:space:]]*-/,/^$/p'
mikeserv

6
ได้. คุณสามารถ. ฉันแค่สมมติว่าโอเปอเรเตอร์คือ "noob" และพยายามเริ่มต้นด้วย manpages :)

3
คำตอบนี้ต้องเป็นผลลัพธ์สูงสุดของ "ฉันจะใช้งานได้อย่างมีประสิทธิภาพได้manอย่างไร" ขอบคุณและทำได้ดีมาก
user1717828

8
@ nwildner คุณสมควรได้รับขนมหวานหลังจากคำตอบที่ยิ่งใหญ่และมีรูปแบบที่ดี เยี่ยมมาก!
Willian Paixao

6
ฉันคิดว่าควรเพิ่ม Linux นี้ เป็นmanหน้าแน่นอน
myaut

38

นี่เป็นคำอธิบายที่ค่อนข้างดีในman man:

   The following conventions apply to the SYNOPSIS section and can be used
   as a guide in other sections.

   bold text          type exactly as shown.
   italic text        replace with appropriate argument.
   [-abc]             any or all arguments within [ ] are optional.
   -a|-b              options delimited by | cannot be used together.

   argument ...       argument is repeatable.
   [expression] ...   entire expression within [ ] is repeatable.

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

บางครั้งบทสรุปก็เพียงพอแล้ว ตัวอย่างเช่นในman ls:

SYNOPSIS
       ls [OPTION]... [FILE]...

บางครั้งมันก็ไร้ประโยชน์เว้นแต่คุณจะรู้วิธีใช้คำสั่งที่เป็นปัญหา ตัวอย่างเช่นman dd:

   dd [OPERAND]...
   dd OPTION

ดังนั้นโดยสรุปไม่ต้องกังวลหากคุณไม่ได้รับบทสรุป นั่นเป็นเรื่องปกติ อ่าน man page เอง


ขอบคุณสำหรับคำแนะนำโดยเฉพาะย่อหน้า "เป็นอย่างไร ... "
user1717828

21

พื้นฐานบางอย่างเพื่อทำความเข้าใจเรื่องย่อ

  • แต่ละอัน[foo]แทนอาร์กิวเมนต์หรือพารามิเตอร์เสริม
  • เมื่อ[foo [ bar ] ]มีการใช้ไวยากรณ์คุณอาจใช้ foo และคุณอาจเพิ่มแถบ
  • พารามิเตอร์ตัวเลือกบังคับใช้วิธีนี้[ -S size ]ซึ่งบอกว่าอาร์กิวเมนต์ -S กำลังรอขนาดบังคับ

ตัวอย่างเช่น foo [-S size ] filename ...

วิธี

  • คำสั่งคือ foo
  • ตัวเลือกพารามิเตอร์-Sสามารถใช้งานได้คุณต้องบอกsize(ชื่อให้คำใบ้)
  • อาร์กิวเมนต์บังคับคือfilename(นี่ให้คำแนะนำแก่คุณดูman mkdir)
  • elipsis ...บอกคุณว่าคุณสามารถใช้หลายไฟล์ได้

คุณยังต้องไปลงลึกเข้าไปใน man page เพื่อทำความเข้าใจตัวเลือก (ในกรณีตัวอย่างของฉันด้านบนสิ่งที่-S sizeเกี่ยวกับ)


14

manหน้าปกติจะแสดงด้วยlessในปัจจุบัน ที่ทำให้สามารถค้นหาได้ ฉันจะไม่รำคาญกับบทสรุปโดยเฉพาะอย่างยิ่งไม่ใช่เพราะคุณมี commandline เฉพาะที่คุณต้องการเข้าใจ

กด/และเริ่มพิมพ์แล้ว-I Enterตีครั้งแรกจะอยู่ในบทสรุปที่สอง (ใช้nสำหรับถัดไป) -Iทำให้คุณได้รับคำอธิบายรายละเอียดสำหรับ


11

สิ่งสำคัญที่ต้องจำคือคุณไม่สามารถดูคู่มือสำหรับคำสั่งเดียวในกรณีของคำสั่งที่ดำเนินการคำสั่งอื่น

สำหรับคำสั่งตัวอย่างของคุณ

locate something | xargs -I {} bash -c "if [ -d "{}" ]; then echo {}; fi"

คุณต้องการข้อมูลไม่เพียงxargsแต่ยังbashและ[(อาจอยู่ในtestmanpage) คุณอาจต้องการข้อมูลเกี่ยวกับเชลล์ของคุณ (อาจทุบตี) สำหรับกฎการอ้างอิงเนื่องจากคำสั่งของคุณมีสตริงที่ซับซ้อนที่ยกมา ฉันสามารถบอกคุณได้แล้วว่าอาร์กิวเมนต์ที่ยกมานั้นผิด (และผิดในลักษณะที่จะปรากฏขึ้นเมื่อคุณพบไฟล์ที่มีช่องว่างในชื่อ); ภายในอาจจะ"{}"'{}'

ดังนั้นก่อนอื่นคุณต้องดู manpage ของ xargs และดู[-I replace-str]ว่าอะไร-I {}คือความหมายและ[command [initial-arguments]]อะไรbashและทุกอย่างหลังจากนั้น จากนั้นคุณจะอ้างถึงbashmanpage สำหรับสิ่งที่-cทำ ฯลฯ


6

การเพิ่มคำตอบที่ยอดเยี่ยมให้แล้ว:

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

2) มันเป็น "คู่มือ" คู่มือถูกออกแบบมาเพื่อช่วยให้คุณจำรายละเอียดของสิ่งที่คุณเข้าใจอยู่แล้ว มันถูกออกแบบมาเพื่อให้คุณสามารถรับรายละเอียดที่คุณต้องการได้อย่างรวดเร็วและออกไป (และวิธีที่มากเกินไปไม่มีตัวอย่างการใช้งานหรือเพียงเล็กน้อยเท่านั้น)

เมื่อฉันต้องการที่จะเรียนรู้สิ่งใหม่ ๆ แม้จะเป็นคุณลักษณะเล็ก ๆ ของคำสั่งที่ไม่ชัดเจนกับผมผมไปที่เว็บและการค้นหาโดยใช้คำหลักที่ดีที่สุดที่ฉันสามารถคิด (เช่นLinux xargs) และเพิ่มคำhowto, หรือexamples tutorialนี่เป็นผลงานที่ค่อนข้างบ่อย

ฉันมักจะใช้ duckduckgo เพราะมันจะรักษาความเป็นส่วนตัวของฉัน แต่ถ้าฉันต้องการการควบคุมที่มากขึ้นฉันใช้ Google เพราะฉันสามารถบอกได้แค่การค้นหาภายในเว็บไซต์เดียวหรือเพื่อแสดงผลลัพธ์จากปีที่แล้วเท่านั้น (มีตัวเลือกการค้นหาขั้นสูงอื่น ๆ อีกมากมายคุณสามารถ Google ได้))

เคล็ดลับอื่น:

สำหรับคำสั่งที่ฉันอ้างอิงบ่อยๆฉันบันทึก man page ไว้ในไฟล์ข้อความ

man bash > bashman.txt

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

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


4

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


2

มีเครื่องมือที่มีประโยชน์มากมายเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง linux:

  1. cheatจะแสดงตัวเลือกที่ใช้บ่อยสำหรับบรรทัดคำสั่ง นอกจากนี้คุณสามารถเพิ่มของคุณเองcommand + optionที่จะแสดงผ่านcheatสำหรับคำสั่งเฉพาะ
  2. bropagesเครื่องมือที่แสดงให้เห็นตัวอย่างบางอย่างสำหรับบรรทัดคำสั่งก็เป็นไปได้ที่จะเพิ่มตัวอย่างเช่นคุณเป็นเจ้าของหรือ upvote / downvote bro thanksตัวอย่างที่ได้รับหลังจากที่ได้รับรหัสยืนยันผ่าน คำสั่งต้องโหวตจะปรากฏที่ด้านบนของbroหน้า

1

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


0

> ฉันกำลังมองหาความช่วยเหลือในการแปลหน้าคนเพื่อทำความเข้าใจคำสั่งที่ซับซ้อน

ฉันคิดว่านี่เป็นความเข้าใจผิดที่นี่ สิ่งที่ทำให้ Linux / UNIX มีประสิทธิภาพมากคือคุณสามารถสร้างคำสั่งที่ยาวและมีประสิทธิภาพได้เช่นเปลี่ยนเส้นทาง stdout ของหนึ่งคำสั่ง (ที่นี่locate) ไปยัง stdin ของอีกอัน (ที่นี่xargs) ผ่านไพพ์ ( |) ดังนั้นตามที่ Random832 พูดถูกต้องคุณจะไม่พบ manpage เดียวที่อธิบายสิ่งที่คำสั่งตัวอย่างของคุณทำ

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

จากนั้นอ้างถึง manpages เมื่อคุณจำเป็นต้องรู้รายละเอียดของคำสั่งเฉพาะ

เมื่อคุณได้รับส่วนสำคัญแล้วCommandlinefuและBash One-Linersก็คุ้มค่าที่จะอ่านเพื่อรับตัวอย่างที่ดี


-1

ในการค้นหาบางอย่างที่เฉพาะเจาะจงในคำสั่งในหน้าคนคุณสามารถใช้:

man echo | grep output.

แต่ในการค้นหาสวิตช์ (ตัวอย่าง-n) คุณต้องใช้วิธีนี้:

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