Están "integrados" pero no inmutables. Nota:
PS > (Get-Alias dir).Options
AllScope
PS > (Get-Alias gci).Options
ReadOnly, AllScope
PS > Get-Alias | group Options
Count Name Group
----- ---- -----
91 ReadOnly, AllScope {%, ?, ac, asnp...}
46 AllScope {cat, cd, chdir, clear...}
Como se puede ver, hay cierta división de alias por la opción ReadOnly
. Los ReadOnly
son idiomáticos en PowerShell, mientras que los mutables son para personas familiarizadas con otros shells. He visto personas modificar dir
para agregar más funcionalidad, manteniendo gci
como alias directo al Get-ChildItem
.
Para una amplia compatibilidad, solo uso los alias ReadOnly
en mis scripts.
Además, debido a dir
en CMD, ls
en UNIX y gci
en PowerShell cada obra a su manera, entreno a mí mismo que usar el comando nativo, y no un alias. dir
tiende a funcionar en todas partes, ¡pero dir -Recurse
no funciona!
Como un ejercicio de entrenamiento, y para poner a prueba mis guiones para la compatibilidad, a veces me quito el no ReadOnly
alias:
Get-Alias | ? { ! ($_.Options -match "ReadOnly") } | % { Remove-Item alias:$_ }
hay un enfoque más suave, donde se reemplaza cada alias con un nuevo comando que se advierte que está utilizando uno de los alias de compatibilidad, pero le permite seguir funcionando.
Además, puede cambiar los alias ReadOnly
si realmente quiere, pero por las razones anteriores me gustaría recomendar en contra de ella:
PS > Set-Alias -Name sl -Value Get-ChildItem -Force -Option AllScope # BAD!
PS > sl
Directory: C:\Users\Jay
Mode LastWriteTime Length Name
---- ------------- ------ ----
¡Gracias (y otros también) por una gran explicación! – Xerion
En realidad, la parte que etiquetó como '# BAD!' Es exactamente lo que estaba golpeando mi cabeza contra la pared tratando de averiguar cómo hacerlo - anular un alias de ReadOnly. De hecho, he probado ** - Force ** y ** - Option AllScope ** por separado, y por supuesto ninguno de los dos funcionó. Por alguna razón, no se me ocurrió que cada uno aborda un obstáculo diferente, ambos se aplican a los alias de ReadOnly, por lo que deben usarse juntos ... ¡duh! –
Si tiene que saberlo, quería alias ** sl ** a ** Push-Location ** para poder cambiar el comportamiento sin cambiar mis hábitos. También puede ser útil tener una referencia de alias incorporada como un comando proxy del comando al que normalmente hace referencia. De nuevo, para cambiar el comportamiento del comando sin cambiar sus hábitos. Entonces ... no siempre es necesariamente '# BAD!'.;) –