PowerShell : 기록 향상 (읽기 선)?


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

그러나 기본 콘솔은 여전히 ​​cmd.exe이기 때문에 Powershell은 대화식 쉘보다 스크립팅 언어로 가장 잘 생각됩니다.

따라서 대화 형 내역의 경우 F7, 이전 명령을 복사하는 F3, 단일 문자를 복사하는 F1, 특정 명령까지 이전 명령을 복사하는 F2 등입니다.


1
기본 콘솔은 여전히 ​​cmd입니까? 나는 그렇게 생각하지 않았다.
sinni800

1
콘솔은 Windows 콘솔 하위 시스템이며 cmd 및 기타 콘솔 응용 프로그램에서도 사용됩니다. 스트림 및 명령 편집, 이상한 선택 및 Tab 완성과 같은 많은 이상한 것들이 있습니다. Powershell ISE v3은 매우 훌륭하지만 "레거시"콘솔 앱에서는 제대로 작동하지 않습니다. Cmdlet은 ISE에서 훌륭합니다.
Jay Bazuzi

15

1- F8Windows 콘솔에서 현재 행의 시작과 일치하는 명령을 순환 할 수 있습니다 . 대소 문자를 구분합니다.

2- #이전 명령을 일치시키는 데 사용할 수 있습니다 . 사용 #<partial match><tab>은 대소 문자를 구분하지 않으며 이전 명령의 모든 위치에서 텍스트와 일치합니다.

다음과 같은 명령 기록이있는 경우 :

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

입력 #prtab반복하면 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- $$마지막 명령의 마지막 토큰과 일치하지만 인라인으로 확장하는 방법을 모르겠습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.