ฉันรู้df -hและpwdดูเหมือนว่าจะซับซ้อนเล็กน้อยสำหรับส่วนการจับคู่ regex ความคิดใด ๆ
ฉันรู้df -hและpwdดูเหมือนว่าจะซับซ้อนเล็กน้อยสำหรับส่วนการจับคู่ regex ความคิดใด ๆ
คำตอบ:
เอาต์พุตสามารถทำการแยกวิเคราะห์ได้ง่ายขึ้นโดยใช้-Pตัวเลือกซึ่งจะทำให้มั่นใจได้ว่า:
- ข้อมูลเกี่ยวกับระบบไฟล์แต่ละระบบจะถูกพิมพ์บนบรรทัดเดียวเสมอ อุปกรณ์เมานต์จะไม่ถูกวางบนเส้นด้วยตัวเอง ซึ่งหมายความว่าหากชื่ออุปกรณ์เชื่อมต่อมีความยาวมากกว่า 20 ตัวอักษร (เช่นสำหรับเครือข่ายบางตัว) คอลัมน์จะถูกจัดแนวให้ไม่ตรง
สิ่งนี้ทำให้การหาพื้นที่ว่างให้ง่ายขึ้น:
$ df -Ph . | tail -1 | awk '{print $4}'
( -hใช้เมกะไบต์กิกะไบต์และอื่น ๆ หากระบบของคุณไม่มีให้ใช้-kเป็นกิโลไบต์เท่านั้น)
ถ้าเราผ่านdfเส้นทางมันจะกลับไป 2 แถว: แถวส่วนหัวแล้วข้อมูลเกี่ยวกับระบบไฟล์ที่มีเส้นทาง เราสามารถใช้หางเพื่อคว้าเฉพาะแถวที่สอง เรารู้ว่าพื้นที่ที่มีอยู่ในคอลัมน์ที่ 4 awkเพื่อให้เราคว้าที่ว่าด้วย ทั้งหมดนี้สามารถทำได้ด้วยawk:
$ df -Ph . | awk 'NR==2 {print $4}'
$PWDแทนการใช้การทดแทนคำสั่งและลบความต้องการหาง: df -Ph $PWD | awk 'NR==2{print $4}'
awkดีขึ้น ฉันรวมคำสั่งที่ยาวกว่าเพราะฉันต้องการมีตัวอย่างว่าจะสร้างคำสั่งแบบง่าย ๆ เพื่อทำสิ่งที่ซับซ้อนได้อย่างไร ฉันได้อัปเดตคำตอบเพื่อรวมการปรับปรุงของคุณแล้ว
-Pเป็นมาตรฐาน ( Pสำหรับ POSIX) แต่-hเป็นส่วนขยายของ GNU (มีอยู่ในระบบอื่นบางระบบ แต่เช่นใน OpenBSD มันเข้ากันไม่ได้-P)
df -h --output=avail . | tail -1
time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }) เผยให้เห็นความแตกต่างที่มีความหมายในความเร็วซึ่งไม่น่าประหลาดใจ - การเรียกใช้tailไม่แพงและawkจะงดเว้นที่จะข้ามไปยังจุดสิ้นสุดของอินพุต ... อาจมีความแตกต่างบน PDP-11 ...
df -h .วิธีการเกี่ยวกับการทำ สิ่งนี้จะทำให้คุณมีพื้นที่ว่างของพาร์ติชันไดเรกทอรีการทำงานปัจจุบันของคุณอยู่
ตัวอย่างเล็ก ๆ :
/usr/local/nagios/libexec # df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-lvol1
9.9G 6.1G 3.4G 65% /
ในหน่วยไบต์:
df --output=avail -B 1 "$PWD" | tail -n 1
คนอ่านได้:
df --output=avail -h "$PWD" | tail -n 1
หรือ
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"
หรือ
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
du -hอะไร