Tengo muchos comandos que necesito ejecutar rutinariamente, a menudo con la más mínima variación.
Ahora mismo todos ellos estoy almacenando en .bash_history
uso CTRL- Rpara acceder a ellos, pero me pregunto si hay una manera mejor. Lo que estoy buscando:
- Fácil de agregar un nuevo comando
- Fácil de buscar y volver a ejecutar un comando deseado
- Evite comandos no deseados en sugerencias
Desafortunadamente, bash_history no es tan fuerte en la tercera demanda: si hago algunas cd
y ls
llena rápidamente el archivo de historial. Recientemente me enteré HIST_SIZE
y puedes configurar el historial para evitar duplicados o ciertos comandos, pero antes de configurar todo eso, quería asegurarme de que sea la mejor manera.
shell
command-history
Konerak
fuente
fuente
alias
quizás más útil. p.ej.alias gfc="git fetch origin"
Respuestas:
Encuentro muy útiles los siguientes comandos de readline
(tenga en cuenta que son diferentes a los habituales
reverse-search-history
,forward-search-history
atado a Ctrl- R, Ctrl- S).Tengo estos comandos asociados a Ctrl- Upy Ctrl- Downponiendo las siguientes líneas en
~/.inputrc
:Cómo funcionan: escriba algunos caracteres del comienzo del comando, presione Ctrl- Upy se mostrará el siguiente comando anterior que comience con ese prefijo, presione nuevamente para ver el siguiente, y así sucesivamente. Cuando esté satisfecho, después de posiblemente modificar el comando, presione Enterpara ejecutar.
fuente
"\e[B": history-search-forward
y"\e[A": history-search-backward
HISTFILESIZE
y / oHISTSIZE
(zsh solo admiteHISTSIZE
, bash admite ambos) para garantizar que su búfer sea lo suficientemente grande. La pregunta SO bash HISTSIZE vs. HISTFILESIZE? Puede iluminar más.Otro consejo: a veces uso comentarios para marcar / etiquetar un comando:
luego:
fuente
$_bookmark
. Se podría argumentar que este es un truco horrible que explota el hecho de que las variables inexistentes se expanden a la nada, pero ciertamente funciona, con la advertencia de que los espacios no están permitidos (use _'s en su lugar).Aunque tiene un alcance muy limitado, me gustaría señalar estos dos marcadores de posición de expansión:
es una expansión de marcador de posición para el último comando. Útil si olvidó poner
sudo
antes del comando.repite el último parámetro. Útil si desea repetir un comando diferente con
a/very/long/path/name/you/do/not/want/to/type/again
fuente
Use 'alias'
alias
Es una gran herramienta para esto.Cuando usa un alias, es exactamente como si lo hubiera escrito, por lo que es bastante flexible. Por ejemplo, puede usarlo con tuberías:
Debería poder hacer "pequeñas variaciones" pasando cualquier indicador que no haya especificado.
fuente
Creo scripts de shell mínimos para mis comandos frecuentes y les doy nombres cortos. Todos se almacenan en el mismo lugar, al que se agrega
PATH
.De esa manera, tengo acceso directo a comandos muy complejos y, a diferencia de esto
alias
, puedo convertir las partes modificables de mi tarea en argumentos de línea de comandos de mi acceso directo.fuente
Estoy manteniendo una copia de .bash_history en Git . Para simplificar esto, he configurado
en .bashrc y los siguientes comandos (modificados para uso general) en un script de limpieza
que ejecuto antes de agregar líneas
git gui
. Como el archivo de historial se modifica con cada comando, también tengo un comando especial para actualizar ese repositorio específico:fuente
HISTCONTROL=ignorespace
, que a veces es importante para no saturar el historial.Entre todas las otras respuestas aquí relacionadas con la historia.
lo puse
en ~ / .bash_profile
Además de los otros comentarios re: historia
Otra característica útil ...
Comenzando un retiro de historia con
recordará el último comando que comenzó con las primeras letras
p.ej:
No mencionó si está utilizando una GUI o solo una línea de comandos. Si está utilizando una GUI, puede usar uno de los administradores de portapapeles persistentes para copiar / pegar comandos, ID de usuario, contraseñas, URL, etc.
fuente
!find<ESC>CTRL-E
funciona, pero dudo que pueda recordarlo mañana. ¿Qué es ese ESC CTRL-E?Aprende a usar Ctrl-Ry Ctrl-Spermite buscar fácilmente los comandos que está buscando en el historial, y ya encontró la variable de entorno HISTCONTROL para ignorar los duplicados y cambiar el sitio del archivo de historial de bash.
Por lo general, hago muchos Ctrl-Rseguidos Ctrl-Ey cambiando algunos parámetros, si omito un comando encontrado al golpear Ctrl-Rdemasiadas veces, Ctrl-Sal rescate.
fuente
Siempre prefiero almacenar los últimos comandos usados y su salida.
fuente
Además de las buenas respuestas anteriores, si está utilizando una interfaz gráfica de usuario basada en kde o gnome, entonces AutoKey puede ser increíblemente útil.
Le permite crear frases que se activan escribiendo algunos caracteres o presionando una tecla de acceso rápido. Estas frases se sustituyen o se agregan a su entrada.
También admite scripts escritos en python que puede hacer que haga casi cualquier cosa si conoce python. Todavía no conozco Python, pero ya estoy obteniendo algunos scripts muy básicos para hacer cosas ordenadas.
Todo parece provenir de su teclado, por lo que funciona con cualquier aplicación que acepte la entrada del teclado, y con su escritorio mismo.
Tiene muchas opciones para controlar cómo y dónde se activan estas cosas, por lo que puede tener algunas que solo funcionan en su consola y otras que solo funcionan en otra ventana. También puede configurar frases para que se ejecuten tan pronto como escriba la cadena que las desencadena o espere hasta que les dé el visto bueno.
fuente
Como otros han dicho, alias es tu amigo. Para cosas un poco más complicadas (cuando necesita argumentos en algún lugar entre instrucciones), uso funciones en mi .zshrc, como:
que funciona como localizar (lo uso cuando por alguna razón db no está disponible). O
para un sustituto de killall.
fuente
Además de usar Cntl-Rpara mirar hacia atrás en el
.bash_history
, también tengo un archivo README en el~/develop
directorio donde pongo comandos largos como forgit
/svn
, para poder volver a ellos más tarde cuando sea necesario. Del mismo modo, planeo tener un~/install/README
archivo para poner todos los nombres de paquetes comunes que suelo instalar después de instalar una nueva versión de Linux / Ubuntu. Por lo tanto, la idea es tener un archivo README dentro de cada directorio, por ejemplo, Video, Audio, ... y poner en ellos los comandos / consejos comunes, que tal vez necesite saber más adelante.fuente