2013-09-23 4 views

ответ

7

Псевдоним не может сделать это. С помощью для Set-Alias:

Вы можете создать псевдоним для командлета, но вы не можете создать псевдоним для команды, которая состоит из командлета и его параметров.

Однако, используя технику, называемую "splatting", функция может сделать это легко:

function lf { 
    ls -file @args 
} 

Для получения дополнительной информации см help about_splatting.

+0

Список всех команд: 'function la {ls -attr ReadOnly, Hidden, System, Dir, Arch, Dev, Norm, Tempor, Sparse, Reparse, Compre, Offline, NotContentInd, Encryp, Integr, NoScrub @args}' – Artyom

0

Пример 5 из Get-Help Set-Alias -Full является то, что вы хотите:

Function lsfile {Get-Childitem -file} 
Set-Alias lf lsfile 
+0

Я пробовал это раньше, но проблема в том, что я не могу продлить, добавив дополнительные аргументы; скажем, 'lsfile -recurse' провалится –

+0

Тогда я думаю, что @mike имеет лучший вариант. Создайте функцию и добавьте ее в свой профиль. Это будет похоже на псевдоним для всех намеченных целей, но вы можете передать ему больше аргументов. – Nick

0

Приложите ответ от @ mike-z.

Вы можете поместить определение функции в профиль PowerShell, чтобы снова использовать его снова.

test-path $profile 
// Ensure it doesn't exists before creating the profile! 
new-item -path $profile -itemtype file -force 
notepad $profile 

Просто вставьте код в файл:

function lf { ls -file @args } 

Вы можете проверить детали из official documentation.

Смежные вопросы