ฉันจะตรวจสอบเวอร์ชบ๊อกซ์เวอร์ชั่นจาก CLI ได้อย่างไร


65

ฉันกำลังเขียนสคริปต์ Bash เพื่อจัดเก็บหมายเลขเวอร์ชันของVirtualboxแต่ไม่ประสบความสำเร็จ

สคริปต์ของฉันคือ:

#!/bin/bash
installed_virtualbox=$(virtualbox --version) # --version this is what I want to change

ฉันเหนื่อย

virtualbox --version
virtualbox -v
virtualbox -V
virtualbox --Version

ดูเหมือนว่าทั้งหมดจะเปิด virtualbox แทนผลลัพธ์
virtualbox --helpให้หมายเลขเวอร์ชัน แต่เอาต์พุตยาวเกินกว่าจะเก็บในตัวแปรและใช้ในภายหลัง

คำตอบ:


107

หากต้องการพิมพ์หรือดูเวอร์ชั่นVirtualBoxปัจจุบันคุณควรใช้คำสั่งด้านล่าง:

vboxmanage --version

ซึ่งจะพิมพ์เวอร์ชันปัจจุบันตามที่เห็นด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

อ้างอิง8.2 ภาพรวมคำสั่งที่เว็บไซต์ VirtualBox อย่างเป็นทางการสำหรับข้อมูลเพิ่มเติม


หากต้องการพิมพ์เวอร์ชันโดยใช้สคริปต์ดูด้านล่าง:

#!/bin/bash
echo $(vboxmanage --version)

หวังว่ามันจะช่วย


1
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')และecho $(vboxmanage --version)อะไรคือความแตกต่าง? พวกเขาไม่เหมือนกันหรือ
souravc

@souravc - ในความคิดเห็นของคุณที่นี่คุณใช้--versionซึ่งส่งออกเพียงหนึ่งบรรทัดและหนึ่งฟิลด์; ดังนั้นการใช้headและawkการตัดแต่งจะซ้ำซ้อนและใช่พวกเขาออกผลลัพธ์เดียวกัน ในคำตอบของคุณด้านล่างคุณใช้--helpแทน--versionซึ่งในกรณีนี้headและawkการตัดแต่งเป็นสิ่งที่จำเป็นอย่างแน่นอน ... แต่คุณยังคงได้รับข้อมูลน้อยได้อย่างแม่นยำเป็นรุ่นที่พบผ่านทาง--helpเป็นเพียง #. #. # VS --versionที่ทำให้ #. #. # r # (รุ่นที่มีข้อมูลการแก้ไข)
DreadPirateShawn

@DreadPirateShawn คุณถูกต้องแล้วตอนนี้ไม่จำเป็น ในเวลานั้นvboxmanageเคยมีข้อมูลอื่น ๆ นั่นคือสาเหตุที่ฉันเสนอให้ คุณสามารถดูการแก้ไข OP ยอมรับข้อเสนอแนะของฉัน ทำไมฉันจะทำในสิ่งที่ซับซ้อน :)
souravc

@souravc - อ่าา ... ตลกว่าบริบททำให้สิ่งต่าง ๆ ชัดเจนขึ้นได้อย่างไร :-P ดังนั้น ... เคล็ดลับที่ยอดเยี่ยม :-)
DreadPirateShawn

ตั้งแต่ VBox 5.0 vbox-img --versionสามารถพิมพ์เวอร์ชันได้เช่นกัน
kenorb

7

คุณสามารถลองสิ่งนี้

virtualbox --help | head -n 1 | awk '{print $NF}'

หรือ

$ echo $(virtualbox --help | head -n 1 | awk '{print $NF}')
4.3.6

มันทำงานอย่างไร

ขั้นตอนที่ 1

virtualbox --help

ให้ผลลัพธ์ที่ยาวนานโดยบอกว่ามีตัวเลือกมากมาย ฯลฯ แต่บรรทัดแรกของมันก็เป็นเช่นนั้น

Oracle VM VirtualBox Manager 4.3.6
(C) 2005-2013 Oracle Corporation
สงวนลิขสิทธิ์
...

ขั้นตอนที่ 2

| head -n 1

|เรียกว่าท่อ มันมีแอพพลิเคชั่นที่ยอดเยี่ยมในบรรทัดคำสั่ง headมันผ่านการแสดงออกทั้งคำสั่งต่อไป head -n 1พิมพ์บรรทัดแรกเท่านั้น ดูman headเพิ่มเติม ในขั้นตอนนี้การส่งออกเป็นเพียง

Oracle VM VirtualBox Manager 4.3.6

ขั้นตอนที่ -3

| awk '{print $NF}'

สิ่งที่เหลือจะถูกส่งไปawkอีกครั้ง ในขั้นตอนนี้awkจะเห็นทั้งบรรทัดเป็นการรวมกันของบางฟิลด์ที่คั่นด้วยช่องว่างและพิมพ์เฉพาะฟิลด์สุดท้ายของนิพจน์ด้านบน ดังนั้นคุณจะได้รับเวอร์ชันเท่านั้น ดูman awkเพิ่มเติม


จะดีมากถ้าคุณสามารถแยกคำสั่งและอธิบายว่าแต่ละส่วนทำอะไร
jobin

@Jobin โปรดดูการแก้ไขของฉัน
souravc

2

คุณสามารถทราบรุ่นของแพ็คเกจที่ติดตั้งด้วย dpkg และ grep พร้อม piping

dpkg -l | grep virtualbox | awk '{print $3}'

คำสั่ง piped แต่ละคำสั่งทำอะไรได้บ้างโปรด verbose
jobin

1
avi @ avi-IdeaPad-Z500: ~ $ virtualbox - ช่วย
Oracle VM VirtualBox Manager 4.3.6

ดังนั้นเรียกใช้คำสั่งด้านล่าง

virtualbox --help | awk '/Oracle/{ print $5 }'

เอาท์พุท:

4.3.6

awk '/Oracle/{ print $5 }'

ค้นหาบรรทัดที่ประกอบด้วยคำว่าOracleใช่ถ้าใช่คำสั่งจะเลือกคอลัมน์ที่ห้าในบรรทัดนั้นและเปลี่ยนเส้นทางไปยังเอาต์พุตมาตรฐานหากไม่มีคำดังกล่าวปรากฏบนบรรทัดใด ๆ ก็จะไม่แสดงผลใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.