Cuando escribo cd ~foo
, me gustaría que bash me lleve a algún directorio foo
como acceso directo para escribir la ruta completa del directorio foo
. y me gustaría poder cp ~foo/bar.txt ~/bar.txt
copiar un archivo desde el /foo/
directorio al directorio de inicio ... Entonces, básicamente, quiero algo que funcione exactamente como ~/
funciona, pero donde especifique cuál debería ser el directorio. [Estoy seguro de que debería jfgi, pero no sé qué hacer]
29
Respuestas:
La forma en que solía hacer esto es crear un directorio que contenga enlaces simbólicos a los directorios que desea que hagan los accesos directos y agregar ese directorio a su CDPATH. CDPATH controla dónde
cd
buscará cuando cambie de directorio, por lo que si ese directorio de enlaces simbólicos está en su CDPATH, puede accedercd
a cualquiera de los directorios enlazados al instante:La desventaja, por supuesto, es que no funcionará si hay un directorio en su directorio actual llamado "b", que tiene prioridad sobre el CDPATH
Normalmente no me gustan las respuestas que dicen "primero necesitas cambiar los shells", pero esta característica exacta existe en ZSH , si estás dispuesto a usarla en su lugar; se llama directorios con nombre . Exporta una variable
foo
y, cuando se refiere a~foo
ella, se resuelve en el valor de$foo
. Esto es especialmente conveniente porque funciona en comandos además decd
:fuente
Puede escribir una función de contenedor para
cd
y llamarla "cd" (en última instancia, la función llamarábuiltin cd
, utilizando labuiltin
palabra clave). Puede usar un carácter de prefijo que Bash no expandirá en la línea de comando antes de que su función lo vea y es poco probable que aparezca como el carácter inicial en los nombres de su directorio, tal vez ":". Desea hacerlo más robusto, pero aquí hay un esquema simple:fuente
con golpe:
~foo
está reservado para el directorio de inicio del usuario foo. No recomendaría crear usuarios solo por esa conveniencia.Puede hacer su vida más fácil (o más difícil) al cambiar de directorio configurando la
CDPATH
variable de entorno (búsquela enbash(1)
).Aparte de eso, la única forma de pensar sería establecer variables de entorno para los directorios que desea abreviar.
fuente
Las variables Bash se pueden usar para crear un sistema de marcadores. Las variables funcionarán con cualquier comando y bash completará con pestañas el nombre de la variable. En las versiones más nuevas de bash, si se agrega un / al nombre de la variable, la ruta que contiene la variable también se puede completar con pestañas.
Por persistencia, las declaraciones de variables se pueden guardar en un archivo que se obtiene de .bashrc. Dado que este archivo es un script bash, puede contener declaraciones que hacen referencia a otras variables, como
aur="${HOME}/AUR"
, o que solo se ejecutan en ciertos hostsif [[ $HOSTNAME == foo ]]; then bar=baz; fi
, lo que es útil si reutiliza archivos de configuración en varios hosts y usuarios.La siguiente función bash (que se agregará a .bashrc o se obtendrá de ella) permite agregar y eliminar marcadores del archivo de marcadores. Es bastante nuevo y no se garantiza que esté libre de errores.
fuente
Una forma sería crear un alias para cd que reemplace
~c
a la ruta deseada. O simplemente use zsh;)fuente
Para cambiar directorios, puede usar wcd: Wherever Change Directory
Con eso, será como
wcd plugin_root
.fuente
cd
también ...Tengo la siguiente función que creará un alias sobre la marcha,
Cuando quiero marcar un directorio, simplemente escribo
s dirName
. Esto crea un alias comoalias dirName="cd /my/current/directory/;pwd"
. para que pueda volver a este directorio simplemente escribiendodirName
. Tengo una versión que también lo guarda en bash_aliases. Esto funciona en cualquier shell.fuente