আউটপুট ফাইলে কমান্ড অন্তর্ভুক্ত করবেন?


17

বিভ্রান্ত শিরোনামের জন্য দুঃখিত!

ধরুন আমি দৌড়াচ্ছি

apt-cache depends kde-window-manager > ~/Desktop/kwin-depends

আমি আমার ডেস্কটপ ফোল্ডারে "কেভিন-নির্ভর" নামে একটি ফাইল পাব।

আমি প্রাথমিকভাবে ফাইলটির শুরুতে ফাইলটির অংশ হিসাবে জারি করা কমান্ডটি অন্তর্ভুক্ত করার কিছু কৌশল আছে?

সুতরাং, কমপক্ষে 14.04 এলটিএসে, প্রথম কয়েকটি লাইন এটির মতো দেখাবে:

apt-cache depends kde-window-manager > ~/Desktop/kwin-depends

kde-window-manager
  Depends: kde-runtime
  Depends: libc6
 |Depends: libegl1-mesa
  Depends: <libegl1-x11>

কেবল এটির পরিবর্তে:

kde-window-manager
  Depends: kde-runtime
  Depends: libc6
 |Depends: libegl1-mesa
  Depends: <libegl1-x11>

3
যেহেতু এখন আরও অনেক ভাল এবং নমনীয় সমাধান রয়েছে, আপনার সম্ভবত উত্তরটি গ্রহণ না করে বিবেচনা করা উচিত যা ম্যানুয়ালি ফাইলটিতে দু'বার টাইপ করে কমান্ডটি লেখার পরামর্শ দেয় এবং পরিবর্তে বহুমুখী সমাধানগুলির একটি গ্রহণ করে।
বাইট কমান্ডার

উত্তর:


18

আমি কেবল একটি সাধারণ ফাংশন ব্যবহার করব। এটি আপনার ~/.bashrcফাইলে যুক্ত করুন:

function runcom(){
    echo "$@"
    ## Run the command
    $@
}

এখন, আপনি যখনই কোনও কমান্ড চালাতে এবং এটি মুদ্রণ করতে চান, আপনি এটি করতে পারেন:

runcom apt-cache depends kde-window-manager > out

উপরের এই ফাইলটি উত্পাদন করে:

$ cat out
apt-cache depends kde-window-manager
kde-window-manager
  Depends: perl
  Depends: kde-runtime
  Depends: kde-style-oxygen
  Depends: libc6
 |Depends: libegl1-mesa
  Depends: <libegl1-x11>
    libegl1-mesa
  Depends: libgcc1
 |Depends: libgl1-mesa-glx
  Depends: <libgl1>
    libgl1-mesa-swx11
    libgl1-mesa-glx
 |Depends: libgles2-mesa
  Depends: <libgles2>
    libgles2-mesa
  Depends: libice6
  Depends: libkactivities6
  Depends: libkcmutils4
  Depends: libkdeclarative5
  Depends: libkdecorations4abi2
  Depends: libkdecore5
  Depends: libkdeui5
  Depends: libkio5
  Depends: libknewstuff3-4
  Depends: libkwineffects1abi5
  Depends: libkwinglesutils1
  Depends: libkwinglutils1abi2
  Depends: libkworkspace4abi2
  Depends: libplasma3
  Depends: libqt4-dbus
  Depends: libqt4-declarative
  Depends: libqt4-script
  Depends: libqtcore4
  Depends: libqtgui4
  Depends: libsm6
  Depends: libstdc++6
  Depends: libwayland-client0
 |Depends: libwayland-egl1-mesa
  Depends: <libwayland-egl1>
    libwayland-egl1-mesa
  Depends: libx11-6
  Depends: libx11-xcb1
  Depends: libxcb-composite0
  Depends: libxcb-damage0
  Depends: libxcb-image0
  Depends: libxcb-keysyms1
  Depends: libxcb-randr0
  Depends: libxcb-render0
  Depends: libxcb-shape0
  Depends: libxcb-shm0
  Depends: libxcb-sync1
  Depends: libxcb-xfixes0
  Depends: libxcb-xtest0
  Depends: libxcb1
  Depends: libxcursor1
  Depends: libxext6
  Depends: libxrandr2
  Depends: libxxf86vm1
  Breaks: kde-style-bespin
  Breaks: kde-style-bespin:i386
  Breaks: <kde-style-skulpture>
  Breaks: <kde-style-skulpture:i386>
  Breaks: kde-workspace-data
  Breaks: <kde-workspace-data:i386>
  Breaks: kdeartwork-theme-window
  Breaks: kdeartwork-theme-window:i386
  Breaks: <kdebase-workspace-data>
  Breaks: <kdebase-workspace-data:i386>
  Breaks: kwin-style-crystal
  Breaks: kwin-style-crystal:i386
  Breaks: kwin-style-dekorator
  Breaks: kwin-style-dekorator:i386
  Breaks: kwin-style-qtcurve
  Breaks: kwin-style-qtcurve:i386
  Replaces: kde-workspace-data
  Replaces: <kde-workspace-data:i386>
  Replaces: <kdebase-workspace-data>
  Replaces: <kdebase-workspace-data:i386>
  Conflicts: kde-window-manager:i386

আমি এখানে গোলপোস্টগুলি স্থানান্তরিত করতে চাইছি না, তবে আপনার কোডটি ডাক নামটিও গ্রহণ করার কোনও উপায় আছে? উদাহরণস্বরূপ, আমি যদি উপনাম apt-cache dependsকরে থাকি তবে আমি acd"কমান্ড 'এসিডি' পাওয়া যায় নি, আপনি কি বোঝাতে চেয়েছিলেন: ..." যখন আমি চালাচ্ছি runcom acd leafpad > out
ডি কে বোস

@ ডি কেবোস এলিয়াসগুলি শ্যালে নয়, .bashrc ফাইলে সংজ্ঞায়িত করা হয়েছে এবং ফাংশনগুলি কেবলমাত্র বাইনারি ফাইলগুলিতে কল করে যা $ PATH ভেরিয়েবলের অধীনে অবস্থিত। তবে আপনি একটি সহজ কৌশল করতে পারেন। উদাহরণস্বরূপ, বাস্তবে lsপ্রবণতাযুক্ত ls --color=auto'। আপনি কি (যতদিন আছে আপনার ওরফে কোন একক কোট বা উদ্ধৃতি চিহ্ন হিসাবে) করতে পারে, এই হল: $ terdonsFunction $(alias ls | awk -F '=' '{$1="";print}'| tr "'" " ")
সের্গেই কোলোডিয়াজনি 11

অথবা আপনার কমান্ডকে একটি ভেরিয়েবলে পরিণত করুন। আমি আগে আমার উত্তরে দেখিয়েছি। MYCOMMAND="apt-cache depends"; terdonsFunction $MYCOMMAND leafpad > out.txt
সের্গেই কোলোডিয়াজনি 10

@ সার্গ, দয়া করে গার্সিন ডেভিডের উত্তর দেখুন: জিজ্ঞাসুবুটু
ডি কে বোস

এটি "সুস্পষ্ট" উত্তর এবং দুর্দান্ত কাজ করে যদি না কোনও যুক্তি কোডের সাথে জড়িত থাকে যা কার্যকর করে এবং এর পার্শ্ব প্রতিক্রিয়া থাকে যা জমে থাকতে পারে। এটি একটি প্রান্তের মামলা, তাই এটি প্রায়শই ঘটে না।
জো

11

আপনি করতে পারেন:

tee file.txt <<<'apt-cache depends kde-window-manager' | bash >>file.txt

echoএখানে স্ট্রিং ( <<<) এর পরিবর্তে একই জিনিস ব্যবহার করুন :

echo 'apt-cache depends kde-window-manager' | tee file.txt | bash >>file.txt
  • tee STDOUT এবং ফাইলটি লিখতে হবে file.txt

  • এর stdout- এ teeঅর্থাত apt-cache depends kde-window-managerখাওয়ানো হবে bashকমান্ডটি প্রয়োগ করুন এবং stdout- এ সংযোজন করতে file.txt

উদাহরণ:

$ echo 'apt-cache depends kde-window-manager' | tee file.txt | bash >>file.txt

$ cat file.txt 
apt-cache depends kde-window-manager
kde-window-manager
  Depends: kde-runtime
  Depends: libc6
 |Depends: libegl1-mesa
  Depends: <libegl1-x11>

1
দুর্দান্ত উত্তর! সহজ এবং যথাযথ! আমি একটি চেষ্টা করেছিলাম teeকিন্তু আমার ব্যর্থ হয়। সাবাশ! +1
টেরেন্স

@ তবে আমি ফাইল বর্ণনাকারীদের সাথে খেলার কথাও ভেবেছি কিন্তু teeঝরঝরে মনে হচ্ছে :)
হিমাইল

11

সর্বাধিক সংক্ষিপ্ত - পদ্ধতি # 4 এবং # 3, উভয়ই ফাংশনে রূপান্তরিত হতে পারে; # 2 আমার প্রিয় - awk। # 1 scriptকমান্ড ব্যবহার করে - খুব বহুমুখী সরঞ্জাম, সাধারণভাবে কমান্ড লাইন রেকর্ড করার জন্য দরকারী; আপনি যে কোনও রেকর্ড করতে চান তার জন্য যে কোনও জায়গায় প্রযোজ্য।

পদ্ধতির # 1:/usr/bin/script কমান্ড-লাইন আউটপুট রেকর্ড করার জন্য একটি কমান্ড রয়েছে (যা পূর্বনির্ধারিতভাবে উবুন্টু সহ আসে) যা প্রম্পট এবং কমান্ডের সাথে সমস্ত কিছু ক্যাপচার করে। একটি নির্দিষ্ট কমান্ড এবং তার আউটপুট কেবল নির্দিষ্ট ফাইলে সংরক্ষণ করতে -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 20151022 星期四 085846
gnome-terminal
  Depends: gconf-service
    gconf-service:i386
  Depends: libatk1.0-0
  Depends: libc6
  Depends: libgconf-2-4
  (extra output omitted)

Script done on 20151022 星期四 085846

পদ্ধতির # 2: অ্যাডকে হ্যাকারি ery

আওকের system()ফাংশন রয়েছে যা আপনাকে স্ক্রিপ্ট বা কমান্ড থেকেawk শেল কমান্ড চালাতে দেয় । আউটপুট স্ক্রিনে প্রদর্শিত হবে, প্রথমে কমান্ড, পরবর্তী আউটপুট। আপনি যা দেখতে চান তা কোনও ফাইল >অপারেটরে পুনর্নির্দেশ করতে ।

এটি দুটি উপায়ে করা যেতে পারে - স্ট্যান্ডিন থেকে কমান্ড লাইন আর্গুমেন্ট হিসাবে স্টাফ ইনপুট করতে ব্যবহারকারীকে বলুন। প্রথমটি অর্জন করা সহজ, সুতরাং এটি পোস্ট করা ing

(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) কমান্ড লাইন আরগস সংস্করণ; উত্তর দীর্ঘায়িত করা এড়াতে আউটপুট সহ নয়। আবার, >ফাইলটিতে পুনর্নির্দেশের জন্য সংযোজন করুন

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: (আমার দ্বিতীয় পছন্দ)

বাইটকম্যান্ডারের পোস্ট থেকে অনুপ্রাণিত; আমরা 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 -cxargs

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 {}; {}"'

দুর্দান্ত, তবে এতে অ্যারোনিকাল কোডটি কমান্ডটি অন্তর্ভুক্ত করে না।
ডেকে বোস

@ ডি কেবোস আমি আরও একটি পন্থা যুক্ত করব যাতে কমান্ডটি অন্তর্ভুক্ত থাকবে। পাঁচ মিনিট
সের্গেই কলডিয়াজহনি

@ ডি কেবোস আমার পন্থা # 2 কেমন?
সের্গেই কোলোডিয়াযনি

এই চালাক, awkসত্যিই খুব কনফিগারযোগ্য ছোট্ট ফেলা তিনি না! `স্ক্রিপ্টটি কয়েকটি অন্যান্য ব্যবহারের জন্যও কার্যকর বলে মনে হচ্ছে।
অ্যারোনিকাল

1
এটি সর্বোত্তম উত্তর কারণ স্ক্রিপ্ট ব্যবহার করা হলে আর্গুমেন্টগুলি থেকে কোনও পার্শ্ব প্রতিক্রিয়া এড়ানো যায় যা ইকো ইত্যাদির সাহায্যে কোড কার্যকর করা হতে পারে - দ্বিতীয়, উদ্দেশ্যপ্রাপ্ত, কার্যকরভাবে কমান্ড পৃথকভাবে চালিত হওয়ার চেয়ে পৃথক ফলাফল দেয়।
জো

6
  1. শুরু script -q outputfile
  2. আপনার আদেশ কার্যকর করুন
  3. টিপুন Ctrl-D
  4. ফাইলটি খুলুন outputfile

উদাহরণ

শুরু script

[aboettger:~/tmp] % script -q ~/Desktop/kwin-depends

আপনার আদেশ শুরু করুন

[aboettger:~/tmp] % apt-cache depends kde-window-manager
<kde-window-manager>
[aboettger:~/tmp] % 

টিপুন Ctrl-D

Script done, file is /home/aboettger/Desktop/kwin-depends

আপনার কমান্ড এবং আউটপুট প্রদর্শন করুন

[aboettger:~/tmp] % cat ~/Desktop/kwin-depends

এবং আপনি এরকম কিছু দেখতে পাবেন

[aboettger:~/tmp] % apt-cache depends kde-window-manager
<kde-window-manager>

5

যদি আপনি ওরফে সম্প্রসারণ চান (কেবলমাত্র বাশ) আপনি এইভাবে এটি করতে পারেন:

function runcmd
{
    local check_cmd=${BASH_ALIASES[$1]}

    if [ -z "$check_cmd" ]; then
        check_cmd=$1
    fi

    shift #skip 1st arg

    echo "$check_cmd $@"
    $check_cmd $@
}

আপনি এখন চালাতে পারেন

runcmd acd leafpad > out

4

আরও সহজ উপায় থাকতে পারে তবে আপনি এটি কোনও স্ক্রিপ্টের মাধ্যমে করতে পারেন:

#!/bin/sh
echo $1
apt-cache depends $1

scriptআপনার হোম ফোল্ডারে এই সামগ্রীটি দিয়ে একটি ফাইল তৈরি করুন এবং কার্যকর করার অনুমতি দিন

chmod +x script

এভাবে চালান:

./script kde-window-manager > ~/Desktop/kwin-depends

আপনি চাইলে এই কমান্ড লাইনের পুনরাবৃত্তি করা সহজ করার সুবিধা এই পদ্ধতির রয়েছে! আপনি স্ক্রিপ্টে পুনর্নির্দেশটিও লিখতে পারেন, যাতে এটি script.shসর্বদা script.logতার আউটপুট সহ একটি ফাইল তৈরি করে ।
গৌরব

4

এক-লাইন ব্যাশ ফাংশনটি ব্যবহার করে অত্যন্ত সহজ সমাধান

প্রস্তুতি:

এই পদ্ধতির পছন্দসই কার্যকারিতা সরবরাহ করতে একটি কাস্টম বাশ ফাংশন ব্যবহার করা হয়। আপনি আপনার টার্মিনাল সেশনে নিম্নলিখিত লাইনটি সম্পাদন করে এটি সংজ্ঞায়িত করেন। মনে রাখবেন যে আপনি এর পরিবর্তে কোনও বৈধ বাশ ভেরিয়েবল নাম চয়ন করতে পারেন runandlog:

runandlog () ( IFS=' '; printf "[%s] $ %s\n%s\n" "$USER" "${*:2}" "$("${@:2}")" | tee -a "$1" | tail -n +2; )

এটি কেবলমাত্র বর্তমান বাশ সেশনের জন্যই স্থায়ী, এর অর্থ টার্মিনাল উইন্ডোটি বন্ধ করার পরে, ফাংশনটি শেষ হয়ে যাবে।
আপনি যদি এটি চেষ্টা করেও পছন্দ করেন তবে আপনি এটি সম্পাদনা করে সর্বদা উপলভ্য করতে পারেন~/.bashrc ফাইল এবং এই লাইনটি এর শেষে যুক্ত ।

কিভাবে ব্যবহার করে:

ফাংশনটি সংজ্ঞায়িত করার পরে, আপনি কমান্ড চালাতে এটি ব্যবহার করতে পারেন যখন নিজেই কমান্ডটি এবং তার আউটপুট উভয় একটি ফাইলে লগইন করতে পারেন। এমনকি এটি কার্যকরকারী ব্যবহারকারীর মতো আপনি আরও তথ্য যুক্ত করতে পারেন, যা আমি ইতিমধ্যে ফাংশনে অন্তর্ভুক্ত করেছি বা সঠিক সময়টি চালানো হয়েছিল। মন্তব্যগুলিতে বৈশিষ্ট্য-অনুরোধ স্বাগত! :)

বাক্য গঠনটি সহজ:

runandlog LOGFILENAME YOUR-COMMAND-WITH-ARGUMENTS

উদাহরণ:

ব্যবহারকারী হিসাবে একটি উদাহরণ সেশন bytecommander, হোম ডিরেক্টরি থেকে অপারেটিং এর মতো দেখতে পারে:

bytecommander: ~ $  runandlog mylogfile fortune
A mathematician is a device for turning coffee into theorems.
        -- P. Erdos

যার ফলে ফলাফলটি নতুন ডিরেক্টরিতে উপস্থিত হবে mylogfile (যদি এটি ইতিমধ্যে বিদ্যমান থাকে তবে ফাংশনটি এতে আউটপুট সংযোজন করবে!) সামগ্রীটির সাথে বর্তমান ডিরেক্টরিতে:

[bytecommander] $ fortune 
A mathematician is a device for turning coffee into theorems.
        -- P. Erdos

3

মোটামুটি অস্পষ্ট তবে কার্যকরী কৌশলটি হ'ল:

(echo "apt-cache depends kde-window-manager" && apt-cache depends kde-window-manager) > ~/Desktop/kwin-depends

কুৎসিত, কিন্তু এটি কার্যকর!


আমি এই উত্তরটি গ্রহণ করছি কারণ সমাধানটি আরও বিস্তৃতভাবে প্রযোজ্য।
ডি কে বোস

@ ডি কেবোস আপনাকে মডিউলটি দু'বার টাইপ করতে হবে। তবে স্ক্রিপ্ট সহ সমাধানটি সত্যই সর্বজনীন।
পাইলট 6

আমি দুঃখিত যে আমাকে এই উত্তরটি গ্রহণ করতে হবে না যদিও তা আমি যা চেয়েছিলাম তা করে। আমি আশা করি আপনি কিছু মনে করবেন না!
ডি কে বোস

2
@ ডি কেবোস কোনও সমস্যা নয়, আমি জানতাম যে উত্তরটি জমা দেওয়ার সাথে সাথে এটি মোটামুটি অনুগ্রহজনক সমাধান এবং পোস্ট করা বিকল্প উত্তরগুলি থেকে কিছু ভাল জিনিস শিখেছি।
অ্যারোনিকাল

2

আপনি কমান্ডটি সহজেই কোনও ফাংশনে প্রেরণ করতে পারেন যা কমান্ডটি প্রথমে মুদ্রণ করবে এবং কমান্ডের আউটপুট পরে প্রেরণ করবে (পুনঃনির্দেশগুলি প্রিন্ট করা কমান্ড থেকে ইচ্ছাকৃতভাবে বাইরে রাখা হয়, আপনি সহজেই কমান্ড থেকে উদ্ধৃতিগুলি মুছে ফেলে এবং $@পরিবর্তে প্রিন্ট করে এবং চালনার মাধ্যমে এটি পরিবর্তন করতে পারেন এর $1ফাংশনে):

function myfunction() {
    printf "%s\n\n" "$1"
    $1
}
$ myfunction "printf \"bar\n\"" > foo
$ cat foo
printf "bar\n"

bar

কমান্ডটি যুক্ত করার পরে আপনি এই কমান্ডটি চালাতে পারেন যা কোনও ফাইলের শীর্ষে সর্বশেষ কমান্ড রান সন্নিবেশ করবে:

<<<"$(<foo)" cat <(history 2 | sed -n '1s/  [0-9][0-9]*  \(.*\)/\1\n/p') - >foo
  • <<<"[...]": এখানে স্ট্রিং; [...]থেকে আপনাকে পুনঃনির্দেশিত করা হয় catএর stdin;
  • $(<foo): কমান্ড প্রতিস্থাপন; এটি "foo" এর সামগ্রী দিয়ে প্রতিস্থাপিত হয়েছে;
  • cat [...] - >foo: "foo" এর stdinসাথে সংযুক্ত [...]এবং আউটপুট;
  • <([...]): প্রক্রিয়া প্রতিস্থাপন: এর আউটপুট ধারণকারী ফাইল বর্ণনাকারী দ্বারা প্রতিস্থাপিত [...];
  • history 2 | sed -n '1s/ [0-9][0-9]* \(.*\)/\1\n/p': সর্বশেষ দুটি কমান্ড আউটপুট করে, দুটি ল্যাপস সরিয়ে এক বা একাধিক অঙ্কের পরে প্রথম লাইন থেকে দুটি ফাঁকা স্থান এবং মুদ্রণ করে;
$ printf "bar\n" >foo
$ <<<"$(<foo)" cat <(history 2 | sed -n '1s/  [0-9][0-9]*  \(.*\)/\1\n/p') - >foo
$ cat foo
printf "bar" >foo

bar

আপনি কেবল ছাপছেন কেন $1? এবং কোন প্রয়োজন নেই eval
টেরডন

@ ইটারডন ওয়েল, ধারণাটি ছিল পুনর্নির্দেশগুলি মুদ্রিত কমান্ডের বাইরে রাখা, যেহেতু আমি ভেবেছিলাম এটি ওপির ক্ষেত্রে সম্ভবত ভাল লাগবে। তবুও যদি আমি এখন এটি পরিবর্তন করি তবে এটি আপনার উত্তরের মতো হবে। তবে হ্যাঁ, evalপ্রয়োজন নেই, আমি কেন আগে এটি যুক্ত করেছি তা নিশ্চিত নয়। ধন্যবাদ।
কোস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.