Резюме (TL; DR)
- Используйте,
pwdчтобы узнать, где вы находитесь (или посмотрите между :и $в вашей подсказке).
- Используйте,
cdчтобы изменить каталог в другом месте. В отличие от Windows, cdдолжны всегда сопровождаться пробелом; Команды вроде cd/и cd..не будут работать, но так cd /и cd ..будут.
Зная, где вы находитесь
Способ 1: Беги pwd.
В каком каталоге вы находитесь в данный момент, зависит от оболочки (и, в более общем случае, от конкретного приложения). Вы можете запустить одну оболочку, где вы находитесь в одном каталоге, и другую оболочку, где вы находитесь в другом каталоге.
Чтобы узнать, в каком каталоге вы сейчас находитесь, запустите:
pwd
Например (из оболочки, которую я сейчас открыл на моей машине):
ek@Kip:~$ pwd
/home/ek
Это говорит мне, что я в каталоге /home/ek. /homeэто (несколько странно) каталог, содержащий домашние каталоги пользователей-пользователей (сам по себе он не является домашним каталогом любого пользователя). У человека-пользователя usernameесть домашний каталог ./home/username
У rootпользователя нет домашнего каталога в /home. Вместо этого, rootдомашний каталог есть /root. Это не следует путать с корневым каталогом , который является /.
Способ 2: Изучите вашу подсказку.
Конфигурация вашего приглашения по умолчанию состоит в том, что он сообщает вам, в каком каталоге вы сейчас находитесь. Ваше приглашение - это текст, который уведомляет вас о том, что оболочка готова принять команду.
В примере, который вы показали нам в своем вопросе, ваша подсказка:
christy@ubuntu:~$
christyэто ваше имя пользователя. Символ @отделяет его от имени ubuntuвашего компьютера. (Если вы работаете с живым CD, его именем хоста будет ubuntu, и некоторые люди выбирают его в качестве имени своего компьютера во время установки.)
Символ :отделяет его от имени каталога, в котором вы сейчас находитесь. В данном случае это обозначается как ~. ~является сокращением для вашего домашнего каталога. Когда вы не в своем домашнем каталоге, вы должны увидеть полное имя каталога. Например:
ek@Kip:~$ cd /var/log
ek@Kip:/var/log$
(Чтобы закончить, что означает каждая часть приглашения: для приглашений, которые следуют этому соглашению, появляется $либо #символ , либо символ. $, Как в данном случае, означает, что это обычная пользовательская оболочка. #Символ будет означать, что это rootоболочка.)
Изменение где вы находитесь
Почему ваша команда "CD" не работает.
Чтобы изменить каталог, используйте cdкоманду.
Вы бежали cd/. Это не работает, потому что вы на самом деле не запускали cdкоманду. В Ubuntu и других Unix-подобных операционных системах (фактически, в оболочках в стиле Unix, например bash, используемой вами оболочке), считается , что имя команды заканчивается только пробелом или концом строки.
Таким образом, в отличие от командной строки в Windows (где cd\интерпретируется так же, как cd \и cd..интерпретируется так же, как cd ..), в bash(оболочка, которую вы используете в Ubuntu), cd/не является допустимой командой. Вы должны использовать cd /.
cd/означает «запись в текущем каталоге, имя cdкоторой также является каталогом». Независимо от того, существует ли такой подкаталог, он не может быть запущен как команда, поэтому в любом случае вы получите ошибку (хотя полученная ошибка будет отличаться):
ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory
Переезд в ваш домашний каталог
Чтобы перейти в домашнюю директорию, запустите cdее без аргументов:
cd
Некоторые люди предпочитают называть свой домашний каталог явно. Вы можете использовать его полное имя или
cd ~
Но cdсамо по себе достаточно.
Перемещение вверх на один каталог
Чтобы изменить каталог на родительский каталог текущего каталога (т. Е. Каталог , в котором он находится), используйте:
cd ..
..представляет родительский каталог текущего каталога. Если вы находитесь в корневом каталоге ( /), есть исключение: ..просто представляет /. Таким образом, выполнение cd ..перемещается вверх на один каталог при запуске в любом месте, кроме /; при запуске в /, вы остаетесь в /.
Каждый каталог содержит ..запись. Все они также содержат .запись, которая ссылается на текущий каталог. Это не очень бежать, cd .хотя. Ты всегда остаешься там, где ты есть.
Абсолютные и относительные пути
Если вы cdк чему-то, что не начинается с /, то он пытается перейти в этот каталог в текущем каталоге .
Например, если вы бежали
cd var/log
Затем он попытается перейти в varподкаталог того места, где вы сейчас находитесь, и в logподкаталог этого. Если оба не существуют, и в тех местах, эта cdкоманда не будет выполнена (и вы останетесь там, где вы были изначально).
Если вы хотите перейти в logподкаталог varподкаталога корневого каталога , запустите вместо этого:
cd /var/log
Только если вы в настоящее время /является cd var/logэквивалентно cd /var/log.
Путь, который начинается с, /является абсолютным. Способ его решения не зависит от того, где вы находитесь в данный момент.
Путь ~тоже абсолютен, потому что он (по сути) сокращен для $HOME. HOMEявляется переменной среды , и выражение $HOMEраскрывается до полного абсолютного пути к домашнему каталогу текущего пользователя.
~нотация также может использоваться для представления домашнего каталога другого пользователя. Если вы пишете , это представляет домашний каталог.~usernameusername
Возвращение туда, где вы были раньше
Каталог, в котором вы сейчас находитесь, хранится в PWDпеременной окружения. Последний каталог , который вы были хранится в OLDPWDпеременной окружения. Вы можете посмотреть так OLDPWDже, как любую переменную среды:
echo $OLDPWD
Поскольку эта информация хранится, cdона может иметь специальный, быстрый и простой способ вернуться туда, где вы были раньше. Как говорит pst007x , чтобы перейти к последнему каталогу, в котором вы были, выполните:
cd -
Если в этой оболочке никогда не было более раннего каталога, в котором вы находились , OLDPWDпеременная окружения не будет установлена, и попытка ее выполнения cd -приведет к ошибке (и вы останетесь там, где находитесь):
ek@Kip:~$ cd -
bash: cd: OLDPWD not set
Смена места, где ты, как босс
pushdи popd: стек каталогов
Представьте себе стек имен каталогов. Под стеком я подразумеваю что-то, когда при добавлении чего-либо оно идет сверху, и вы можете удалить только одну вещь за раз, а то, что вы удаляете, всегда является тем, что в данный момент находится сверху.
Вы можете поместить любой каталог dirв стек, выполнив:
pushd dir
Если вы хотите поместить текущий каталог в верхнюю часть стека, вы можете использовать его .(который, как описано выше, всегда представляет текущий каталог):
pushd .
Затем вы можете заниматься своими делами, меняя каталоги так, как вам нравится. Если вы хотите вернуться к последнему каталогу, который вы поместили в стек pushd, выполните:
popd
Это идет в этот каталог, а также выталкивает его из стека. Теперь стек на один каталог короче. Если это был единственный каталог в стеке, то стек теперь пуст.
Вы можете иметь размер стека больше 1. То есть вы можете использовать отдельные pushdкоманды, чтобы поместить несколько каталогов в стек. Каждая последующая popdкоманда будет идти (и извлекать, т. Е. Удалять из стека ) самого последнего отправленного каталога, который еще не извлечен.
Вот пример:
ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$
pushdи popdиспользуются гораздо реже, чем cd. Они также имеют другое, даже более продвинутое использование. Запустите help pushdи help popdдля деталей.
Узнать больше и получить доступ к документации
cdи pwdимейте более продвинутые использования также. Чтобы узнать о них, беги help cdи man pwd.
helpдля встроенных оболочек . manпредназначен для автономных команд - команд, которые выполняются как отдельные процессы и существуют как отдельные исполняемые файлы. Команда typeпоказывает, является ли команда встроенной в оболочку или нет, и, если нет, где находится программа, в которой она выполняется. Например, вы могли бы работать type help, type typeили type man.