सबसे न्यूनतर - दृष्टिकोण # 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 में system()
फ़ंक्शन होता है जो आपको स्क्रिप्ट या कमांड सेawk
शेल कमांड चलाने की अनुमति देता है । आउटपुट स्क्रीन पर दिखाई देगा, पहले कमांड, आउटपुट अगला। एक फ़ाइल उपयोग >
ऑपरेटर को जो आप देखते हैं उसे पुनर्निर्देशित करने के लिए ।
यह दो तरीकों से किया जा सकता है - उपयोगकर्ता को स्टड से इनपुट करने के लिए या कमांड लाइन तर्क के रूप में पूछें। पहले एक हासिल करना आसान है, इसलिए यह पोस्ट करना।
(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
और फिर सबस्क्रिप्शन में आवश्यक कमांड चला सकते हैं
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
उर्फ <<< "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 {}; {}"'