Как изменить каталоги в терминале и узнать, в каком каталоге я нахожусь?

15

Я следую указаниям @ Справка сообщества Ubuntu ; Тем не менее, я все еще запутался в нескольких вещах. Я исследовал это и нашел этот пост: используя терминал, чтобы сменить каталог , но он выше меня, и я все еще не уверен, как это сделать. Я новичок и мне нужно дополнительное направление, так что оставайтесь со мной! ;-) Вот скрипт из моего терминала:

christy@ubuntu:~$ ls
Desktop    examples.desktop     install-tl-unx.tar.gz  Pictures  Templates
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
christy@ubuntu:~$ cd/
bash: cd/: No such file or directory

Как мне сказать, что находится в каком каталоге, и как мне перемещаться по каталогу. Я знаю, что, должно быть, упускаю что-то простое.

user74713
источник
4
Вам всегда нужен пробел после команды, такой как «cd». Ваша команда будет работать, если вы введете «cd /», и перейдет в корневой каталог.
Марти Фрид
Фантастика, Марти! Ваша помощь очень ценится. ;-)
user74713

Ответы:

19

В вашем сеансе lsотображается содержимое текущего каталога (но не скрытые файлы, начинающиеся с точки в имени файла). Вы переходите в другой каталог, печатая cd dirname. Здесь вы должны заменить «dirname» на имя каталога, в который вы хотите изменить. Обычно вы начинаете с вашего домашнего каталога в качестве текущего рабочего каталога. В вашем случае это наиболее вероятно /home/christy. Если lsпоказывает каталог с именем «Шаблон», вы можете перейти в «Шаблон» (= сделать его текущим рабочим каталогом), набрав (обратите внимание на пробел) команду:

cd Templates

вы измените свой текущий рабочий каталог на «Шаблоны» или напечатаете «Нет такого файла или каталога», если каталог с таким именем не существует в вашей текущей директории. Печатание pwdвсегда даст вам полный патч для вашего текущего рабочего каталога, включая родителей.

Вы можете предоставить необязательные аргументы для каждой команды. Для cdстроки «Шаблоны» был такой необязательный аргумент. Если вы ls -aнаберете, например, lsкоманда также распечатает скрытые файлы. Или с ls Templatesним будет печатать содержимое каталога Tempaltes вместо содержимого текущего рабочего каталога. Аргументы должны быть отделены хотя бы одним пробелом от имени команды и друг от друга. Отсутствие пробела между ними было причиной того, что ваша команда не сработала.

Поскольку символ пробела имеет особое значение, вам нужно будет заключить его в кавычки или экранировать, если это часть аргумента. Поэтому, если, например, вы хотите изменить текущий рабочий каталог на «Исходные файлы», вам нужно ввести одну из следующих команд:

cd Source\ Files
cd "Source Files"

Верхняя строка «экранирована», а нижняя - «заключена в кавычки».

Если вы хотите узнать больше, лучшее руководство для вас может быть: Введение в Linux ( pdf ) ( html )


Редактировать :

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

Таким образом, вы хотите установить tex-live из исходного архива, на который есть ссылка в опубликованном вами руководстве «Приступая к работе» . Для этого вы должны сначала удалить все существующие ранее установки tex-live. Вы делаете это, открывая терминал, выполняя это:

christy@ubuntu:~$ pwd 
/home/christy # <---- This is the directory you are working in
christy@ubuntu:~$ sudo apt-get remove texlive-*
[sudo] password for christy: 

В этот момент вы должны ввести свой пароль и будете вознаграждены несколькими скучными сообщениями, которые я здесь опущу. Затем вам нужно будет загрузить архив с именем install-tl-unx.tar.gz(вы уже сделали это, и вам не нужно загружать его снова, но я покажу вам, как это сделать на всякий случай):

christy@ubuntu:~$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz

--2012-07-09 15:08:23--  http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
Resolving mirror.ctan.org... 80.237.159.15
Connecting to mirror.ctan.org|80.237.159.15|:80... connected.
HTTP request sent, awaiting response... 302 Found
# ... some more stuff like this ...
Saving to: `install-tl-unx.tar.gz'

100%[=====================================>] 2,530,831   --.-K/s   in 0.1s    

2012-07-09 15:08:23 (17.3 MB/s) - `install-tl-unx.tar.gz' saved [2530831/2530831]

Теперь, когда вы скачали архив, вы можете распаковать его

christy@ubuntu:~$ tar xvf install-tl-unx.tar.gz
install-tl-20120701/
install-tl-20120701/readme-txt.dir/
install-tl-20120701/readme-txt.dir/README.RU-cp1251
# ... bla bla skipping over some more messages like this ...
install-tl-20120701/readme-html.dir/readme.sr.html
install-tl-20120701/readme-html.dir/readme.ru.html
install-tl-20120701/readme-html.dir/readme.de.html

Теперь, когда вы распаковали архив, вы можете перейти в распакованный каталог.

christy@ubunut:~$ ls | grep install-tl-  # <---- with this line you find out the number
install-tl-20120701                      # <---- in this case "20120701"
install-tl-unx.tar.gz                    # <---- if just this is present with no number you did something wrong
christy@ubuntu:~$ cd install-tl-20120701 # <---- enter this number here
christy@ubuntu:~$ pwd
/home/christy/install-tl-20120701/       # <--- this is your new working directory

Число «20120701» - это отметка времени, указывающая, какая у вас версия tex-live. Это число может отличаться для вас, но команда ls | grep install-t1-скажет вам, что использовать вместо этого. Если все это работает, вы можете запустить скрипт установки отсюда:

christy@ubuntu:~$ sudo ./install-tl
[sudo] password for jan: 
Loading http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet/tlpkg/texlive.tlpdb
Installing TeX Live 2012 from: http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet
Platform: x86_64-linux => 'x86_64 with GNU/Linux'
# ... bla bla and so on bla ...
Actions:
  <I> start installation to hard disk
  <H> help
  <Q> quit

Enter command: I
# ... and so on ...

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

кон-е использование
источник
@ con-f-use: отличная информация! Теперь, ссылаясь на скрипт терминала в моем первоначальном посте: в каком каталоге находится install-tl-unx.tar.gz и как мне его запустить? Я знаком с командами установки, но думаю, мне нужно установить пакеты? Команды для распаковки архива : @ ubuntu-manual.org/getinvolved/editors . Если вы можете указать мне правильное направление ... Большое вам спасибо; Вы были чрезвычайно информативны.
user74713
Нет проблем. Я не уверен, что именно ваша цель в конце концов, поэтому немного сложно помочь вам без дополнительной информации. Видимо, вы пытаетесь установить TeX-Live из архива 'install-tl-unx.tar.gz'. Для этого необходимо сначала распаковать архив, а затем запустить скрипт установки. Я отредактирую свой пост выше с некоторыми инструкциями, чтобы сделать это в ближайшее время.
кон-е использование
10

Резюме (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.

Элия ​​Каган
источник
5

Например:

cd Desktop/ Переходит в каталог рабочего стола, если вы находитесь в вашем домашнем каталоге.

cd - Возвращается к предыдущему каталогу.

cd / Перенесем вас в корневой каталог.

cd ~/Desktop Перенесет вас в каталог рабочего стола, где бы вы ни находились.

pst007x
источник