Eu tenho um processo que cria arquivos de texto cujos nomes de arquivo são baseados no carimbo de data e hora do momento da criação:
$ ls
1378971222.txt
1378971254.txt
1378971482.txt
1378971488.txt
1378972089.txt
1378972140.txt
1378972141.txt
1378972153.txt
1378972155.txt
1378972241.txt
Como posso preencher automaticamente o nome do arquivo do último arquivo criado , ou seja, o arquivo com o mtime mais recente? Não há como usar o preenchimento de guias para esses arquivos, pois quase todos os caracteres no nome do arquivo são compartilhados com outro arquivo. Espero encontrar um atalho (como o Alt .
que preenche automaticamente o último argumento do último comando). Eu consegui inventar o seguinte apelido que é ótimo para VIM
, mas eu gostaria de saber se um atalho de uso geral existe que eu poderia usar com kde-open
, sqlite3
e outras aplicações.
alias lastest="vim `ls -t | grep -vE "^total [0-9]*$" | head -n1`"
bash
autocomplete
dotancohen
fonte
fonte
$(ls -t|head -1)
na linha. Portanto, não andar de bicicleta. Na ausência de uma resposta satisfatória, aceitei a resposta que mais me ensinou e que fornece mais utilidade.Respostas:
Basta remover o
vim
do alias. Faça algo parecido com isto:Você pode usar qualquer programa para abrir os arquivos mais recentes:
etc.
No entanto, isso será interrompido se os nomes dos arquivos tiverem espaços ou caracteres estranhos, motivo pelo qual você nunca deve analisar
ls
. Uma maneira melhor seria algo assim (adicione isso ao seu.bashrc
):Essa função executará qualquer comando que você der como argumento e passará o resultado da
find
chamada (o arquivo mais recente) para esse comando. Então, você pode fazer coisas como:Se você precisar fazer coisas como
mv $(latest) foo/
esta, tente:Em seguida, para copiar o arquivo mais recente
bar/
, você fariaE você ainda pode fazer
latest emacs
da mesma maneira que antes.fonte
alias latest='\ls -tr | tail -n 1'
- isso funcionará se você tiver umls
alias.Você pode configurar isso facilmente
zsh
, por exemplo, com algo como isto:(você também pode alterar a linha para que esse estilo seja usado apenas para determinados padrões de nome de arquivo)
zsh
é muito semelhante ao bash, você provavelmente poderia chamá-lo de um superconjunto do bash - em termos de recurso / uso.Mas talvez o bash tenha uma característica semelhante.
fonte
zsh
mas, se for o caso, tenho isso marcado!zsh
!Como o arquivo mais recente também é classificado por último, você pode usá-lo
menu-complete-backward
.menu-complete
emenu-complete-backward
percorra as conclusões ou insira a primeira ou a última conclusão. Eu os vinculei à opção-tab e shift-tab em~/.inputrc
:O emulador de terminal pode não ser inserido
\e[Z
quando você pressiona a tecla Shift. UseC-v
oucat -v
para ver qual texto é inserido quando você pressiona uma combinação de teclas.fonte
O pano de fundo da pergunta é a velocidade do uso. Acho uma macro de teclado mais apropriada. Adicionar a
~/.inputrc
:Outras idéias: Originalmente, eu queria algo que me desse o primeiro, segundo e terceiro arquivos mais recentes. Uma idéia seria: marcar os locais com um token, por exemplo, "grep x _" e executar uma macro de teclado "\ C-alatest-expansion \ Cm" e "latest-expansion" solicita uma lista de seleção de maldições para escolher os arquivos mais recentes para cada token "_" na linha de comando.
Considero isso uma questão importante, porque uma vantagem restante da GUI sobre o SHELL é, para mim, a seleção de arquivos e diretórios usados / criados recentemente.
autojump
ajuda um pouco nos diretórios, falta uma solução para os arquivos.fonte
$(ls -t|head -1)
na linha do bash, portanto, ele precisa ser interpretado. Isso o torna menos útil, mas ainda é um bom truque.