Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

ทำให้ประวัติ Bash มีประโยชน์มากขึ้นด้วยเคล็ดลับเหล่านี้

เทอร์มินัล Linux ที่รัน Bash มีประวัติในตัวที่คุณสามารถใช้เพื่อติดตามสิ่งที่คุณทำเมื่อเร็วๆ นี้ หากต้องการดูประวัติของเซสชัน Bash ให้ใช้คำสั่งในตัว history :

$ echo "foo"
foo
$ echo "bar"
bar
$ history
  1  echo "foo"
  2  echo "bar"
  3  history

history คำสั่งไม่ใช่ไฟล์ปฏิบัติการบนระบบไฟล์ของคุณ เช่นเดียวกับคำสั่งส่วนใหญ่ แต่เป็นฟังก์ชันของ Bash คุณสามารถตรวจสอบได้โดยใช้ type คำสั่ง:

$ type history
history is a shell builtin

การควบคุมประวัติ

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

export HISTSIZE=3000

มีตัวแปรอื่น ๆ ที่เกี่ยวข้องกับประวัติศาสตร์ด้วย HISTCONTROL ตัวแปรควบคุมสิ่งที่เก็บประวัติไว้ คุณสามารถบังคับให้ Bash แยกคำสั่งที่เริ่มต้นด้วยพื้นที่ว่างโดยวางสิ่งนี้ใน .bashrc ของคุณ ไฟล์:

export HISTCONTROL=$HISTCONTROL:ignorespace

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

$ echo "hello"
$     mysql -u bogus -h badpassword123 mydatabase
$ echo "world"
$ history
  1  echo "hello"
  2  echo "world"
  3  history

คุณสามารถหลีกเลี่ยงรายการที่ซ้ำกันได้เช่นกัน:

export HISTCONTROL=$HISTCONTROL:ignoredups

ตอนนี้ หากคุณพิมพ์คำสั่งสองคำสั่ง ทีละคำสั่ง จะปรากฏเพียงคำสั่งเดียวในประวัติ:

$ ls
$ ls
$ ls
$ history
  1  ls
  2  history

หากคุณชอบการละเว้นทั้งสองนี้ คุณสามารถใช้ ignoreboth :

export HISTCONTROL=$HISTCONTROL:ignoreboth

ลบคำสั่งออกจากประวัติ

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

$ echo "foo"
foo
$ echo "bar"
bar
$ history | tail
  535  echo "foo"
  536  echo "bar"
  537  history | tail
$ history -d 536
$ history | tail
  535  echo "foo"
  536  history | tail
  537  history -d 536
  538  history | tail

หากต้องการหยุดเพิ่ม history รายการ คุณสามารถวาง space ก่อนคำสั่ง ตราบใดที่คุณมี ignorespace ใน HISTCONTROL . ของคุณ ตัวแปรสภาพแวดล้อม:

$  history | tail
  535  echo "foo"
  536  echo "bar"
$  history -d 536
$  history | tail
  535  echo "foo"

คุณสามารถล้างประวัติเซสชันทั้งหมดด้วย -c ตัวเลือก:

$ history -c
$  history
$

บทเรียนประวัติศาสตร์

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

ใช้เซสชันประวัติศาสตร์ของคุณตามความจำเป็น และใช้พลังของคุณเหนือประวัติศาสตร์อย่างชาญฉลาด แฮ็คประวัติศาสตร์อย่างมีความสุข!