2010-01-25 15 views
8

Próbowałem przełączyć na PowerShell z mojego starego ulubionego 4NT. Brakuje w nim wielu drobiazgów, które 4NT dodaje w ciągu ostatnich 20 lat (jestem starym użytkownikiem 4DOS).Lepsze hosty PowerShell niż powershell.exe?

Na przykład w 4NT, jeśli wpiszesz kilka liter, a następnie w górę/w dół, lista historii zostanie odfiltrowana przez wpisany tekst. Strona w górę/w dół tworzy wyskakujące okienko ze wszystkimi dopasowaniami i możesz je przewijać. Wszystko w przestrzeni okna konsoli, bez GUI. To jest duża oszczędność czasu, za którą tęsknię. Z powershell.exe brakuje wielu innych rzeczy.

Czy są jakieś alternatywy dla powershell.exe, które mogą mieć takie funkcje, które naprawdę wykorzystują środowisko konsoli? Zdaję sobie sprawę, że istnieje wiele narzędzi opartych na GUI, które osadzają PowerShell jako panel, ale jestem bardzo zainteresowany wymianą cmd.exe/4nt.exe, która pozostaje jako aplikacja w 100% konsolowych (z wyjątkiem może okna dialogowego opcji lub cokolwiek).

Odpowiedz

10

Joshua już wspomniał o F7. Możesz również wykonać częściowe dopasowania historii w Powershell.exe, wpisując niektóre polecenia i naciskając klawisz F8 - powtórz F8, aby przełączać się pomiędzy dopasowaniami (zobacz about_history). Dostępnych jest również kilka innych funkcji edycji linii, niż ludzie zwykle znają. Są one udokumentowane w temacie pomocy about_line_editing. Mimo to edycja linii na hoście konsoli PowerShell pozostawia wiele do życzenia. FWIW wszystkie inne hosty, o których wiem, są oparte na GUI.

BTW Od lat byłem użytkownikiem 4NT (a także użytkownikiem powłoki Korn). Nawet z kilkoma brakującymi udogodnieniami znajdującymi się w 4NT, uważam PowerShell za znacznie lepszą powłokę, a jako programista wszystkie "języki" są dość łatwe w adaptacji i użyciu. Nigdy tak naprawdę nie podobały mi się oświadczenia o skorupie Korn'a: if/fi i case/esac - po prostu potarłem moje poczucie uszu w niewłaściwy sposób. :-) Plus w PowerShell możesz zrobić fajne rzeczy z twoją historią jak:

# Search history using regex 
PS> get-history -count 999 | select-string '\b(fl|ft)\b' 

# Look at your shell usage pattern by hour of day - Name column is hour of day 
PS> ghy | group {$_.StartExecutionTime.Hour} 

Count Name  Group 
----- ----  ----- 
    30 21   {$allargs, echoargs -arg $allArgs, echoargs $a 
    2 22   {ghy | group {$_.StartExecutionTime.Hour}, ls} 

# Look at commands in terms of execution time (sorted descending) 
PS> ghy | Select CommandLine,Id,` 
     @{n='ExecutionTime';e={$_.EndExecutionTime - $_.StartExecutionTime}} | 
     Sort ExecutionTime -Desc 

CommandLine          Id ExecutionTime 
-----------          -- ------------- 
ls C:\Windows\System32 ...       94 00:00:06.0233445 
ls C:\Windows\System32\...       93 00:00:01.1360650 
gps | fl           89 00:00:00.5780330 
dir            80 00:00:00.0950054 
ls             83 00:00:00.0870050 
ghy | Select CommandLin...       92 00:00:00.0810046 
dir            67 00:00:00.0750042 
ghy | Select CommandLin...       95 00:00:00.0580034 
ghy | Select CommandLin...       96 00:00:00.0570032 
ghy | Select CommandLin...       97 00:00:00.0540031 
dir            76 00:00:00.0500029 
get-history -count 999 ...       88 00:00:00.0420024 
+0

Jest to moja trzecia próba, aby przejść z 4NT i mam zamiar zrobić to trzymać ten czas. Dobrze wiedzieć o F7/F8, dzięki! Teraz, jeśli tylko ctrl-v miałby odpowiednik skrótu, więc nie muszę sięgać po mysz. Być może autohotkey pomoże mi wypełnić luki. – scobi

+2

Aby wkleić, spróbuj Alt + Spacja, E, P - kiepski, ale działa. –

+0

Powtarzanie tego starego wątku. Używam Powershell przez Console2 [http://sourceforge.net/projects/console/], który zapewnia funkcje wycinania/kopiowania/wklejania (między innymi). – scobi

2

Powershell jest wciąż całkiem nowy, więc szukaj kogoś, kto zaimplementuje niektóre z nich. Na razie jednak możesz nacisnąć klawisz F7, aby uzyskać historię poleceń i wybrać z niej. Elementy uzupełniające kartę w grze PowerShell są również bardzo wydajne i można używać symboli wieloznacznych do wykonania poleceń tabulacji (nawet w przypadku częściowych nazw poleceń cmdlet).

3

Hej, masz taką samą historię jak ja. Jestem też starym użytkownikiem 4dos/4nt. Nie jestem fanem nowych, sfingowanych hostów, które całkowicie zastępują podsystem konsoli dla danych wejściowych i dlatego podoba mi się PowerShell Plus - w swej istocie wciąż jest to konsola NT, ale ma wiele nowoczesnych funkcji graficznych, które można odpowiednio dostosować.

http://www.idera.com/Products/PowerShell/PowerShell-Plus/

Jest trial 30 dni dostępny i autor Tobias Weltner jest bardzo czuły, aby pomóc prośby/sugestie.

-Oisin

+0

Hej Oisin, nie wiedziałem, że użył podsystemu konsoli - fajnie. Domyślam się, że wszystkie wyszukane okna GUI mnie wyrzuciły. :-) –

4

Wyjazd PowerTab. Jest to świetny (i darmowy) dodatek, który daje ci naprawdę przyjemne funkcje wypełniania kart.

UPDATE

PowerTab ma nowego gospodarza.

+0

Nowa wersja, nowe funkcje, nowy hosting. http://powertab.codeplex.com – JasonMArcher

5

Możliwe jest również przechodzenie do historii poleceń za pomocą #.

Jedną z wad korzystania z F8 jest to, że rozróżnia małe i wielkie litery i pasuje tylko do początku polecenia.Używanie #<partial match><tab> jest niewrażliwe na wielkość liter i dopasowuje tekst w dowolnej pozycji w poprzednich poleceniach.

Jeśli masz następującą historię poleceń:

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

Wpisanie #pr następnie zakładka wielokrotnie będzie przechodzić 1, 2 i 3.

Wpisanie #st następnie zakładka wielokrotnie będzie przechodzić 1 i 3.

Używając tylko #, dopasujesz całą historię.

# może być również używany po wprowadzeniu części polecenia. Jeśli historia jest:

'notepad' 
select * 

Można wpisać Get-Process #n<tab>| #s<tab> dostać Get-Process 'notepad'| select *

+0

Tak, to dziwne w przypadku wrażliwości na f8. Zespół PS bardzo ciężko pracował nad tym, aby wszystkie rzeczy, które zwykle są bardzo wrażliwe, nie były tak ważne, a mimo to przegapili to. Naprawdę wydaje się błędem. –

+0

@ElroyFlynn - F8 jest funkcją konsoli Windows, a nie PowerShell (można go również używać z cmd.exe). Zespół PS nie miał nad nim kontroli, ponieważ istniała funkcja konsoli F8, zanim istniał PowerShell. – Rynant

Powiązane problemy