Команда Ls PowerShell для Windows

Обновлено: 04.07.2024

Получает элементы и дочерние элементы в одном или нескольких указанных местоположениях.

Синтаксис

Описание

Командлет Get-ChildItem получает элементы в одном или нескольких указанных расположениях. Если элемент является контейнером, он получает элементы внутри контейнера, называемые дочерними элементами. Вы можете использовать параметр Recurse, чтобы получить элементы во всех дочерних контейнерах, и использовать параметр Depth, чтобы ограничить количество уровней для рекурсии.

Get-ChildItem не отображает пустые каталоги. Если команда Get-ChildItem включает параметры Depth или Recurse, пустые каталоги не включаются в выходные данные.

Расположения предоставляются Get-ChildItem поставщиками PowerShell. Местоположение может быть каталогом файловой системы, кустом реестра или хранилищем сертификатов. Дополнительные сведения см. в разделе about_Providers.

Примеры

Пример 1. Получение дочерних элементов из каталога файловой системы

В этом примере дочерние элементы извлекаются из каталога файловой системы. Отображаются имена файлов и подкаталогов. Для пустых местоположений команда не возвращает никаких выходных данных и возвращается к командной строке PowerShell.

Командлет Get-ChildItem использует параметр Path для указания каталога C:\Test . Командлет Get-ChildItem отображает файлы и каталоги в консоли PowerShell.

По умолчанию Get-ChildItem перечисляет режим (атрибуты), LastWriteTime, размер файла (длина) и имя элемента. Буквы в свойстве Mode можно интерпретировать следующим образом:

  • л (ссылка)
  • d (каталог)
  • а (архив)
  • r (только для чтения)
  • ч (скрыто)
  • s (система).

Дополнительную информацию о флагах режима см. в разделе about_Filesystem_Provider.

Пример 2. Получение имен дочерних элементов в каталоге

В этом примере перечислены только имена элементов в каталоге.

Командлет Get-ChildItem использует параметр Path для указания каталога C:\Test . Параметр Name возвращает только имена файлов или каталогов по указанному пути.

Пример 3. Получение дочерних элементов в текущем каталоге и подкаталогах

В этом примере отображаются файлы .txt, расположенные в текущем каталоге и его подкаталогах.

Командлет Get-ChildItem использует параметр Path для указания C:\Test\*.txt . Путь использует подстановочный знак звездочки ( * ) для указания всех файлов с расширением имени файла .txt . Параметр Recurse ищет в каталоге Path его подкаталоги, как показано в заголовках Directory:. Параметр Force отображает скрытые файлы, такие как hiddenfile.txt, которые имеют режим h.

Пример 4. Получение дочерних элементов с помощью параметра Include

В этом примере командлет Get-ChildItem использует параметр Include для поиска определенных элементов в каталоге, указанном параметром Path.

Командлет Get-ChildItem использует параметр Path для указания каталога C:\Test. Параметр Path включает завершающую звездочку ( * ) для указания содержимого каталога. Параметр Include использует подстановочный знак звездочки ( * ) для указания всех файлов с расширением имени файла .txt.

При использовании параметра Include параметру Path требуется завершающая звездочка ( * ) для указания содержимого каталога. Например, -Путь C:\Test\* .

  • Если в команду добавлен параметр Recurse, завершающая звездочка ( * ) в параметре Path необязательна. Параметр Recurse получает элементы из каталога Path и его подкаталогов. Например, -Путь C:\Test\ -Recurse -Include *.txt
  • Если в параметре Path не указана завершающая звездочка ( * ), команда не возвращает никаких выходных данных и возвращается к командной строке PowerShell. Например, -Путь C:\Test\ .

Пример 5. Получение дочерних элементов с помощью параметра Exclude

Вывод примера показывает содержимое каталога C:\Test\Logs. Результат является ссылкой для других команд, использующих параметры Exclude и Recurse.

Командлет Get-ChildItem использует параметр Path для указания каталога C:\Test\Logs . Параметр Exclude использует подстановочный знак звездочки ( * ), чтобы указать, что любые файлы или каталоги, начинающиеся с A или a, исключаются из выходных данных.

При использовании параметра Exclude звездочка ( * ) в конце параметра Path необязательна. Например, -Path C:\Test\Logs или -Path C:\Test\Logs\* .

  • Если в параметре "Путь" отсутствует завершающая звездочка ( * ), отображается содержимое параметра "Путь". Исключениями являются имена файлов или подкаталогов, соответствующие значению параметра Exclude.
  • Если в параметре "Путь" указана завершающая звездочка ( * ), команда рекурсивно переходит в подкаталоги параметра "Путь". Исключениями являются имена файлов или подкаталогов, соответствующие значению параметра Exclude.
  • Если в команду добавлен параметр Recurse, выходные данные рекурсии будут одинаковыми независимо от того, содержит ли параметр Path завершающую звездочку ( * ).

Пример 6. Получение ключей реестра из куста реестра

В этом примере все ключи реестра извлекаются из HKEY_LOCAL_MACHINE\HARDWARE .

Командлет Get-ChildItem использует параметр Path для указания раздела реестра HKLM:\HARDWARE . Путь к кусту и ключи реестра верхнего уровня отображаются в консоли PowerShell.

Первая команда показывает содержимое раздела реестра HKLM:\HARDWARE. Параметр Exclude указывает командлету Get-ChildItem не возвращать подразделы, начинающиеся с D* . В настоящее время параметр Exclude работает только с подразделами, но не со свойствами элемента.

Пример 7. Получение всех сертификатов с правом подписи кода

В этом примере получаются все сертификаты на диске PowerShell Cert: с полномочиями на подпись кода.

Командлет Get-ChildItem использует параметр Path для указания поставщика Cert:. Параметр Recurse выполняет поиск в каталоге, указанном параметром Path, и его подкаталогах. Параметр CodeSigningCert получает только сертификаты с полномочиями на подпись кода.

Дополнительную информацию о поставщике сертификатов и диске Cert: см. в разделе about_Certificate_Provider.

Пример 8. Получение элементов с помощью параметра "Глубина"

В этом примере отображаются элементы в каталоге и его подкаталогах. Параметр Depth определяет количество уровней подкаталогов, которые необходимо включить в рекурсию. Пустые каталоги исключаются из вывода.

Командлет Get-ChildItem использует параметр Path для указания C:\Parent. Параметр Depth задает два уровня рекурсии. Командлет Get-ChildItem отображает содержимое каталога, указанного параметром Path, и два уровня подкаталогов.

Пример 9. Получение информации о жестких ссылках

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

Пример 10. Вывод для операционных систем, отличных от Windows

В PowerShell 7.1 в системах Unix Get-ChildItem обеспечивает выходные данные, подобные Unix:

  • UnixMode — это права доступа к файлам, представленные в системе Unix.
  • Пользователь является владельцем файла
  • Группа является владельцем группы
  • Размер – это размер файла или каталога, представленный в системе Unix.

Эта функция была перемещена из экспериментальной в основную в PowerShell 7.1.

Пример 11. Получение цели ссылки для точки соединения

Команда dir в командной оболочке Windows показывает целевое расположение точки соединения файловой системы. В PowerShell эта информация доступна из свойства LinkTarget объекта файловой системы, возвращаемого командлетом Get-ChildItem, и отображается в выходных данных по умолчанию.

Параметры

Получает файлы и папки с указанными атрибутами. Этот параметр поддерживает все атрибуты и позволяет указывать сложные комбинации атрибутов.

Например, чтобы получить зашифрованные или сжатые несистемные файлы (не каталоги), введите:

Get-ChildItem -Attributes !Directory+!System+Encrypted, !Directory+!System+Compressed

Чтобы найти файлы и папки с часто используемыми атрибутами, используйте параметр Атрибуты. Или параметры Каталог, Файл, Скрытый, Только для чтения и Система.

Параметр Attributes поддерживает следующие свойства:

Описание этих атрибутов см. в перечислении FileAttributes.

Чтобы объединить атрибуты, используйте следующие операторы:

Не используйте пробелы между оператором и его атрибутом. Пробелы допускаются после запятых.

Для общих атрибутов используйте следующие сокращения:

  • D (Каталог)
  • H (скрыто)
  • R (только чтение)
  • S (Система)

Этот параметр был добавлен в PowerShell 5.0 и позволяет управлять глубиной рекурсии. По умолчанию Get-ChildItem отображает содержимое родительского каталога. Параметр Depth определяет количество уровней подкаталогов, включенных в рекурсию, и отображает содержимое.

Например, глубина 2 включает каталог параметра "Путь", первый уровень подкаталогов и второй уровень подкаталогов. По умолчанию в вывод включаются имена каталогов и файлов.

Тип:UInt32
Позиция:Имя
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Чтобы получить список каталогов, используйте параметр "Каталог" или параметр "Атрибуты" со свойством "Каталог". Вы можете использовать параметр Recurse с каталогом.

< /tr>

Указывает массив из одного или нескольких строковых шаблонов, которые должны сопоставляться при получении командлетом дочерних элементов. Любой соответствующий элемент исключается из вывода. Введите элемент пути или шаблон, например *.txt или A* . Допускаются подстановочные знаки.

Звездочка ( * ) в конце параметра Path необязательна. Например, -Path C:\Test\Logs или -Path C:\Test\Logs\* . Если включена завершающая звездочка ( * ), команда рекурсивно переходит в подкаталоги параметра Path. Без звездочки ( * ) отображается содержимое параметра Path. Более подробная информация содержится в примере 5 и в разделе "Примечания".

Параметры Include и Exclude можно использовать вместе. Однако исключения применяются после включений, что может повлиять на конечный результат.

Тип:SwitchParameter
Псевдонимы:ad
Позиция:Имя
Значение по умолчанию:Нет
Принимать ввод конвейера:False
Допускать подстановочные знаки:False
Тип:Строка [ ]
Позиция:Название
Значение по умолчанию:Нет
Принять ввод конвейера:False< /td>
Допускать подстановочные знаки:True

Чтобы получить список файлов, используйте параметр File. Вы можете использовать параметр Recurse с файлом.

< /tr>

Тип:SwitchParameter
Псевдонимы:af
Позиция:Имя
Значение по умолчанию:Нет
Принимать ввод конвейера:False
Допускать подстановочные знаки:False
Тип:Строка
Позиция:1
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:True

По умолчанию командлет Get-ChildItem отображает символические ссылки на каталоги, найденные во время рекурсии, но не выполняет рекурсию в них. Используйте параметр FollowSymlink для поиска каталогов, предназначенных для этих символических ссылок. FollowSymlink — это динамический параметр, который поддерживается только поставщиком файловой системы.

Этот параметр появился в PowerShell 6.0.

Тип:SwitchParameter
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Позволяет командлету получать элементы, к которым пользователь иначе не может получить доступ, например скрытые или системные файлы. Параметр Force не отменяет ограничения безопасности. Реализация варьируется среди поставщиков. Дополнительные сведения см. в разделе about_Providers.

Тип:SwitchParameter
Позиция:Именованный
Значение по умолчанию:False
Принять ввод конвейера:False
Допускать подстановочные знаки:False

Чтобы получить только скрытые элементы, используйте параметр Hidden или параметр Attributes со свойством Hidden. По умолчанию Get-ChildItem не отображает скрытые элементы. Используйте параметр Force, чтобы получить скрытые элементы.

Тип:SwitchParameter
Псевдонимы:ah, h
Позиция:Имя
Значение по умолчанию:Нет
Принимать ввод конвейера:False
Допускать подстановочные знаки:False< /td>

Указывает массив из одного или нескольких строковых шаблонов, которые должны сопоставляться при получении командлетом дочерних элементов. Любой соответствующий элемент включается в вывод. Введите элемент пути или шаблон, например "*.txt" . Подстановочные знаки разрешены. Параметр Include действует, только если команда включает содержимое элемента, например C:\Windows\* , где подстановочный знак указывает содержимое каталога C:\Windows.

Параметры Include и Exclude можно использовать вместе. Однако исключения применяются после включений, что может повлиять на конечный результат.

Тип:Строка [ ]
Позиция:Название
Значение по умолчанию:Нет
Принять ввод конвейера:False< /td>
Допускать подстановочные знаки:True

Указывает путь к одному или нескольким местоположениям. Значение LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одиночные кавычки сообщают PowerShell, что никакие символы не должны интерпретироваться как управляющие последовательности.

Тип:String [ ]
Псевдонимы:PSPath, LP
Позиция:Имя
Значение по умолчанию:Нет< /td>
Принимать ввод конвейера:True
Допускать подстановочные знаки: Ложь

Получает только названия элементов в местоположении. Результатом является строковый объект, который можно отправить по конвейеру другим командам. Подстановочные знаки разрешены.

Тип:SwitchParameter
Позиция:Именованный
Значение по умолчанию:Нет
Принять ввод конвейера:False
Допускать подстановочные знаки:True

Указывает путь к одному или нескольким местоположениям. Подстановочные знаки принимаются. Расположение по умолчанию — текущий каталог ( . ).

Тип:Строка [ ]
Позиция:0
Значение по умолчанию:Текущий каталог
Принять ввод конвейера:True
Допускать подстановочные знаки:Истина

Чтобы получить элементы только для чтения, используйте параметр ReadOnly или свойство ReadOnly параметра Attributes.

< /tr>

Получает элементы в указанных местоположениях и во всех дочерних элементах местоположений.

Тип:SwitchParameter
Псевдонимы:ar
Позиция:Имя
Значение по умолчанию:Нет
Принимать ввод конвейера:False
Допускать подстановочные знаки:False
< /tr>

Получает только системные файлы и каталоги. Чтобы получить только системные файлы и папки, используйте системное свойство параметра System или Attributes.

Тип:SwitchParameter
Псевдонимы:s
Позиция:Имя
Значение по умолчанию:False
Принимать ввод конвейера:False
Допускать подстановочные знаки:False
< /tr>

Входные данные

Вы можете передать строку, содержащую путь к Get-ChildItem .

Результаты

Тип объекта, который возвращает Get-ChildItem, определяется объектами в пути к диску поставщика.

Если вы используете параметр Name, Get-ChildItem возвращает имена объектов в виде строк.

Разработчики Windows часто задают вопрос: «Почему у Windows еще нет?». Желаете ли вы иметь мощный пейджер, такой как less, или хотите использовать знакомые команды, такие как grep или sed , разработчики Windows хотят иметь легкий доступ к этим командам в рамках своего основного рабочего процесса.

Подсистема Windows для Linux (WSL) стала огромным шагом вперед, позволив разработчикам вызывать команды Linux из Windows, передавая их через wsl.exe (например, wsl ls ). Несмотря на значительное улучшение, в нем есть несколько недостатков:

  • Назначать командам префикс wsl утомительно и неестественно
  • Пути Windows, переданные в качестве аргументов, часто не разрешаются из-за того, что обратная косая черта интерпретируется как escape-символы, а не как разделители каталогов.
  • Пути Windows, переданные в качестве аргументов, часто не разрешаются из-за того, что они не преобразуются в соответствующую точку подключения в WSL.
  • Параметры по умолчанию, определенные в профилях входа WSL с псевдонимами и переменными среды, не учитываются.
  • Завершение пути в Linux не поддерживается
  • Завершение команд не поддерживается
  • Завершение аргумента не поддерживается

В результате этих недостатков команды Linux кажутся второсортными по сравнению с Windows, и их сложнее использовать, чем следовало бы. Чтобы команда воспринималась как собственная команда Windows, нам необходимо решить эти проблемы.

Обертки функций PowerShell

  • Для каждой команды Linux должна быть одна оболочка функции с тем же именем, что и у команды
  • Оболочка должна распознавать пути Windows, переданные в качестве аргументов, и преобразовывать их в пути WSL.
  • Оболочка должна вызывать wsl с соответствующей командой Linux, передавая все входные данные конвейера и передавая любые аргументы командной строки, переданные функции

Поскольку этот шаблон можно применить к любой команде, мы можем абстрагироваться от определения этих оболочек и генерировать их динамически из списка команд для импорта.

Список $command определяет команды для импорта.Затем мы динамически генерируем оболочку функции для каждого с помощью команды Invoke-Expression (сначала удаляя все псевдонимы, которые могут конфликтовать с функцией).

Функция перебирает аргументы командной строки, определяет пути Windows с помощью команд Split-Path и Test-Path, а затем преобразует эти пути в пути WSL. Мы запускаем пути через вспомогательную функцию Format-WslArgument, которую мы определим позже, которая экранирует специальные символы, такие как пробелы и круглые скобки, которые в противном случае были бы неверно истолкованы.

Наконец, мы передаем входные данные конвейера и любые аргументы командной строки в wsl .

Благодаря этим оболочкам функций мы теперь можем вызывать наши любимые команды Linux более естественным образом, не добавляя к ним префикс wsl и не беспокоясь о том, как пути Windows преобразуются в пути WSL:

  • мужской удар
  • less -i $profile.CurrentUserAllHosts
  • ls -Al C:\Windows\ | меньше
  • grep -Ein ошибка *.log
  • хвост -f *.log

Здесь показан начальный набор команд, но вы можете создать оболочку для любой команды Linux, просто добавив ее в список. Если вы добавите этот код в свой профиль PowerShell, эти команды будут доступны вам в каждом сеансе PowerShell точно так же, как собственные команды!

Параметры по умолчанию

В Linux принято определять псевдонимы и/или переменные среды в профилях входа, чтобы установить параметры по умолчанию для часто используемых команд (например, псевдоним ls=ls -AFh или export LESS=-i ). Одним из недостатков проксирования через неинтерактивную оболочку с помощью wsl.exe является то, что профили входа в систему не загружаются, поэтому эти параметры по умолчанию недоступны (т. е. ls в WSL и wsl ls будут вести себя по-разному с указанным выше псевдонимом).< /p>

PowerShell предоставляет $PSDefaultParameterValues ​​— стандартный механизм определения значений параметров по умолчанию, но только для командлетов и расширенных функций. Превращение наших оболочек функций в расширенные функции возможно, но вносит сложности (например, PowerShell сопоставляет частичные имена параметров (например, сопоставление -a для -ArgumentList ), что будет конфликтовать с командами Linux, которые принимают частичные имена в качестве аргументов), и синтаксис для определения значений по умолчанию. было бы далеко не идеальным для этого сценария (требуется имя параметра в ключе для определения аргументов по умолчанию, а не только имя команды).

Внеся небольшое изменение в наши оболочки функций, мы можем ввести модель, аналогичную $PSDefaultParameterValues, и включить параметры по умолчанию для команд Linux!

Передав $WslDefaultParameterValues ​​в командную строку, которую мы отправляем через wsl.exe , теперь вы можете добавить приведенные ниже операторы в свой профиль PowerShell для настройки параметров по умолчанию!

Поскольку это смоделировано после $PSDefaultParameterValues ​​, вы можете легко временно отключить их, установив для ключа Disabled значение $true . Отдельная хэш-таблица имеет дополнительное преимущество, заключающееся в возможности отключения $WslDefaultParameterValues ​​отдельно от $PSDefaultParameterValues ​​.

Завершение аргумента

PowerShell позволяет регистрировать средства завершения аргументов с помощью команды Register-ArgumentCompleter. Bash имеет мощные программируемые средства завершения. WSL позволяет вызывать bash из PowerShell. Если мы сможем зарегистрировать средства завершения аргументов для наших оболочек функций PowerShell и вызвать bash для генерации завершения, мы сможем получить расширенное завершение аргументов с той же точностью, что и в самом bash!

Код немного запутан без понимания некоторых внутренностей bash, но в основном:

  • Мы регистрируем завершитель аргументов для всех оболочек наших функций, передавая список $commands параметру -CommandName команды Register-ArgumentCompleter
  • Мы сопоставляем каждую команду с функцией оболочки, которую bash использует для ее завершения ( $F, названный в честь complete -F, используемого для определения спецификаций завершения в bash)
  • Мы преобразовываем аргументы PowerShell $wordToComplete , $commandAst и $cursorPosition в формат, ожидаемый функциями завершения bash в соответствии со спецификацией программируемого завершения bash.
  • Мы создаем командную строку, которую можем передать в wsl.exe, которая обеспечивает правильную настройку среды завершения, вызывает соответствующую функцию завершения, а затем выводит строку, содержащую результаты завершения, разделенные новыми строками.
  • Затем мы вызываем wsl из командной строки, разбиваем выходную строку на новый разделитель строк, затем генерируем CompletionResults для каждого, сортируем их и экранируем такие символы, как пробелы и круглые скобки, которые в противном случае были бы неверно истолкованы.

Конечным результатом этого является то, что теперь наши оболочки команд Linux будут использовать точно такое же завершение, что и bash! Например:

Каждое завершение будет предоставлять значения, относящиеся к аргументу перед ним, считывая данные конфигурации, такие как известные хосты, из WSL!

будет переключаться между вариантами. отобразит все доступные параметры.

Кроме того, поскольку теперь за выполнение отвечает bash, вы можете разрешать пути Linux непосредственно в PowerShell!

  • меньше /etc/
  • ls /usr/share/
  • вим ~/.bash

В тех случаях, когда завершение bash не возвращает никаких результатов, PowerShell возвращается к своему завершению по умолчанию, которое разрешает пути Windows, что позволяет вам по желанию разрешать пути как Linux, так и пути Windows.

Заключение

Благодаря PowerShell и WSL мы можем интегрировать команды Linux в Windows так же, как если бы они были нативными приложениями. Не нужно искать сборку утилит Linux для Win32 или прерывать рабочий процесс, чтобы перейти в оболочку Linux. Просто установите WSL, настройте свой профиль PowerShell и перечислите команды, которые вы хотите импортировать! Представленное здесь подробное завершение аргументов как для параметров команды, так и для путей к файлам Linux и Windows — это возможность, которую сегодня не обеспечивают даже собственные команды Windows.

Какие команды Linux вы считаете наиболее полезными? Какие еще части вашего рабочего процесса разработчика вам не хватает в Windows?

Чтобы вывести список или просмотреть файлы каталога или папки на вашем компьютере, выполните следующие действия для вашей операционной системы.

Показать файлы в папке Windows

Пользователи Microsoft Windows, которые хотят получить список файлов на компьютере, могут открыть Мой компьютер или проводник Windows и открыть диск C:. На диске C: отображаются все файлы и папки в корневом каталоге вашего основного жесткого диска.

В Windows большинство ваших программ хранятся в папке Program Files, а ваши документы часто сохраняются в папке «Мои документы».

См. шаги командной строки Windows, если вы находитесь в командной строке Windows.

Командная строка MS-DOS и Windows

Чтобы получить список файлов в командной строке MS-DOS или в командной строке Windows, используйте команду dir, как показано ниже.

В приведенном ниже примере также показан список файлов при использовании команды dir. См. справочную страницу команды dir, чтобы узнать обо всех доступных переключателях, которые можно добавить к этой команде для выполнения различных функций.

Пример вывода команды dir

По умолчанию команда dir выводит список файлов и каталогов для текущего каталога. В приведенном ниже примере мы находимся в каталоге Windows, поэтому отображаются только файлы и каталоги в каталоге Windows.

Если в одном каталоге слишком много файлов, вы можете отобразить их по одной странице за раз, используя команду dir с ключом /p.

Вы можете перечислить файлы, которые соответствуют только определенным критериям, используя подстановочные знаки в команде dir. Ниже приведены несколько дополнительных примеров команды dir с подстановочными знаками.

В приведенном выше примере отображаются только файлы с расширением .txt.

В приведенном выше примере отображаются только файлы, начинающиеся с буквы "а".

Дополнительную информацию об этом термине и другие примеры см. в нашем определении подстановочных знаков.

В приведенном выше примере эта команда выводит список файлов в каталоге C:\Windows независимо от текущего каталога или диска.

Список файлов в каталоге Windows PowerShell

Как и в командной строке Windows, Windows PowerShell может использовать команду dir для отображения списка файлов в текущем каталоге. PowerShell также может использовать команды ls и gci для отображения файлов в другом формате.

Список файлов в каталоге Linux и Unix

Чтобы получить список файлов в командной строке Linux или Unix, используйте команду ls, как показано ниже. Если вам нужны дополнительные примеры и синтаксис команды ls, см. страницу справки по команде ls.

Мы рекомендуем использовать ls -laxo для просмотра файлов, так как это дает вам полную информацию о файле и информацию о разрешениях в более удобном формате.

Вы можете перечислить файлы, которые соответствуют только определенным критериям, используя подстановочные знаки в команде ls. Ниже приведены несколько дополнительных примеров команды dir с подстановочными знаками.

В приведенном выше примере отображаются только файлы с расширением .txt.

В приведенном выше примере отображаются только файлы, начинающиеся с буквы "r".

В приведенном выше примере отображаются только файлы, начинающиеся с гласной (a, e, i, o, u).

Дополнительную информацию об этом термине и дополнительные примеры см. в нашем определении подстановочных знаков.

В приведенном выше примере команда ls выводит список всех файлов в public_html в домашнем каталоге (обозначается тильдой). Если бы этот каталог не существовал, вы получили бы сообщение об ошибке.

Тильда — это сокращение. Без ярлыка вам нужно будет ввести полное имя каталога. Например, если ваше имя пользователя было «надеюсь», ваш домашний каталог будет /home/hope. Вы можете увидеть полный рабочий каталог, в котором вы сейчас находитесь, с помощью команды pwd.

Показать файлы в Apple macOS

Пользователи Apple могут просматривать файлы через Finder. Если вы находитесь в Терминале, см. шаги для Linux, которые также работают в Терминале.

Закрыто. Этот вопрос не соответствует правилам переполнения стека.В настоящее время ответы не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow.

Закрыт в прошлом году.

Я не очень часто использую ни Powershell, ни Linux, поэтому я не знаю, что: ls -al будет в «терминах» Powershell. Я пытался что-то найти, но мне сказали, что в Powershell нет эквивалентной команды. Выглядит странно, поэтому я решил спросить быстро.


@BasileStarynkevitch, действительно нет эквивалента strict, но, учитывая, что PowerShell (Core) 7+ также работает на Linux (и macOS), я полагаю, дело не столько в разных платформах , а об идиоматическом способе получения аналогичной функциональности (а в macOS и Linux вы можете просто вызвать ls -al напрямую).

butlertj10, несмотря на то, что этот вопрос сейчас закрыт (поскольку он не подходит для этого сайта, хотя линии часто размыты), вы все равно можете сообщить будущим читателям, что сообщение с ответом решило вашу проблему, приняв его. - если предположить, что это действительно так. Разрешите дать стандартный совет новичкам в следующем комментарии:

1 Ответ 1

Параметры утилиты ls Unix, которые вы используете:

-a включает скрытые элементы, которые на Unix-подобных платформах являются элементами файловой системы, имя которых начинается с .

-l запрашивает так называемый длинный формат, который создает табличный вывод, включающий режим элементов файловой системы, принадлежность пользователя и группы, отметку времени последней записи, размер элемента и его имя.

Эквивалент PowerShell:

Переключатель -Force Get-ChildItem включает в вывод скрытые элементы, хотя, в отличие от ls , файл . и .. записи, представляющие сам целевой каталог и его родительский каталог, не включены (что делает его эквивалентом более полезной опции -A ls).

Эквивалент длинного формата используется по умолчанию; если, наоборот, вас интересуют имена файлов (относительные пути) только, используйте переключатель -Name.

См. нижний раздел, чтобы сократить эту команду и определить удобный "псевдоним" (функцию).

Однако между ls и Get-ChildItem есть одно фундаментальное различие:

ls выводит форматированный текст, и по этой причине анализ его вывода обычно не рекомендуется.

В PowerShell форматирование отделено от данных, и выводятся объекты, а не строки.

  • То есть, независимо от богатого форматирования отображения, которое Get-ChildItem представляет в терминале, его фактический вывод — это объекты типа System.IO.FileInfo и System. .IO.DirectoryInfo , который можно безопасно использовать для дальнейшей программной обработки, если он захвачен в переменной, отправлен в другие комментарии PowerShell через конвейер или использован в выражении.

Например, выражение (Get-ChildItem -Force).FullName выводит полные пути всех элементов в текущем каталоге.

Для интерактивного удобства (вы не должны делать этого в сценариях) вы можете использовать встроенные псевдонимы и однозначные префиксы имени параметра чтобы сократить команду:

gci — это встроенный псевдоним для Get-ChildItem , и его имя соответствует соглашениям об именах PowerShell, где каждый так называемый утвержденный глагол также имеет утвержденную форму alias из 1-2 букв; запуск Get-Verb Get показывает, что утвержденная форма псевдонима команды Get — g ; хотя часть существительное формально не регулируется, несложно запомнить, что ci означает ChildItem.

-fo — это кратчайший префикс имени параметра, который недвусмысленно относится к переключателю -Force (только -f может также относиться к -Filter [1] )

  • Примечание. Некоторые параметры сами по себе имеют фактические псевдонимы, например -h для -Hidden или -ad для -Directory , а -Force - нет.
  • В отличие от однозначных префиксов имен параметров, которые со временем могут стать неоднозначными, если в команду добавляются новые параметры, псевдонимы параметров безопасны для использования в скриптах, хотя полные имена предпочтительнее для удобочитаемости.

Чтобы просмотреть все псевдонимы, определенные для данной команды (в данном примере Get-ChildItem):

Чтобы ограничить вывод встроенными псевдонимами, т. е. исключить псевдонимы, определенные другими модулями или скриптами $PROFILE, запустите pwsh -noprofile < Get-Alias ​​-Definition Get-ChildItem> (в Windows PowerShell , используйте powershell вместо pwsh .

  • Выше показан вывод для macOS и Linux.
  • В Windows вы увидите, что ls — это еще один встроенный псевдоним.

    Это устаревший псевдоним с тех пор, как PowerShell был оболочкой только для Windows, и его лучше избегать:

    Как правило, псевдонимы имеют приоритет над внешними программами с тем же именем, и не рекомендуется затенять (переопределять) стандартные утилиты командной строки платформы; хотя это не относится к псевдониму ls в Windows, это относится к другим случаям, а именно: where (shadows where.exe ) и sc (только для Windows PowerShell, shadows sc.exe )

    В частности, учитывая, что реальная Unix-утилита ls и командлет Get-ChildItem имеют такой разный синтаксис (и поведение), представление последнего как ls может вызвать путаницу.

    Поэтому рекомендуется придерживаться тех псевдонимов, которые представляют собой сокращенные формы имен команд PowerShell, например gci для Get-ChildItem и gc для Get-Content. Хотя изначально это не помогает при переходе от знакомых имен, таких как ls / dir и cat , тот факт, что имена команд PowerShell, а также их сокращенные псевдонимы являются систематическими и основанными на соглашениях, облегчает их запоминание в будущем.

    Определение удобного «псевдонима» с предустановленными аргументами с помощью функции:

    POSIX-совместимые оболочки, такие как bash, позволяют определять псевдонимы с предустановленными аргументами, такими как alias ll='ls -al'

    Псевдонимы в PowerShell, напротив, представляют собой просто сопоставления имен, и вместо этого вам нужно объявить функцию (которую вы можете добавить в свой файл $PROFILE для доступности в будущем сеансе). ):

    Или аналогичная функция gcih ( h обозначает hidden), основанная на Get-ChildItem :

    Дополнительную информацию о псевдонимах и функциях в PowerShell см. в этом ответе, в том числе о том, как создавать более сложные функции-оболочки.

    [1] Концептуально это могло бы также относиться к параметру -File, но технически последний является динамическим параметром, специфичным для поставщика файловой системы PowerShell, поэтому он не рассматривается при проверке неоднозначности.

    Читайте также:

Тип:SwitchParameter
Псевдонимы:as
Позиция:Имя
Значение по умолчанию:Нет
Принимать ввод конвейера:False
Допускать подстановочные знаки:False