यूनिक्स में मक्खी पर इतिहास का उपयोग कैसे करें?


12

उदाहरण के लिए, यदि मैं ए

mkdir thisismyfolder912

मुझे याद है कि ऐसा करने के लिए स्विच करने के लिए कुछ आसान तरीका thisismyfolder912है

cd thisismyfolder912

वह तरीका क्या है और यह कैसे काम करता है? इसके अलावा, मैं इसके इस्तेमाल के और क्या तरीके हैं?


1
अपने हालिया इतिहास सूची में नहीं, कमांड और निर्देशिका के लिए TAB- पूरा करने का उपयोग करें। cd this<TAB>
उलट

जवाबों:


10

क्या आप क्लासिक इतिहास विस्तार, या रीडलाइन प्रसंस्करण के बारे में बात कर रहे हैं? cd !$अगले इनपुट लाइन पर पिछली पंक्ति के अंतिम बहस में विकल्प होगा, या M-.या M-_ReadLine का उपयोग कर इसे झटका होगा।



मैं ढूंढ रहा था cd !$। "क्लासिक इतिहास विस्तार या रीडलाइन प्रोसेसिंग" मुझे ठीक से समझ में नहीं आ रहा है कि आपका क्या मतलब है ...
लेज़र

2
@Lazer !$एक इतिहास विस्तार है ; शेल इसे संसाधित करता है क्योंकि यह आपकी कमांड को पार्स करता है। म-। रीडलाइन कीस्ट्रोके है; रीडलाइन वह लाइब्रेरी है जो आपके द्वारा दबाए गए प्रत्येक कुंजी को संभालती है, और यह देखती है कि आपने M- दबाया। और स्वचालित रूप से आप के लिए पिछले आदेश के अंतिम बहस में प्रकार
माइकल Mrozek

9

यदि आपका प्रश्न कमांड इतिहास तक पहुंचने के बारे में है, तो इस अच्छी तरह से नामित कमांड का प्रयास करें

history 

आप Ctrl+ को भी आज़मा सकते हैं rऔर एक कमांड टाइप करना शुरू कर सकते हैं जिसे आप यह याद रखने की कोशिश कर रहे हैं कि आपने हाल ही में टाइप किया है।

(reverse-i-search)`cd ': cd mydir/data/

ESCकमांड का चयन करने के लिए मारो या बाहर निकलें। यह मेरे लिए कम से कम SuSE पर काम करता है; अन्य विकृतियों के बारे में निश्चित नहीं है।


4
वाह! यह वास्तव में मेरे जीवन को बदलने वाला है। भाड़ में जाओ तुम history | grep ...!
ओली

यह सिर्फ SuSE से संबंधित नहीं है, मुझे लगता है कि यह एक बैश फीचर है :)
sakisk

मैं सिर्फ viआपकी कमांड लाइन को प्रबंधित करने के लिए उपयोग करने के बारे में पढ़ता हूं । सुपर कूल लग रहा है। शेल कमांड्स को संपादित करने के लिए vi का उपयोग करना
Banjer

7

यह Alt+ जैसा सरल है.

$ mkdir lasdfjalsdkjf
$ cd 

Alt + .

$ cd lasdfjalsdkjf

ऑल्ट के आसपास आपको फैंसी बॉक्स कैसे मिला? मैंने इसे हेल्प गाइड में नहीं देखा।
बंजर

2
@ बंजर: <kbd></kbd>कुंजी को घेरने के लिए टैग का उपयोग करें।
लेज़र


इसके अलावा, इस रूप में ही है जेएमबी का जवाब
माइकल Mrozek

2

यह हमेशा मेरे लिए काम किया है:

mkdir thisismyfolder
cd $_

इसके लिए बाहर देखें, हालांकि: $!आपके द्वारा लिखे गए अंतिम शब्द तक $_फैलता है , विस्तार के बाद अंतिम शब्द तक फैलता है - इसलिए आप echo /tmp/tmpfile*उन फ़ाइलों का एक गुच्छा देख सकते हैं जिन्हें आप निकालना चाहते हैं, लेकिन फिर rm $_उनमें से केवल एक को हटा देंगे।
जंब

1

यदि आप डालते हैं, तो दूसरे धागे से एक टिप लेना:

bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward

अपने .bashrc में तब, आप अपने इतिहास से कुछ लिखना शुरू कर सकते हैं, और फिर ऊपर तीर दबा सकते हैं, और फिर आइटम द्वारा अपने इतिहास आइटम के माध्यम से जाने के बजाय, यह पिछली प्रविष्टियों पर अधिकार छोड़ देगा जो आपके पहले से ही शुरू हो गए हैं। आपके द्वारा लिखा गया।

मुझे लगता है कि यह प्रश्न में दिए गए विशेष उदाहरण से बहुत मदद नहीं करता है, लेकिन यह एक चीज है जो मुझे मक्खी पर इतिहास का उपयोग करने में मदद करती है।


1

यदि आप bash i सुझाव का उपयोग करते हैं pushdऔर popd। आप निर्देशिका का एक ढेर बना सकते हैं और इसे तेजी से ब्राउज़ कर सकते हैं। इस उदाहरण को देखें:

PWD:~$ pushd /opt/google/chrome/resources/
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ pushd /etc/cron.daily/
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ pushd /opt/pac/lib/method/
/opt/pac/lib/method /etc/cron.daily /opt/google/chrome/resources ~
PWD:/opt/pac/lib/method$ popd
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ popd
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ popd
~
PWD:~$

यदि आप संक्षिप्त प्रांप्ट का उपयोग करते हैं तो यह पोस्ट को अधिक पठनीय बनाता है। (मैं उपयोगकर्ता और होस्टनाम को हटाने की बात कर रहा हूं। मैं समझता हूं कि प्रदर्शन के दौरान पीडब्लूडी को दिखाना केवल $उपयोगी है pushd, आदि)
आगे की सूचना तक रोक दिया गया।

1

संबंधित नोट पर, मैं बैश में histverify का उपयोग करने की सलाह देता हूं। इसे अपने ~ / .bashrc में डालें:

shopt -s histverify

यह विस्तार करने के बाद कमांड को प्रिंट करने का कारण बनेगा! $ या अन्य इतिहास फ़ंक्शन, और वास्तव में इसे चलाने के लिए प्रवेश करने से पहले आपको इसे देखने का मौका देगा। मेरे लिए, पवित्रता की जांच सामयिक अतिरिक्त कुंजी प्रेस के लायक है। यह सुनिश्चित करना चाहते हैं कि मैं cd fooकमांड चला रहा हूं , न कि rm -rf fooएक ...

मैं अक्सर Ctrl-Rदृष्टिकोण का उपयोग करता हूं , साथ ही साथ Alt-.(जो आपके द्वारा वर्णित परिदृश्य के लिए एक अच्छा फिट है)। मैं अवसर पर $ का उपयोग करता हूँ।

ये बहुत उपयोगी सामान्य प्रयोजन तकनीकें हैं।

लेकिन अपने विशिष्ट प्रश्न को संबोधित करने के लिए:

एक डायरेक्टरी बनाना और इसमें सीधे cd'ing करना ऐसा कॉमन कॉम्बिनेशन है कि इसे रैप करने के लिए फंक्शन होना उपयोगी है।

function mcd {
  local newdir='_mcd_command_failed_'
  if [ -d "$1" ]; then   # Dir exists, mention that
    echo "$1 exists..."
    newdir="$1"
  else
    if [ -n "$2" ]; then   # We've specified a mode
        command mkdir -p -m $2 "$1" && newdir = "$1"
    else                   # Plain old mkdir
        command mkdir -p "$1" && newdir="$1"
    fi
  fi
  builtin cd "$newdir"   # No matter what, cd into it
}

उपयोग: mcd thisismyfolder


1

यदि आपका खोल का उपयोग करता है ReadLine (जिसके लिए मामला है bash) आप दबाने की तरह कुछ कर सकते हैं ATL+ .एक साथ?

से जीएनयू ReadLine प्रलेखन :

yank-last-arg (M- या M-_)

पिछले कमांड (पिछले इतिहास प्रविष्टि का अंतिम शब्द) में अंतिम तर्क डालें। एक तर्क के साथ, बिल्कुल yank-nth-arg की तरह व्यवहार करें। यैंक-लास्ट-अरग के लिए लगातार कॉल इतिहास सूची के माध्यम से वापस जाते हैं, बदले में प्रत्येक पंक्ति के अंतिम तर्क को सम्मिलित करते हैं।

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