Команда pushd в linux

Обновлено: 04.07.2024

Вы можете использовать командную строку Windows Server 2003 для переходов в сети и управления папками и файлами на других компьютерах. (Конечно, ваши возможности в этом зависят от ваших полномочий доступа.)

Просмотр и управление файлами с помощью UNC/пути

В следующих примерах командной строки представлены некоторые способы использования UNC -пути в командной строке.

  • dir \\Имя_компьютера\Имя_разделяемого_ресурса
  • dir \\Имя_компьютера\Имя_разделяемого_ресурса\Под_разделяемого_ресурса
  • copy \\Имя_компьютера\Имя_разделяемого_ресурса\Имя_файла c:\my documents
  • del \\Имя_компьютера\Имя_разделяемого_ресурса\Имя_файла (или имена файлов)

Использование команд Pushd и Popd для доступа к удаленным компьютерам

Команда cd не работает с UNC -адресом, что не позволяет вам переходить в папку удаленного разделяемого ресурса, как вы делаете это на локальном компьютере. Однако вы можете использовать команду pushd для автоматического назначения временной буквы-обозначения накопителя удаленному ресурсу и автоматического перехода в папку этого ресурса. Затем вы можете использовать команду popd для удаления этой буквы накопителя. Ниже при описании команд pushd и popd предполагается, что для командного процессора включены расширения команд (состояние по умолчанию в Windows Server 2003). Если отключить расширения команд, то команда pushd не работает с UNC -путями.

Чтобы использовать pushd, введите следующую команду:

где Имя_разделяемого_ресурса – это разделяемый диск или папка.

Если нажать клавишу Enter, то данная команда выполняет три следующих действия.

  • Сохраняет в памяти путь к текущей папке, чтобы в дальнейшем его можно было использовать для команды popd (команда popd возвращает вас на этот диск, когда вы используете ее для удаления буквы накопителя, назначенной с помощью команды pushd).
  • Назначает букву накопителя для введенного вами UNC -пути. Буквы накопителей назначаются автоматически в обратном порядке, начиная с z:.
  • Перемещает вас в целевой разделяемый ресурс, выводя приглашение с автоматически назначенной буквой накопителя.

Как только в приглашении появляется назначенная буква накопителя, это означает, что вы работаете в папке удаленного разделяемого ресурса и можете управлять папками и файлами, как если бы работали локально. Вы можете применять к этому ресурсу все доступные локально команды.

Вы можете использовать команду pushd сколько угодно раз, и Windows Server 2003 будет хранить путь для каждой пары "буква накопителя/разделяемый ресурс", пока вы не используете все буквы алфавита, кроме букв, использованных для локальных устройств (после чего pushd отказывается взаимодействовать с вами). Для перемещения между несколькими разделяемыми ресурсами просто вводите соответствующую букву накопителя в командной строке.

Назначения, сделанные с помощью команды pushd, действуют только во время текущего сеанса командной строки, поэтому, если вы планируете много раз переходить между локальным компьютером и удаленными ресурсами, держите открытым окно командной строки (вы можете, конечно, сворачивать его).

Чтобы освободить букву накопителя, введите popd в командной строке, что вызовет удаление последней назначенной буквы накопителя. Если вы назначили только одну букву накопителя (с помощью команды pushd), то команда popd возвратит вас в локальную папку, где вы находились во время ввода команды pushd. Если вы назначили несколько букв накопителей, то команда popd удалит последнюю назначенную букву накопителя и переместит вас к предпоследней назначенной вами букве накопителя. продолжайте вводить popd в командной строке, чтобы удалить другие буквы накопителей, пока вы не вернетесь на исходный локальный диск. Если вы хотите удалить все назначенные буквы накопителей, просто закройте командный сеанс.

Команда Pushd очень удобна, если вы используете для управления удаленными компьютерами пакетные (.bat) файлы. Вы можете использовать пакетный файл для удаления определенных файлов с нескольких машин с помощью следующих строк:

  • pushd \\имя_сервера\имя_разделяемого_ресурса
  • del имя_файла.расширение_имени

Pushd и Net use

Вы можете, конечно, воспользоваться командой net use , чтобы задавать соответствие (отображение) между буквами накопителей и удаленными разделяемыми ресурсами . Ниже приводятся некоторые сравнительные сведения по командам pushd и net use .

Использование команды Subst для локальных виртуальных дисков

Вы можете использовать понятие виртуального диска, которое используется в команде pushd для удаленных разделяемых ресурсов, чтобы выполнять переход на своем локальном компьютере. Это проще, чем вводить cd \Имя_папки для различных папок с длинными именами (например, \ documents and settings или program files \internet explorer ) .

Я приверженец командной строки и использую много средств командной строки для выполнения задач. Поэтому я использую пакетный (batch) файл, чтобы заранее назначить все удаленные папки, которые обычно посещаю. Вот пример моего пакетного файла:

  • В первой строке указан разделяемый жесткий диск компьютера с именем western (это дает мне полный доступ ко всем папкам на этом диске).
  • Во второй строке указана папка My Documents на компьютере Windows 98 SE с именем wks12 (в Windows 98 SE профили хранятся в папке \Windows\Profiles\Имя_пользователя ). My Documents не является разделяемой папкой, но C: является разделяемым диском, и эта строка показывает, что вы можете перемещаться через неразделяемые подпапки разделяемого ресурса, чтобы назначить букву накопителя.
  • В третьей строке указан разделяемый ресурс с именем newsletters на компьютере с именем docs.

Отметим, что этот пакетный файл не заканчивается командой exit. Это привело бы к закрытию командного окна и, тем самым, к удалению всех назначений букв накопителей, поскольку они действуют только во время текущего сеанса. По этой причине я запускаю этот пакетный файл из командной строки. Если бы я открыл этот пакетный файл из окна Windows Explorer , My Computer или как элемент папки Startup меню Programs, то командное окно закрылось бы, и сеанс был бы завершен после выполнения команд пакетного файла.

Вы можете использовать команду Subst ( subst Буква_накопителя: Путь ), чтобы назначить букву накопителя для локального пути. В отличие от команды pushd здесь буква накопителя не назначается автоматически; вы должны задать ее вручную. Это означает, что вы должны знать, какие буквы накопителей доступны для команды subst. Вы не можете применить уже используемую букву накопителя, поэтому введите в командной строке net use , чтобы определить буквы накопителей, занятые с помощью команд net use и/или pushd .

Введите в командной строке subst без параметров, и система выведет все отображения, созданные с помощью команды subst . (Виртуальные диски, созданные с помощью команды subst , не выводятся на экран, если вы вводите в командной строке net use .) Чтобы удалить локальный виртуальный диск , введите subst Буква_накопителя: /d ). В отличие от команды pushd виртуальные диски, созданные командой subst , остаются после командного сеанса. Но они не остаются после перезагрузки.

Справки по командам

Система Help and Support (Справка и поддержка ) Windows Server 2003 содержит алфавитный список всех доступных команд вместе с описанием их синтаксиса. В окне Help and Support Services введите в поле Search (Найти) command -line reference a-z . Выделите эту страницу в панели Results и выберите Add to Favorites (Добавить в избранное). После этого вам достаточно щелкнуть на средстве Favorites в окне Help and Support Services, чтобы получить доступ к информации о командах.

Вы можете также получать справку по любой команде путем ввода в командной строке Имя_команды / ?.


Команды pushd и popd

При работе в командной строке Linux для перехода в другую директорию используется команда cd .

Для вывода текущей рабочей директории используется команда pwd .

Команда pushd

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

Команда pushd создает стек директорий (папок).

Стек это просто список (ну почти). Команда pushd создает список папок (список путей). Стек обладает таким свойством, что то, что в него помещается последним, должно его первым и покинуть. Его можно сравнить со стаканом, в который мы кладем кружочки. Кружочек, который положили последним (он на вершине стека), должен первым покинуть стакан, чтобы получить доступ к следующему кружочку. Также и в стеке.

Чтобы добавить произвольную директорию в стек (и сразу же в нее перейти), то нужно дополнительно указать путь до этой директории (символ тильда

в путях в Linux означает домашнюю директорию пользователя):

После выполнения команды, через пробел выводятся директории, находящиеся в стеке.

Важное замечание: На вершине стека всегда размещена текущая директория. То есть, даже если вы не добавляли никаких директорий в стек, то в нем все равно будет содержаться текущая рабочая директория.

Для более удобного просмотра стека можно использовать команду dirs -v

Быстрый переход к произвольной директории в стеке

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

Перейдем к директории с индексом 2:

Команда popd

Пользователь всегда находится в той директории, которая в текущей момент расположена на вершине стека.

Чтобы извлечь директорию с вершины стека и перейти в директорию, которая окажется следующей (станет вершиной стека), используется команда popd

Вот как это работает:

Использование команд pushd popd

Еще пара трюков

Удалить из стека

Чтобы удалить директорию из стека (сама директория, конечно, не удаляется) используется следующая команда. Вместо 3 укажите индекс директории, которую нужно убрать из стека.

Переключение туда и обратно

Если выполнять команду pushd без параметров, то можно переключаться между двумя верхними директориями в стеке. Происходит переключение туда и обратно между верхними директориями, остальная часть стека не меняется.

Примечание: Состояние стека хранится только в рамках текущей сессии терминала.

Заключение

Команды pushd , popd и cd помогают для быстрой навигации по директориям.

Мы рассмотрели базовые возможности команд pushd и popd . Дополнительную информацию по их использованию можно получить, выполнив:

В данной главе приводится краткий обзор большинства стандартных команд, используемых при работе с директориями: pwd , cd , ls , mkdir и rmdir . Эти команды доступны при работе с любой системой Linux (или Unix).

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

Команда pwd

С помощью команды pwd (расшифровывается как Print Working Directory - вывести информацию о рабочей директории) может быть получена информация о вашем текущем местонахождении в рамках файловой системы. Попробуйте выполнить эту команду: получите доступ к интерфейсу командной строки системы (воспользовавшись одним из приложений со следующими названиями: terminal, console или xterm) и введите команду pwd . Командная оболочка выведет путь к вашей текущей директории .

Команда cd

Вы можете изменить вашу текущую директорию с помощью команды cd (расшифровывается как Change Directory - изменить директорию). Команда cd также может использоваться для быстрого перехода назад в вашу домашнюю директорию. Простое исполнение команды cd без задания пути к целевой директории приведет к перемещению в домашнюю директорию. Исполнение команды cd

приведет к аналогичному эффекту.

Команда cd ..

Для перехода в родительскую директорию (ту директорию, которая находится над вашей текущей директорией в дереве директорий) следует использовать команду cd .. .

Для того, чтобы остаться в текущей директории, просто введите команду cd . ;-) Позднее мы все же познакомимся с практическим примером использования символа . , представляющего текущую директорию.

Команда cd -

Другой полезный вариант использования команды cd заключается в выполнении простой команды cd - для перехода в предыдущую директорию.

Абсолютные и относительные пути

Вы должны иметь представление об абсолютных и относительных путях в рамках дерева директорий файловой системы. Если вы вводите путь, начинающийся с символа слэша (/) , подразумевается, что путь будет указан относительно корневой директории файловой системы. Если же вы не начинаете ввод пути с символа слэша, подразумевается, что точкой отсчета будет текущая директория.

В примере ниже показано, что текущей директорией является директория /home/paul . Для перехода из этой директории в директорию /home вам придется ввести команду cd /home вместо команды cd home . При нахождении в директории /home вам придется ввести команду cd paul вместо команды cd /paul для перехода в поддиректорию paul текущей директории /home . В том же случае, если вашей текущей директорией является корневая директория / , то и команда cd /home , и команда cd home позволят вам переместиться в директорию /home .

Этот пример был последним примером, в котором используются команды pwd . С этого момента информация о текущей директории будет всегда выводиться в рамках приглашения командной оболочки. Далее в данной книге будут даны пояснения относительно того, как следует использовать переменную командной оболочки $PS1 для вывода описанной информации.

Завершение путей

Клавиша TAB может помочь избежать ошибок при вводе путей. Нажатие клавиши TAB после ввода части команды cd /et приведет к завершению команды до вида cd /etc/ . При этом нажатие клавиши TAB после ввода команды cd /Et не приведет ни к чему, так как была допущена ошибка при вводе части пути (использована буква E в верхнем регистре).

Вам придется нажимать меньше клавиш в случае использования клавиши TAB , к тому же, при использовании этой клавиши вы можете быть уверены в том, что введенный путь является корректным!

Утилита ls

Вы можете вывести список содержимого директории с помощью утилиты ls .

Команда ls -a

Часто используемым параметром утилиты ls является параметр -a , который предназначен для вывода информации обо всех файлах. Под выводом информации обо всех файлах подразумевается вывод информации в том числе и о скрытых файлах . В том случае, если имя файла в рамках файловой системы Linux начинается с символа точки, он считается скрытым файлом и не включается в обычные списки содержимого директорий.

Команда ls -l

Вам придется многократно использовать параметры утилиты ls для вывода информации о содержимом директории в различных форматах или для вывода информации о различных файлах из директории. Команда ls без параметров позволяет получить список файлов, расположенных в директории. Команда ls -l (в качестве параметра использована строчная буква L, а не число 1) позволяет получить более подробный список файлов.

Команда ls -lh

Другим периодически используемым параметром утилиты ls является параметр -h . Он позволяет выводить числовые значения (соответствующие размерам файлов) в формате, лучше читаемом человеком. Также в примере ниже показаны варианты передачи параметров утилите ls . Позднее в данной книге будут даны подробные пояснения относительно выводимых данных.

Обратите внимание на то, что мы используем строчную букву L, а не число 1 в качестве параметра утилиты в данном примере.

Утилита mkdir

Обход дерева директорий файловой системы Unix является интересным занятием, но еще больший интерес представляет создание ваших собственных директорий с помощью утилиты mkdir . Вам придется передавать как минимум один параметр утилите mkdir , а именно, имя новой директории, которая должна быть создана. При этом следует серьезно задумываться перед использованием начального символа / в именах директорий.

Команда mkdir -p

Исполнение следующей команды закончится неудачей, так как родительской директории для директории threedirsdeep не существует. В случае использования параметра -p утилиты mkdir при необходимости будут создаваться родительские директории.

Утилита rmdir

В том случае, если директория пуста, вы можете использовать утилиту rmdir для удаления этой директории.

Команда rmdir -p

И по аналогии с параметром mkdir -p , вы также можете использовать утилиту rmdir для рекурсивного удаления директорий.

Практическое задание: работа с директориями

1. Выведите путь к вашей текущей директории.

2. Перейдите в директорию /etc.

3. А теперь перейдите в вашу домашнюю директорию с помощью ровно трех нажатий клавиш.

4. Перейдите в директорию /boot/grub с помощью ровно одиннадцати нажатий клавиш.

5. Перейдите в родительскую директорию для текущей директории.

6. Перейдите в корневую директорию.

7. Выведите список содержимого корневой директории.

8. Выведите подробный список содержимого корневой директории.

9. Оставаясь в текущей рабочей директории, выведите список содержимого директории /etc.

10. Оставаясь в текущей директории, выведите список содержимого директорий /bin и /sbin.

11. Оставаясь в текущей директории, выведите список содержимого директории

12. Выведите список всех файлов (включая скрытые файлы), находящихся в вашей домашней директории.

13. Выведите список файлов, находящихся в директории /boot, с использованием формата величин для облегчения чтения человеком.

14. Создайте директорию testdir в вашей домашней директории.

15. Перейдите в директорию /etc и, оставаясь в ней, создайте директорию newdir в вашей домашней директории.

16. Создайте с помощью одной команды директории

/dir1/dir1/dir2/dir3 (директория dir3 является поддиректорией директории dir2, а директория dir2 - поддиректорией директории dir1).

17. Удалите директорию testdir.

18. Если позволяет время (или вы ждете момента, когда остальные студенты закончат выполнение данного практического задания), попытайтесь воспользоваться командами pushd и popd и понять принцип их работы. Обратитесь к странице руководства man для командной оболочки bash с целью поиска информации о данных командах.

Корректная процедура выполнения практического задания: работа с директориями

1. Выведите путь к вашей текущей директории.

2. Перейдите в директорию /etc.

3. А теперь перейдите в вашу домашнюю директорию с помощью ровно трех нажатий клавиш.

4. Перейдите в директорию /boot/grub с помощью ровно одиннадцати нажатий клавиш.

5. Перейдите в родительскую директорию для текущей директории.

6. Перейдите в корневую директорию.

7. Выведите список содержимого корневой директории.

8. Выведите подробный список содержимого корневой директории.

9. Оставаясь в текущей рабочей директории, выведите список содержимого директории /etc.

10. Оставаясь в текущей директории, выведите список содержимого директорий /bin и /sbin.

11. Оставаясь в текущей директории, выведите список содержимого директории

12. Выведите список всех файлов (включая скрытые файлы), находящихся в вашей домашней директории.

13. Выведите список файлов, находящихся в директории /boot, с использованием формата величин для облегчения чтения человеком.

14. Создайте директорию testdir в вашей домашней директории.

15. Перейдите в директорию /etc и, оставаясь в ней, создайте директорию newdir в вашей домашней директории.

16. Создайте с помощью одной команды директории

/dir1/dir1/dir2/dir3 (директория dir3 является поддиректорией директории dir2, а директория dir2 - поддиректорией директории dir1).

17. Удалите директорию testdir.

18. Если позволяет время (или вы ждете момента, когда остальные студенты закончат выполнение данного практического задания), попытайтесь воспользоваться командами pushd и popd и понять принцип их работы. Обратитесь к странице руководства man для командной оболочки bash с целью поиска информации о данных командах.

Многие пользователи Linux никогда не слышали о pushd и popd, но они существуют всегда. Они также могут значительно ускорить процесс навигации по каталогам в командной строке. Мы расскажем, как их использовать.

Что такое pushd и popd?

Одно из нововведений Билл Джой включены в его 1978 C Shell была концепция стека каталогов и средства для управления им: pushd и popd. Подражание, являющееся самой искренней формой лести, вскоре были включены в другие оболочки (например, Bash) и даже в другие операционные системы: стек каталогов, pushd и popd.

Концепция стека проста. Элементы помещаются в стек по одному, причем последний добавленный элемент всегда занимает верхнюю позицию. Когда элементы извлекаются из стека, они удаляются по порядку сверху вниз. Стеки такого типа часто называют Последний вошел, первый вышел (LIFO) очереди.

На самом деле pushd и popd немного более гибкие, чем эта, но пока стоит помнить об этой модели.

Поскольку мы говорим о стеке каталогов, вероятно, неудивительно, что буква «d» в pushd и popd означает «каталог». Эти команды позволяют помещать каталоги в стек каталогов или выталкивать их из стека каталогов.

Но как это нам выгодно?

Как pushd заполняет стек

Когда вы используете pushd, происходят три вещи:

Вы меняете каталог так же, как если бы использовали cd.
Имя и путь к каталогу добавляются в стек.
Стек отображается как список каталогов, разделенных пробелами.

После первой команды pushd в стеке есть две записи: каталог, который вы покинули, и тот, в который вы переместились.

В нашем примере мы набираем следующее:

), которая представляет наш домашний каталог. Это показывает, что, хотя каталог уже находится в стеке, он будет снова добавлен для других команд pushd.

Также обратите внимание, что самая левая запись в стеке, которая является последней добавленной записью, является вашим текущим каталогом.

Команда dirs

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

Это не влияет на стек, а просто отображает его. Некоторые из параметров, которые вы можете использовать с pushd, относятся к положению каталогов в стеке.

Если вы хотите увидеть числовую позицию каждого каталога, вы можете использовать параметр -v (вертикальный), как показано ниже:

Если вы предпочитаете видеть прописанный путь к вашему домашнему каталогу вместо тильды (

), добавьте параметр -l (длинный формат), например:

Добавление каталога в стек

Как мы видели, когда вы используете команду pushd, она делает три вещи: изменяет ваш каталог, добавляет новый каталог в стек и отображает стек для вас. Вы можете использовать параметр -n (без вращения), чтобы добавить каталог в стек, не изменяя текущий каталог.

Вот наш стек каталогов:

Теперь мы будем использовать команду pushd с параметром -n и pas в каталоге / home / dave в качестве параметра. Затем мы снова проверим стек каталогов.

Каталог / home / dave был добавлен в стек в слоте 1, который является вторым местом в стеке. Он не может занимать верхнюю позицию, потому что нулевой слот всегда является текущим каталогом.

Проверь это - Как получить последнюю версию ядра Linux в Ubuntu

Мы не покидали текущий каталог

/ Videos, поэтому он не был перемещен в другую позицию в стеке.

Смена каталога путем поворота стека

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

Вы ссылаетесь на каталоги в стеке по их номеру позиции. Вы можете считать сверху или снизу стопки. Для положительных чисел, таких как +3, отсчитывайте сверху; для отрицательных чисел, таких как -2, считайте снизу.

Каталог / home / dave / Documents находится на третьей позиции. Мы можем использовать следующую команду для перемещения этого каталога:

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

Если мы хотим перейти в каталог внизу стека, мы можем использовать следующую команду:

Последний каталог перемещается в первый слот, а все остальные перемещаются вниз по стеку. Мы переходим в каталог

Команда popd

Вы можете использовать команду popd для удаления каталогов из стека.

Каталог / home / dave был удален, а те, что находились ниже в стеке, переместились на одну позицию вверх.

Так же, как с помощью pushd, мы можем считать снизу стека с помощью popd. Чтобы удалить последний каталог из стека, набираем:

/ Music удаляется из последней позиции в стеке.

Проверь это - Как установить тему значков Xenlism в Linux

Чтобы изменить каталог, сделать что-нибудь, а затем вернуться в предыдущий каталог, вы можете использовать pushd и popd вместе.

Мы будем использовать pushd для перехода в другой каталог. Мы будем использовать popd, чтобы отбросить самый верхний каталог в стеке и переместиться в каталог во второй позиции. Это каталог, из которого вы только что переехали, поэтому вы вернетесь в каталог, в котором находились изначально.

Мы начали с каталога

/ Projects, переместили его в домашний каталог, а затем вернулись в каталог

Чередование всего стека

Мы собираемся проиллюстрировать, как вращаться в стеке с некоторыми вложенными каталогами, но вы можете использовать любые каталоги в любом месте файловой системы.

Наш самый глубокий уровень вложенности:

Из домашнего каталога мы постепенно спускаемся по каждому каталогу, пока не дойдем до каталога статей. Затем мы посмотрим на стек каталогов.

Когда вы несколько раз выполняете команды pushd +1, вы можете циклически перемещаться по стеку каталогов. Если вы делаете это часто, pushd +1 будет хорошим кандидатом на псевдоним.

Штамповка поверх стопки

Для этого введите следующее:

После того, как вы привыкнете к командам pushd и popd (и, возможно, будете использовать их для создания нескольких псевдонимов), у вас появится сверхбыстрый способ переключения между каталогами.

Вот почему мы используем командную строку. Эффективность потрясающая, верно?

Читайте также: