Команда cd
, также известная как chdir
( изменить каталог ), представляет собой команду оболочки командной строки , используемую для изменения текущего рабочего каталога в различных операционных системах . Его можно использовать в сценариях оболочки и пакетных файлах .
Команда реализована в таких операционных системах, как Unix , DOS , IBM OS/2 , [1] MetaComCo TRIPOS , [2] AmigaOS [3] (где, если указан пустой путь , подразумевается cd ), Microsoft Windows , ReactOS , [4] и Linux . В MS-DOS он доступен в версии 2 и новее. [5] DR DOS 6.0 также включает реализацию команд cd
и chdir
. [6] Команда также доступна в эмуляторе MS-DOS с открытым исходным кодом DOSBox и в оболочке EFI . [7] Он назван в HP MPE/iX . [8] Команда аналогична команде Stratus OpenVOS . [9] chdir
change_current_dir
cd
часто включается непосредственно в интерпретатор командной строки. Так обстоит дело в большинстве оболочек Unix ( оболочка Bourne , tcsh , bash и т. д.), cmd.exe
в Microsoft Windows NT / 2000 + и Windows PowerShell в Windows 7+ и COMMAND.COM
в DOS/Microsoft Windows 3.x - 9x / ME .
Системный вызов , который выполняет команду в большинстве операционных систем, chdir
определен POSIX .
Оболочки командной строки в Windows обычно используют Windows API для изменения текущего рабочего каталога, тогда как в системах Unix cd
вызывают функцию chdir()
POSIX C. Это означает, что при выполнении команды не создается новый процесс для миграции в другой каталог, как в случае с другими командами, такими как ls . Вместо этого оболочка сама выполняет эту команду. Это связано с тем, что при создании нового процесса дочерний процесс наследует каталог, в котором был создан родительский процесс . Если cd
команда наследует каталог родительского процесса, то цель команды cd никогда не будет достигнута.
Windows PowerShell , объектно-ориентированная оболочка командной строки и язык сценариев Microsoft , выполняет cd
команду ( командлет ) внутри процесса оболочки. Однако, поскольку PowerShell основан на .NET Framework и имеет архитектуру, отличную от предыдущих оболочек, все командлеты PowerShell, такие как ls
и rmт. д., выполняются в процессе оболочки. Конечно, это не относится к устаревшим командам, которые по-прежнему выполняются в отдельном процессе.
Каталог — это логический раздел файловой системы , используемый для хранения файлов. Каталоги могут также содержать другие каталоги. Эту команду можно использовать для перехода в подкаталог, возврата в родительский каталог, полного возврата в корневой каталог или перехода в любой заданный каталог.cd
Рассмотрим следующий подраздел файловой системы Unix, в котором показан домашний каталог пользователя (представленный как ~
) с файлом text.txt
и тремя подкаталогами.
~
). Оттуда дерево может распространяться на большее количество подкаталогов и/или файлов.Если текущий рабочий каталог пользователя является домашним каталогом ( ~
), то ввод команды ls
, за которой следует команда cd games
, может привести к получению следующей расшифровки:
user@wikipedia:~$ ls workreports энциклопедия игр text.txt user@wikipedia:~$ cd games user@wikipedia:~/games$
Теперь пользователь находится в каталоге «игры».
Аналогичный сеанс в DOS (хотя понятие «домашний каталог» может не применяться, в зависимости от конкретной версии [ неопределенно ] ) будет выглядеть так:
C:\> реж.рабочие отчеты <DIR> Ср, 9 октября 9:01игры <DIR> Вт, 8 октября, 14:32энциклопедия <DIR> Пн, 1 октября 10:05текст txt 1903 Четверг, 10 октября, 12:43C:\> компакт-диск с играмиC:\игры>
DOS поддерживает отдельные рабочие каталоги для каждого диска с буквой , а также имеет концепцию текущего рабочего диска. Эту cd
команду можно использовать для изменения рабочего каталога рабочего диска или другого диска с буквой. Ввод буквы диска в качестве команды сам по себе меняет рабочий диск, например C:
; альтернативно, cd
с помощью /d
переключателя можно изменить рабочий диск и рабочий каталог этого диска за один шаг. Современные версии Windows имитируют это поведение для обратной совместимости с CMD.EXE . [10]
Обратите внимание, что выполнение cd
из командной строки без аргументов имеет разные последствия в разных операционных системах. Например, если cd
выполняется без аргументов в DOS, OS/2 или Windows, отображается текущий рабочий каталог (эквивалент Unix pwd
). Если cd
в Unix выполняется без аргументов, пользователь возвращается в домашний каталог.
Выполнение cd
команды в сценарии или пакетном файле также имеет разные последствия в разных операционных системах. В DOS текущий каталог вызывающего объекта может быть изменен непосредственно с помощью этой команды в пакетном файле . В Unix текущий каталог вызывающего объекта не изменяется при вызове команды сценарием cd
. Это связано с тем, что в Unix сценарий обычно выполняется внутри подоболочки .
cd
сам по себе или cd ~
всегда помещает пользователя в его домашний каталог.cd .
оставит пользователя в том же каталоге, в котором он находится в данный момент (т.е. текущий каталог не изменится). Это может быть полезно, если внутренний код пользовательской оболочки не может справиться с воссоздаваемым каталогом, в котором он находится; запуск cd .
поместит их оболочку в воссозданный каталог.cd ~username
поместит пользователя в домашний каталог имени пользователя.cd dir
(без /
) поместит пользователя в подкаталог; например, если они находятся в /usr
, при вводе cd bin
они будут помещены в /usr/bin
, а при cd /bin
вводе — в /bin
.cd ..
переместит пользователя на один каталог вверх. Итак, если они есть /usr/bin/tmp
, cd ..
перемещает их на /usr/bin
, а cd ../..
перемещает их на /usr
(т. е. на два уровня вверх). Пользователь также может использовать эту косвенность для доступа к подкаталогам. Таким образом, из /usr/bin/tmp
, они могут использовать, cd ../../local
чтобы перейти к/usr/local
cd -
переключит пользователя на предыдущий каталог. Например, если они находятся в /usr/bin/tmp
и переходят в /etc
, они могут ввести команду, cd -
чтобы вернуться в /usr/bin/tmp
. Пользователь может использовать это для переключения между двумя каталогами без pushd и popd .-p
Распечатайте окончательный стек каталогов, как и dirs.-n
Записи переносятся до того, как достигнут края экрана.-v
записи печатаются по одной в строке, после чего указывается их позиция в стеке.cd\
(Только для DOS и Windows) возвращается в корневой каталог. Следовательно, команда cd\subdir
всегда переносит пользователя в указанный подкаталог корневого каталога , независимо от того, где он находится в момент выполнения команды.В протоколе передачи файлов соответствующая команда пишется CWD
в потоке управления, но доступна, как и cd
в большинстве клиентских программ командной строки. Некоторые клиенты также имеют возможность локальногоlcd
изменения рабочего каталога .
Среды численных вычислений MATLAB и GNU Octave включают функцию cd
с аналогичной функциональностью. [11] [12] Команда также относится к интерпретаторам командной строки различного другого прикладного программного обеспечения.