Як я можу змінювати каталоги в терміналі і знати, в якому каталозі я перебуваю?


15

Я дотримуюся вказівки @ Help Ubuntu Community Help ; однак я все ще плутаю кілька речей. Я дослідив це і знайшов цю посаду: використовуючи термінал для зміни каталогу , але це вище мене, і я все ще не впевнений, як це зробити. Я новий і мені потрібен трохи додатковий напрямок, тому дотримуйтесь мене! ;-) Наступний сценарій з мого терміналу:

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

Як я можу сказати, що знаходиться в якому каталозі та як орієнтуватися в каталозі. Я знаю, що я повинен залишати щось просте.


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'. Для цього потрібно спочатку розпакувати архів, ніж запустити сценарій встановлення. Я відредагував свою публікацію вище з деякими вказівками, як це зробити незабаром.
con-f-use

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, імені хоста вашого комп'ютера. (Якщо ви використовуєте живий компакт-диск, його ім'я хоста буде ubuntu, і деякі люди вибирають його як ім'я свого комп'ютера під час встановлення.)

:Характер відокремлює його від імені каталогу ви перебуваєте в даний момент. У цьому випадку, котрий представлений ~. ~це скорочення до вашого домашнього каталогу. Якщо ви не знаходитесь у своєму домашньому каталозі, ви повинні побачити повне ім’я каталогу. Наприклад:

ek@Kip:~$ cd /var/log
ek@Kip:/var/log$

(Щоб закінчити те, що означає кожна частина запиту: Для підказок, які слідують цій конвенції, з'являється $або a, або #символ. $Як і в цьому випадку, це означає, що це звичайна оболонка користувача. #Символ означатиме, що це 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до чогось, що не починається з a /, він намагається перейти до цього каталогу в поточному каталозі .

Наприклад, якщо ти біг

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/ Переходить до каталогу Desktop, якщо ви перебуваєте у своєму домашньому каталозі.

cd - Повертається до попереднього каталогу.

cd / Відведемо вас до кореневого каталогу.

cd ~/Desktop Перенесе вас у ваш настільний каталог незалежно від того, де ви знаходитесь.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.