ছোট অক্ষরে রূপান্তরিত সমস্ত অক্ষর সহ শেষ কমান্ডটি চালান


15

অনেকবার আমি বড় হাতের অক্ষরে সমস্ত অক্ষর (একটি কারণ সম্ভবত চালু CapsLockছিল) দিয়ে একটি কমান্ড চালিয়েছি এবং এটি Enterউপলব্ধি করার আগে আমি টিপলাম ।

ছোট অক্ষরে রূপান্তরিত সমস্ত অক্ষর দিয়ে আমি কীভাবে শেষ কমান্ডটি চালাব?


লজ্জা আপনি zsh ব্যবহার করছেন না। !!:l
কেভিন

উত্তর:


19

??আপনার .bashrcফাইলটিতে নিম্নলিখিত ছোট ফাংশনটি যুক্ত করে (এটি আমি খুব সাধারণ বলে আছি , তবে আপনি এটি নিজের ইচ্ছানুসারে পরিবর্তন করতে পারেন) যোগ করে তা সম্পাদন করতে পারেন :

?? () { "${@,,}"; }

পরবর্তী, আপনি যখন চালাবেন:

?? !!

শেষ কমান্ডটি ছোট অক্ষরে সমস্ত অক্ষর দিয়ে চালানো হবে।

ব্যাখ্যা

  • !!: এটি বাশের ইতিহাস সরঞ্জামগুলির অংশ, বিশেষত, এটি শেষ কমান্ড রানটিতে প্রসারিত । সুতরাং, উদাহরণস্বরূপ, echo !!এই নির্দিষ্ট শেল সেশনে রান করা শেষ কমান্ডটি মুদ্রণ করবে।
  • "${@,,}: কনস্ট্রাক্ট ভেরিয়েবলের ${foo,,} সামগ্রীগুলি$foo সমস্ত ছোট হাতের অক্ষরে রূপান্তরিত করবে। $@অবস্থানগত পরামিতিগুলির অ্যারে। যখন কোনও ফাংশনের অভ্যন্তরে ব্যবহৃত হয়, তখন এটি সেই ফাংশনে পাস হওয়া পরামিতিগুলিতে প্রসারিত হয়।

সুতরাং, "${@,,}"কেবল ফাংশনটিতে যা কিছু পাস হয়েছে তা ছোট হাতের মধ্যে রূপান্তরিত করবে এবং তারপরে এটি সম্পাদন করবে। সুতরাং, প্যারামিটার হিসাবে ??ফাংশনটি !!চালানো শেষ কমান্ডটিকে ছোট হাতের অক্ষরে রূপান্তরিত করবে এবং এটি চালাবে।


7
সম্ভবত আপনি কীভাবে এটি কাজ করে তার একটি ব্যাখ্যা যোগ করতে পারেন? এটি আপনি যেভাবে লিখেছেন তা অত্যন্ত গুপ্ত বিষয়। এছাড়াও, এটি আসলে যেমন কাজ করে না। আপনি যেমনটি লিখেছেন, এটি কেবলমাত্র সঠিকভাবে কাজ করবে যদি আপনার পিডাব্লুডি খালি থাকে। আপনার উদ্ধৃতি দিতে হবে "!!"
টেরডন

1
@ ইটারডন এখন, গ্লেনের জন্য ধন্যবাদ, এটি যে কোনও ক্ষেত্রেই কাজ করা উচিত ... এবং ব্যাখ্যা করার মতো খুব বেশি কিছু নেই: ফাংশনটি ??তার যুক্তিগুলির চিঠিগুলি নিম্নতরগুলিতে রূপান্তরিত করে এবং !!বর্তমান কমান্ডের পূর্ববর্তী কমান্ডকে অটোমেটিক্যালি পুনরায় লিখবে (সুতরাং এটি ??গ্রহণ করবে) পূর্ববর্তী আদেশটি তর্ক করুন)।
রাদু রেদেনু

6
`প্রতিধ্বনি !! | ট্র '[: উচ্চতর:]' '[: নিম্ন:]' `

কীটি `(ব্যাকটিক্স) উদ্ধৃতিতে রয়েছে - যা আউটপুটটি কমান্ড হিসাবে চালায়।


2
ব্যাকটিকগুলি যেখানে চিহ্নের ভাষার কারণে উত্তরটির প্রথম সংস্করণে অদৃশ্য। এর জন্য (মন্তব্য ছাড়াই) ডাউনভোট করার দরকার নেই; শুধু সম্পাদনা করুন।
রমানো

trআমার প্রথম পছন্দ হবে। এছাড়াও কাজ করে (ব্যাকটিক্সের বিকল্প এবং $( echo !! | tr '[A-Z]' '[a-z]')
পসিক্স

4

এখানে একটি প্রোগ্রামার উত্তর আসে .... অজগর ব্যবহার করুন:

`echo "print '!!'.lower()" | python`

বা রুবি:

`echo "print '!!'.downcase" | ruby`

বা পার্ল (সম্ভবত আমার প্রিয়):

`perl -e "print lc('!!');"`

বা পিএইচপি:

`php -r "print strtolower('!!');"`

বা আওক:

`echo "!!" | awk '{ print tolower($1) }'`

বা শেড:

`echo "!!" | sed 's/./\L&/g'`

বা বাশ:

str="!!" ; ${str,,}

বা zsh

echo "A='!!' ; \$A:l" | zsh

অথবা যদি আপনার কাছে থাকে তবে নোডজেএস:

`echo "console.log('!!'.toLowerCase());" | node`

আপনি ব্যবহার করতে পারেন dd(কিন্তু আমি না!):

 `echo "!!" | dd  conv=lcase 2> /dev/null`

কাজটি করতে আপনি একটি ছোট স্ক্রিপ্টও তৈরি করতে পারেন:

sudo bash -c 'cat << EOF > /usr/local/bin/lower
#!/usr/bin/python
import fileinput
print "".join(fileinput.input()).lower(),
EOF' && sudo chmod +x /usr/local/bin/lower

যা আপনি এর মতো ব্যবহার করেন:

`echo !! | lower`

1

আর সঙ্গে এক sed,

$(echo !! | sed 's/^\(.*\)$/\L\1/g')

উদাহরণ:

$ SUDO APT-GET UPDATE
SUDO: command not found
$ $(echo !! | sed 's/^\(.*\)$/\L\1/g')

আউটপুট:

$(echo SUDO APT-GET UPDATE | sed 's/^\(.*\)$/\L\1/g')
[sudo] password for avinash: 
0% [Waiting for headers] [Waiting for headers] [Waiting for headers] [Connectin^
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.