¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Navegación eficiente de la CLI
La CLI (Interfaz de línea de comandos) es un entorno muy potente, flexible y programable. Si utiliza la interfaz de línea de comandos de forma regular, sabrá lo importante que es personalizar su entorno de trabajo y desarrollar accesos directos para garantizar un flujo de trabajo eficiente. A continuación hay algunos consejos sobre cómo navegar a través de directorios de una manera rápida y fácil.
Volver al Home
El comando cd
cambia el directorio de trabajo actual a su / home
:
$ pwd /home/user/data/documents/work $ cd $ pwd /home/user
Regresar al directorio anterior
Para volver al directorio anterior, puede usar cd -
:
$ pwd /home/user/.i3/config $ cd ~/data/projects/dotfiles/i3 $ pwd /home/user/data/projects/dotfiles/i3 $ cd - /home/user/.i3/config $ pwd /home/user/.i3/config
Use el último argumento del comando anterior
La variable $_
devuelve el último argumento del comando anterior. Esto puede ser útil en una variedad de escenarios:
$ pwd /home/user/downloads/ $ cp i3status.tar.gz ~/data/builds/i3/i3status $ cd $_ $ pwd /home/user/data/builds/i3/i3status
$ chmod +x /path/to/my/script/script.sh $ $_ (This will execute script.sh)
Lo mismo se puede lograr utilizando la combinación Alt + . o Esc + ..
Bash Completion
Bash offers TAB completion, a very useful feature that reduces the number of keystrokes you are required to type to navigate to a directory.
Autocompletado en Bash
Bash ofrece autocompletar al presionar TAB, una característica muy útil que reduce la cantidad de pulsaciones de teclas que debe escribir para navegar a un directorio.
$ cd d[TAB]
Expandirá la ruta con un directorio que comienza con d
. Tenga en cuenta que Linux distingue entre mayúsculas y minúsculas, por lo que se ignorará ~ / Desktop
o ~ / Downloads
. Si hay más de 1 directorio que comienza con d
, debe presionar la tecla TAB dos veces para obtener las finalizaciones posibles que se enumeran a continuación:
$ cd d[TAB][TAB] data/ downloads/
Ahora presione o y TAB para expandir la ruta a descargas
.
Puede reducir en gran medida el número de pulsaciones de teclas al acceder a los directorios. Por ejemplo:
$ cd data/projects/python-dir/euler/completed/
Las pulsaciones de teclas que utilicé:
cd da[TAB]p[TAB]p[TAB]e[TAB]c[TAB]
Si cada directorio contuviera solo un subdirectorio, podría haber hecho lo siguiente:
cd [TAB][TAB][TAB][TAB][TAB]
El autocpmpletado de bash no solo reduce la cantidad de pulsaciones de teclas, sino que también resulta útil si no recuerda los nombres de directorio.
Tenga en cuenta que el autocpmpletado de bash también funciona en archivos:
$ cp data/projects/scripts/sync-script.sh .
Pulsaciones de teclas utilizadas:
$ cp d[TAB]p[TAB]s[TAB]s[TAB] .
El punto (.) representa el directorio actual, por lo que el comando copiará sync-script.sh
al directorio actual.
Autocompletado de Bash Programmable
Para aprovechar todas las funciones de autocompletado de Bash, debe instalar un paquete adicional desde / extra
:
# slackpkg install bash-completion
CDPATH
Si trabaja en ciertos directorios de manera regular, es posible que desee incluirlos en la variable $ CDPATH. Suponga que a menudo trabaja en el directorio slackbuilds
que contiene algunas compilaciones:
$ cd ~/data/projects/slackbuilds/ $ ls i3 i3status yajl dmenu libev
Add it to the $CDPATH
variable by modifying ~/.bashrc
:
CDPATH=$CDPATH:~/data/projects/slackbuilds/
Tenga en cuenta que la ruta incluida en la variable CDPATH es la ruta al directorio padre donde se encuentran dichos directorios.
Después de obtener .bashrc
( source ~ / .bashrc
), puede cd
a cualquiera de esos directorios desde cualquier lugar:
$ pwd /home/user/.config/xfce4 $ cd yajl /home/user/data/projects/slackbuilds/yajl
Si desea habilitar el autocompletado de TAB dentro de los directorios agregados a través de la variable CDPATH, debe instalar bash-complete
desde el directorio / extra
de Slackware.
usr
, etc
, que puede dar lugar a un comportamiento impredecible.
Enlaces simbólicos
En algunas situaciones, puede considerar usar enlaces simbólicos para crear accesos directos a directorios visitados regularmente:
$ ln -s /home/user/data/projects/scripts/slackbuilds ./slackbuilds
Bash Aliases
You can make your life easier by creating aliases (= shortcuts) for commands that you use often. The syntax is very simple:
name_of_the_alias='value'
You can place your aliases in ~/.bashrc
. You might need to create this file. Each time you edit this file you need to source
it afterwards for the changes to take effect:
source ~/.bashrc
or
. ~/.bashrc
When it comes to navigation, one could, for example, create a few aliases to speed up navigating up the directory tree:
alias 1.='cd .. ; pwd' alias 2.='cd ../.. ; pwd' alias 3.='cd ../../.. ; pwd' alias 4.='cd ../../../.. ; pwd'
The value of an alias can be quite complex. As you can see, 4.
will first change directories cd ../../../..
and then print the current working directory - pwd
. Please note a semi-colon (;
) separating the commands.
$ cd data/projects/python-dir/euler/ $ 4. /home/user $ cd - /home/user/data/projects/python-dir/euler $ 3. /home/user/data
Aliases can be used in a number of different ways. A few more examples:
alias epyt='emacs -nw /home/user/data/projects/python-dir/euler/32-problem.py' alias slacktop='ssh user@slacktop'
Directory Stack
BASH features some helpful directory stack buildins that help you navigate recently visited directories.
pushd
- push a directory into the directory stack andcd
to it.popd
- remove a directory from the directory stack andcd
to it.dirs
- display the list of the directories in the stack.
How does it work in practice?
First of all, add a directory to the stack. Please note that it also automatically switches to the directory (the -n
flag suppresses this behaviour).
user@darkstar:~$ pushd data/projects/programming/ ~/data/projects/programming ~ user@darkstar:~/data/projects/programming$
Alternatively, you can cd
to a given directory and issue:
pushd .
After adding a few directories you can display the content of the stack:
user@darkstar:~$ dirs -v 0 ~/projects/web-develop/project-eden/includes 1 ~/projects/web-develop/project-eden/includes 2 ~/projects/web-develop/project-eden/pages/en 3 ~/projects/web-develop/project-eden/css 4 ~/projects/designs 5 ~/projects/notes 6 ~/public_html/project_eden
Please note that the first entry always displays the current working directory so if it also sits at the top of the stack, you'll see what seems like duplicate lines. The -v
flag is responsible for a nicely indexed output.
To switch to one of the directories in the stack you could issue:
user@darkstar:~$ cd $(dirs +2 -l) user@darkstar:~/projects/web-develop/project-eden/pages/en$
Admittedly, this is not the most concise way of changing directories. To make it shorter we can add an alias and a function to the ~/.bashrc
file.
alias dv='dirs -v'
List the current stack by simply typing dv
.
cdd() { position=$1 if [ -z $position ]; then echo "You need to specify the position of the directory in the stack" else cd $(dirs +$1 -l) fi }
The cdd
function1) makes it possible to cd
to a given directory from the stack by typing:
cdd 3