1 votos

Cómo editar el mayor directorio padre de una ruta durante la navegación

Pregunta de Noob: digamos que estoy en:

user@mj:~/var/www/html/mag/something/else/forever$ 

Y yo quiero ser parte de:

user@mj:/var/www/html/mag/something/else/forever$ 

La mente de la ~

Puedo lograr que con:

user@mj:~/var/www/html/mag/something/else/forever$ cd /var/www/html/mag/something/else/forever

A veces el camino es largo, por lo tanto, hay una manera para truncar la cabeza del directorio de la ruta de acceso? Como si de un paso lateral que saltar?

Actualización: Con el fin de no escribir la ruta completa de nuevo.

4voto

Zanna Puntos 502

Hmm... puede cambiar ~ a / como esta...

echo $(pwd | sed "s#^$HOME##")

(Reemplace echo con cd de moverse)

Usted podría alias si es algo que a menudo están haciendo, debido a que tiene muchos caminos similares en el hogar y la root

alias cdroot='cd $(pwd | sed "s#^$HOME##")'

Añadir al final del su ~/.bashrc para usar en cualquier momento...

O hacer una simple función bash (añadir a ~/.bashrc) para comprobar si estamos en ~ y cambiar desde la root hasta la casa y de regreso:

function cdroot() {
[[ $PWD =~ $HOME* ]] && cd $(pwd | sed "s#^$HOME##") ||
cd $(pwd | sed "s#^#$HOME#")
}

el uso de la demostración:

zanna@toaster:~/var/log/apt$ cdroot
zanna@toaster:/var/log/apt$ cdroot
zanna@toaster:~/var/log/apt$ 

2voto

Serg Puntos 17677

Como alternativa a lo que Zanna propuesto, se puede lograr el mismo comportamiento con cd "${PWD##*$HOME}" , recorte la ~ parte.

He aquí una demostración:

$ mkdir -p var/lib
$ pwd
/home/xieerqi
$ cd var/lib
$ pwd
/home/xieerqi/var/lib
$ echo  ${PWD##*$HOME}                                             
/var/lib
$ cd  "${PWD##*$HOME}"                                             
$ pwd
/var/lib

Este enfoque puede ser combinado con otro parámetro de sustituciones para comprobar si la variable es null, es decir, estábamos en ~ carpeta y se retira ~ de la trayectoria deseada, por lo tanto la variable es null, y por lo tanto la función debe saltar /:

$ function trimcd(){ var="${PWD##*$HOME}" ; var=${var:-/} ; cd "$var";}        
$ pwd
/home/xieerqi
$ trimcd
$ pwd
/

Con una adición que podemos hacer incluso alternar entre la root y el directorio home:

$ function trimcd(){ var="${PWD##*$HOME}" ;[ "$var" = "/" ] && var="$HOME";var=${var:-/} ; cd "$var";}                                               
$ pwd  
/
$ trimcd
$ pwd
/home/xieerqi
$ trimcd
$ pwd
/
$ cd ~/var/lib
$ trimcd
$ pwd
/var/lib

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: