คุณจำตัวเลือกคำสั่งได้อย่างไร [ปิด]


13

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


2
เหนือสิ่งอื่นใด: unix.stackexchange.com/questions/138720/…มีประโยชน์สำหรับการสร้างบทสรุปที่กำหนดเองของสิ่งต่าง ๆ ที่ฉันมักจะลืมหรือลืม BTW ยิ่งคุณอ่านหน้าคนมากเท่าไหร่คุณก็ยิ่งชื่นชมพวกเขามากขึ้นเท่านั้น
goldilocks

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

3
การอ่านmanหน้าเจ๋งมาก ... :)
jasonwryan

1
ถาม: คุณมาที่Carnegie Hall ได้อย่างไร A: ฝึก!
evilsoup

4
ฉันคิดว่านี่สมควรได้รับ XKCD: xkcd.com/1168
Darkhogg

คำตอบ:


39

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

หน้าคนใช้เวลานาน? ไม่เช่นนั้น ไม่ใช่ว่าคุณจะต้องอ่านอย่างน้อยไม่ใช่ทุกครั้งที่มีฟังก์ชั่นการค้นหา ดังนั้นถ้าผมจำไม่ได้ว่าตัวเลือกที่คลุมเครือเป็นหนึ่งในการhdparmที่จะไม่ได้ใช้งานจับเวลาปิดการใช้งานบนดิสก์ WD บางอย่างผมทำman hdparmและและเดี๋ยวก่อนมันเป็น/idle3 -Jการมองสิ่งต่าง ๆ เช่นนี้เป็นไปอย่างรวดเร็วฉันจำไม่ได้เลยว่าทำหลังจากนั้น

ลองนึกภาพใครบางคนกำลังจดจำhdparmตัวเลือกทั้งหมดจริง ๆ เสียเวลาเปล่า

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


4
Upvoted: ทักษะคือการค้นหาสิ่งที่คุณต้องการไม่ใช่การท่องจำ man hdparm | less -p idle3นอกจากนี้ยังเป็นวิธีที่สะดวกในการข้ามไปยังคำศัพท์ที่ต้องการ ...
jasonwryan

ฉันเห็นด้วยอย่างยิ่งกับคำตอบนี้ แต่ฉันคิดว่ามันคุ้มค่าที่จะเน้นว่ามันเป็นเรื่องปกติที่จะมีตัวเลือกที่ใช้บ่อยที่สุดสำหรับโปรแกรมทั่วไปที่จดจำไว้เพียงเพราะคุณใช้บ่อย ชอบrm -i -f -r, ln -s, df -s -h, cp -r -i, ls -l -h -aฯลฯ (รายชื่อแตกต่างกันไปจากคนสู่คน)
David Z

8

zsh มีวิ่งช่วยAlthฟังก์ชั่นโดยค่าเริ่มต้นผูกไว้กับ ด้วยฟังก์ชั่นนี้คุณสามารถเริ่มพิมพ์คำสั่งด้วยตัวเลือกมากมายหรือซับซ้อนที่จำได้ยากrsyncตัวอย่างเช่นจากนั้นmanเปิดหน้าคำสั่งนั้น ดังนั้น:

 rsync Alth

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

rysnc -azP file dir/

ในฐานะที่เป็นวิกิบันทึก:

ฟังก์ชั่นสามารถปรับแต่งเพิ่มเติมได้โดยการกำหนดฟังก์ชั่นตัวช่วยของรูปแบบ run-help-command มีฟังก์ชันสามอย่างที่มีอยู่ในการแจกจ่ายมาตรฐาน: run-help-git, run-help-svk และ run-help-svn

ในทำนองเดียวกันbashมีbash-completeที่จะให้ตัวเลือกพารามิเตอร์มากมายสำหรับคำสั่งจำนวนมาก
ericx

2
@ericx "ทำนองเดียวกัน" อาจจะพูดเกินจริงไปเล็กน้อย ... Zsh ก็เสร็จสมบูรณ์แล้วนี่เป็นขั้นตอนขึ้นมา
jasonwryan

เฮ้ ... ฉันเคยได้ยินคนโม้ แต่ฉันไม่เคยลองzsh
ericx

@ericx, การทำให้bashเสร็จสมบูรณ์ไม่สนับสนุนการเพิ่มคำอธิบายลงในรายการเสร็จสมบูรณ์หรือการจัดกลุ่มรายการ ( --classify -F -- append file type indicatorsตัวอย่างเช่นใน GNU ls เสร็จสมบูรณ์) ดังนั้นจึงไม่เป็นประโยชน์เกือบเท่า zsh
Stéphane Chazelas

** root @ milicent ** ~ / tmp ** อ. ส.ค. 05 09:24:55 # ข้อมูล pkg (-e -d -f -l -o -p -D) -r [แสดงการพึ่งพาย้อนกลับ] (-e -d -r -f -o -p -D) -l [แสดงไฟล์ทั้งหมด] (-e -d -r -l -f -p -p -D) -o [แสดงแหล่งกำเนิด] (-e -d -r - l -o -f -D) -p [คำนำหน้าจอแสดงผล] (-e -d -r -l -o -p -D) -f [แสดงข้อมูลแบบเต็ม] (-e -d -r -l -o -p -f) -D [แสดงข้อความ] (-e -f -r -l -o -p -D) -d [แสดงการขึ้นต่อกัน] (-f -d -r -l -o -p -D) -e [ส่งคืน 0 หากติดตั้ง <pkg-name>] (-g -X -a -F) -x [แพ็คเกจกระบวนการที่ตรงกับรูปแบบ regex] (-g -x -X -F) -a [ประมวลผลแพคเกจทั้งหมด
ericx

4

การใช้ประวัติคำสั่งที่ยาวมากและการเจาะผ่านมันมีประโยชน์มาก

โดยทั่วไปฉันจะรวบรวมไฟล์ประวัติเชลล์ทั้งหมดและ grep ผ่านพวกเขา

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


4

คำสั่งส่วนใหญ่มี - ช่วยสำหรับการอ้างอิงอย่างรวดเร็วและมักจะเพียงพอที่จะเตือนสิ่งที่เป็นสิ่งที่ฉันเคยรู้

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


2
... คำสั่งส่วนใหญ่ในระบบ GNU คำสั่งบนระบบปฏิบัติการ Unix --helpมักจะไม่ได้มี -?ต้องการ quoting กับzsh, csh, tcshหรือfishหรือถ้ามีไฟล์ที่มีชื่อจะ-ตามด้วยตัวอักษรตัวเดียวในไดเรกทอรีปัจจุบัน -:อาจจะดีกว่าที่นั่น
Stéphane Chazelas

อืม .. ระบบที่ไม่ใช่ GNU หลายตัวมีผลการใช้งานที่น่าตกใจพวกเขาไม่มีประโยชน์ที่จะมอง ในกรณีเช่นนี้ให้ดูหน้าคน & โชคดีที่จำได้ยากเพราะไม่มีอะไรจะใช้งานได้อีก
kerolasa

"ที่กล่าวว่ามีนิสัยในการเขียน" คำที่หายไป?
Faheem Mitha

1

ตัวเลือกหนึ่งที่ฉันชอบคือการสร้างชื่อแทนที่มีตัวเลือกเหมือนหรือคล้ายกันเช่น

alias rmi='rm -i'
alias rmiv='rm -iv'
alias rmv='rm -v'
alias cpr='cp -r'
alias cprv='cp -rv'

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

แนวทางอื่นที่มีนามแฝงคือเลือกตัวเลือกที่ใช้บ่อยที่สุดและสร้างนามแฝงสั้น ๆ ที่ใช้พวกเขา เช่นlsฉันทำเกือบทุกครั้งlและเป็นเพราะฉันมี:

alias l='ls -alFtrG'

อีกทางเลือกหนึ่งคือการนำตัวเลือกที่คุณต้องการไปยังคำสั่งพื้นฐานเช่น

alias ls='ls -F --color=always'

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

ตัวเลือกอื่นที่ฉันชอบคือชื่อแทนเพื่อให้การค้นหาประวัติของฉันง่ายขึ้นและฉันมีนามแฝงที่คล้ายกันสองรายการ:

alias hg='history | tail -200 | grep -i'
alias hga='history | grep -i'

ตัวอย่างเหล่านี้ให้ฉันค้นหาการใช้คำสั่ง:

hg lsจะแสดงการใช้งานล่าสุดของ ls จากประวัติ
hga lsจะแสดงการใช้งานทั้งหมดของ ls จากประวัติทั้งหมดของฉัน

ฉันพัฒนา hg หลังจากพบว่า hga มีแนวโน้มที่จะแสดงมากเกินไป


4
ถ้า OP จำไม่ได้ว่าrm -ivทำอะไรOP ก็อาจจำไม่ได้ว่าrmivทำอะไร ฉันไม่คิดว่ามันเป็นเครื่องหมายยัติภังค์ที่เป็นปัญหา
tobyink

ฉันจะใช้นามแฝงrm -ivถึงsafe_deleteหรือrm_prompt
slebetman

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

1

ฉันมักจะทำ:

man ${CMD} | grep 'what was I thinking about?'

หรือการเปลี่ยนแปลงบางอย่างของมัน กับบางgreps คุณสามารถระบุ -C / A / B สำหรับบริบท , หลังและก่อนตามลำดับ ถ้าไม่nlและsedสามารถจับคู่ได้ดี:

man hdparm |                      #hard to forget
nl -bp'idle3' -nln -w1 |          #I had to grep man to put this together
sed -n '/^[0-9]/{N;N;N;s///p}'    #no print until line begins w/ number, next,next,next

           Drive's "idle3" timeout value.  This timeout
            controls how often the drive parks its heads
            and  enters  a  low power consumption state.
            The factory default is  eight  (8)  seconds,
           zero (0) to disable the WD idle3 timer  com‐
            pletely (NOT RECOMMENDED!).

     -k     Get/set  the "keep_settings_over_reset" flag

เทคนิคเดียวกันนี้ใช้กับ--helpเมนูได้หากคุณมี แต่คุณอาจต้องทำ${CMD} --help 2>&1 | ..filter..เพราะเป็นวิธีปฏิบัติที่เป็นมาตรฐานพอสมควรในการพิมพ์สิ่งต่าง ๆstderrเหล่านี้ไป

อย่างไรก็ตามผมคิดว่าคุณธรรมของเรื่องคือจำอย่างน้อย และman grepอาจไม่ได้เหงื่อเหลือ


1
+1 บ่อยครั้งที่ฉันใช้grepman pages เมื่อมองหาฟีเจอร์เฉพาะมันค่อนข้างมีประโยชน์
John WH Smith

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