~~NOTOC~~
= BASH
{{tag>linux pendiente wiki}}
== related
{{topic>linux +bash}}
== cheatsheet
* {{ :linux:bash:cli-cheat-sheet.pdf |}}
== shell
* ''/etc/shells''
* [[linux:bash:historyexpansion|]]
* [[linux:bash:shellvariables|]]
* [[linux:bash:ficherosinicio|]]
* [[linux:bash:update-alternatives]]
https://devhints.io/bash
https://wiki.bash-hackers.org/start
[[http://www.compciv.org/topics/bash/variables-and-substitution/]]
[[http://wiki.bash-hackers.org/syntax/pe?rev=1529675381]]
[[https://en.m.wikipedia.org/wiki/Glob_(programming)]]
[[https://gtfobins.github.io/]]
https://bash.cyberciti.biz/guide/Setting_shell_options
=== comandos CLI
* [[linux:bash:comandos]]
* [[linux:bash:procesos]]
[[https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html]]
== scripting
[[http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/Bash-Prog-Intro-COMO.html]]
https://www.baeldung.com/linux/bash-single-vs-double-brackets#:~:text=In%20this%20article%2C%20we%20discussed,we%20should%20prefer%20single%20brackets.
* [[linux:bash:estructurasdecontrol|]]
* [[linux:bash:arrays]]
* [[linux:bash:indirectreferences]]
* [[linux:bash:functions]]
* [[linux:bash:debug]]
* [[linux:bash:trap]]
* Errores de novato: [[http://wiki.bash-hackers.org/scripting/newbie_traps]]
* [[https://www.cyberciti.biz/programming/improve-your-bashsh-shell-script-with-shellcheck-lint-script-analysis-tool/]]
* herramienta chequeo scripts: ''shellcheck''
* Diferencia entre **[** y **%%[[%%** : [[https://www.baeldung.com/linux/bash-single-vs-double-brackets#:~:text=In%20this%20article%2C%20we%20discussed,we%20should%20prefer%20single%20brackets.]]
== shortcuts
^ shorcut ^ descripción ^
^ bash ^^
| CTRL + ALT + E | expande alias |
| CTRL + A | inicio de línea |
| CTRL + E | final de linea |
| CTRL + H | borra caracter izquierda |
| CTRL + D | borra caracter cursor |
| CTRL + U | borra del inicio al cursor |
| CTRL + K | borra del cursor al final de línea |
| CTRL + W | borra desde principio de palabra hasta cursor |
| CTRL + Y | recupera lo último borrado |
| CTRL + T | intercambia carácter del cursor con el carácter de la izquierda |
| + T | intercambia 2 palabras |
^ emacs ^^
| CTRL + p | sube una linea, linea anterior |
| CTRL + n | baja una linea, linea posterior |
| CTRL + r | búsqueda recursiva hacía atrás en histórico comandos (''~/.bash_history'') |
| CTRL + s | búsqueda recursiva hacía adelante en histórico comandos (''~/.bash_history'') |
| META + p | |
| META + n | |
| META + < | |
| META + > | |
| CTRL + l | limpia pantalla |
| CTRL + d | cierra sesión |
^ shorcut ^ descripción ^
^ navegación ^^
| CTRL + A | principio línea |
| CTRL + E | final de línea |
| CTRL + XX | conmuta entre la posición actual del cursor y el principio de línea ? |
| ALT + B | atrasa una palabra el cursor |
| ALT + F | adelanta una palabra el cursor |
^ edición ^^
| ALT + U | uppercase caracter cursor |
| ALT + L | lowercase caracter cursor |
| ALT + C | capitalize caracter cursor y va al final de palabra |
| ALT + D | borra palabra desde cursor hasta el final de la misma |
| ALT + Del | borra palabra desde cursor hasta el principio de la misma |
| ALT + T | intercambio palabra con la anterior |
| CTRL + _ | undo |
^ historia ^^
^ control del procesos ^^
| CTRL + C | interrumpe/mata |
| CTRL + L | limpia pantalla |
| CTRL + S | para salida por pantalla |
| CTRL + Q | permitir salida por pantalla |
| CTRL + D | marca EOF |
| CTRL + Z | interrumpe/mata |
/via: [[https://shortcutworld.com/Bash/linux/Bash_Shortcuts]]
== Variables de entorno
* ''HISTFILE'': Fichero donde se almacena el historial de comandos tecleados
* ''HISTFILESIZE'': número de comandos que se guarda en el historial
* ''HISTSIZE'': longitud máxima del fichero de historial
* ''HISTIGNORE'': que comandos no se guardan en el historial de comandos. Lista de patrones separados por coma
* ''HISTTIMEFORMAT'': ''HISTTIMEFORMAT='%F %T'''-> añade TIMESTAMP delante del comando
* ''PS1'': prompt shell
* [[linux:bash:ps1]]
* ''EDITOR'': establece editor por defecto (para **less** o **crontab -e**, por ejemplo)
* ''CDPATH'': establece directorios donde se hará búsqueda de directorios (que no sea el local)
export CDPATH=/var/www:/nas10
cd html (en lugar de) cd /var/www/html
== comandos abreviados y parámetros
* -> completa nombre ficbero
* 2x -> muestra opciones de completado (para comandos, para archivos)
* (comando) -> abre nuevo bash y retorna.
* ''(cd /tmp && ls)'' -> ejecuta el CD y el LS, pero al abrir sesión nueva, de deja donde estabas.
* averiguar si comando es interno/externo o alias: ''type -a ''$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
$ type -a cd
cd is a shell builtin
https://www.cyberciti.biz/faq/linux-unix-bash-shell-list-all-builtin-commands/