ต่อเนื่องชุดบันทึกเกี่ยวกับ
1) PROMPT_COMMAND
คุณอาจทราบวิธีจัดการพรอมต์เพื่อแสดงข้อมูลที่เป็นประโยชน์ต่างๆ อยู่แล้ว แต่ไม่ใช่ทุกคนที่รู้ว่าคุณสามารถรันคำสั่งเชลล์ได้ทุกครั้งที่แสดงพรอมต์
ในความเป็นจริง โปรแกรมจัดการพรอมต์ที่ซับซ้อนจำนวนมากใช้ตัวแปรนี้เพื่อรันคำสั่งเพื่อรวบรวมข้อมูลที่แสดงในพรอมต์
ลองรันสิ่งนี้ในเชลล์ใหม่และดูว่าเกิดอะไรขึ้นกับเซสชัน:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
ถ้าคุณวิ่ง history
ในคอนโซล คุณจะได้รับรายการคำสั่งที่ดำเนินการก่อนหน้านี้ภายใต้บัญชีของคุณ
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
เมื่อตั้งค่าตัวแปรนี้แล้ว รายการใหม่จะบันทึกเวลาพร้อมกับคำสั่ง ดังนั้นเอาต์พุตจะมีลักษณะดังนี้:
1871 ฉันวิ่งไปที่: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 ฉันวิ่งไปที่: 01/05/19 13:38:19 curl bbc.co.uk 1873 ฉันวิ่งสิ่งนี้ที่ : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 ฉันวิ่งสิ่งนี้ที่: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 ฉันวิ่งสิ่งนี้ที่: 01 /05/19 13:39:25 ซูโดะ ซู -
การจัดรูปแบบตรงกับอักขระจาก man date
.
3) CDPATH
เพื่อประหยัดเวลาในบรรทัดคำสั่ง คุณสามารถใช้ตัวแปรนี้เพื่อเปลี่ยนไดเร็กทอรีได้อย่างง่ายดายเหมือนกับที่คุณออกคำสั่ง
ในขณะที่ PATH
, ตัวแปร CDPATH
เป็นรายการเส้นทางที่คั่นด้วยโคลอน เมื่อคุณรันคำสั่ง cd
ด้วยเส้นทางสัมพัทธ์ (เช่น ไม่มีเครื่องหมายทับนำหน้า) โดยค่าเริ่มต้น เชลล์จะค้นหาชื่อที่ตรงกันในโฟลเดอร์ในเครื่องของคุณ CDPATH
จะค้นหาเส้นทางที่คุณให้ไว้สำหรับไดเร็กทอรีที่คุณต้องการไป
หากคุณติดตั้ง CDPATH
ด้วยวิธีนี้:
$ CDPATH=/:/lib
แล้วป้อน:
$ cd /home
$ cd tmp
แล้วคุณก็จะเข้าไปอยู่ในนั้นเสมอ /tmp
ไม่ว่าคุณจะอยู่ที่ไหน
อย่างไรก็ตาม โปรดใช้ความระมัดระวัง เนื่องจากหากคุณไม่ได้ระบุรายการในเครื่องในรายการ (.
) คุณจะไม่สามารถสร้างโฟลเดอร์อื่นได้อีก tmp
และไปที่มันตามปกติ:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
อ๊ะ!
สิ่งนี้คล้ายกับความสับสนที่ฉันรู้สึกเมื่อรู้ว่าโฟลเดอร์ในเครื่องไม่รวมอยู่ในตัวแปรที่คุ้นเคยมากกว่า PATH
... แต่คุณต้องทำในตัวแปร PATH ของคุณ เพราะคุณอาจถูกหลอกให้รันคำสั่งปลอมจากโค้ดที่ดาวน์โหลดมาบางโค้ด
ของฉันถูกกำหนดโดยจุดเริ่มต้น:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
คุณเคยสงสัยไหมว่าการพิมพ์ exit
มันจะนำคุณออกจาก bash shell ปัจจุบันของคุณไปยังเชลล์ "พาเรนต์" อื่นหรือจะปิดหน้าต่างคอนโซลทั้งหมดหรือไม่
ตัวแปรนี้จะติดตามว่าคุณซ้อนกันลึกแค่ไหนใน bash shell หากคุณสร้างเทอร์มินัลใหม่ จะถูกตั้งค่าเป็น 1:
$ echo $SHLVL
1
จากนั้น หากคุณเริ่มกระบวนการเชลล์อื่น จำนวนจะเพิ่มขึ้น:
$ bash
$ echo $SHLVL
2
สิ่งนี้มีประโยชน์มากในสคริปต์ที่คุณไม่แน่ใจว่าจะออกหรือไม่ หรือติดตามตำแหน่งที่คุณซ้อนกัน
5) LINENO
ตัวแปรยังมีประโยชน์สำหรับการวิเคราะห์สถานะปัจจุบันและการดีบัก LINENO
ซึ่งรายงานจำนวนคำสั่งที่ดำเนินการในเซสชันจนถึงตอนนี้:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
สิ่งนี้มักใช้เมื่อทำการดีบักสคริปต์ การแทรกบรรทัดเช่น echo DEBUG:$LINENO
คุณสามารถระบุได้อย่างรวดเร็วว่าคุณอยู่ที่ไหนในสคริปต์ (หรือไม่)
6) REPLY
เช่นฉัน คุณมักจะเขียนโค้ดดังนี้:
$ read input
echo do something with $input
อาจเป็นเรื่องที่น่าแปลกใจที่คุณไม่ต้องกังวลกับการสร้างตัวแปรเลย:
$ read
echo do something with $REPLY
สิ่งนี้ทำสิ่งเดียวกัน
7) TMOUT
เพื่อหลีกเลี่ยงการอยู่บนเซิร์ฟเวอร์ที่ใช้งานจริงนานเกินไปด้วยเหตุผลด้านความปลอดภัยหรือใช้งานสิ่งที่เป็นอันตรายในเทอร์มินัลที่ไม่ถูกต้องโดยไม่ได้ตั้งใจ การตั้งค่าตัวแปรนี้จะทำหน้าที่เป็นการป้องกัน
หากไม่มีสิ่งใดถูกป้อนเป็นเวลาตามจำนวนวินาทีที่กำหนด เชลล์จะออก
นั่นคือนี่เป็นอีกทางเลือกหนึ่ง sleep 1 && exit
:
$ TMOUT=1
ที่มา: will.com