With bash есть ли способ нажать и открыть текущий рабочий каталог? Я пытался писать bash;cd dir; ./dostuff;exit;
но текущая директория теперь dir
.
push / pop текущий каталог?
4 ответа
здесь pushd
и popd
Bash будет хранить историю каталогов, которые вы посещаете, вы просто должны спросить. Bash хранит историю в стеке и использует команды pushd и popd для управления стеком.
пример:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
вызов bash
запускает новую ячейку, которая имеет свой собственный вход; ни одна из других команд не будет выполняться до ее выхода. Окружение команд, которые будут выполняться с parens, также запустит новую ячейку, но она будет запускать команды в ней.
( cd dir ; ./dostuff )
Если вам не нужно несколько уровней истории каталога, вы также можете сделать:
cd foo
# do your stuff in foo
cd -
по сравнению с pushd
/popd
, это имеет тот недостаток, что если cd foo
fails, вы в конечном итоге в неправильном каталоге с cd -
.
(наверное cd -
удобнее вне скриптов. "Давайте вернемся туда, где я только что был.")
Я использую псевдоним для отслеживания изменений моего каталога, так что " cd "где-то я могу просто вернуться туда, где я использовал" cd.', или вернуться на два используя 'cd..', п.;
alias pushdd="pushd $PWD > /dev/null"
alias cd='pushdd;cd'
alias ssh='ssh -A'
alias soc='source ~/.bashrc'
#below to go back to a previous directory (or more)
alias popdd='popd >/dev/null'
alias cd.='popdd'
alias cd..='popdd;popdd'
alias cd...='popdd;popdd;popdd'
alias cd....='popdd;popdd;popdd;popdd'
#below to remove directories from the stack only (do not 'cd' anywhere)
alias .cd='popd -n +0'
alias ..cd='popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0'
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]