Tengo un proceso que crea archivos de texto cuyos nombres de archivo se basan en la marca de tiempo de su momento de creación:
$ ls
1378971222.txt
1378971254.txt
1378971482.txt
1378971488.txt
1378972089.txt
1378972140.txt
1378972141.txt
1378972153.txt
1378972155.txt
1378972241.txt
¿Cómo podría completar automáticamente el nombre del archivo del último archivo creado , es decir, el archivo con el último mtime? No hay forma de usar la finalización de tabulación para estos archivos, ya que casi todos los caracteres del nombre de archivo se comparten con otro archivo. Espero encontrar un acceso directo (como el Alt .
que completa automáticamente el último argumento del último comando). He conseguido inventar los siguientes alias que es ideal para VIM
, pero me gustaría saber si un acceso directo de propósito general existe que podría utilizar con kde-open
, sqlite3
y otras aplicaciones.
alias lastest="vim `ls -t | grep -vE "^total [0-9]*$" | head -n1`"
bash
autocomplete
dotancohen
fuente
fuente
$(ls -t|head -1)
en la línea. Por lo tanto, no ciclismo. En ausencia de una respuesta satisfactoria, acepté la respuesta que más me enseñó y me brinda la mayor utilidad.Respuestas:
Simplemente elimine el
vim
del alias. Haz algo como esto:Luego puede usar cualquier programa para abrir los archivos más recientes:
etc.
Sin embargo, esto se romperá si los nombres de sus archivos tienen espacios o caracteres extraños, por lo que nunca debe analizarlos
ls
. Una mejor manera sería algo como esto (agregue esto a su.bashrc
):Esta función ejecutará cualquier comando que le des como argumento y pasará el resultado de la
find
llamada (el último archivo) a ese comando. Entonces, puedes hacer cosas como:Si necesita poder hacer cosas como
mv $(latest) foo/
probar este en su lugar:Luego, para copiar el último archivo a
bar/
, haríasY aún puede hacerlo
latest emacs
de la misma manera que antes.fuente
alias latest='\ls -tr | tail -n 1'
, esto funcionará si tiene unls
alias.Puede configurar esto fácilmente
zsh
, por ejemplo, con algo como esto:(también puede cambiar la línea de modo que este estilo solo se use para ciertos patrones de nombre de archivo)
zsh
es muy similar a bash, probablemente podría llamarlo un superconjunto de bash - feature- / use-wise.Pero quizás bash tiene una característica similar.
fuente
zsh
pero si alguna vez lo hago, tengo este marcador.zsh
!Dado que el archivo más nuevo también se ordenó al final, puede usarlo
menu-complete-backward
.menu-complete
ymenu-complete-backward
recorrer las terminaciones o insertar la primera o la última terminación. Los he vinculado a la pestaña de opciones y a la pestaña Mayús en~/.inputrc
:Es posible que su emulador de terminal no se inserte
\e[Z
cuando presiona shift-tab. UseC-v
ocat -v
para ver qué texto se inserta cuando presiona una combinación de teclas.fuente
El trasfondo de la pregunta es la velocidad de uso. Encuentro una macro de teclado más apropiada. Añadir a
~/.inputrc
:Ideas adicionales: Originalmente, quería algo que me diera el primer, segundo, tercer archivo más nuevo. Una idea sería, marcar los lugares con un token, por ejemplo, "grep x _", luego ejecutar una macro de teclado "\ C-alatest-expansion \ Cm" y "última expansión" solicita una lista de selección de maldiciones para elegir los últimos archivos para cada token "_" en la línea de comando.
Considero que esta es una pregunta importante, porque una ventaja restante de GUI sobre SHELL es para mí la selección de archivos y directorios recientemente utilizados / creados.
autojump
ayuda un poco para los directorios, falta una solución para los archivos.fuente
$(ls -t|head -1)
en la línea bash, por lo que debe interpretarse. Eso lo hace menos útil, pero sigue siendo un buen truco.