Лучше хосты PowerShell, чем powershell.exe? - PullRequest
8 голосов
/ 25 января 2010

Я пытался переключиться на PowerShell с моего старого любимого 4NT. В нем пропущено множество тонкостей, которые 4NT добавлял за последние 20 лет (я старый пользователь 4DOS).

Например, в 4NT, если вы наберете несколько букв, а затем нажмете вверх / вниз, тогда список истории фильтруется по тому, что вы ввели. Страница вверх / вниз делает всплывающее окно со всеми совпадениями, и вы можете перемещаться по ним. Все в окне консоли, нет графического интерфейса. Это большая экономия времени, по которой я скучаю. В powershell.exe отсутствует много других подобных вещей.

Существуют ли альтернативы powershell.exe, которые, возможно, имеют такие функции, которые действительно используют преимущества консольной среды? Я понимаю, что есть много инструментов на основе графического интерфейса, которые встраивают PowerShell в качестве панели, но я действительно заинтересован в замене cmd.exe / 4nt.exe, которая остается 100% консольным приложением (за исключением, возможно, диалогового окна параметров что угодно).

Ответы [ 5 ]

10 голосов
/ 25 января 2010

Джошуа уже упомянул F7. Вы также можете выполнить частичные совпадения истории в Powershell.exe, набрав часть команды и нажав F8 - повторите F8 для циклического просмотра совпадений (см. About_history). Есть также еще несколько функций редактирования строк, о которых обычно знают люди. Они описаны в разделе справки about_line_editing. Тем не менее, редактирование строк в консоли PowerShell оставляет желать лучшего. FWIW все остальные хосты, о которых я знаю, основаны на GUI.

Кстати, я годами был пользователем 4NT (а также пользователем оболочки Korn). Даже с некоторыми отсутствующими удобствами, обнаруженными в 4NT, я нахожу PowerShell гораздо более функциональной оболочкой, и, как разработчик, все «языковые» биты довольно легко адаптировать и использовать. Мне никогда не нравились высказывания оболочки Korn if / fi и case / esac - просто неправильно истолковал мое чувство эстетики. :-) Плюс в PowerShell вы можете делать классные вещи с вашей историей, как:

# 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
5 голосов
/ 18 ноября 2011

Также возможно просматривать историю команд, используя #.

Одним из недостатков использования F8 является то, что он чувствителен к регистру и соответствует только началу команды. Использование #<partial match><tab> не учитывает регистр и будет соответствовать тексту в любой позиции в предыдущих командах.

Если у вас есть следующая история команд:

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

Набрав #pr, затем нажимайте клавишу табуляции для циклического переключения между 1, 2 и 3.

Введите #st, а затем несколько раз нажмите клавишу табуляции для переключения между 1 и 3.

Использование только # будет соответствовать всей истории.

# также можно использовать после ввода части команды. Если ваша история:

'notepad'
select *

Вы можете набрать Get-Process #n<tab>| #s<tab>, чтобы получить Get-Process 'notepad'| select *

4 голосов
/ 25 января 2010

Выезд PowerTab . Это отличное (и бесплатное) дополнение, которое предоставляет некоторые действительно приятные функции дополнения табуляции.

UPDATE

PowerTab имеет новый хост.

3 голосов
/ 25 января 2010

Эй, у тебя та же история, что и у меня. Я старый пользователь 4dos / 4nt тоже. Я не фанат новых неуклюжих хостов, которые полностью заменяют консольную подсистему для ввода данных, и поэтому мне нравится PowerShell Plus - по своей сути это все еще консоль NT, но она имеет много современных графических функций, которые можно урезать по желанию.

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

Доступна 30-дневная пробная версия, и автор Тобиас Вельтнер очень отзывчив на запросы / предложения о помощи.

-Oisin

2 голосов
/ 25 января 2010

Powershell все еще довольно новый, так что ищите кого-нибудь, кто бы реализовал некоторые из них. Однако сейчас вы можете нажать F7, чтобы получить историю команд и выбрать из нее. Механизм завершения табуляции в powershell также довольно мощный, и вы можете использовать подстановочные знаки для завершения табуляции команд (даже для частичных имен командлетов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...