কমান্ড এন বার চালানোর জন্য আরও ভাল উপায় আছে কি?


304

আমি মাঝে মাঝে এর মতো একটি বাশ কমান্ড লাইন চালাচ্ছি:

n=0; while [[ $n -lt 10 ]]; do some_command; n=$((n+1)); done

এক্ষেত্রে some_commandএকাধিকবার চালানো - এই ক্ষেত্রে 10 বার।

প্রায়শই some_commandহ'ল সত্যিকার অর্থে কমান্ড বা পাইপলাইন।

এটি করার কি আরও সংক্ষিপ্ত উপায় আছে?


1
অন্যান্য দুর্দান্ত উত্তরগুলি ছাড়াও আপনি (3 টি কম অক্ষর) এর let ++nপরিবর্তে ব্যবহার করতে পারেন n=$((n+1))
মুসিফিল

1
এই পদ্ধতিগুলির মধ্যে কোনটি বহনযোগ্য সেগুলির কয়েকটি ইঙ্গিত ভাল would
ফাহিম মিঠা


3
আপনি শেল পরিবর্তন করতে ইচ্ছুক হলে, zshআছে repeat 10 do some_command; done
চিপনার

1
@ জনভান্দিভিয়ার আমি কেবল তাজা 18.04 ডকার পাত্রে এটি ব্যাশে চেষ্টা করেছি, আমার প্রশ্নটিতে পোস্ট করা মূল বাক্য গঠন এখনও কাজ করে। সম্ভবত আপনি বাশ ছাড়া অন্য শেল চালাচ্ছেন, যেমন / বিন / শ, যা সত্যিই ড্যাশ, সেই ক্ষেত্রে আমি ফিরে আসব sh: 1: [[: not found
bstpierre

উত্তর:


479
for run in {1..10}
do
  command
done

বা যারা অনুলিপি করে সহজে অনুলিপি করতে চান তাদের জন্য ওয়ান-লাইনার হিসাবে:

for run in {1..10}; do command; done

19
আপনার যদি প্রচুর পরিমাণে পুনরাবৃত্তি থাকে তবে ফর্মটি আরও for (n=0;n<k;n++))ভাল হতে পারে; আমার সন্দেহ {1..k}হয় স্থানগুলির দ্বারা পৃথককৃত সমস্ত পূর্ণসংখ্যার সাথে একটি স্ট্রিং তৈরি করবে।
জো কোবার্গ

@ জো কোবার্গ, টিপটির জন্য ধন্যবাদ। আমি সাধারণত এন <100 ব্যবহার করি তাই এটি ভাল মনে হয়।
bstpierre

10
@bstpierre: ব্রেস সম্প্রসারণ ফর্মটি ব্যাশগুলিতে সীমাটি নির্দিষ্ট করতে ভেরিয়েবলগুলি (সহজেই) ব্যবহার করতে পারে না।
পরবর্তী বিজ্ঞপ্তি না হওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

5
ঐটা সত্য. ব্রেস এক্সপেনশন gnu.org/software/bash/manual/bashref.html#B्रेस- এক্সপেনশন অনুযায়ী পরিবর্তনশীল প্রসারণের আগে সম্পাদিত হয়, সুতরাং এটি কোনও ভেরিয়েবলের মান দেখতে পাবে না।
জো কোবার্গ

5
পরিবর্তনশীল সম্প্রসারণ সম্পর্কে দুঃখজনক বিষয়। আমি এন-বার লুপ করতে নিম্নলিখিতগুলি ব্যবহার করছি এবং সংখ্যার n=15;for i in $(seq -f "%02g" ${n});do echo $i; done 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
ফর্ম্যাট করেছি

203

একটি ধ্রুবক ব্যবহার:

for ((n=0;n<10;n++)); do some_command; done

একটি ভেরিয়েবল ব্যবহার করে (গণিতের এক্সপ্রেশনগুলি অন্তর্ভুক্ত করতে পারে):

x=10; for ((n=0; n < (x / 2); n++)); do some_command; done

4
এটি প্রোগ্রামিং ভাষার নিকটতম উপায় ^^ - এটি গ্রহণযোগ্য হওয়া উচিত!
নম জি ভিইউ

এইটি আরও ভাল কারণ এটি একক লাইন এবং তাই টার্মিনালের মধ্যে ব্যবহার করা সহজ
কুনোক

আপনি একটি পরিবর্তনশীলও ব্যবহার করতে পারেন, যেমনx=10 for ((n=0; n < $x; n++));
জেলফি

@ কনোক এটি গ্রহণযোগ্য উত্তরকে এক লাইনে চালানো ঠিক ততটাই গ্রহণযোগ্য:for run in {1..10}; do echo "on run $run"; done
ডগলাস অ্যাডামস

যদি nইতিমধ্যে একটি নির্দিষ্ট মান সেট করা হয়? for (( ; n<10; n++ ))স্বল্পতা কাজ / সম্পাদনা: সেরা সম্ভবত মত অন্যান্য উত্তর একটি ব্যবহার while (( n++...এক
phil294

121

এটি হ্যাক করার আরও একটি সহজ উপায়:

seq 20 | xargs -Iz echo "Hi there"

প্রতিধ্বনিত 20 বার।


লক্ষ্য করুন যে seq 20 | xargs -Iz echo "Hi there z"আউটপুট হবে:

হাই সেখানে 1
হাই 2
...


4
আপনার এমনকি 1 seq 20
টিরও

16
সংস্করণ 2015:seq 20 | xargs -I{} echo "Hi there {}"
mitnk

4
দ্রষ্টব্য যে zকোনও ভাল স্থানধারক নয় কারণ এটি এত সাধারণ যে কমান্ড পাঠ্যে নিয়মিত পাঠ্য হতে পারে। ব্যবহার {}আরও ভাল হবে।
mitnk

4
নম্বরটি বাদ দেওয়ার কোনও উপায় seq? সুতরাং এটি কেবল Hi there 20 বার মুদ্রণ করবে (সংখ্যা নেই)? সম্পাদনা করুন: কেবল ব্যবহার করুন -I{}এবং তারপরে {}কমান্ডটিতে কিছু নেই
মাইক গ্রাফ

1
কেবল কিছু ব্যবহার করুন, আপনি নিশ্চিত যে এটি আউটপুটটিতে আসবে না, উদাহরণস্বরূপ IIIIIতারপর এটি দুর্দান্ত দেখাচ্ছে উদাহরণস্বরূপ:seq 20 | xargs -IIIIII timeout 10 yourCommandThatHangs
রুবো 77

79

আপনি যদি zsh শেল ব্যবহার করছেন:

repeat 10 { echo 'Hello' }

যেখানে 10 হ'ল কমান্ডটি পুনরাবৃত্তি হবে তার সংখ্যা।


11
যদিও এটি প্রশ্নের উত্তর নয় (যেহেতু এটি স্পষ্টভাবে ব্যাশের উল্লেখ করেছে), এটি খুব দরকারী এবং আমার সমস্যা সমাধানে আমাকে সহায়তা করেছে। +1
অফ বাউন্ড

2
এছাড়াও, আপনি যদি এটি কেবলমাত্র টার্মিনালে টাইপ করেন তবে আপনি এমন কিছু ব্যবহার করতে পারেনrepeat 10 { !! }
রেনাটো গোমেস

28

জিএনইউ সমান্তরাল ব্যবহার করে আপনি এটি করতে পারেন:

parallel some_command ::: {1..1000}

আপনি যদি যুক্তি হিসাবে নম্বরটি না চান এবং একবারে কেবল একটি কাজ চালান:

parallel -j1 -N0 some_command ::: {1..1000}

দ্রুত পরিচয়ের জন্য ইন্ট্রো ভিডিওটি দেখুন: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

টিউটোরিয়াল (ভিতর দিয়ে হেটে যেতে http://www.gnu.org/software/parallel/parallel_tutorial.html )। আপনি এটির জন্য আপনাকে ভালবাসার আদেশ দিন।


আপনি কেন এমন একটি সরঞ্জাম ব্যবহার করবেন যার অস্তিত্বের খুব কারণ, যার নাম হিসাবে এটি সুস্পষ্টভাবে প্রমাণিত, জিনিসগুলিকে সমান্তরালভাবে চালানো , এবং তারপরে এটিকে সমান্তরালতা বন্ধ করে দেওয়ার মতো গুপ্ত আঙ্গিক -j1 -N0দেয় ????
রস প্রেসার

@RossPresser এটি একটি খুব যুক্তিসঙ্গত প্রশ্ন। কারণটি হ'ল GNU সমান্তরাল বাক্য গঠন ব্যবহার করে আপনি যা করতে চান তা প্রকাশ করা সহজ হতে পারে। ভাবুন: আপনি some_commandকোন যুক্তি ছাড়াই সিরিয়ালটিতে 1000 বার কীভাবে চালাবেন ? এবং: আপনি কি তার চেয়ে কম সংক্ষিপ্ত প্রকাশ করতে পারেন parallel -j1 -N0 some_command ::: {1..1000}?
ওলে টেঞ্জ

ঠিক আছে, আমি অনুমান করি আপনার কাছে কিছুটা বিন্দু রয়েছে তবে এটি এখনও সত্যই একটি হাতুড়ি হিসাবে একটি সূক্ষ্ম কারুকাজ করা ইঞ্জিন ব্লক ব্যবহার করার মতো অনুভব করে। যদি আমি পর্যাপ্ত উদ্দেশ্যপ্রণোদিত ছিল, এবং আমার ভবিষ্যৎ আমি কি বোঝার চেষ্টা উত্তরাধিকারীদের সহানুভূতিশীল অনুভূত, আমি সম্ভবত একটি শেল স্ক্রিপ্ট বিভ্রান্তি মোড়ানো চাই এবং মাত্র সঙ্গে এটি কল repeat.sh repeatcount some_command। শেল স্ক্রিপ্টে প্রয়োগের জন্য আমি সম্ভবত এটি ব্যবহার করতে পারি parallel, যদি এটি ইতিমধ্যে মেশিনে ইনস্টল করা থাকে (সম্ভবত এটি নাও হত)। নাকি আমি xargs প্রতি ঝুঁকিয়ে পারে যেহেতু যে যখন কোনো পুননির্দেশ দ্বারা প্রয়োজন হয় দ্রুততম হবে বলে মনে হয় some_command
রস প্রেসার

আমার "অত্যন্ত যুক্তিসঙ্গত প্রশ্ন" যদি অযৌক্তিকভাবে প্রকাশ করা হয় তবে আমি ক্ষমা চাই ize
রস প্রেসার

1
এই নির্দিষ্ট ক্ষেত্রে এটি এতটা সুস্পষ্ট নাও হতে পারে। আপনি যদি জিএনইউ প্যারালাল এর আরও বেশি বিকল্প ব্যবহার করেন তবে এটি আরও স্পষ্ট হয়ে ওঠে, যেমন আপনি যদি 4 বার ব্যর্থ কমান্ডগুলি আবার চেষ্টা করতে চান এবং আউটপুটটি বিভিন্ন ফাইলে সংরক্ষণ করতে চান:parallel -N0 -j1 --retries 4 --results outputdir/ some_command
ওলে ট্যাঞ্জ

18

ব্যাশ কনফিগ ফাইলে একটি সাধারণ ফাংশন ( ~/.bashrcপ্রায়শই) ভালভাবে কাজ করতে পারে।

function runx() {
  for ((n=0;n<$1;n++))
    do ${*:2}
  done
}

এটিকে কল করুন।

$ runx 3 echo 'Hello world'
Hello world
Hello world
Hello world

1
পছন্দ করি. এখন যদি এটি সিটিআরএল + সি দিয়ে বাতিল করা যায় তবে তা দুর্দান্ত হবে
স্ল্যাশডটটিয়ার

Way RANDOM এন প্রতিধ্বনি করতে এই পদ্ধতিটি ব্যবহার করে কেন একই সংখ্যা প্রদর্শিত হয়?
ব্লেডমিট

3
এটি পুরোপুরি কাজ করে। আমার কেবলমাত্র পরিবর্তন করার দরকার ছিল কেবলমাত্র do ${*:2}আমি এটি করার পরিবর্তে do eval ${*:2}এটি নিশ্চিত করার জন্য যে এটি এক্সিকিউটেবলের সাথে শুরু না হওয়া কমান্ডগুলি চালানোর জন্য কাজ করে। উদাহরণস্বরূপ, আপনি যদি কোনও কমান্ড চালানোর আগে পরিবেশের পরিবর্তনশীল সেট করতে চান SOME_ENV=test echo 'test'
5_nd_5

12

xargsহয় ফাস্ট :

#!/usr/bin/bash
echo "while loop:"
n=0; time while (( n++ < 10000 )); do /usr/bin/true ; done

echo -e "\nfor loop:"
time for ((n=0;n<10000;n++)); do /usr/bin/true ; done

echo -e "\nseq,xargs:"
time seq 10000 | xargs -I{} -P1 -n1 /usr/bin/true

echo -e "\nyes,xargs:"
time yes x | head -n10000 |  xargs -I{} -P1 -n1 /usr/bin/true

echo -e "\nparallel:"
time parallel --will-cite -j1 -N0 /usr/bin/true ::: {1..10000}

একটি আধুনিক -৪-বিট লিনাক্সে, দেয়:

while loop:

real    0m2.282s
user    0m0.177s
sys     0m0.413s

for loop:

real    0m2.559s
user    0m0.393s
sys     0m0.500s

seq,xargs:

real    0m1.728s
user    0m0.013s
sys     0m0.217s

yes,xargs:

real    0m1.723s
user    0m0.013s
sys     0m0.223s

parallel:

real    0m26.271s
user    0m4.943s
sys     0m3.533s

এটি বোঝা যায়, যেহেতু xargsকমান্ডটি একক দেশীয় প্রক্রিয়া যা /usr/bin/trueকমান্ডটি একাধিকবার উত্সাহিত করে , forএবং whileবাশগুলিতে সমস্ত ব্যাখ্যা করা লুপগুলির পরিবর্তে । অবশ্যই এটি কেবল একটি কমান্ডের জন্য কাজ করে; যদি আপনাকে প্রতিটি পুনরাবৃত্তির লুপে একাধিক কমান্ড করার দরকার হয় তবে এটি পাস করার চেয়ে দ্রুত, বা সম্ভবত দ্রুত হবেsh -c 'command1; command2; ...' এক্সার্গে

এটিকেও বলা -P1যেতে পারে,-P8 সমান্তরাল 8 প্রসেস ডিম যাও গতি আরো একটি বড় বুস্ট জন্য।

আমি জানি না কেন জিএনইউ সমান্তরাল এত ধীর। আমি ভাবতাম যে এটি জার্গসের সাথে তুলনীয় হবে।


1
জিএনইউ সমান্তরাল সেটআপ এবং বুককিপিংয়ের জন্য প্রচুর পরিমাণে কাজ করে: এটি প্রোগ্রামেবল রিপ্লেসমেন্ট স্ট্রিং সমর্থন করে, এটি আউটপুট বাফার করে যাতে দুটি সমান্তরাল কাজ থেকে আউটপুট কখনই মিশ্রিত হয় না, এটি দিক সমর্থন করে (আপনি করতে পারবেন না: xargs "প্রতিধ্বনি> ফু") এবং যেহেতু এটি না বাশে লিখিত এটি পুনর্নির্দেশটি করতে একটি নতুন শেল স্প্যান করতে হবে। তবে প্রাথমিক কারণটি পার্ল মডিউল আইপিসি :: ওপেন 3-তে রয়েছে - সুতরাং দ্রুত পাওয়ার বিষয়ে যে কোনও কাজের ফলে দ্রুত জিএনইউ সমান্তরাল হয়।
ওলে টেঞ্জ


7

একটির জন্য, আপনি এটি একটি ফাংশন এ গুটিয়ে রাখতে পারেন:

function manytimes {
    n=0
    times=$1
    shift
    while [[ $n -lt $times ]]; do
        $@
        n=$((n+1))
    done
}

এটিকে কল করুন:

$ manytimes 3 echo "test" | tr 'e' 'E'
tEst
tEst
tEst

2
কোনও কমান্ড ছাড়াই কোনও কমান্ডের চেয়ে চালানোর কমান্ডটি আরও জটিল হলে এটি কাজ করবে না।
চিপনার

আপনি এটিকে আরও জটিল ক্ষেত্রে কাজ করতে পারেন তবে আপনাকে কোনও ফাংশন বা স্ক্রিপ্টে কমান্ডটি মোড় করতে হতে পারে।
বিটিএ

2
trএখানে বিভ্রান্তিকর এবং এটি আউটপুট উপর কাজ করছে manytimes, না echo। আমি মনে করি আপনার এটি নমুনা থেকে অপসারণ করা উচিত।
দিমিত্রি জিনজবার্গ

7

xargs এবং seq সাহায্য করবে

function __run_times { seq 1 $1| { shift; xargs -i -- "$@"; } }

দৃশ্য :

abon@abon:~$ __run_times 3  echo hello world
hello world
hello world
hello world

2
কমান্ডের শিফট এবং ডাবল ড্যাশ কি করে? 'শিফট' কি আসলেই প্রয়োজনীয়?
sebs

2
কমান্ডটি কোনও পুনর্নির্দেশ ছাড়াই সাধারণ কমান্ডের চেয়ে জটিল হলে এটি কাজ করবে না।
চিপনার

খুব ধীর, প্রতিধ্বনি $ এলোমেলোভাবে 50 বার 7 সেকেন্ড সময় নিয়েছে এবং তবুও এটি প্রতিটি রান একই র্যান্ডম সংখ্যার প্রদর্শন করে ...
ব্লেডমাইট

6
for _ in {1..10}; do command; done   

ভেরিয়েবল ব্যবহার না করে আন্ডারস্কোরটি নোট করুন।


9
যদিও প্রযুক্তিগতভাবে, _একটি পরিবর্তনশীল নাম।
gniourf_gniourf

5

আপনি যদি পর্যায়ক্রমে এটি ঠিকঠাক করেন তবে আপনি প্রতি 1 সেকেন্ড অনির্দিষ্টকালের জন্য চালানোর জন্য নীচের কমান্ডটি চালাতে পারেন। এটিকে চালানোর জন্য আপনি অন্যান্য কাস্টম চেক রাখতে পারেন n

watch -n 1 some_command

আপনি যদি পরিবর্তনের ভিজ্যুয়াল কনফার্মেশন --differencesপেতে চান তবে lsকমান্ডের আগে সংযোজন করুন ।

ওএসএক্স ম্যান পৃষ্ঠা অনুসারে, রয়েছে

--Cumulative বিকল্পটি "স্টিকি" হাইলাইট করে তোলে, যা পরিবর্তিত সমস্ত অবস্থানের চলমান প্রদর্শন উপস্থাপন করে। -T বা --no-শিরোনাম বিকল্পটি প্রদর্শনের শীর্ষে অন্তর, কমান্ড এবং বর্তমান সময়ের সাথে নীচের ফাঁকা রেখাটি প্রদর্শন করে শিরোনাম বন্ধ করে দেয়।

লিনাক্স / ইউনিক্স ম্যান পৃষ্ঠাটি এখানে পাওয়া যাবে


5

আমি এই লুপটি দিয়ে সমাধান করেছি, যেখানে পুনরাবৃত্তিটি একটি পূর্ণসংখ্যা যা লুপগুলির সংখ্যা উপস্থাপন করে

repeat=10
for n in $(seq $repeat); 
    do
        command1
        command2
    done

4

তবুও অন্য উত্তর: খালি প্যারামিটারগুলিতে প্যারামিটার সম্প্রসারণ ব্যবহার করুন:

# calls curl 4 times 
curl -s -w "\n" -X GET "http:{,,,}//www.google.com"

Centos 7 এবং MacOS এ পরীক্ষিত।


এটি আকর্ষণীয়, আপনি কেন এই কাজ করে তার আরও কিছু বিশদ সরবরাহ করতে পারেন?
হাসান মাহমুদ

1
এটি প্যারামিটার সম্প্রসারণের জন্য এন বার চলছে তবে প্যারামিটার খালি থাকায় এটি আসলে যা চালিত হয় তা পরিবর্তন করে না
jcollum

প্যারামিটার সম্প্রসারণ এবং কার্ল অনুসন্ধানের ফলে কোনও ফলাফল হয়নি। আমি সবে কার্ল জানি। আপনি যদি আমাকে এই বৈশিষ্ট্যের জন্য কোনও নিবন্ধ বা অন্য কোনও সাধারণ নামের দিকে নির্দেশ করতে পারেন তবে দুর্দান্ত লাগবে। ধন্যবাদ।
হাসান মাহমুদ

1
আমি মনে করি এটি gnu.org/software/bash/manual/html_node/…
jcollum

3

বিদ্যমান সমস্ত উত্তর প্রয়োজন বলে মনে হয় bashএবং এটি একটি স্ট্যান্ডার্ড বিএসডি ইউনিক্স /bin/sh(যেমন, kshওপেনবিএসডি তে ) নিয়ে কাজ করে না।

নীচের কোডটি যে কোনও বিএসডি-তে কাজ করা উচিত:

$ echo {1..4}
{1..4}
$ seq 4
sh: seq: not found
$ for i in $(jot 4); do echo e$i; done
e1
e2
e3
e4
$

2

কিছুটা নিখুঁত তবে এটাই আমি সাধারণত আমার মাথার উপরের অংশ থেকে মনে করি:

for i in 1 2 3; do
  some commands
done

@ জো-কোবার্গের উত্তরের সাথে খুব মিল। বিশেষত আপনার যদি অনেক পুনরাবৃত্তি প্রয়োজন হয় তবে অন্য সিনট্যাক্সের কথা মনে রাখা আমার পক্ষে আরও কঠিন কারণ গত বছরগুলিতে আমি খুব বেশি ব্যবহার করছি না bash। মানে কমপক্ষে স্ক্রিপ্টিংয়ের জন্য নয়।


1

স্ক্রিপ্ট ফাইল

bash-3.2$ cat test.sh 
#!/bin/bash

echo "The argument is  arg: $1"

for ((n=0;n<$1;n++));
do
  echo "Hi"
done

এবং নীচে আউটপুট

bash-3.2$  ./test.sh 3
The argument is  arg: 3
Hi
Hi
Hi
bash-3.2$


0

লুপগুলি সম্ভবত এটি করার সঠিক উপায় তবে এখানে একটি মজাদার বিকল্প রয়েছে:

echo -e {1..10}"\n" |xargs -n1 some_command

আপনার অনুরোধের জন্য প্যারামিটার হিসাবে যদি আপনার পুনরাবৃত্তি সংখ্যা প্রয়োজন হয় তবে ব্যবহার করুন:

echo -e {1..10}"\n" |xargs -I@ echo now I am running iteration @

সম্পাদনা: এটি যথাযথভাবে মন্তব্য করা হয়েছিল যে উপরে বর্ণিত সমাধানটি কেবল সহজ কমান্ড রান (কোনও পাইপ ইত্যাদির সাহায্যে) সহজেই কাজ করবে। আপনি সর্বদা একটি ব্যবহার করতে পারেনsh -c আরও জটিল জিনিসগুলি পারেন, তবে এটির পক্ষে উপযুক্ত নয়।

আমি সাধারণত যে অন্য পদ্ধতিটি ব্যবহার করি তা হ'ল নিম্নলিখিত ফাংশন:

rep() { s=$1;shift;e=$1;shift; for x in `seq $s $e`; do c=${@//@/$x};sh -c "$c"; done;}

এখন আপনি এটি হিসাবে কল করতে পারেন:

rep 3 10 echo iteration @

প্রথম দুটি সংখ্যা পরিসীমা দেয়। @পুনরাবৃত্তির নম্বরে অনূদিত হবে। এখন আপনি এটি পাইপগুলির সাহায্যেও ব্যবহার করতে পারেন:

rep 1 10 "ls R@/|wc -l"

আপনাকে ডিরেক্টরিতে আর 1 ফাইলের সংখ্যা দেবে .. আর 10।


1
কমান্ডটি কোনও পুনর্নির্দেশ ছাড়াই সাধারণ কমান্ডের চেয়ে জটিল হলে এটি কাজ করবে না।
চিপনার

যথেষ্ট ন্যায্য, কিন্তু উপরে আমার সম্পাদনা দেখুন। সম্পাদিত পদ্ধতিতে একটি sh -c ব্যবহার করা হয়, সুতরাং পুনঃনির্দেশের সাথেও কাজ করা উচিত।
স্ট্যাক্সিয়া

rep 1 2 touch "foo @""foo 1" এবং "foo 2" দুটি ফাইল তৈরি করবে না; বরং এটি "ফু", "1" এবং "2" তিনটি ফাইল তৈরি করে। সরাসরি ব্যবহার করে উদ্ধৃতি পাওয়ার জন্য একটি উপায় থাকতে পারে printfএবং %qএটি একটি কৌশলতে সঠিকভাবে উদ্ধৃত শব্দের একটি স্বেচ্ছাসেবী ক্রমটি পেতে জটিল হবে sh -c
চিপনার

ওপি আরও সংক্ষিপ্ততার জন্য জিজ্ঞাসা করেছিল , ইতিমধ্যে আরও 5 টি সংক্ষিপ্ত উত্তর থাকলে আপনি কেন এমন কিছু যুক্ত করছেন?
জোসকা

একবার আপনি সংজ্ঞা নির্ধারণ repআপনার .bashrc, আরও আমন্ত্রণ আরো অনেক সংক্ষিপ্ত হয়ে।
মুসিফিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.