PowerShell: geçmiş geliştirmeleri (readline)?


12

Bash'te beğendiğim bazı şeyler ve PowerShell'de nasıl yapılacağını bilmek isterim:

  1. Bash'te, yalnızca geçerli satırla aynı önekle başlayan komutları kaydırması için geçmiş kaydırma ayarladım. Eğer son taahhüdümü görmek istersem (örneğin yorumun bir kısmını yeniden kullanmak için) 'git' yazıyorum ve sonra .

  2. İlgili elbette Ctrl+ ile tarih aramaR

  3. Başka şeyler bulmak için şunu yazıyorum:

    h | grep foo
    

    PowerShell'de şunu kullanıyorum:

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

    (Açıkçası ben bir acemiyim, daha kısa bir yol olmalı)

  4. Gibi şeyler:

    mv file.txt{,.bak}
    

    veya

    mv file.txt !#$.bak
    
  5. Sihirli alan ( !$satır içi genişleyen )

PowerShell'deki alternatifler nelerdir?

Yanıtlar:


2

(3) için, profilinize bir işlev olarak yazabilirsiniz (örn. %USERPROFILE%\My Documents\WindowsPowerShell\profile.ps1):

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

Sonra:

hh foo

Ancak Powershell en iyi etkileşimli bir kabuktan çok bir komut dosyası dili olarak düşünülür, çünkü alttaki konsol hala tüm sınırlamalarıyla cmd.exe'dir.

Etkileşimli geçmiş için F7, önceki komutu kopyalamak için F3, tek bir karakteri kopyalamak için F1, önceki komutu belirli bir karaktere kopyalamak için F2 vb.


1
Temel konsol hala cmd mi? Ben öyle düşünmedim.
sinni800

1
konsol, cmd ve diğer konsol uygulamaları tarafından da kullanılan Windows konsol alt sistemidir. Akışlar ve komut düzenleme ve garip seçim ve SEKME tamamlama gibi birçok garip şey var. Powershell ISE v3 çok iyi, ancak "eski" konsol uygulamalarıyla iyi çalışmıyor. Cmdlet'ler İMKB'de harika.
Jay Bazuzi

15

1 - F8Geçerli satırın başlangıcıyla eşleşen komutlar arasında geçiş yapmak için Windows konsolundan kullanabilirsiniz. Bu büyük / küçük harfe duyarlı bir eşleşmedir.

2 - #Önceki komutları eşleştirmek için kullanabilirsiniz . Kullanımı #<partial match><tab>büyük / küçük harfe duyarsızdır ve önceki komutların herhangi bir konumundaki metni eşleştirir.

Aşağıdaki komut geçmişiniz varsa:

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

#prSonra tabtekrar tekrar yazmak 1, 2 ve 3 arasında geçiş yapacaktır.

#stSonra tabtekrar tekrar yazmak 1 ve 3 arasında geçiş yapacaktır.

Yalnızca # kullanılması tüm geçmişle eşleşir.

#komutun bir kısmını girdikten sonra da kullanılabilir. Geçmişiniz:

'notepad'
select *

Sen yazabilirsiniz Get-Process #n<tab>| #s<tab>almak içinGet-Process 'notepad'| select *

3 - kullanabilirsiniz Select-String. Kullanımı kolaylaştırmak için bir takma ad oluşturun (PowerShell v3 takma adı ekledi sls). Sonra yapabilirsin.

h| sls foo

4 - Şöyle bir şey yapabilirsiniz:

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

5 - $$son komutun son belirteciyle eşleşir, ancak satır içi genişletmenin bir yolunu bilmiyorum.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.