วิธีใช้ประวัติ Bash ของคุณใน Linux หรือ macOS Terminal
bash shell คือสภาพแวดล้อมของเทอร์มินัลมาตรฐานที่มาพร้อมกับดิสทริบิวชันส่วนใหญ่ที่มาพร้อมกับ macOS และพร้อมสำหรับการติดตั้งบน Windows 10 ซึ่งจะจดจำคำสั่งที่คุณพิมพ์และเก็บไว้ในไฟล์ประวัติ คุณอาจรู้พื้นฐานบางอย่างของประวัติทุบตี แต่มันมีประสิทธิภาพมากกว่าที่คุณคิด.
แป้นพิมพ์ลัด
เพื่อเลื่อนดูประวัติทุบตีของคุณคุณสามารถใช้แป้นพิมพ์ลัดที่มีประโยชน์มากมายของ bash กดทางลัดและคำสั่งที่คุณใช้ก่อนหน้านี้จะปรากฏขึ้นที่พร้อมท์.
- ลูกศรขึ้น หรือ Ctrl + P: ไปที่คำสั่งก่อนหน้าในประวัติของคุณ กดปุ่มหลาย ๆ ครั้งเพื่อเดินย้อนกลับผ่านคำสั่งที่คุณใช้.
- ลูกศรลง หรือ Ctrl + N: ไปที่คำสั่งถัดไปในประวัติของคุณ กดปุ่มหลาย ๆ ครั้งเพื่อเดินไปข้างหน้าผ่านคำสั่งที่คุณใช้.
- Alt + R: ยกเลิกการเปลี่ยนแปลงคำสั่งที่คุณดึงออกมาจากประวัติของคุณหากคุณแก้ไขมันในบรรทัดปัจจุบัน.
Bash ยังมีโหมด“ เรียกคืน” พิเศษที่คุณสามารถใช้เพื่อค้นหาคำสั่งที่คุณเคยเรียกใช้ก่อนหน้านี้แทนที่จะเลื่อนดูทีละตัว.
- Ctrl + R: เรียกคืนคำสั่งสุดท้ายที่ตรงกับอักขระที่คุณให้ไว้ กดทางลัดนี้แล้วเริ่มพิมพ์เพื่อค้นหาคำสั่ง bash history.
- Ctrl + O: เรียกใช้คำสั่งที่คุณพบด้วย Ctrl + R.
- Ctrl + G: ออกจากโหมดค้นหาประวัติโดยไม่เรียกใช้คำสั่ง.
ดูประวัติทุบตีของคุณ
คุณสามารถพิมพ์ประวัติทุบตีทั้งหมดของคุณไปที่หน้าจอโดยใช้คำสั่งเดียว:
ประวัติศาสตร์
คุณจะเห็นรายการคำสั่งทั้งหมดในประวัติทุบตีของคุณพร้อมกับตัวเลขทางด้านซ้ายของแต่ละคำสั่ง คำสั่งที่มีเครื่องหมาย“ 1” อยู่ข้างหน้านั้นเป็นคำสั่งที่เก่าแก่ที่สุดในประวัติทุบตีของคุณในขณะที่คำสั่งที่มีตัวเลขสูงสุดเป็นคำล่าสุด.
คุณสามารถทำอะไรก็ได้ที่คุณชอบด้วยเอาท์พุท ตัวอย่างเช่นคุณสามารถส่งไปที่ grep
คำสั่งเพื่อค้นหาประวัติคำสั่งของคุณ.
ประวัติศาสตร์ gre_s your_search
คุณสามารถไปป์กับ หาง
คำสั่งเพื่อดูคำสั่งล่าสุดจำนวนเล็กน้อยที่คุณรัน ตัวอย่างเช่นคำสั่งต่อไปนี้จะแสดง 5 รายการสุดท้ายในประวัติของคุณ.
ประวัติศาสตร์ หาง -5
เรียกใช้คำสั่งจากประวัติของคุณ
Bash สามารถ "ขยาย" คำสั่งก่อนหน้าได้อย่างรวดเร็วหรือขยายและแก้ไขคำสั่งเหล่านั้น คุณลักษณะนี้เรียกว่า "การขยายประวัติ" และใช้เครื่องหมายอัศเจรีย์หรือที่เรียกว่า "ปัง" เพียงพิมพ์พวกเขาที่พรอมต์และกด Enter เพื่อเรียกใช้พวกเขาเช่นคุณต้องการเรียกใช้คำสั่งอื่น ๆ.
ในการรันคำสั่งเฉพาะจากประวัติของคุณด้วยหมายเลขให้ใช้คำสั่งต่อไปนี้:
!#
ตัวอย่างเช่นสมมติว่าคุณต้องการเรียกใช้คำสั่งที่ 12 จากประวัติทุบตีของคุณ นั่นคือคำสั่งที่มี "12" ทางด้านซ้ายของมันเมื่อคุณเรียกใช้ ประวัติศาสตร์
คำสั่ง คุณพิมพ์คำสั่งต่อไปนี้.
!12
หากต้องการรันคำสั่งล่าสุดอีกครั้งที่คุณรันให้พิมพ์คำสั่งต่อไปนี้ สิ่งนี้มีผลเช่นเดียวกับการกดลูกศรขึ้นหนึ่งครั้งเพื่อดูคำสั่งก่อนหน้าจากนั้นกด Enter.
!!
นอกจากนี้คุณยังสามารถอ้างถึงคำสั่งในจำนวนบรรทัดกลับ ตัวอย่างเช่น, !-2
จะเรียกใช้คำสั่งที่สองถึงคำสั่งสุดท้ายที่คุณเรียกใช้. !!
หมายถึงสิ่งเดียวกัน !-1
.
การขยายตัวนี้ทำงานได้ทุกที่ในบรรทัด คุณสามารถเพิ่มสิ่งที่คุณชอบก่อนหรือหลัง !!
หรือนิพจน์อื่นใดในส่วนนี้ ตัวอย่างเช่นคุณสามารถพิมพ์คำสั่งต่อไปนี้เพื่อรันคำสั่งล่าสุดที่คุณวิ่งผ่าน sudo
, ให้สิทธิ์รูตแก่มัน สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณลืมเพิ่ม sudo
ก่อนรันคำสั่ง.
sudo !!
หรือตัวอย่างเช่นคุณสามารถรันคำสั่งก่อนหน้านี้อีกครั้งและไพพ์เอาต์พุตของมันเป็น grep เพื่อค้นหาข้อความบางส่วน.
!! | ข้อความ grep
หากต้องการค้นหาคำสั่งในประวัติของคุณและเรียกใช้งานให้พิมพ์คำสั่งต่อไปนี้ นี่จะรันคำสั่งสุดท้ายที่ตรงกับข้อความที่คุณระบุ:
!ข้อความ
ดังนั้นหากคุณเพิ่งรันคำสั่งที่เริ่มต้นด้วย ปิง
, คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อค้นหา จะค้นหาย้อนหลังผ่านประวัติค้นหาคำสั่งล่าสุดที่ขึ้นต้นด้วย“ปี่
“ และเรียกใช้ทันที:
!ปี่
คุณสามารถต่อท้าย : p
ไปยังส่วนขยายใด ๆ ข้างต้นและทุบตีจะพิมพ์คำสั่งไปยังสถานีโดยไม่ต้องเรียกใช้ สิ่งนี้มีประโยชน์หากคุณต้องการยืนยันว่าคุณกำลังเลือกคำสั่งที่ถูกต้องก่อนที่จะเรียกใช้.
!12: p
!!: p
!ข้อความ: p
ใช้อาร์กิวเมนต์จากประวัติของคุณซ้ำ
Bash ยังช่วยให้คุณเรียกใช้คำสั่งใหม่ แต่ใช้อาร์กิวเมนต์จากคำสั่งก่อนหน้าในประวัติศาสตร์ของคุณ วิธีนี้จะช่วยให้คุณสามารถนำอาร์กิวเมนต์ที่มีความยาวหรือซับซ้อนมาใช้ได้อย่างรวดเร็วโดยไม่ต้องพิมพ์ซ้ำ.
คำสั่ง!
ตัวอย่างเช่นสมมติว่าคุณรันคำสั่ง แตะ / home / chris / some_long_file_name_you_dont_want_to_type_again
. ตอนนี้คุณต้องการเรียกใช้คำสั่ง nano / home / chris / some_long_file_name_you_dont_want_to_type_again
. แทนที่จะพิมพ์ทุกอย่างตั้งแต่เริ่มต้นคุณสามารถเรียกใช้:
นาโน! $
!$
จะทำให้ทุบตีกรอกอาร์กิวเมนต์สุดท้ายโดยอัตโนมัติจากคำสั่งก่อนหน้าของคุณ.
สิ่งนี้จะเติมในอาร์กิวเมนต์สุดท้ายเท่านั้น ดังนั้นถ้าคุณวิ่ง ping google.com -c 4
จากนั้นเรียกใช้ ping! $
, นี่จะขยายเป็น“ping 4
“.
ในการแก้ไขสถานการณ์นี้คุณสามารถใช้เคล็ดลับต่อไปนี้เพื่อขยายอาร์กิวเมนต์แรกในบรรทัดแทนที่จะเป็นครั้งสุดท้าย:
คำสั่ง! ^
ดังนั้นถ้าคุณวิ่ง ping google.com -c 4
แล้ววิ่ง ping! ^
, ทุบตีจะขยายนี้เพื่อ“ping google.com "
.
หากต้องการกรอกอาร์กิวเมนต์ทั้งหมดที่ใช้ในคำสั่งก่อนหน้าแทนที่จะเป็นอาร์กิวเมนต์เดียวคุณจะต้องใช้สิ่งต่อไปนี้:
คำสั่ง! *
ดังนั้นถ้าคุณวิ่ง ping! *
แต่ bash จะเติมอาร์กิวเมนต์ทั้งหมดที่คุณใช้ในคำสั่งก่อนหน้าโดยอัตโนมัติ.
คุณสามารถใช้กลอุบายเดียวกับที่คุณใช้เพื่อรันคำสั่งจากประวัติของคุณเพื่อรับอาร์กิวเมนต์จากพวกเขา เพียงใช้แบบฟอร์มต่อไปนี้.
คำสั่ง! abc: #
ตัวอย่างเช่นเรารันคำสั่ง sudo hostname ubuntu
ก่อน หากเราเรียกใช้คำสั่งต่อไปนี้ทุบตีจะค้นหาย้อนหลังผ่านประวัติศาสตร์เพื่อค้นหาคำสั่งสุดท้ายที่เริ่มต้นด้วยตัวอักษรที่เราพิมพ์และกรอกอาร์กิวเมนต์ที่เราระบุ ดังนั้นถ้าเราวิ่ง echo! su: 2
, bash จะค้นหากลับเพื่อค้นหาคำสั่งสุดท้ายที่ขึ้นต้นด้วย“su
” และกรอกอาร์กิวเมนต์ที่สองซึ่งก็คือ“อูบุนตู
“.
เทคนิคอื่น ๆ ทำงานตามที่คุณคาดหวัง ตัวอย่างเช่นการแทนที่ตัวเลขด้วยเครื่องหมายดอกจันหรือที่รู้จักกันในชื่อ wildcard ทำให้ bash กรอกข้อมูลอาร์กิวเมนต์ทั้งหมดจากคำสั่ง:
คำสั่ง! abc: *
รันคำสั่งก่อนหน้านี้อีกครั้งและแก้ไขมัน
Bash ยังอนุญาตให้คุณรันคำสั่งก่อนหน้านี้อีกครั้งและระบุสิ่งที่ควรเปลี่ยน สิ่งนี้มีประโยชน์สำหรับการแก้ไขการพิมพ์ผิดในคำสั่ง ตัวอย่างเช่นคำสั่งต่อไปนี้จะรันคำสั่งก่อนหน้านี้อีกครั้งแทนที่ข้อความ“abc
” ด้วยข้อความ“xyz
“.
^ ^ abc xyz
ตัวอย่างเช่นหากคุณเผลอวิ่ง ping gogle.com
, จากนั้นคุณสามารถเรียกใช้ ^ ^ มุง goog
และทุบตีจะเรียกใช้คำสั่ง ping google.com
แทน.
ประวัติความเป็นมาของคุณเก็บไว้ที่ไหนและจะกำจัดอย่างไร
เชลล์ bash เก็บประวัติคำสั่งที่คุณเรียกใช้ในไฟล์ประวัติบัญชีผู้ใช้ของคุณที่ ~ / .bash_history โดยค่าเริ่มต้น ตัวอย่างเช่นหากชื่อผู้ใช้ของคุณเป็น bob คุณจะพบไฟล์นี้ที่ /home/bob/.bash_history.
เนื่องจากประวัติของคุณถูกเก็บไว้ในไฟล์จึงยังคงอยู่ระหว่างเซสชัน คุณสามารถเรียกใช้คำสั่งบางอย่างออกจากระบบกลับมาในวันถัดไปและคำสั่งเหล่านั้นจะยังคงอยู่ในไฟล์ประวัติของคุณพร้อมที่จะดูและใช้งาน บัญชีผู้ใช้แต่ละบัญชีมีไฟล์ประวัติของตนเองพร้อมประวัติคำสั่งแยกต่างหาก.
เพื่อล้างประวัติทุบตีของคุณคุณสามารถเรียกใช้คำสั่งต่อไปนี้ วิธีนี้จะลบเนื้อหาของไฟล์. bash_history ของบัญชีผู้ใช้ของคุณ:
ประวัติศาสตร์
Bash จะจำคำสั่งที่มีจำนวน จำกัด เท่านั้นโดยค่าเริ่มต้นทำให้แฟ้มประวัติมีขนาดใหญ่เกินไป จำนวนรายการบันทึกประวัติการทุบตีจะถูกควบคุมโดย HISTSIZE
ตัวแปร. ค่าเริ่มต้นมักจะเป็น 500 หรือ 1,000 รายการ คุณสามารถรันคำสั่งต่อไปนี้เพื่อดูขนาดของประวัติทุบตีในระบบของคุณ.
echo $ HISTSIZE
หากต้องการตั้งค่าประวัติของคุณเป็นศูนย์ให้เรียกใช้คำสั่งต่อไปนี้.
HISTSIZE = 0
สำหรับเซสชันปัจจุบันทุบตีจะไม่เก็บรายการประวัติใด ๆ เว้นแต่ว่าคุณจะเรียกใช้คำสั่งเช่น HISTSIZE = 1000
เพื่อตั้งกลับเป็นจำนวนรายการ.
วิธีการละเว้นช่องว่างและรายการซ้ำ
Bash อนุญาตให้คุณละเว้นรายการประวัติที่ขึ้นต้นด้วยเว้นวรรคหากคุณตั้งค่า HISTCONTROL
แปรเป็น ignorespace.
HISTCONTROL = ignorespace
พิมพ์ช่องว่างหน้าคำสั่งก่อนเรียกใช้ในเชลล์ bash และคำสั่งจะทำงานตามปกติ แต่จะไม่ปรากฏในประวัติของคุณหากคุณเปิดใช้งานตัวแปรนี้ สิ่งนี้ช่วยให้คุณเก็บประวัติของคุณสะอาดขึ้นเล็กน้อยเลือกที่จะเรียกใช้คำสั่งโดยไม่ปรากฏในประวัติของคุณ.
Bash ยังช่วยให้คุณสามารถละเว้นคำสั่งที่ซ้ำกันซึ่งอาจทำให้คุณยุ่งเหยิงได้ ในการทำเช่นนั้นตั้ง HISTCONTROL
ไปยัง ignoredups.
HISTCONTROL = ignoredups
เพื่อใช้งานทั้ง ignorespace
และ ignoredups
คุณสมบัติตั้ง HISTCONTROL
แปรเป็น ignoreboth.
HISTCONTROL = ignoreboth
โปรดทราบว่าตัวแปร bash ที่คุณตั้งค่าจะคงอยู่สำหรับเซสชันปัจจุบันเท่านั้น คุณจะต้องเพิ่มสิ่งเหล่านี้ลงในไฟล์. bashrc ของบัญชีผู้ใช้ของคุณเพื่อให้ค่าเหล่านี้ถูกตั้งค่าโดยอัตโนมัติในทุกเซสชันของ bash ที่คุณเริ่มถ้าคุณต้องการ.
เปลือกทุบตีเป็นเครื่องมือที่ซับซ้อนที่มีตัวเลือกมากมายกว่าสิ่งเหล่านี้ ดูส่วนการสร้างประวัติ Bash และส่วนขยายประวัติในคู่มือทุบตีทางการข้อมูลรายละเอียดเพิ่มเติมและเทคนิคขั้นสูงอื่น ๆ ที่คุณสามารถใช้ได้.