З bash чи є спосіб натиснути та пропустити поточний робочий каталог? Я спробував писати, bash;cd dir; ./dostuff;exit;
але тепер текуча директорія dir
.
З bash чи є спосіб натиснути та пропустити поточний робочий каталог? Я спробував писати, bash;cd dir; ./dostuff;exit;
але тепер текуча директорія dir
.
Відповіді:
Є pushd
іpopd
Bash буде зберігати історію каталогів, які ви відвідуєте, просто потрібно запитати. Bash зберігає історію в стеку і використовує команди pushd і popd для управління стеком.
Приклад:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
Виклик bash
запускає нову підзарядку, яка має власний вхід; жодна з інших команд не запускається, поки вона не завершиться. Оточення команд, які слід запустити з паронами, також запустить нову підзарядку, але вона запустить команди всередині неї.
( cd dir ; ./dostuff )
Якщо вам не потрібно кілька рівнів історії каталогів, ви також можете зробити:
cd foo
# do your stuff in foo
cd -
У порівнянні з pushd
/ popd
, це має той недолік, що якщо cd foo
не вдалося , ви потрапите в неправильний каталог 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'
..cd
достатньо надійний псевдонім ? схоже, вилучіть лише 10 останніх елементів із стека.
pushd Saves the current directory on the top of the directory stack and then cd to dir. With no arguments, pushd exchanges the top two directories.