ব্যাশে বিস্ময়কর চিহ্ন (!) বোঝা


108

আমি ব্যবহার করতাম

history | less

পূর্ববর্তী কমান্ডগুলির লাইনগুলি পেতে এবং বাম দিকের নম্বরগুলি থেকে আমি লাইনটি পুনরাবৃত্তি করতে চেয়েছি (যেমন 22) এবং করেছি

!22

কমান্ড প্রম্পটে এবং এটি কাজ করে - সেই সময় আমি যে লাইনে করেছিলাম তাতে কমান্ডের সেটটি কার্যকর করে। বিস্ময়কর চিহ্নটি কোথায় ব্যবহৃত হয়েছে, বাশ কর্তৃক গৃহীত পদক্ষেপের ক্ষেত্রে এটি কী উপস্থাপন করে এবং কোথায় এটি ব্যবহার করতে পারে তা আমি বুঝতে পারি না। ডকুমেন্টেশন থেকে আমি এমন কোনও ব্যাখ্যা দেখতে পাচ্ছি না যা 'স্পষ্টত'।


6
এই উত্তরটি সাহায্য করতে পারে
মাইকেল মরোজেক

9
আপনার প্রশ্নের উত্তর নয়, তবে <ctrl> + আর আপনাকে ইন্টারেক্টিভভাবে আপনার ইতিহাস অনুসন্ধান করার অনুমতি দেবে এবং তারপরে আপনি যা সন্ধান করছেন তা যদি খুঁজে পান তবে তাৎক্ষণিকভাবে সম্পাদন করতে পারবেন।
কাস্টারমা

উত্তর:


144

!এটি এমন একটি বৈশিষ্ট্য যা মূলত সি শেলটিতে হাজির হয়েছিল , আপনি তীরচিহ্নগুলি টার্মিনালের উপর নির্ভর করতে পারার আগের দিনগুলিতে। এটি বিশেষত কার্যকর যদি আপনি প্রম্পটে বর্তমান কমান্ড নম্বর যুক্ত করেন ( PS1="\!$ ") যাতে আপনি অতীত কমান্ডগুলির জন্য নম্বর পেতে দ্রুত আপনার পর্দার দিকে নজর দিতে পারেন।

এখন আপনি তীরচিহ্নগুলি এবং Ctrl-Rকমান্ডের ইতিহাস অনুসন্ধান করতে পছন্দ করতে জিনিসগুলি ব্যবহার করতে পারেন , আমি বৈশিষ্ট্যের জন্য খুব বেশি ব্যবহার দেখতে পাচ্ছি না।

এর একটি বৈকল্পিক যা আপনি এখনও কার্যকর দেখতে পাচ্ছেন তা হ'ল !!, যা পূর্ববর্তী আদেশটি পুনরায় কার্যকর করে। নিজে থেকে, আমি ন্যায়বিচারের !!Enterচেয়ে দ্রুত আর কিছু খুঁজে পাই না Enter, তবে বৃহত্তর কমান্ডের সাথে একত্রিত হলে এটি সহায়ক হতে পারে।

উদাহরণ: একটি সাধারণ পাইলট ত্রুটি উপর sudoভিত্তি করে সিস্টেম ভুলে যেতে হয় sudoকমান্ড যে অতিরিক্ত পারমিশন প্রয়োজন উপর উপসর্গ। একজন নবজাতক পুরো কমান্ডটি পুনরায় টাইপ করে। পরিশ্রমী শিক্ষার্থী শেলের কমান্ডের ইতিহাস থেকে কমান্ডটি সম্পাদনা করে। আলোকিত এক প্রকার sudo !!

ব্যাশ আপনি অক্ষম করতে দেয় !সঙ্গে শেল প্রক্রিয়াকরণের set +o histexpandবা set +H। আপনি এটি দিয়ে Zsh এ অক্ষম করতে পারেন set -K


4
আমি Ctrl-P Ctrl-J দেখতে খুব দ্রুত; আপ এন্টার থেকে কমপক্ষে দ্রুত।
প্রকাশিত

24
আপনি যদি কেবল শেষ কমান্ডটি চালাতে চান তবে আপ / এন্টার ঠিক আছে, তবে আপনি যদি এটি কোনওভাবে যুক্ত করতে চান (বলুন, আপনি ভুলে গেছেন sudo, বা কোনও কিছু), তবে আপনি sudo !!উদাহরণস্বরূপ করতে পারেন । এটি "আপ / সিটিআরএল-এ (বা হোম, আপনি যথেষ্ট ভাগ্যবান) / সুডো / স্পেস / এন্টার" থেকে কিছুটা দ্রুত হতে পারে। YMMV। :)

1
@ অ্যাকুরিয়াস পাওয়ার: কেবল এটিকে উদ্ধৃত করুন। উভয় ক্ষেত্রেই echo 'Hi!'বা echo "Hi!"বা echo Hi\!। সবাই একই কাজ করে।
ওয়ারেন ইয়ং

1
setopt NO_BANG_HISTzsh এর চেয়ে বেশি স্মরণীয় হতে পারে -K
গ্রেগরি

48

এখানে যদি দীর্ঘতর উত্তর না হয় তবে অবশ্যই সুপার ব্যবহারকারীটিতে একটি আছে, যেহেতু আমি সম্প্রতি একটি উত্তর পড়েছি। ইন ব্যাশ man পৃষ্ঠা আপনি একটি বিশাল অধ্যায় খেতাবধারী জানতে পারেন ইতিহাস সম্প্রসারণ বিষয়ে।

তোমার চেয়ে মাত্র গত কমান্ডটি প্রয়োগ একটি সম্পূর্ণ হোস্ট আরও অনেক কিছু করতে পারেন, অথবা কমান্ড সংখ্যা এক্স আপনি জিনিস করতে পারেন পছন্দ !catগত কমান্ড যে দিয়ে শুরু চালানোর জন্য cat। অথবা !?bash?:s/bash/csh/ধারণকারী সর্বশেষ কমান্ডটি চালায় bashতবে এর সাথে প্রতিস্থাপন করে csh


3
যদিও ওপির প্রশ্নের সরাসরি উত্তর না হলেও এর জন্য আরও উপায়ে উপায় প্রয়োজন। এত দরকারী! ধন্যবাদ, হাভোক
মালভিম

আহ, গুগল করা শুরু করার আগে আমার সত্যিই ম্যান পৃষ্ঠাটি সন্ধান করা উচিত।
erikbwork

1
!!:s/bash/csh/প্রকৃতপক্ষে শেষ কমান্ডটি চালায় , তবে উপস্থিত থাকলে csh এর সাথে ব্যাশ প্রতিস্থাপন করে। বাশ অন্তর্ভুক্ত শেষ কমান্ড নয়। এটি হতে পারে !?bash?:s/bash/csh/বা হতে পারে!?bash?:s/%/csh/
সিডি

বেশ কয়েক বছর ধরে ব্যাশকে ব্যাপকভাবে ব্যবহার করার পরে, আমি এই শব্দটি সম্পর্কে আগে কখনও জানতাম না দেখে অবাক হয়েছিলাম এবং manপৃষ্ঠাগুলির মধ্য দিয়ে কয়েক ঘন্টা পোর্টিং করেও এই বৈশিষ্ট্যটি অবিশ্বাস্যভাবে অস্পষ্ট। প্রাসঙ্গিক বিভাগটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ - আসল ডক্সে এটিই একমাত্র জায়গা যেখানে তারা এটিকে পর্যাপ্তভাবে ব্যাখ্যা করে।
স্টিভ বেনার

39

আরও অনেক কিছু করা যায় !যেমন:

  • 3 কমান্ডের আগে টাইপ করা একটি কমান্ড কার্যকর করুন: !-3
  • শুরু হওয়া একটি কমান্ড কার্যকর করুন !ls

এবং আরো অনেক কিছু. আপনার জানা উচিত 15 টি লিনাক্স ব্যাশ ইতিহাসের সম্প্রসারণের উদাহরণ দেখুন


এটি উত্সাহিত। অন্যান্য উত্তরের কোনওটিতেই এই চালাক কৌশল ছিল না।
জর্জলি লুকাসি

উত্সাহিত হয়েছে কারণ www.thegeekstuff.com কেবল একটি দুর্দান্ত উত্স, এবং এটি আমি আগে দেখা হয়নি এমন কয়েকটি লিনাক্স নিবন্ধগুলির মধ্যে একটি। খুব উপকারী.
স্টিভ বেনার

4

আমার এক বন্ধু আমাকে এটি ইমেল করেছে:

এটি জিএনইউ ইতিহাস গ্রন্থাগারের অংশ। ব্যাশে এটি আপনার ইতিহাসে কমান্ডগুলি পুনরায় চালাতে ব্যবহৃত হয়। আপনি যদি কৃপণ হতে চান তবে প্রয়োগের তথ্যের জন্য বাশ-৪.১ / লিবিব / রিডলাইন / হিস্টিপেক্স্যান্ড.সি.-তে ইতিহাস_পরিচয়_চ্যারে গ্রেপ করুন।


3

অবশ্যই আপনি !!ব্যাশ শেলের শেষ কমান্ডটি পুনরায় ব্যবহার করতে পারেন । এবং তারপরে !$আপনার শেষ কমান্ডের শেষ অংশটি পুনরায় ব্যবহার করতে হবে।

যেমন কিছু ফাইল দেখুন

less path/to/your/file.txt

আপনি যদি এখন একই ফাইলটি সম্পাদনা করতে চান তবে আপনি !$শেষ কমান্ড থেকে কেবল ফাইলের পাথটি ব্যবহার করতে পারেন

vim !$

1
আহ, আমি এটি খুঁজে প্রত্যাশা ছিল। এটি দুটি আরগের সাথে কীভাবে আচরণ করে?
জোনাথন

এটি কেবল দুজনের শেষ যুক্তি পুনরায় ব্যবহার করবে। $touch f1 f2এবং তারপরে $vim !$মূল্যায়ন করবে$vim f2
তিশান শানুকা জে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.