Cuando quiero ir a un directorio arriba utilizoIr algunos directorios en Linux
cd ..
Pero cuando quiero ir 7 directorios arriba ¿Hay alguna manera de hacer esto que no sea simplemente escribiendo siete (7) veces cd ..
?
Cuando quiero ir a un directorio arriba utilizoIr algunos directorios en Linux
cd ..
Pero cuando quiero ir 7 directorios arriba ¿Hay alguna manera de hacer esto que no sea simplemente escribiendo siete (7) veces cd ..
?
cd ../../../../../../../
También otra punta de navegación útil es si, por ejemplo, digamos que usted guarda el cambio de un directorio (llamarlo A) a otro (llámalo B) eso es 7 directorios arriba, en tu caso.
Así que si estás en el directorio A:.
A> cd ../../../../../../../
B> // Now you're in directory B and want to go back to A
B> cd -
que moverá a la derecha de nuevo a la Guía A. -
expande al directorio anterior estaba en
El comando 'cd -' es interesante. ¿Hay alguna ventana equivalente para la misma? – RBT
Aunque esta es la respuesta "aceptada", veo que la respuesta de @dav a continuación es la solución más robusta. Una larga lista de "../" es onerosa y propensa a error. Si su perfil permite un script de alias, es más escalable. La versión de alias bash también conserva el soporte para "cd -". – ZaydH
Usted puede hacerlo de esta manera cd ../../../../../../../
Hay una cool article acerca de algunos trucos que se pueden aplicar para mejorar que la navegación.
Hm, no lo creo.
Pero se puede escribir cd ../../../..
(y así sucesivamente) en lugar de 7 veces cd ..
for i in {1..7}; do cd ..; done
puede utilizar pushd .
para recordar un directorio y popd
para volver a él.
Si hay un comando que uso mucho, simplemente crearé un alias.
podría escribir
alias ..='cd ..'
alias ...='cd ../..'
a continuación, puedes utilizar ..
a subir un nivel y ...
ir hasta dos niveles.
Aquí está una ligera mejoría que he encontrado:
Por lo general, cuando vuelva a un directorio con cd .., usted termina yendo hacia adelante un directorio después. Para que esto funcione, usted tiene que utilizar funciones en lugar de los alias, así que en vez de:
alias ..=”cd ../”
alias ..2=”cd ../../”
puede utilizar:
..()
{
cd ../[email protected]
}
..2()
{
cd ../../[email protected]
}
Sin embargo, después de usar esto, rápidamente se hace evidente que le falta completar el comando para esta función, por lo que es mucho menos útil de lo que podría ser. Por lo tanto, volví y agregué mis propias funciones de finalización de bash para esta función, que pueden pegarse en su ~/.bashrc o cualquier archivo (por ejemplo ~/.bash_completion) que se llama desde su ~/.bashrc si desea evitar desorden. Aquí está el código de finalización:
_..()
{
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
Hacer alias (in you ~ /.bashrc)
function cd_up() {
cd $(printf "%0.0s../" $(seq 1 $1));
}
alias 'cd..'='cd_up'
y uso:
$ cd.. 7
UPD: O hacer la variante más potente, cd dir nombre en camino actual:
# 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..'
uso:
$ cd /home/user/documents/projects/reports/2014-10-01
$ cd.. proj
$ pwd
> /home/user/documents/projects
Puede probar esta solución. Está bien el trabajo para mí:
#!/bin/bash
#this sctipt should take one parameter - number of steps. And do "cd" command step times.
# example usage: cd `cde 3`
NEW_PATH=$(pwd)
step="../"
upper=""
for i in seq $1
do
upper="$upper$step"
done
echo $upper
he hecho alias en el archivo ~/.barsh. Y esto funciona bien para mí.
Ejemplo, hasta tres carpetas.
$ cd `cde 3`
podría añadir la siguiente función a su .bashrc
:
# ~/.bashrc
up() {
for D in $(seq 1 $1);
do
cd ..
done
}
lo tanto, el uso sería simplemente:
user ~ $ up 3
user/$
No recuerdo desde donde copié esta función, pero funciona muy bien para mí (se puede poner en el archivo .bashrc
por ejemplo)
up() { local p= i=${1:-1}; while ((i--)); do p+=../; done; cd "$p$2" && pwd; }
p. Ej. Para ir a 7 directorios, es necesario escribir up 7
Esta ingeniosa función permite subir en ambas direcciones.
Si se encuentra en /a/b/c/d luego 'a 1' que se llevará a /a/b/c, y así sucesivamente. Eso es bastante estándar y está cubierto en la mayoría de las otras respuestas.
Ahora, para la parte especial; usar números negativos te lleva desde la otra dirección. Por lo tanto, si está en /a/b/c/d, 'arriba -1' lo llevará a /a, y así sucesivamente.
function up() {
UP=$1
if [[ $UP =~ ^[\-0-9]+$ ]]; then
if ((UP<0)); then
UP=${UP#-}
cd $(echo $PWD | cut -d/ -f1-$((UP+1)))
else
cd $(printf "%0.s../" $(seq 1 ${UP}));
fi
fi
}
disponible para descargar/instalar en github.
para los usuarios de pescado,
function cdd
for x in (seq $argv)
cd ..
end
end
y guardarlo en su: ~/.config/pescado/funciones/cdd.fish
y justo $ cdd 3
Para subir 3 directorios.
Modifiqué la función para que solo llame a cd una vez. Esto conserva la capacidad de 'cd -' para saltar al directorio anterior. –
En una nota lateral, para subir un nivel tanto 'cd..' como' cd ..' son equivalentes en windows pero linux es demasiado estricto y rechaza el comando 'cd..' como comando inválido solo por falta de espacio . – RBT