โฮมเพจ » ทำอย่างไร » วิธีใช้ประวัติ Bash ของคุณใน Linux หรือ macOS Terminal

    วิธีใช้ประวัติ 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 และส่วนขยายประวัติในคู่มือทุบตีทางการข้อมูลรายละเอียดเพิ่มเติมและเทคนิคขั้นสูงอื่น ๆ ที่คุณสามารถใช้ได้.