Будь ласка, допоможіть мені візуалізувати popd і pushd


2

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

pats-MacBook-Pro: темп-код $ pushd i / like / icecream

~ / temp / i / like / icecream ~ / temp

Якщо pushd схожий на cd, то чому другий рядок показує ~ / temp в кінці рядка? Як ця частина вписується в «стек пластин» аналогії?

Потім, якщо я напишу popd, він повертає мене до початкової теки ~ / temp. Чому?

Я дуже ціную вашу допомогу! Дякую!


Я отримую це !!! Я нарешті flipping отримати це! Спасибі Джаспер і гаріджон! dirs -v дійсно, дійсно допомагає! Ще раз спасибі! Я почала втрачати свої кульки!

Відповіді:


2

pushd може приймати один аргумент (ім'я каталогу), зберігає поточний каталог на DIRSTACK і змінює поточний робочий каталог на даний каталог. Сторінка дає пояснення:

Якщо команда pushd успішна, a dirs виконується також.

І dirs друкує поточні збережені каталоги. popd Мета полягає в тому, щоб поп (видалити з стека) "верхній" запам'ятовується каталог і. \ t cd в новий "верхній" запам'ятовується каталог. Після успішного popd, знову a dirs виконується команда для друку поточного стека. Якщо ти зробиш dirs у свіжій оболонці ви побачите, що поточний робочий каталог завжди міститься в DIRSTACK змінна - ось звідки береться ваш ~ / temp.

Приклад: припустимо, що у нас є каталоги one, one/two і three у нашому домашньому каталозі:

~ $ pushd one   # change into one, remember current location
~/one ~
~/one $ pushd two   # change into two, remember current location
~/one/two ~/one ~   
~/one/two $ cd ../../three  # change into three, don't remember where we came from
~/three $ dirs  # show where we are and where we can get back to
~/three ~/one ~
~/three $ popd  # go back one step in the remembered directories
~/one ~
~/one $

Можна придумати pushd / popd команд як спосіб "змінити в цей каталог, але пам'ятайте, звідки ми прийшли ( pushd ); робити речі в новому каталозі; змінити каталог назад ( popd ). Це також стане більш чітким, якщо ви робите кілька pushd s в ряд без popd ing. Тоді аналогія "стека пластин" повинна стати очевидною.


1

Щоб зберегти вертикальний простір на екрані, pushd показує стек по горизонталі, а нові елементи натискаються зліва.

Ви почали з одного елемента в стеку, робочого каталогу, ~ / temp. Коли ви виконали pushd i/like/icecream, pushd висунув i / like / icecream на вершину стека, натиснувши ~ / temp down. Таким чином pushd показаний результат, хоча, щоб показати, що i / like / icecream було висунуто на стек зліва, переміщаючи ~ / temp вправо. pushd також змінює робочий каталог на директорію, що просто натиснув на стек, який був i / like / icecream.

popd з'являється стек, видаляє верхній елемент (i / like / icecream) і випускає наступний елемент (~ / temp) до вершини стека, стаючи новим робочим каталогом.

popd, люблю pushd, показує стек на боці, з верхньої частини стека ліворуч і знизу стека справа.

Це може допомогти вам візуалізувати поточний стан стека за допомогою dirs -v команда, яка виводить стек вертикально.


1

Я знайшов, що popd було важко на початку, але мені допомогли:

для bash , в основному: замість використання cd можна використовувати pushd змінювати каталоги, тому вони складаються або кажуть іншими словами: історія змінених каталогів зберігається.

pushd /home; pushd /var; pushd log

Щоб переглянути стек (або історію), використовуйте dirs і для полегшення навігації (щоб отримати номери "записів стеків"):

dirs -v

Вихід:

me@myhost:/home$ dirs -v
 0  /home
 1  /var
 2  /tmp

Тепер використовувати ці номери з cd і ~ люблю:

cd ~1

... так що ви можете переміщатися по "історії" каталогів (тобто навігація в стеку)

Але тепер ці числа переставляються зараз і позиція "0" змінюється, так що просто pushd каталог у верхній позиції двічі (або використовувати фіктивну позицію на позиції 0), наприклад:

me@myhost:/home$ dirs -v
 0  /home
 1  /home
 2  /var
 3  /tmp

тепер 1..3 збереже там позицію Я читав це десь, але більше не знаю, так шкода, що не даю кредиту

(щоб видалити поточний каталог зі стека / видалити його з історії використання popd )

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