Atajo para cambiar a un directorio dado

12

En el terminal de Ubuntu, paso mucho tiempo para cambiar a un directorio en particular cada vez que se inicia la computadora. ¿Hay alguna forma de facilitar este proceso? ¿Hay alguna tecla de acceso rápido o algún cambio rápido de directorio que pueda usar (como la marcación rápida en un teléfono)?

 eg:
    cd 1:Changes to saved directory one
Desarrollador Android
fuente
Cuatro años desde que se hizo esta pregunta y nadie mencionó CDPATH hasta hoy. :(
kojiro
Supongo que esto puede depender de su consola, pero en la terminal de Kubuntu hay un menú de Marcadores donde puedo marcar un directorio y saltar de esa manera.
Pixel

Respuestas:

12

Hay dos opciones:

  1. Si desea estar en un directorio específico cada vez que abra un terminal bash, edite su ~/.bashrcarchivo y simplemente agregue la línea cd Directory, por ejemplo cd ~/Desktop.

  2. Si desea tener varios accesos directos, siempre puede usar variables globales, que puede establecer en su ~/.bashrcarchivo de la siguiente manera export a=/tmpy luego podrá hacer lo cd $aque lo lleve /tmp.

Recuerde que después de editar su .bashrcarchivo, debe reiniciar el terminal o abrir uno nuevo.

Dan
fuente
3
Para evitar reiniciar el terminal puede utilizar source ~/.bashrco, más corto, . ~/.bashrc.
Gerhard Burger
18

También eche un vistazo autojump, crea una base de datos con directorios visitados anteriormente y luego puede saltar a ella. Entonces, por ejemplo, tienes

/home/user/this/long/and/annoyingly/deep/directory/workstuff

entonces, si lo has visitado una vez, puedes saltar a él

j workstuff

o incluso

j stuff

porque también funciona con coincidencias parciales. Si más de un directorio coincide, salta al más visitado, si este no es el que desea, repita el comando para ir al segundo.

Sin embargo, se pone mejor! Si también tienes el directorio

/home/user/stuff

y lo hace

j stuff 

y luego TabTabTabobtienes (en el orden de los más visitados)

$ j stuff__
stuff__1__/home/user/this/long/and/annoyingly/deep/directory/workstuff
stuff__2__/home/user/stuff

¡y luego puede presionar el número del directorio que desea!

Para instalar, solo puede usar sudo apt-get install autojumpy luego debe agregar

source /usr/share/autojump/autojump.bash

a tu ~/.bashrc.

Más información aquí: https://github.com/wting/autojump (también instrucciones sobre cómo instalar esto desde src que te ofrece la versión más reciente)

Gerhard Burger
fuente
1
crtl + r en una terminal también busca "coincidencias parciales" en comandos anteriores. Muy útil también.
Dan
6

Los alias Bash son útiles para crear atajos para ejecutar comandos comúnmente.

  • En ~/.bashrc, agregue una línea similar a la siguiente para crear el alias:

    alias jump1='cd /long/path/name/that/is/frequently/used'
    
  • Cierre y abra la terminal nuevamente, o ejecute source ~/.bashrc.

  • De ahora en adelante, puedes correr jump1para ejecutar ese cdcomando largo .

Ver también:

Flimm
fuente
4

A pesar de que ya hay algunas buenas respuestas, pensé que mencionaría para completar los viejos pushdy popdBash incorporados con le permiten moverse muy rápidamente entre directorios en rutas profundas en su sistema de archivos. A diferencia de los autojumpmarcadores mencionados por burger.ga , la pila de directorios creada mediante el uso pushdes solo temporal.

Como señala el manual de GNU , pushdy los popdcomponentes internos de Bash se utilizan para construir una pila de directorios temporal que es un

lista de directorios visitados recientemente. Pushd Builtin agrega directorios a la pila a medida que cambia el directorio actual, y Popd Builtin elimina los directorios especificados de la pila y cambia el directorio actual al directorio eliminado. El directorio incorporado muestra el contenido de la pila de directorios.

Se necesita un poco de tiempo para acostumbrarse, pero hay muchos tutoriales útiles en este blog y en este sitio, por ejemplo. No hay páginas de manual separadas para los comandos, ya que están incluidas en la página de manual de Bash, pero para una referencia rápida puede ver la página de GNU Bash .

La explicación más clara está en este artículo muy útil y es exactamente la forma en que uso pushdy popd:

En primer lugar, use dirso dirs -lpara enumerar directorios en la pila y dirs -cborrar la pila.

En cierto sentido, marca la ubicación a la que desea regresar ingresando

pushd /home/mike/Pictures/Canon/2012_07_01

y luego puede agregar más directorios a la pila, para obtener una lista de directorios como se muestra a continuación, que incluye 3 carpetas designadas y su ~carpeta de inicio:

dirs
~/Downloads/folder/interest ~/Music/artist/album ~ ~/Pictures/Canon/2012_07_01

En realidad, no necesita usar de popdinmediato ya que eso elimina los directorios de la pila; lo mejor que puede hacer es usarlo pushdpara rotar la pila, de modo que pueda seguir cambiando entre los directorios y ordenarlos como desee. Para obtener más información sobre esa útil rotación de la pila, consulte la página de manual de Bash .

Si tiene exactamente la disposición de la pila como se dirsmuestra en la lista anterior , lo pushd +3cambia a la carpeta de imágenes específica y la coloca en la parte superior de la pila (es +3 y no +4, ya que no cuenta ~en la pila del directorio):

pushd +3
~/Pictures/Canon/2012_07_01 ~/Downloads/folder/interest ~/Music/artist/album ~

Entonces el mensaje dice:

~/Pictures/Canon/2012_07_01$

Puede seguir haciendo esto sin eliminarlos de la pila, aunque cualquier carpeta que usted cd, aparte de las agregadas a la pila de directorios pushd, alterará su pila de directorios.

Una vez que tenga la pila de directorios organizada en el orden que desee, puede usar popdpara recorrer rápidamente los directorios y luego regresar a la carpeta de inicio; por ejemplo, desde Picturespodemos volver a Downloads:

popd
~/Downloads/folder/interest ~/Music/artist/album ~

y el mensaje dice

~/Downloads/folder/interest$

En general, lo bueno de esto es que puede configurar la pila de directorios y el orden de los elementos dentro de ellos pushdy luego, digamos que tiene tres archivos para editar en cada uno de esos directorios, puede regresar instantáneamente a cada uno popdmientras los elimina. de la pila del directorio Luego, con tu última popd, volverás a ~. Se vuelve particularmente útil cuando tiene directorios particularmente profundos y puede usarlo para configurar la pila de directorios para moverse rápidamente entre ellos.

Además, esta pregunta contiene algunos consejos que pueden resultarle útiles al trabajar en la línea de comandos:

Comunidad
fuente
2

Aunque existe alguna forma de línea de comandos para hacerlo más rápido, personalmente recomendaría usar una extensión Nautilus llamada nautilus-open-terminal.

Primero instale el paquete nautilus-open-terminaly marque sus carpetas favoritas con Nautilus. En Nautilus 3.6. *, Tendrá que ir al menú de ajustes y seleccionar Marcar esta ubicación .

ingrese la descripción de la imagen aquí

Luego use los marcadores de Nautilus para ir más rápido en sus directorios favoritos, y simplemente haga clic derecho en un espacio vacío y seleccione Abrir en Terminal .

ingrese la descripción de la imagen aquí

Ahora puede tener acceso rápido a la línea de comandos y al administrador de archivos a sus directorios favoritos.

remjg
fuente
El póster original intenta trabajar desde la terminal y, a menudo, es más rápido desde la terminal.
haziz
1
@haziz: Sí, pero las preguntas y respuestas de AskUbuntu deberían ser útiles no solo para el OP, sino especialmente para todas las personas que encontraron esto en la web. Esta es una respuesta valiosa para mí.
Javier Rivera
2

ANC fue diseñado exactamente para ese caso de uso.

https://github.com/tobimensch/anc

Aquí hay un extracto de README.md:

# make the current directory the default anchor:
$ anc s

# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc

# go back to /usr/local :
$ anc b

# add another anchor:
$ anc a $HOME/test

# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test

# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1

# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first

# use text matching to jump to $HOME/projects/first
$ anc pro fir

# use text matching to jump to $HOME/documents/first
$ anc doc fir

# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1

# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1

# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*

# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]

Divulgación completa: soy el autor de anc.

Tobi
fuente
1

Puede colocar un alias en su archivo .bashrc (o el archivo de configuración de su shell favorito, generalmente están en su directorio de inicio):

alias cd1="cd directory/directory/my_destination/"

Aquí encontrará un enlace de información útil sobre el uso de alias en bash .

Haziz
fuente
1

Creé un conjunto de funciones bash para esto y lo agregué a mi .bash_profile

Guión

goto(){
    cd $(getFolders $1)
}

gf(){
    getFolders $1
}

getFolders (){

    local folderList=(
     'alias'
     'Description of alias'
     '/path/to/alias/folder'
     'alias2'
     'Description of alias2'
     '/path/to/alias2/folder'
    )
    local moved="0"
    local count=0

    # Returns the path to the project
    while [ "${folderList[count]}" != "" ]
    do
        if [ "$1" == "${folderList[count]}" ]; then
            echo ${folderList[$(( $count + 2 ))]}
            moved="1"
        fi
        count=$(( $count + 3 ))
    done

    # Returns all project names
    if [ "$moved" != "1" ]; then
        count=0
        while [ "${folderList[count]}" != "" ]
        do
            echoc 6 ${folderList[count]}
            echo - ${folderList[count+1]}
            count=$(( $count + 3 ))
        done
    fi
}

Uso

getFolders

Usando getFolders tiene una lista de taquigrafía, descripción y ubicación para cada carpeta. Cuando utiliza getFolders con una taquigrafía, generará la ubicación de la carpeta. Puede obtener una lista de carpetas disponibles y sus descripciones simplemente llamando a getFolders sin un parámetro

Ejemplo de obtener la ruta de la carpeta

getFolders alias

salidas

/path/to/alias/folder

Ejemplo de obtener carpetas disponibles.

getFolders

salidas

alias
- Description of alias
alias2
- Description of alias2

gf

gf es un atajo para getFolders

gf alias2

salidas

/path/to/alias2/folder

ir

goto es una manera simple de cd a la carpeta seleccionada.

goto alias

salida

cd se ha ejecutado en / ruta / a / alias / carpeta

/ ruta / a / alias / carpeta>

¿Por qué tener múltiples funciones?

En el fondo, Unix y Linux tienen funciones simples reutilizables que se pueden encadenar. Prefiero este método, ya que no solo te mueve a una ubicación seleccionada, sino que es una función que por alias devuelve una ruta. Puede usar esta función para hacer cualquier cosa desde ese punto, como cd a esa ruta.

Michael Warner
fuente
0

Considere configurar la CDPATHvariable de entorno en su .bashrc o .bash_profile. CDPATH toma la misma forma delimitada por dos puntos que otras PATHvariables similares, y permite cdtomar atajos para encontrar sus directorios. Por ejemplo:

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz
kojiro
fuente
0

puede configurar su propio acceso directo a un directorio específico. Por ejemplo, desea ir al directorio anidado, generalmente lo hace

cd / home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target

usualmente usa el comando cd y luego escribe todos los nombres de directorio o puede omitir escribir (usando el botón TAB) pero aún le toma unos minutos.

Por lo tanto, para ahorrar tiempo , puede hacer un alias en el terminal. Es una tarea única para configurar un alias.

alias dir-target = '/ home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target'

Ahora, solo tiene que usar el nombre de alias ( dir-target ) para moverse a su directorio de destino.

sanjay mundhra
fuente
0

La forma más rápida que encontré es xdun programa de "eXchange Directorios" escrito por un holandés llamado Frank B. Brokken.

Funciona al encontrar todas las rutas en su sistema de archivos que pueden resolver una abreviatura que escribió, por ejemplo, ulbpodría significar /usr/local/binsi dicha carpeta existe en su sistema:

% cx ulb
Multiple Solutions:
 1: /usr/lib/binfmt.d/
 2: /usr/local/bin/

Al presionar 2 estás dentro /usr/local/bin.

Es un software realmente antiguo y ya no está disponible en la ubicación original, no hay contacto con el autor, por lo que para evitar que se pierda, lo puse en el repositorio de Github:

https://github.com/mrkafk/exchange_directories

LetMeSOThat4U
fuente
-1

Yo uso DirB (Marcadores de directorio) para hacer esto. ¡Muy agradable! http://www.linuxjournal.com/article/10585

Sin embargo, he modificado el mío para adaptarlo a mi gusto y ser más fácil de usar y más claro.

fstephens
fuente
Bienvenido a Ask Ubuntu! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
fossfreedom