¿Hay alguna forma de modificar el comando que está a punto de ejecutarse? Me gustaría redirigir el resultado a un archivo, así como también imprimirlo en el terminal. Encontré que ls > file.txt | cat
hace el trabajo, por lo que me gustaría agregar ese > file.txt | cat
a cualquier comando que esté a punto de ejecutarse.
¿Hay una mejor manera de redirigir a archivo e imprimir a la terminal? Estoy tratando de hacer un registrador.modificación del comando zsh preexec
Respuesta
Hay varias maneras de hacerlo, el 1 que más me gusta es este bloque que encontré aquí http://git.grml.org/?p=grml-etc-core.git;a=blob_plain;f=etc/zsh/zshrc;hb=HEAD
abk=(
'...' '../..'
'....' '../../..'
'BG' '& exit'
'C' '| wc -l'
'G' '|& grep '${grep_options:+"${grep_options[*]}"}
'H' '| head'
'Hl' ' --help |& less -r' #d (Display help in pager)
'L' '| less'
'LL' '|& less -r'
'M' '| most'
'N' '&>/dev/null' #d (No Output)
'R' '| tr A-z N-za-m' #d (ROT13)
'SL' '| sort | less'
'S' '| sort -u'
'T' '| tail'
'V' '|& vim -'
'co' './configure && make && sudo make install'
'fc' '> file.txt | cat'
)
zleiab() {
emulate -L zsh
setopt extendedglob
local MATCH
if ((NOABBREVIATION > 0)) ; then
LBUFFER="${LBUFFER},."
return 0
fi
matched_chars='[.-|_a-zA-Z0-9]#'
LBUFFER=${LBUFFER%%(#m)[.-|_a-zA-Z0-9]#}
LBUFFER+=${abk[$MATCH]:-$MATCH}
}
zle -N zleiab && bindkey ",." zleiab
Observe también que añadí 'fc' '> file.txt | cat'
a la lista abk
Lo que esto hace en que escriba fc
después del comando y luego presione ,. (coma y el punto) en una sucesión rápida y zsh reemplazarán fc
para > file.txt | cat
Puede cambiar la acción que se realiza cuando se ejecuta una línea de alterar el comando que se ejecutará. Esto se puede hacer definiendo una función que luego se vincula a la tecla Intro.
Primero definamos una función que puede agregar el '> archivo.txt | cat 'terminando con cualquier comando:
function log_and_accept {
BUFFER="$BUFFER > file.txt | cat"
zle accept-line
}
La siguiente parte es reemplazar realmente el comportamiento predeterminado de la tecla enter con su nueva función. El comportamiento predeterminado que estamos reemplazando es la función accept-line, y si miramos el zle documentation, verá que accept-line está obligado a^J y^M.
Para aprisionar esta función a esas cartas primero tiene que convertirlo en un widget:
zle -N log_and_accept_widget log_and_accept
A continuación, puede obligar a éste, en sustitución del antiguo comportamiento:
bindkey '^J' log_and_accept_widget
bindkey '^M' log_and_accept_widget
Ahora habrá ampliando ese comando para cada comando que haces. Cada cd, ls, vim, etc, etc Por lo tanto recomiendo que se define un par de funciones que hacen de esta realidad dentro y fuera:
function turn_on_logging {
bindkey '^J' log_and_accept_widget
bindkey '^M' log_and_accept_widget
}
function turn_off_logging {
bindkey '^J' accept-line
bindkey '^M' accept-line
}
zle -N turn_on_logging_widget turn_on_logging
zle -N turn_off_logging_widget turn_off_logging
bindkey '^P' turn_on_logging_widget
bindkey '^O' turn_off_logging_widget
Creo que hay que tener cuidado con esto. Después de probarlo un poco, rápidamente me disgustó.
- 1. Comando de fecha con zsh
- 2. ZSH autocompletar tornillos nombre de comando
- 3. zsh: cómo volver 'sin dilatar' comando
- 4. zsh fallo del tabulador en ubuntu
- 5. Zsh quiere Autocorrect un comando, con una _ antes de que
- 6. ¿por qué zsh globbing no funciona con el comando find?
- 7. Cambiando a zsh rompe rieles en la línea de comando
- 8. ¿Puedo ejecutar el comando para cada resultado del archivo globbing en zsh sin?
- 9. Personalizar el indicador de zsh al mostrar el código de salida del comando anterior
- 10. Zsh Sugerencia de paquete
- 11. línea de estado del modo zsh vi
- 12. zsh change prompt input color
- 13. watchpaths Modificación
- 14. ¿Completar Zsh?
- 15. ¿Qué significa [nyae] en Zsh?
- 16. Interpretar zsh bindkey secuencias escapadas
- 17. Modificación del comportamiento de alineación de línea
- 18. Modificación de las propiedades del documento PDF
- 19. Modificación del directorio actual de FileSystemObject
- 20. Modificación del descriptor de interrupción Tabla
- 21. Modificación de propiedades agrupadas del visitante
- 22. Modificación del archivo .resx en C#
- 23. Tiempo de modificación del archivo (segundos) en Unix
- 24. Modificación del contenido del archivo existente en Java
- 25. ZSH Bindkey Búsqueda inversa
- 26. zsh alias -> función?
- 27. zsh diferencia finalización
- 28. zsh alias expansion
- 29. Git Iniciar sesión ZSH Terminal
- 30. incapaz de tener DarwinPorts del tabulador en Zsh
tee es el comando a usar aquí,> archivo | el gato es bastante confuso –