কেমন করে !! বাশ কাজ?


34

আপনার কমান্ডের শুরুতে আপনি যখন একটি সুডো ভুলে যান তখন খুব কার্যকর যখন আপনি !!পূর্ববর্তী কমান্ডটির একটি উলের মতো কাজ করে। উদাহরণ:

$ mv /very/long/path/for/a/protected/sensible/file/caution.h .
(...) Permission denined
$ sudo !!
sudo mv /very/long/path/for(...) .
[sudo] password :
  • আমরা কীভাবে ডাবল !!ট্রিক বলি ? ইন্টারনেটের মাধ্যমে গবেষণাগুলি সেই টোকেনের কারণে কঠিন।
  • এটা কিভাবে কাজ করে ? আমি ইতিহাস কমান্ডের সাথে একটি লিঙ্ক সন্দেহ করি।
  • এটি সংজ্ঞায়িত কোথায়? আমি কি নিজেকে অন্য কিছু সংজ্ঞায়িত করতে পারি?

সম্পাদনা: কিছু আকর্ষণীয় ইভেন্ট ডিজাইনার

!!:*

এটি পূর্ববর্তী কমান্ডের যুক্তিগুলিকে বোঝায়। ব্যবহারের ক্ষেত্রে :

cat /a/file/to/read/with/long/path
nano !!:*

:p

কমান্ডটি কার্যকর না করেই মুদ্রণ করুন, আপনাকে এটি ইভেন্ট ডিজাইনার শেষে রেখে দিতে হবে।

$ !-5:p
sudo rm /etc/fstab -f

আরও এখানে


3
পড়ুনman history
কস্টাস

1
এটি ইতিহাস সম্প্রসারণের একটি বিশেষ ক্ষেত্রে, যেখানে শেলটি !বর্তমান শেলের ইতিহাস তালিকার সাথে একটি শৃঙ্খলাবদ্ধ কমান্ড দিয়ে কোনও শব্দ প্রসারিত করার চেষ্টা করে । !!একটি বিশেষ মামলা, সমতূল্য !-1, যেখানে একটি ঋণাত্মক সংখ্যা nনিম্নলিখিত !n তম পূর্ববর্তী কমান্ড বোঝায়।
চিপনার

1
@ কাস্টাস, আরও দরকারীভাবে, পড়ুন LESS='+/^HISTORY EXPANSION' man bash
ওয়াইল্ডকার্ড

উত্তর:


34

!!bash"ইভেন্ট ডিজাইনারস" শিরোনামে ম্যানুয়ালটিতে তালিকাভুক্ত রয়েছে :

   An event designator is a reference to a command line  entry  in  the
   history list.  Unless the reference is absolute, events are relative
   to the current position in the history list.

   !      Start a history  substitution,  except  when  followed  by  a
          blank,  newline,  carriage  return,  = or ( (when the extglob
          shell option is enabled using the shopt builtin).
   !n     Refer to command line n.
   !-n    Refer to the current command minus n.
   !!     Refer to the previous command.  This is a synonym for  `!-1'.
   !string
          Refer  to the most recent command preceding the current posi-
          tion in the history list starting with string.
   !?string[?]
          Refer to the most recent command preceding the current  posi-
          tion  in  the history list containing string.  The trailing ?
          may be omitted if string is followed immediately  by  a  new-
          line.
   ^string1^string2^
          Quick  substitution.   Repeat the previous command, replacing
          string1       with       string2.        Equivalent        to
          ``!!:s/string1/string2/'' (see Modifiers below).
   !#     The entire command line typed so far.

সুতরাং !!পূর্ববর্তী কমান্ড দিয়ে প্রতিস্থাপন করা হবে।

মনে রাখবেন যে শেলের ইতিহাসে আক্ষরিক অন্তর্ভুক্ত থাকবে না !!বরং পরিবর্তে প্রকৃত আদেশটি কার্যকর হবে:

$ ls
[some output]

$ !! .
[same output]

$ history 3
  645  2016-08-25 17:40:55 ls
  646  2016-08-25 17:40:57 ls .
  647  2016-08-25 17:41:00 history 3
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.