2010-01-25 19 views
8

Ho cercato di passare a PowerShell dal mio vecchio 4NT preferito. Mancano un sacco di sottigliezze che 4NT ha aggiunto negli ultimi 20 anni (sono un vecchio utente 4DOS).I migliori host PowerShell di powershell.exe?

Ad esempio, in 4NT se si digitano alcune lettere, quindi si preme su/giù, quindi l'elenco della cronologia viene filtrato da ciò che è stato digitato. La pagina su/giù fa un popup con tutte le corrispondenze e puoi passarle attraverso. Tutto nello spazio della finestra della console, nessuna GUI. Questo è un grande risparmio di tempo che mi manca. Ci sono molte altre cose come questa mancante da powershell.exe.

Esistono alternative a powershell.exe che forse hanno caratteristiche come questa, che sfruttano davvero l'ambiente della console? Mi rendo conto che ci sono molti strumenti basati su GUI che incorporano PowerShell come un pannello, ma sono davvero interessato a una sostituzione di cmd.exe/4nt.exe che rimane come un'applicazione di console al 100% (tranne forse una finestra di dialogo delle opzioni o qualunque cosa).

risposta

10

Giosuè ha già menzionato F7. È inoltre possibile eseguire corrispondenze cronologiche parziali in Powershell.exe digitando alcuni comandi e premendo F8, ripetendo F8 per scorrere le corrispondenze (vedere about_history). Ci sono anche alcune funzionalità di modifica di più di quelle che in genere si conoscono. Questi sono documentati nell'argomento della guida about_line_editing. Tuttavia, la modifica della riga nell'host della console PowerShell lascia a desiderare. FWIW tutti gli altri host di cui sono a conoscenza sono basati su GUI.

BTW Ero un utente di 4NT per anni (così come utente di shell Korn). Anche con alcuni servizi mancanti trovati in 4NT, trovo che PowerShell sia una shell molto più capace e, come sviluppatore, tutti i bit del "linguaggio" sono abbastanza facili da adattare e utilizzare. Non mi sono mai piaciute le dichiarazioni della Korn shell if/fi e case/esac - ho semplicemente sfiorato il mio senso di estetica nel modo sbagliato. :-) Plus in PowerShell puoi fare cose interessanti con la tua cronologia come:

# 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

Questo è il mio terzo tentativo di passare sopra da 4NT e ho intenzione di farlo aderire questa volta. Buono a sapersi su F7/F8, grazie! Ora se solo ctrl-v ha una scorciatoia equivalente quindi non devo raggiungere il mouse ... Forse autohotkey può aiutarmi a riempire gli spazi vuoti. – scobi

+2

Per incollare, prova Alt + Spazio, E, P - cheesy ma funziona. –

+0

Rivisitare questa vecchia discussione .. Eseguo Powershell tramite Console2 [http://sourceforge.net/projects/console/] e che fornisce funzionalità di taglia/copia/incolla (tra molte altre cose). – scobi

2

Powershell è ancora piuttosto nuovo, quindi cerca qualcuno per implementare alcuni di questi. Per ora, però, puoi premere F7 per ottenere una cronologia dei comandi e selezionarla. Anche il completamento delle schede in PowerShell è piuttosto potente e puoi utilizzare i caratteri jolly per eseguire il completamento della scheda comandi (anche nei nomi di cmdlet parziali).

3

Ehi, hai la mia stessa storia. Anch'io sono un vecchio utente 4dos/4nt. Non sono un fan dei nuovi host pangled che sostituiscono completamente il sottosistema della console per l'input ed è per questo che mi piace PowerShell Plus: al centro è ancora la console NT, ma ha molte funzionalità grafiche moderne che possono essere ridimensionate come desiderato.

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

C'è una prova di 30 giorni a disposizione e l'autore Tobias Weltner è molto sensibile alle richieste di aiuto/suggerimenti.

-Oisin

+0

Ehi Oisin, non sapevo che usasse il sottosistema della console - cool. Indovina tutte le fantasiose finestre della GUI che mi hanno buttato fuori. :-) –

4

Partenza PowerTab. È un ottimo (e gratuito) componente aggiuntivo che ti offre alcune funzioni davvero interessanti per il completamento delle schede.

UPDATE

PowerTab ha un nuovo ospite.

+0

Nuova versione, nuove funzionalità, nuovo hosting. http://powertab.codeplex.com – JasonMArcher

5

È anche possibile scorrere la cronologia dei comandi utilizzando #.

Uno degli svantaggi di usare F8 è che è case sensitive e corrisponde solo l'inizio di un comando.L'utilizzo di #<partial match><tab> non fa distinzione tra maiuscole e minuscole e corrisponderà al testo in qualsiasi posizione nei comandi precedenti.

Se avete il seguente cronologia dei comandi:

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

Digitando #pr allora scheda ripetutamente sarà scorrere 1, 2 e 3.

Digitando #st poi scheda ripetutamente farà scorrere 1 e 3.

L'utilizzo di solo # corrisponderà a tutti gli storici.

# può essere utilizzato anche dopo aver inserito parte di un comando. Se la vostra storia è:

'notepad' 
select * 

È possibile digitare Get-Process #n<tab>| #s<tab> per ottenere Get-Process 'notepad'| select *

+0

Yeh, è ​​strano riguardo alla case-sensitive di f8. Il team di PS ha lavorato molto duramente per rendere non tutte le cose di solito sensibili alle maiuscole e minuscole, eppure hanno perso questo. Sembra davvero un errore. –

+0

@ElroyFlynn - F8 è una funzione della console di Windows, non di PowerShell (è possibile utilizzarlo anche da cmd.exe). Il team di PS non ha avuto alcun controllo su di esso poiché la funzione della console F8 esisteva prima dell'esistenza di PowerShell. – Rynant

Problemi correlati