PowerShell:履歴の強化(readline)?


12

私がBashで好きで、PowerShellで行う方法を知りたいと思うもののいくつか:

  1. Bashでは、現在の行と同じプレフィックスで始まるコマンドのみをスクロールするように履歴スクロールを設定しています。(たとえば、コメントの一部を再利用するために)最新のコミットを確認したい場合は、「git」と記述します。

  2. 関連するのはもちろん、Ctrl+を使用した履歴検索ですR

  3. 他のものを見つけるために、私は書きます:

    h | grep foo
    

    PowerShellでは次を使用します。

    h -c 1000 | where {$_.commandline.contains("foo")}
    

    (明らかに私は初心者です、もっと短い方法が必要です)

  4. 次のようなもの:

    mv file.txt{,.bak}
    

    または

    mv file.txt !#$.bak
    
  5. マジックスペース(!$インライン展開)

PowerShellの代替手段は何ですか?

回答:


2

(3)の場合、プロファイルに関数として記述することができます(例:)%USERPROFILE%\My Documents\WindowsPowerShell\profile.ps1

function hh ([string] $word) {
    Get-History -c 1000 | where {$_.commandline.contains($word)}
}

次に:

hh foo

ただし、Powershellは対話型のシェルよりもスクリプト言語として最もよく考えられます。これは、基礎となるコンソールがすべての制限を備えたcmd.exeであるためです。

したがって、対話型履歴の場合はF7、前のコマンドをコピーする場合はF3、単一の文字をコピーする場合はF1、特定の文字まで前のコマンドをコピーする場合はF2などです。


1
基礎となるコンソールはまだcmdですか?そうは思いませんでした。
sinni800

1
コンソールはWindowsコンソールサブシステムであり、cmdおよびその他のコンソールアプリケーションでも使用されます。ストリームやコマンド編集、奇妙な選択やTAB補完など、たくさんの奇妙なものがあります。Powershell ISE v3は非常に優れていますが、「レガシー」コンソールアプリではうまく機能しません。コマンドレットはISEで優れています。
ジェイバズージ

15

1- F8Windowsコンソールから使用して、現在の行の先頭に一致するコマンドを循環できます。これは大文字と小文字を区別する一致です。

2- #以前のコマンドと一致させるために使用できます。を使用する#<partial match><tab>と、大文字と小文字が区別されず、前のコマンドの任意の位置のテキストと一致します。

次のコマンド履歴がある場合:

# 1
$np = Start-Process notepad -PassThru
# 2
$np| get-process
# 3
$np| Stop-Process

#prその後、tab繰り返し入力すると、1、2、3が繰り返されます。

#stその後tab繰り返し入力すると、1と3が繰り返されます。

#のみを使用すると、すべての履歴が一致します。

#コマンドの一部を入力した後に使用することもできます。履歴が次の場合:

'notepad'
select *

入力Get-Process #n<tab>| #s<tab>して取得できますGet-Process 'notepad'| select *

3-を使用できますSelect-String。エイリアスを作成して使いやすくします(PowerShell v3がエイリアスを追加しましたsls)。その後、できます。

h| sls foo

4-次のようなことができます:

gci *a.txt| ren -n {$_.Name + '.bak'}

5- $$最後のコマンドの最後のトークンと一致しますが、インラインで展開する方法がわかりません。


2

Oisin GrehanのPSReadlineモジュールを確認してください:http ://nivot.org/blog/post/2012/09/12/Emulating-Bash-GNU-Readline-with-PowerShell-30

コードはこちらから入手できます:https : //bitbucket.org/oising/psreadline/overview

これにより、行編集、履歴検索などのための基本的なEMACSバインディングを追加することにより、Windowsをときどき使用する経験豊富な* nix管理者の観点から、PowerShellがCLIとして実際に使用可能になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.