Kiedy chcę iść o jeden katalog w górę, używam
cd ..
Ale kiedy chcę przejść 7 katalogów w górę, jest jakikolwiek sposób na zrobienie tego innego niż wpisanie siedmiu (7) razy cd ..
?
Kiedy chcę iść o jeden katalog w górę, używam
cd ..
Ale kiedy chcę przejść 7 katalogów w górę, jest jakikolwiek sposób na zrobienie tego innego niż wpisanie siedmiu (7) razy cd ..
?
cd ../../../../../../../
Kolejną użyteczną wskazówką nawigacyjną jest, na przykład, powiedzmy, że nadal przełączasz się z katalogu (zadzwoń do A) na inny (nazwij go B), to jest 7 katalogów w twoim przypadku.
Więc jeśli jesteś w katalogu A:
A> cd ../../../../../../../
B> // Now you're in directory B and want to go back to A
B> cd -
To przeniesie się z powrotem do katalogu A. -
rozwija się do poprzedniego katalogu, w którym byłeś.
Utwórz alias (w tobie ~ / .bashrc)
function cd_up() {
cd $(printf "%0.0s../" $(seq 1 $1));
}
alias 'cd..'='cd_up'
I użyć:
$ cd.. 7
UPD: Lub utwórz bardziej wydajną odmianę, cd na katalog w aktualnej ścieżce:
# cd up to n dirs
# using: cd.. 10 cd.. dir
function cd_up() {
case $1 in
*[!0-9]*) # if no a number
cd $( pwd | sed -r "s|(.*/$1[^/]*/).*|\1|" ) # search dir_name in current path, if found - cd to it
;; # if not found - not cd
*)
cd $(printf "%0.0s../" $(seq 1 $1)); # cd ../../../../ (N dirs)
;;
esac
}
alias 'cd..'='cd_up' # can not name function 'cd..'
posługiwać się:
$ cd /home/user/documents/projects/reports/2014-10-01
$ cd.. doc
$ pwd
> /home/user/documents
możesz użyć pushd .
zapamiętywać jeden katalog i popd
wrócić do tego.
Jeśli istnieje polecenie, którego używam dużo, utworzę alias.
Możesz pisać
alias ..='cd ..'
alias ...='cd ../..'
Wtedy możesz po prostu użyć ..
iść o jeden poziom wyżej i ...
przejść o dwa poziomy wyżej.
Oto niewielka poprawa, którą znalazłem:
Zwykle po powrocie do jednego katalogu z cd .. kończy się kolejny katalog po. Aby to zadziałało, musisz używać funkcji zamiast aliasów, więc zamiast:
alias ..=”cd ../”
alias ..2=”cd ../../”
możesz użyć:
..()
{
cd ../$@
}
..2()
{
cd ../../$@
}
Jednak po użyciu tego, szybko staje się oczywiste, że brakuje ci uzupełnienia poleceń dla tej funkcji, czyniąc ją mniej użyteczną niż mogłaby być. Dlatego wróciłem i dodałem własne funkcje zakończenia basha dla tej funkcji, które można wkleić do twojego ~ / .bashrc lub dowolnego pliku (np. ~ / .Bash_completion), który jest wywoływany z twojego ~ / .bashrc, jeśli chcesz uniknąć nieład. Oto kod zakończenia:
_..()
{
local cur=../${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -d — $cur) )
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’)
done
}
complete -F _.. -o nospace -S / ..
_..2()
{
local cur=../../${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -d — $cur) )
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’)
done
}
complete -F _..2 -o nospace -S / ..2
Możesz to zrobić w ten sposób cd ../../../../../../../
Tam jest fajny artykuł o niektórych hackach, które możesz zastosować, by poprawić nawigację.
Nie pamiętam, skąd skopiowałem tę funkcję, ale działa to dla mnie dobrze (możesz umieścić .bashrc
plik na przykład)
up() { local p= i=${1:-1}; while (( i-- )); do p+=../; done; cd "$p$2" && pwd; }
na przykład aby przejść do 7 katalogów, konieczne jest wpisanie up 7
for i in {1..7}; do cd ..; done