เรียบง่ายที่สุด - วิธี # 4 และ # 3 ทั้งสองสามารถถูกแปลงเป็นฟังก์ชัน # 2 สิ่งที่ฉันชอบ - awk
. # 1 ใช้script
คำสั่ง - เครื่องมืออเนกประสงค์ที่มีประโยชน์สำหรับการบันทึกบรรทัดคำสั่งโดยทั่วไป สามารถใช้งานได้ทุกที่สำหรับทุกสิ่งที่คุณต้องการบันทึก
วิธีที่ # 1:
มี/usr/bin/script
คำสั่ง (ซึ่งมาพร้อมกับ ubuntu โดยค่าเริ่มต้น) สำหรับการบันทึกเอาต์พุตบรรทัดคำสั่งซึ่งจับทุกอย่างพร้อมกับคำสั่งและพร้อมท์ หากต้องการบันทึกเพียงหนึ่งคำสั่งและเอาต์พุตไปยังไฟล์ที่ระบุให้ใช้-c
แฟล็กและระบุไฟล์เอาต์พุต ตัวอย่าง
xieerqi:$ script -c 'apt-cache depends gnome-terminal' outputFile.txt
Script started, file is outputFile.txt
gnome-terminal
Depends: gconf-service
gconf-service:i386
Depends: libatk1.0-0
Depends: libc6
Depends: libgconf-2-4
Depends: libgdk-pixbuf2.0-0
(extra output omitted)
Script done, file is outputFile.txt
xieerqi:$ cat outputFile.txt
Script started on 2015年10月22日 星期四 08时58分46秒
gnome-terminal
Depends: gconf-service
gconf-service:i386
Depends: libatk1.0-0
Depends: libc6
Depends: libgconf-2-4
(extra output omitted)
Script done on 2015年10月22日 星期四 08时58分46秒
วิธีที่ # 2: การแฮกเกอร์ awk
Awk มีsystem()
ฟังก์ชั่นที่ช่วยให้คุณใช้คำสั่งเชลล์จากawk
สคริปต์หรือคำสั่ง เอาท์พุทจะปรากฏขึ้นบนหน้าจอคำสั่งก่อนส่งออกต่อไป หากต้องการเปลี่ยนเส้นทางสิ่งที่คุณเห็นไปยัง>
โอเปอเรเตอร์การใช้ไฟล์
สามารถทำได้สองวิธี - ขอให้ผู้ใช้ป้อนข้อมูลจาก stdin หรือเป็นอาร์กิวเมนต์บรรทัดคำสั่ง คนแรกทำได้ง่ายกว่าดังนั้นการโพสต์นั้น
(1) awk 'BEGIN{ print "Enter command to run: "; getline com < "/dev/stdin"; system(com) }'
awk 'BEGIN{ print "Enter command to run: "; getline com < "/dev/stdin"; system(com) }'
Enter command to run:
apt-cache depends gnome-terminal
gnome-terminal
Depends: gconf-service
gconf-service:i386
Depends: libatk1.0-0
Depends: libc6
Depends: libgconf-2-4
Depends: libgdk-pixbuf2.0-0
Depends: libglib2.0-0
(extra output omitted)
(2) บรรทัดคำสั่ง args เวอร์ชัน; ไม่รวมเอาท์พุทเพื่อหลีกเลี่ยงการตอบนานเกินไป อีกครั้งผนวก>
เพื่อเปลี่ยนเส้นทางไปยังไฟล์
awk 'BEGIN{for (i=1; i<= ARGC; i++) myString = myString" "ARGV[i]; print myString; system(myString) }' apt-cache depends gnome-terminal
วิธีที่ # 3: ขอให้ทุบตีเพื่อทำงานให้คุณ
xieerqi@eagle:~$ bash -c ' MYCOMMAND="apt-cache depends gnome-terminal"; echo $MYCOMMAND ; $MYCOMMAND '
apt-cache depends gnome-terminal
gnome-terminal
Depends: gconf-service
gconf-service:i386
Depends: libatk1.0-0
Depends: libc6
Depends: libgconf-2-4
Depends: libgdk-pixbuf2.0-0
Depends: libglib2.0-0
เปลี่ยนเส้นทางไปยังไฟล์ด้วย>
โอเปอเรเตอร์:
bash -c ' MYCOMMAND="apt-cache depends gnome-terminal"; echo $MYCOMMAND ; $MYCOMMAND ' > output.txt
วิธีที่ # 4: (รายการโปรดอันดับสองของฉัน)
แรงบันดาลใจจากโพสต์ของ ByteCommander; เราสามารถใช้read
แล้วเรียกใช้คำสั่งที่จำเป็นใน subshell
read command && (printf "COMMAND: %s" "$command";printf "\n+++++++\n"; sh -c "$command")
วิ่งตัวอย่าง:
xieerqi:$ read command && (printf "COMMAND READ: %s" "$command";printf "\n+++++++\nOUTPUT\n"; sh -c "$command")
printf "This was a triumph; I'm making a note here - huge success"
COMMAND READ: printf "This was a triumph; I'm making a note here - huge success"
+++++++
OUTPUT
This was a triumph; I'm making a note here - huge success
วิธีการ # 5:
ใช้echo
หรือhere string
(aka <<< "string"
) เพื่อให้ข้อโต้แย้งsh -c
ผ่านxargs
xieerqi:$ echo "apt-cache policy gnome-terminal" | xargs -I {} bash -c 'echo {}; {}'
apt-cache policy gnome-terminal
gnome-terminal:
Installed: 3.6.2-0ubuntu1
Candidate: 3.6.2-0ubuntu1
Version table:
*** 3.6.2-0ubuntu1 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
100 /var/lib/dpkg/status
และหากคุณต้องการคุณสามารถใช้เคล็ดลับเดียวกันนี้กับนามแฝง:
xieerqi:$ printAndRun <<< "apt-cache policy gnome-terminal"
apt-cache policy gnome-terminal
gnome-terminal:
Installed: 3.6.2-0ubuntu1
Candidate: 3.6.2-0ubuntu1
Version table:
*** 3.6.2-0ubuntu1 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
100 /var/lib/dpkg/status
xieerqi:$ type printAndRun
printAndRun is an alias for 'xargs -I {} bash -c "echo {}; {}"'