J'ai un processus qui crée des fichiers texte dont les noms de fichiers sont basés sur l'horodatage de leur moment de création:
$ ls
1378971222.txt
1378971254.txt
1378971482.txt
1378971488.txt
1378972089.txt
1378972140.txt
1378972141.txt
1378972153.txt
1378972155.txt
1378972241.txt
Comment puis-je compléter automatiquement le nom de fichier du dernier fichier créé , c'est-à-dire le fichier avec le dernier mtime? Il n'y a aucun moyen d'utiliser la tabulation pour ces fichiers car presque tous les caractères du nom de fichier sont partagés avec un autre fichier. J'espère trouver un raccourci (comme celui Alt .
qui complète automatiquement le dernier argument de la dernière commande). J'ai réussi à concocter l'alias suivant qui est excellent pour VIM
, mais j'aimerais savoir si un raccourci universel existe que je pouvais utiliser kde-open
, sqlite3
et d' autres applications.
alias lastest="vim `ls -t | grep -vE "^total [0-9]*$" | head -n1`"
bash
autocomplete
dotancohen
la source
la source
$(ls -t|head -1)
dans la ligne. Par conséquent, pas de vélo. En l'absence d'une réponse satisfaisante, j'ai accepté la réponse qui m'a le plus appris et qui a le plus d'utilité.Réponses:
Supprimez simplement
vim
l'alias. Faites quelque chose comme ça:Vous pouvez ensuite utiliser n'importe quel programme pour ouvrir les derniers fichiers:
etc.
Cependant, cela se cassera si vos noms de fichiers ont des espaces ou des caractères étranges, c'est pourquoi vous ne devriez jamais analyser
ls
. Une meilleure façon serait quelque chose comme ça (ajoutez ceci à votre.bashrc
):Cette fonction exécutera la commande que vous lui donnerez comme argument et transmettra le résultat de l'
find
appel (le dernier fichier) à cette commande. Ainsi, vous pouvez faire des choses comme:Si vous devez être capable de faire des choses comme
mv $(latest) foo/
celle-ci à la place:Ensuite, pour copier le dernier fichier
bar/
, vous feriezEt vous pouvez toujours faire
latest emacs
de la même manière qu'auparavant.la source
alias latest='\ls -tr | tail -n 1'
- cela fonctionnera si vous avez unls
alias.Vous pouvez facilement configurer ceci dans
zsh
, par exemple avec quelque chose comme ceci:(vous pouvez également modifier la ligne de sorte que ce style ne soit utilisé que pour certains modèles de nom de fichier)
zsh
est très similaire à bash, vous pourriez probablement l'appeler un surensemble de bash - en termes de fonctionnalité / utilisation.Mais peut-être que bash a une fonctionnalité similaire.
la source
zsh
mais si jamais je le fais, je l'ai mis en signet!zsh
!Étant donné que le fichier le plus récent est également trié en dernier, vous pouvez utiliser
menu-complete-backward
.menu-complete
etmenu-complete-backward
parcourir les achèvements ou insérer le premier ou le dernier achèvement. Je les ai liés à option-tab et shift-tab dans~/.inputrc
:Votre émulateur de terminal peut ne pas s'insérer
\e[Z
lorsque vous appuyez sur Maj + Tab. UtilisezC-v
oucat -v
pour voir le texte inséré lorsque vous appuyez sur une combinaison de touches.la source
Le fond de la question est la vitesse d'utilisation. Je trouve une macro clavier la plus appropriée. Ajouter à
~/.inputrc
:Autres idées: origine, je voulais quelque chose qui me donne le 1er, 2e, 3e fichier le plus récent. Une idée serait de marquer les lieux avec un jeton, par exemple "grep x _", puis d'exécuter une macro de clavier "\ C-alatest-expansion \ Cm" et "latest-expansion" invite une liste de sélection de curseurs à choisir les derniers fichiers pour chaque jeton "_" dans la ligne de commande.
Je considère que c'est une question importante, car un avantage restant de l'interface graphique sur SHELL est pour moi la sélection des fichiers et répertoires récemment utilisés / créés.
autojump
aide un peu pour les répertoires, il manque une solution pour les fichiers.la source
$(ls -t|head -1)
dans la ligne bash, il doit donc être interprété. Cela le rend moins utile, mais c'est quand même une bonne astuce.