Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previaÚltima revisiónAmbos lados, revisión siguiente |
es:howtos:software:efficient_cli_navigation [2019/08/28 14:15 (UTC)] – [Bash Completion] slackwarespanol | es:howtos:software:efficient_cli_navigation [2019/08/28 18:12 (UTC)] – [Sources] slackwarespanol |
---|
<code>cd da[TAB]p[TAB]p[TAB]e[TAB]c[TAB]</code> | <code>cd da[TAB]p[TAB]p[TAB]e[TAB]c[TAB]</code> |
| |
If each directory contained only one subdirectory, I could have done the following: | Si cada directorio contuviera solo un subdirectorio, podría haber hecho lo siguiente: |
| |
<code>cd [TAB][TAB][TAB][TAB][TAB]</code> | <code>cd [TAB][TAB][TAB][TAB][TAB]</code> |
| |
Not only does the bash completion reduce the number of key strokes, but it also comes handy if you do not remember directory names. | 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. |
| |
Please note that bash completion works also on files: | Tenga en cuenta que el autocpmpletado de bash también funciona en archivos: |
| |
<code>$ cp data/projects/scripts/sync-script.sh .</code> | <code>$ cp data/projects/scripts/sync-script.sh .</code> |
| |
Keystrokes used: | Pulsaciones de teclas utilizadas: |
| |
<code>$ cp d[TAB]p[TAB]s[TAB]s[TAB] .</code> | <code>$ cp d[TAB]p[TAB]s[TAB]s[TAB] .</code> |
| |
The dot (.) represents the current directory so the command will copy ''sync-script.sh'' to the current directory. | El punto (.) representa el directorio actual, por lo que el comando copiará '' sync-script.sh '' al directorio actual. |
| |
===== Programmable Bash Completion ===== | ===== Autocompletado de Bash Programmable ===== |
| |
To take advantage of all Bash completion features, you need to install an additional package from ''/extra'': | Para aprovechar todas las funciones de autocompletado de Bash, debe instalar un paquete adicional desde '' / extra '': |
| |
<code># slackpkg install bash-completion</code> | <code># slackpkg install bash-completion</code> |
===== CDPATH ===== | ===== CDPATH ===== |
| |
If you work in certain directories on a regular basis, you might want to include them in the $CDPATH variable. Suppose you often work in the ''slackbuilds'' directory which contains some builds: | 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: |
| |
<code>$ cd ~/data/projects/slackbuilds/ | <code>$ cd ~/data/projects/slackbuilds/ |
<code>CDPATH=$CDPATH:~/data/projects/slackbuilds/</code> | <code>CDPATH=$CDPATH:~/data/projects/slackbuilds/</code> |
| |
Please note the path included in the CDPATH variable is the path to the **parent directory** where the said directories are located. | Tenga en cuenta que la ruta incluida en la variable CDPATH es la ruta al ** directorio padre ** donde se encuentran dichos directorios. |
| |
After you have sourced ''.bashrc'' (''source ~/.bashrc''), you can ''cd'' to any of those directories from any place: | Después de obtener '' .bashrc '' ('' source ~ / .bashrc ''), puede '' cd '' a cualquiera de esos directorios desde cualquier lugar: |
| |
<code>$ pwd | <code>$ pwd |
/home/user/data/projects/slackbuilds/yajl</code> | /home/user/data/projects/slackbuilds/yajl</code> |
| |
If you would like to enable Tab completion within the directories added through the CDPATH variable, you need to install ''bash-completion'' from Slackware's ''/extra'' directory. | |
| |
<note important>It is NOT recommended to give your directories names similar to the system ones, eg. ''usr'', ''etc'', which can result in unpredictable behaviour.</note> | 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. |
| |
===== Symlinks ===== | <note important>NO se recomienda dar a sus directorios nombres similares a los del sistema, por ejemplo. '' usr '', '' etc '', que puede dar lugar a un comportamiento impredecible.</note> |
| |
In some situations you may consider using [[slackbook:shell?s[]=symlinks#linking|symlinks]] to create //shortcuts// to regularly visited directories: | ===== Enlaces simbólicos ===== |
| |
| En algunas situaciones, puede considerar usar [[slackbook: shell? S [] = enlaces simbólicos # vinculación | enlaces simbólicos]] para crear // accesos directos // a directorios visitados regularmente: |
| |
<code>$ ln -s /home/user/data/projects/scripts/slackbuilds ./slackbuilds</code> | <code>$ ln -s /home/user/data/projects/scripts/slackbuilds ./slackbuilds</code> |
| |
| |
===== Bash Aliases ===== | ===== Alias Bash ===== |
| |
You can make your life easier by creating aliases (= shortcuts) for commands that you use often. The syntax is very simple: | Puede facilitarle la vida creando alias (= accesos directos) para los comandos que utiliza con frecuencia. La sintaxis es muy simple: |
| |
<code>name_of_the_alias='value'</code> | <code>name_of_the_alias='value'</code> |
| |
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: | Puede colocar sus alias en '' ~ /.bashrc ''. Es posible que deba crear este archivo. Cada vez que edite este archivo, debe '' recargar '' después para que los cambios surtan efecto: |
| |
<code>source ~/.bashrc</code> | <code>source ~/.bashrc</code> |
| |
or | o |
| |
<code>. ~/.bashrc</code> | <code>. ~/.bashrc</code> |
| |
When it comes to navigation, one could, for example, create a few aliases to speed up navigating up the directory tree: | Cuando se trata de navegación, uno podría, por ejemplo, crear algunos alias para acelerar la navegación en el árbol de directorios: |
| |
<code>alias 1.='cd .. ; pwd' | <code>alias 1.='cd .. ; pwd' |
alias 4.='cd ../../../.. ; pwd'</code> | alias 4.='cd ../../../.. ; pwd'</code> |
| |
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. | El valor de un alias puede ser bastante complejo. Como puede ver, '' 4. '' primero cambiará los directorios '' cd ../../../ .. '' y luego imprimirá el directorio de trabajo actual - '' pwd ''. Tenga en cuenta un punto y coma (''; '') que separa los comandos. |
| |
<code>$ cd data/projects/python-dir/euler/ | <code>$ cd data/projects/python-dir/euler/ |
/home/user/data</code> | /home/user/data</code> |
| |
Aliases can be used in a number of different ways. A few more examples: | Los alias se pueden usar de diferentes maneras. Algunos ejemplos más: |
| |
<code>alias epyt='emacs -nw /home/user/data/projects/python-dir/euler/32-problem.py' | <code>alias epyt='emacs -nw /home/user/data/projects/python-dir/euler/32-problem.py' |
alias slacktop='ssh user@slacktop'</code> | alias slacktop='ssh user@slacktop'</code> |
| |
===== Directory Stack ===== | ===== Stack (pila) de directorios en bash ===== |
| |
BASH features some helpful directory stack buildins that help you navigate recently visited directories. | BASH presenta algunos complementos útiles de la pila de directorios que lo ayudan a navegar por los directorios visitados recientemente. |
| |
* ''pushd'' - push a directory into the directory stack and ''cd'' to it. | |
* ''popd'' - remove a directory from the directory stack and ''cd'' to it. | |
* ''dirs'' - display the list of the directories in the stack. | |
| |
==== How does it work in practice? ==== | * ''pushd'': guarda el directorio actual al principio del stack de directorios. Si le pasamos como parámetro un directorio guardará el directorio actual y el especificado (este último primero). |
| * ''popd'': elimina el primer directorio del stack de directorios y hace un «cd» contra ese directorio. |
| * ''dirs'': muestra el listado de directorios almacenados en el stack. |
| |
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). | ==== ¿Cómo funciona en la práctica? ==== |
| |
| En primer lugar, agregue un directorio a la pila. Tenga en cuenta que también cambia automáticamente al directorio (el indicador '' -n '' suprime este comportamiento). |
| |
<code>user@darkstar:~$ pushd data/projects/programming/ | <code>user@darkstar:~$ pushd data/projects/programming/ |
user@darkstar:~/data/projects/programming$</code> | user@darkstar:~/data/projects/programming$</code> |
| |
Alternatively, you can ''cd'' to a given directory and issue: | Alternativamente, puede '' cd '' a un directorio dado y emitir: |
| |
<code>pushd .</code> | <code>pushd .</code> |
| |
After adding a few directories you can display the content of the stack: | Después de agregar algunos directorios, puede mostrar el contenido de la pila: |
| |
<code>user@darkstar:~$ dirs -v | <code>user@darkstar:~$ dirs -v |
6 ~/public_html/project_eden</code> | 6 ~/public_html/project_eden</code> |
| |
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. | Tenga en cuenta que la primera entrada siempre muestra el directorio de trabajo actual, por lo que si también se encuentra en la parte superior de la pila, verá lo que parecen líneas duplicadas. El indicador '' -v '' es responsable de una salida bien indexada. |
| |
To switch to one of the directories in the stack you could issue: | |
| |
| Para cambiar a uno de los directorios en la pila, puede emitir: |
<code>user@darkstar:~$ cd $(dirs +2 -l) | <code>user@darkstar:~$ cd $(dirs +2 -l) |
user@darkstar:~/projects/web-develop/project-eden/pages/en$</code> | user@darkstar:~/projects/web-develop/project-eden/pages/en$</code> |
| |
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. | Es cierto que esta no es la forma más concisa de cambiar directorios. Para acortarlo, podemos agregar un alias y una función al archivo '' ~ / .bashrc ''. |
| |
<code>alias dv='dirs -v'</code> | <code>alias dv='dirs -v'</code> |
| |
List the current stack by simply typing ''dv''. | Enumere la pila actual simplemente escribiendo '' dv ''. |
| |
<code>cdd() | <code>cdd() |
}</code> | }</code> |
| |
The ''cdd'' function((Based on [[http://linux.byexamples.com/archives/138/directory-stack/#comment-99015|this function]].)) makes it possible to ''cd'' to a given directory from the stack by typing: | La función '' cdd '' ((Basado en [[http://linux.byexamples.com/archives/138/directory-stack/#comment-99015| esta función]])) hace posible '' cd '' a un directorio dado de la pila escribiendo: |
| |
<code>cdd 3</code> | <code>cdd 3</code> |
| |
====== Sources ====== | ====== Fuentes ====== |
<!-- If you are copying information from another source, then specify that source --> | <!-- If you are copying information from another source, then specify that source --> |
* Original source: [[http://www.slackword.net/?p=494|Blog Post]] written by [[wiki:user:sycamorex |sycamorex]] | * Fuente original: [[http://www.slackword.net/?p=494|Blog Post]] escrito por [[wiki:user:sycamorex |sycamorex]] |
<!-- * Contributions by [[wiki:user:yyy | User Y]] --> | <!-- * Contributions by [[wiki:user:yyy | User Y]] --> |
| |