2010-01-25 5 views
8

He intentado cambiar a PowerShell desde mi antiguo 4NT favorito. Falta muchas sutilezas que 4NT ha ido añadiendo en los últimos 20 años (soy un usuario antiguo de 4DOS).¿Más hosts de PowerShell que powershell.exe?

Por ejemplo, en 4NT si escribe unas letras y luego pulsa arriba/abajo, la lista de historial se filtra por lo que ha escrito. La página arriba/abajo muestra una ventana emergente con todas las coincidencias y puede desplazarse por ellas. Todo en el espacio de la ventana de la consola, sin GUI. Este es un gran ahorro de tiempo que echo de menos. Hay muchas otras cosas como esta falta de powershell.exe.

¿Hay alguna alternativa a powershell.exe que quizás tenga características como esta, que realmente aproveche el entorno de la consola? Me doy cuenta de que hay muchas herramientas basadas en GUI que integran PowerShell como panel, pero estoy realmente interesado en un reemplazo de cmd.exe/4nt.exe que permanezca como una aplicación 100% de consola (excepto tal vez un diálogo de opciones o lo que sea).

Respuesta

10

Joshua ya mencionó F7. También puede hacer coincidencias de historial parciales en Powershell.exe escribiendo algunos de los comandos y presionando F8 - repita F8 para recorrer las coincidencias (vea about_history). También hay algunas funciones de edición de líneas más de lo que la gente suele conocer. Estos están documentados en el tema de ayuda about_line_editing. Aún así, la edición de línea en el host de la consola PowerShell deja algo que desear. FWIW todos los otros hosts que conozco están basados ​​en GUI.

BTW Era un usuario 4NT durante años (así como usuario de shell Korn). Incluso con algunos servicios que faltan encontrados en 4NT, considero que PowerShell es mucho más capaz y, como desarrollador, todos los bits del "idioma" son bastante fáciles de adaptar y usar. Nunca me gustaron las afirmaciones de Korn shell if/fi y case/esac, simplemente me restregué el sentido de los errores de la manera incorrecta. :-) Plus en PowerShell que puede hacer cosas interesantes con su historia como:

# 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

Este es mi tercer intento de mover el relevo de 4 ST y voy a hacer que se pegue este momento. Es bueno saber sobre F7/F8, gracias! Ahora si solo ctrl-v tuviese un atajo equivalente para que no tenga que alcanzar el mouse ... Tal vez autohotkey puede ayudarme a llenar los huecos. – scobi

+2

Para pegar, intente Alt + Espacio, E, P - cursi pero funciona. –

+0

Revisando este hilo antiguo ... Ejecuto Powershell a través de Console2 [http://sourceforge.net/projects/console/] y eso proporciona funcionalidad de cortar/copiar/pegar (entre muchas otras cosas). – scobi

2

Powershell es todavía bastante nuevo, así que busque a alguien para implementar algunos de estos. Por ahora, sin embargo, puede presionar F7 para obtener un historial de comandos y seleccionar desde allí. El proceso de finalización de pestañas en PowerShell también es bastante potente, y puede usar comodines para completar la tabulación de comando (incluso en nombres de cmdlet parciales).

3

Hey, que tienen la misma historia que yo. Soy un viejo usuario de 4dos/4nt también. No soy fanático de los nuevos anfitriones que reemplazan por completo el subsistema de la consola para la entrada y es por eso que me gusta PowerShell Plus: en esencia, sigue siendo la consola NT pero tiene muchas características gráficas modernas que se pueden reducir como se desee.

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

Hay una prueba de 30 días disponibles y el autor Tobias Weltner es muy sensible para ayudar a las peticiones/sugerencias.

-Oisin

+0

Hola, Oisin, no sabía que usaba el subsistema de consola, genial. Supongo que todas las elegantes ventanas de GUI me echaron. :-) –

4

Salida PowerTab. Es un complemento excelente (y gratuito) que le brinda algunas funciones de finalización de pestañas realmente agradables.

ACTUALIZACIÓN

PowerTab tiene un nuevo huésped.

+0

Nueva versión, nuevas funciones, nuevo hosting. http://powertab.codeplex.com – JasonMArcher

5

También es posible desplazarse por el historial de comandos utilizando #.

Una de las desventajas de usar F8 es que es sensible a mayúsculas y solo coincide con el comienzo de un comando.El uso de #<partial match><tab> no distingue entre mayúsculas y minúsculas y coincidirá con el texto en cualquier posición en los comandos anteriores.

Si usted tiene la historia siguiente comando:

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

Typing #pr continuación pestaña repetidamente, volverá a 1, 2 y 3.

Typing #st continuación pestaña repetidamente, volverá a 1 y 3.

El uso de solo # coincidirá con todo el historial.

# también se puede utilizar después de ingresar parte de un comando. Si su historia es:

'notepad' 
select * 

Puede escribir Get-Process #n<tab>| #s<tab> para obtener Get-Process 'notepad'| select *

+0

Sí, es extraño sobre la sensibilidad a mayúsculas y minúsculas de f8. El equipo de PS trabajó muy duro para hacer que todas las cosas que generalmente son sensibles a las mayúsculas y minúsculas no sea así, y aun así se perdieron esto. Realmente parece un error. –

+0

@ElroyFlynn - F8 es una función de la consola de Windows, no de PowerShell (también se puede usar desde cmd.exe). El equipo de PS no tenía control sobre él ya que la función de consola F8 existía antes de que existiera PowerShell. – Rynant

Cuestiones relacionadas