ฉันอยากรู้ว่าเคล็ดลับที่คุณใช้เพื่อจำตัวเลือกต่าง ๆ สำหรับคำสั่งต่าง ๆ คืออะไร? การค้นหาหน้าคนตลอดเวลานั้นใช้เวลานานและไม่เจ๋งมาก!
man
หน้าเจ๋งมาก ... :)
ฉันอยากรู้ว่าเคล็ดลับที่คุณใช้เพื่อจำตัวเลือกต่าง ๆ สำหรับคำสั่งต่าง ๆ คืออะไร? การค้นหาหน้าคนตลอดเวลานั้นใช้เวลานานและไม่เจ๋งมาก!
man
หน้าเจ๋งมาก ... :)
คำตอบ:
เคล็ดลับง่าย ๆ : คุณทำไม่ได้ มันเสียเวลาและไม่จำเป็นเลย การจำคำสั่งตัวเลือกไม่ใช่ทักษะที่มีประโยชน์อย่างยิ่ง มันสำคัญมากที่จะต้องเข้าใจว่าการทำงานโดยทั่วไปและมีความคิดที่คลุมเครือว่ามีเครื่องมือใดบ้างในตอนแรกและสิ่งที่คุณใช้ในการทำงาน ทักษะที่สำคัญมากที่นี่คือการรู้วิธีค้นหาสิ่งที่คุณยังไม่รู้
หน้าคนใช้เวลานาน? ไม่เช่นนั้น ไม่ใช่ว่าคุณจะต้องอ่านอย่างน้อยไม่ใช่ทุกครั้งที่มีฟังก์ชั่นการค้นหา ดังนั้นถ้าผมจำไม่ได้ว่าตัวเลือกที่คลุมเครือเป็นหนึ่งในการhdparm
ที่จะไม่ได้ใช้งานจับเวลาปิดการใช้งานบนดิสก์ WD บางอย่างผมทำman hdparm
และและเดี๋ยวก่อนมันเป็น/idle3
-J
การมองสิ่งต่าง ๆ เช่นนี้เป็นไปอย่างรวดเร็วฉันจำไม่ได้เลยว่าทำหลังจากนั้น
ลองนึกภาพใครบางคนกำลังจดจำhdparm
ตัวเลือกทั้งหมดจริง ๆ เสียเวลาเปล่า
ไม่เป็นไรถ้าคุณจำตัวเลือกได้เพราะคุณใช้บ่อย สิ่งนั้นจะเกิดขึ้นโดยอัตโนมัติโดยไม่ต้องคิดอะไร แต่จริง ๆ แล้วใช้เวลาในการจดจำพวกเขา ... สิ่งที่ควรจะเป็นสิ่งที่ดีสำหรับ? ทดสอบกระดาษ?
man hdparm | less -p idle3
นอกจากนี้ยังเป็นวิธีที่สะดวกในการข้ามไปยังคำศัพท์ที่ต้องการ ...
rm -i -f -r
, ln -s
, df -s -h
, cp -r -i
, ls -l -h -a
ฯลฯ (รายชื่อแตกต่างกันไปจากคนสู่คน)
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
ที่จะให้ตัวเลือกพารามิเตอร์มากมายสำหรับคำสั่งจำนวนมาก
zsh
bash
เสร็จสมบูรณ์ไม่สนับสนุนการเพิ่มคำอธิบายลงในรายการเสร็จสมบูรณ์หรือการจัดกลุ่มรายการ ( --classify -F -- append file type indicators
ตัวอย่างเช่นใน GNU ls เสร็จสมบูรณ์) ดังนั้นจึงไม่เป็นประโยชน์เกือบเท่า zsh
การใช้ประวัติคำสั่งที่ยาวมากและการเจาะผ่านมันมีประโยชน์มาก
โดยทั่วไปฉันจะรวบรวมไฟล์ประวัติเชลล์ทั้งหมดและ grep ผ่านพวกเขา
ผลลัพธ์ที่พบมีหลายกรณีที่มีประโยชน์มากเพราะง่ายต่อการค้นหาคำหลักที่ดี
ค้นหาอาร์กิวเมนต์แบบพิเศษที่คุณใช้เช่น URL คุณจะพบคำสั่งและตัวเลือกที่เกี่ยวข้องเช่นกัน และค้นหาตัวเลือกที่พิเศษคุณอาจพบข้อโต้แย้งที่เกี่ยวข้องด้วย
คำสั่งส่วนใหญ่มี - ช่วยสำหรับการอ้างอิงอย่างรวดเร็วและมักจะเพียงพอที่จะเตือนสิ่งที่เป็นสิ่งที่ฉันเคยรู้
ที่กล่าวว่ามีนิสัยในการเขียน - ช่วยแทน -h หรือแม้กระทั่ง -? คุณไม่เคยรู้เลยว่า -h คืออะไรก่อนที่จะดูผลลัพธ์การใช้งานหรือหน้าคู่มือ ในกรณีที่เลวร้ายที่สุด -h อาจเป็นมือสั้น ๆ สำหรับ - ทำลายอัตโนมัติ
--help
มักจะไม่ได้มี -?
ต้องการ quoting กับzsh
, csh
, tcsh
หรือfish
หรือถ้ามีไฟล์ที่มีชื่อจะ-
ตามด้วยตัวอักษรตัวเดียวในไดเรกทอรีปัจจุบัน -:
อาจจะดีกว่าที่นั่น
ตัวเลือกหนึ่งที่ฉันชอบคือการสร้างชื่อแทนที่มีตัวเลือกเหมือนหรือคล้ายกันเช่น
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 มีแนวโน้มที่จะแสดงมากเกินไป
rm -iv
ทำอะไรOP ก็อาจจำไม่ได้ว่าrmiv
ทำอะไร ฉันไม่คิดว่ามันเป็นเครื่องหมายยัติภังค์ที่เป็นปัญหา
rm -iv
ถึงsafe_delete
หรือrm_prompt
ฉันมักจะทำ:
man ${CMD} | grep 'what was I thinking about?'
หรือการเปลี่ยนแปลงบางอย่างของมัน กับบางgrep
s คุณสามารถระบุ -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
อาจไม่ได้เหงื่อเหลือ
grep
man pages เมื่อมองหาฟีเจอร์เฉพาะมันค่อนข้างมีประโยชน์