बैश के बराबर क्या है! $ और !! मछली के खोल में?


30

मैं एक या एक दशक से बैश का उपयोग कर रहा हूं और टाइप करने में सक्षम होने के लिए उपयोग किया है! अंतिम तर्क को दोहराने के लिए $!

$ mkdir foo
$ cd !$
cd foo

(वह अंतिम पंक्ति शेल द्वारा मुद्रित होती है जो आपको बताती है कि आपके कमांड ने क्या मूल्यांकन किया है)। इसी तरह मैं अक्सर निम्नलिखित के लिए:

$ make_sandwich
-bash: make_sandwich: Permission denied
$ sudo !!
sudo make_sandwich

मैं वास्तव में मछली के खोल को पसंद कर रहा हूं, लेकिन मेरी मांसपेशियों की स्मृति बहुत स्थापित है। क्या मछली में एक बराबर है? क्या मैं समान कमांड का उपयोग करने के लिए मछली को कॉन्फ़िगर कर सकता हूं?

जवाबों:


26

Alt- Up arrowआपको पिछली कमांड से अंतिम तर्क देता है। पूर्ववर्ती चक्र चक्र पूर्व तर्कों से गुजरता है।

मुझे तब के !!अलावा एक संतोषजनक समकक्ष नहीं मिला है -UpCtrlA


11

सुडोल !! (या सुडो बैंग बैंग) मेरी सबसे अधिक इस्तेमाल की जाने वाली कमांड में से एक है। मैं अभी भी सिर्फ सादे पुराने बैश का उपयोग कर रहा हूं जो कि अभी ठीक है। यह सुनने के लिए क्षमा करें कि मछली इसे सही तरीके से लागू नहीं करती है। थोड़ा गुगली और मुझे यह मिला:

function sudo
    if test "$argv" = !!
        eval command sudo $history[1]
    else
        command sudo $argv
    end
end

यहाँ पर थ्रेड पर बहुत अधिक विकल्प हैं: https://github.com/fish-shell/fish-shell/issues/288


मुझे वह कोड कहां दर्ज करना है? उस मछली में प्रवेश करना और फिर "सुडो !!" "स्रोत: फ़ाइल को पढ़ते समय त्रुटि" के साथ कुछ त्रुटि रेखाएँ देता है - ''
बेनेडिकट एस। वोग्लर 23'16 '14:

11

मुझे मछली-उपयोगकर्ताओं की मेलिंग सूची पर यह सही उत्तर मिला :

function bind_bang
    switch (commandline -t)[-1]
        case "!"
            commandline -t $history[1]; commandline -f repaint
        case "*"
            commandline -i !
    end
end

function bind_dollar
    switch (commandline -t)[-1]
        case "!"
            commandline -t ""
            commandline -f history-token-search-backward
        case "*"
            commandline -i '$'
    end
end

function fish_user_key_bindings
    bind ! bind_bang
    bind '$' bind_dollar
end

मछली की गितुब विकि पर आगे की चर्चा


यह बहुत अच्छा है! आपको इसे शामिल करने के लिए शीर्ष उत्तर को संपादित करने पर विचार करना चाहिए ...
15:14 पर user1480704

2
मैंने इसे बनाया ~/.config/fish/config.fishऔर चिपकाया। मछली को फिर से शुरू करने के बाद इसने बहुत अच्छा काम किया।
काटू

3

मुझे आपके समान ही समस्या थी, और मैंने oh-my-fish इसका उपयोग करके तय किया (यह fishशेल के लिए एक प्लगइन प्रबंधक है ) https://github.com/oh-my-fish/oh-my-fish । आप इसे इस आदेश के साथ स्थापित कर सकते हैं:

curl -L https://get.oh-my.fish | fish

फिर bang-bangइस कमांड के साथ प्लगइन स्थापित करें :

omf install bang-bang 

1

यदि आप !!केवल के संदर्भ में उपयोग करते हैं sudo !!, तो आप एक कुंजीबाइंड को परिभाषित कर सकते हैं ^s(CTRL + s) जो आपके कमांड में sudo को प्रस्तुत करता है:

function prepend_command
  set -l prepend $argv[1]
  if test -z "$prepend"
    echo "prepend_command needs one argument."
    return 1
  end

  set -l cmd (commandline)
  if test -z "$cmd"
    commandline -r $history[1]
  end

  set -l old_cursor (commandline -C)
  commandline -C 0
  commandline -i "$prepend "
  commandline -C (math $old_cursor + (echo $prepend | wc -c))
end

यह किसी भी कमांड में टाइप करने की अनुमति देता है और टाइप करते समय या आपके मामले में पसंद के अनुसार सुडोल को प्रीपेंड करता है sudo !!

जीतू चर्चा पर अही की टिप्पणी देखें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.