Czy dzięki bash istnieje sposób na wypchnięcie i usunięcie bieżącego katalogu roboczego? Próbowałem pisać, bash;cd dir; ./dostuff;exit;
ale bieżący katalog jest teraz dir
.
Czy dzięki bash istnieje sposób na wypchnięcie i usunięcie bieżącego katalogu roboczego? Próbowałem pisać, bash;cd dir; ./dostuff;exit;
ale bieżący katalog jest teraz dir
.
Odpowiedzi:
Jest pushd
ipopd
Bash zachowa historię odwiedzanych katalogów, po prostu musisz zapytać. Bash przechowuje historię w stosie i używa poleceń pushd i popd do zarządzania stosem.
Przykład:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
Wywołanie bash
uruchamia nową podpowłokę, która ma własne dane wejściowe; żadne z pozostałych poleceń nie uruchomi się, dopóki nie zakończy działania. Otaczanie poleceń uruchamianych za pomocą parens również uruchomi nową podpowłokę, ale uruchomi w niej polecenia.
( cd dir ; ./dostuff )
Jeśli nie potrzebujesz wielu poziomów historii katalogów, możesz także:
cd foo
# do your stuff in foo
cd -
W porównaniu do pushd
/ popd
ma to tę wadę, że jeśli cd foo
zawiedzie, trafisz do niewłaściwego katalogu z cd -
.
(Prawdopodobnie cd -
jest to bardziej przydatne poza skryptami. „Wróćmy tam, gdzie właśnie byłem”.)
Używam aliasu do śledzenia zmian w moich katalogach, więc do „cd” gdzieś mogę wrócić do miejsca, w którym korzystałem z „cd.”, Lub cofnąć dwa, używając „cd ..” itp .;
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
wystarczająco solidny? wygląda na to, że usuwa tylko 10 ostatnich przedmiotów ze stosu.
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.