पिछले सत्रों से पॉवरशेल कमांड इतिहास कैसे खोजें


16

मैं Powershell 5.1 के साथ वर्तमान विंडोज 10 का उपयोग करता हूं। अक्सर, मैं उन कमांड को देखना चाहता हूं जो मैंने अतीत में उन्हें संशोधित करने और / या फिर से चलाने के लिए उपयोग किया है। अनिवार्य रूप से, मैं जिन कमांड की तलाश कर रहा हूं, वे पिछले या अलग-अलग पावरशेल विंडो / सत्र में चलाए जा रहे थे।

जब मैं कुंजी को हथौड़ा करता हूं, तो मैं कई, कई सत्रों से कई आदेशों के माध्यम से ब्राउज़ कर सकता हूं, लेकिन जब मैं उनका उपयोग करके खोज करने का प्रयास करता Get-History | Where-Object {$_.CommandLine -Like "*docker cp*"}हूं, तो मुझे कोई परिणाम नहीं मिलता है। मूल समस्या निवारण से पता चलता है कि Get-Historyपिछले सत्रों से कुछ नहीं दिखा, जैसा कि दिखाया गया है:

C:\Users\Me> Get-History

  Id CommandLine
  -- -----------
   1 Get-History | Where-Object {$_.CommandLine -Like "*docker cp*"}

मैं पिछले आदेशों के माध्यम से कैसे खोज सकता हूं कि कुंजी Get-Historyकिसी अन्य Cmdlet का उपयोग करती है ?

जवाबों:


23

आपके द्वारा उल्लिखित लगातार इतिहास PSReadLine द्वारा प्रदान किया गया है । यह सत्र-बद्ध से अलग है Get-History

संपत्ति द्वारा परिभाषित फ़ाइल में इतिहास संग्रहीत है (Get-PSReadlineOption).HistorySavePath। इस फ़ाइल को देखें Get-Content (Get-PSReadlineOption).HistorySavePath, या एक पाठ संपादक, आदि के साथ संबंधित विकल्पों का निरीक्षण करें Get-PSReadlineOption। PSReadLine ctrl+ के माध्यम से इतिहास की खोज भी करता है r

अपने दिए गए उदाहरण का उपयोग करना:

Get-Content (Get-PSReadlineOption).HistorySavePath | ? { $_ -like '*docker cp*' }


3

संक्षिप्त जवाब:

  • प्रेस Ctrl+ Rऔर फिर टाइप करना शुरू करें, अंतःक्रियात्मक रूप से इतिहास में पिछड़े को खोजने के लिए। यह कमांड लाइन में कहीं से भी टेक्स्ट से मेल खाता है। अगला मैच खोजने के लिए फिर से Ctrl+ दबाएँ R
  • Ctrl+ Sऊपर की तरह काम करता है, लेकिन इतिहास में आगे की खोज करता है । खोज परिणामों में आगे और पीछे जाने के लिए आप Ctrl+ R/ Ctrl+ Sका उपयोग कर सकते हैं ।
  • एक पाठ टाइप करें और फिर दबाएँ F8। यह इतिहास में पिछले आइटम की खोज करता है जो वर्तमान इनपुट से शुरू होता है।
  • Shift+ F8काम करता है F8, लेकिन आगे की खोज करता है।

लंबा जवाब:

जैसा कि @jscott ने अपने उत्तर में बताया है, PowerShell 5.1 या Windows 10 में उच्चतर, PSReadLineकमांड एडिटिंग वातावरण का समर्थन करने के लिए मॉड्यूल का उपयोग करता है। इस मॉड्यूल की पूर्ण कुंजी मैपिंग को Get-PSReadLineKeyHandlercmdlet का उपयोग करके पुनः प्राप्त किया जा सकता है । इतिहास से संबंधित सभी मुख्य मानचित्रण देखने के लिए, निम्नलिखित कमांड का उपयोग करें:

Get-PSReadlineKeyHandler | ? {$_.function -like '*hist*'}

और यहाँ उत्पादन है:

History functions
=================
Key       Function              Description
---       --------              -----------
Alt+F7    ClearHistory          Remove all items from the command line history (not PowerShell history)
Ctrl+s    ForwardSearchHistory  Search history forward interactively
F8        HistorySearchBackward Search for the previous item in the history that starts with the current input - like
                                PreviousHistory if the input is empty
Shift+F8  HistorySearchForward  Search for the next item in the history that starts with the current input - like
                                NextHistory if the input is empty
DownArrow NextHistory           Replace the input with the next item in the history
UpArrow   PreviousHistory       Replace the input with the previous item in the history
Ctrl+r    ReverseSearchHistory  Search history backwards interactively

1
सुपर उपयोगी! ध्यान दें कि कई Ctrl+Rप्रेस परिणामों के माध्यम से चक्र करेंगे।
ओहद श्नाइडर

1

मेरे पीएस प्रोफाइल में यह है:

function hist { $find = $args; Write-Host "Finding in full history using {`$_ -like `"*$find*`"}"; Get-Content (Get-PSReadlineOption).HistorySavePath | ? {$_ -like "*$find*"} | Get-Unique | more }

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