commands - mkdir linux
Ve algunos directorios arriba en linux (13)
Aquí hay una ligera mejora que he encontrado:
Usualmente, cuando regresas a un directorio con cd .., terminas yendo hacia adelante un directorio después. Para que esto funcione, debe usar funciones en lugar de alias, en lugar de:
alias ..=”cd ../”
alias ..2=”cd ../../”
puedes usar:
..()
{
cd ../$@
}
..2()
{
cd ../../$@
}
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
Cuando quiero subir un directorio, uso
cd ..
Pero cuando quiero ir a 7 directorios, ¿hay alguna forma de hacer esto que no sea simplemente escribir siete (7) veces cd ..
?
Hacer alias (en ti ~ / .bashrc)
function cd_up() {
cd $(printf "%0.0s../" $(seq 1 $1));
}
alias ''cd..''=''cd_up''
y use:
$ cd.. 7
UPD: O haga una variante más potente, cd al nombre de directorio en la ruta 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..''
utilizar:
$ cd /home/user/documents/projects/reports/2014-10-01
$ cd.. doc
$ pwd
> /home/user/documents
Hm, no lo creo.
Pero puede escribir cd ../../../..
(y así sucesivamente) en lugar de 7 veces cd ..
No recuerdo de dónde copié esta función, pero funciona muy bien para mí (puede poner el archivo .bashrc
, por ejemplo)
up() { local p= i=${1:-1}; while (( i-- )); do p+=../; done; cd "$p$2" && pwd; }
por ejemplo, para subir 7 directorios, es necesario escribir up 7
Puede agregar la siguiente función a su .bashrc
:
# ~/.bashrc
up() {
for D in $(seq 1 $1);
do
cd ..
done
}
Entonces el uso sería simplemente:
user ~ $ up 3
user / $
Puede hacerlo así cd ../../../../../../../
Hay un buen artículo sobre algunos hacks que puedes aplicar para mejorar tu navegación.
Puedes probar esta solución. Funciona bien 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 un alias en el archivo ~ / .barsh. Y esto funciona bien para mí.
Ejemplo, hasta tres carpetas.
$ cd `cde 3`
Si hay un comando que uso mucho, haré un alias.
Puedes escribir
alias ..=''cd ..''
alias ...=''cd ../..''
Entonces puedes usar ..
para subir un nivel y ...
subir dos niveles.
para los usuarios de pescado,
function cdd
for x in (seq $argv)
cd ..
end
end
y guárdalo en tu: ~ / .config / fish / functions / cdd.fish
y solo $ cdd 3
Para subir 3 directorios.
puedes usar pushd .
para recordar un directorio y popd
para volver a él.
Esta ingeniosa función permite subir en ambas direcciones.
Si está en / a / b / c / d , ''arriba 1'' lo 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 .
cd ../../../../../../../
Otra sugerencia de navegación útil es, por ejemplo, si continúa cambiando de un directorio (llámelo A) a otro (llámalo B), es decir, 7 directorios hacia arriba, en su caso.
Entonces, 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 -
Eso se moverá de vuelta al directorio A. -
expande al directorio anterior en el que se encontraba.
for i in {1..7}; do cd ..; done