Mam proces, który tworzy pliki tekstowe, których nazwy plików są oparte na sygnaturze czasowej ich momentu utworzenia:
$ ls
1378971222.txt
1378971254.txt
1378971482.txt
1378971488.txt
1378972089.txt
1378972140.txt
1378972141.txt
1378972153.txt
1378972155.txt
1378972241.txt
Jak mogę automatycznie uzupełnić nazwę pliku ostatnio utworzonego pliku , tj. Pliku z najnowszym mtime? W tych plikach nie ma możliwości użycia uzupełniania tabulatorami, ponieważ prawie każdy znak w nazwie pliku jest współdzielony z innym plikiem. Mam nadzieję znaleźć skrót (taki, Alt .
który automatycznie uzupełnia ostatni argument ostatniego polecenia). Udało mi się wymyślać następujące alias co jest dobre dla VIM
, ale chciałbym wiedzieć, czy skrót ogólnego przeznaczenia istnieje, że mogę korzystać z kde-open
, sqlite3
i inne aplikacje.
alias lastest="vim `ls -t | grep -vE "^total [0-9]*$" | head -n1`"
bash
autocomplete
dotancohen
źródło
źródło
$(ls -t|head -1)
wiersz. Dlatego nie jeździsz na rowerze. Wobec braku zadowalającej odpowiedzi zaakceptowałem odpowiedź, która nauczyła mnie najbardziej i zapewnia największą użyteczność.Odpowiedzi:
Po prostu usuń
vim
z aliasu. Zrób coś takiego:Następnie możesz użyć dowolnego programu do otwarcia najnowszych plików:
itp.
Spowoduje to jednak uszkodzenie, jeśli w nazwach plików występują spacje lub dziwne znaki, dlatego nigdy nie należy analizować
ls
. Lepszym sposobem byłoby coś takiego (dodaj to do swojego.bashrc
):Ta funkcja wykona dowolne polecenie podane jako argument i przekaże wynik
find
wywołania (najnowszy plik) do tego polecenia. Możesz więc robić takie rzeczy jak:Jeśli chcesz robić takie rzeczy,
mv $(latest) foo/
spróbuj tego zamiast tego:Następnie, aby skopiować plik do najnowszej
bar/
, zrobiłbyśI nadal możesz to robić
latest emacs
w taki sam sposób, jak wcześniej.źródło
alias latest='\ls -tr | tail -n 1'
- zadziała, jeśli maszls
alias.Możesz to łatwo skonfigurować
zsh
np. Za pomocą czegoś takiego:(możesz także zmienić linię tak, aby ten styl był używany tylko dla niektórych wzorców nazw plików)
zsh
jest bardzo podobny do bash, prawdopodobnie można nazwać go nadzbiorem bash - pod względem funkcji / użytkowania.Ale może bash ma podobną funkcję.
źródło
zsh
ale jeśli kiedykolwiek to zrobię, mam tę zakładkę!zsh
!Ponieważ najnowszy plik jest również posortowany jako ostatni, możesz użyć
menu-complete-backward
.menu-complete
imenu-complete-backward
cyklicznie wykonuj uzupełnienia lub wstaw pierwsze lub ostatnie uzupełnienie. Powiązałem je z kartami opcji i klawiszem Shift w~/.inputrc
:Twój emulator terminala może się nie wstawić
\e[Z
po naciśnięciu klawisza Shift. UżyjC-v
lub,cat -v
aby zobaczyć, jaki tekst jest wstawiany po naciśnięciu kombinacji klawiszy.źródło
Tłem pytania jest szybkość użytkowania. Uważam, że makro klawiatury jest najbardziej odpowiednie. Dodaj do
~/.inputrc
:Dalsze pomysły: pierwotnie chciałem czegoś, co da mi pierwszy, drugi, trzeci plik. Pomysłem byłoby oznaczenie miejsc tokenem, np. „Grep x _”, a następnie wykonanie makra klawiatury „\ C-alatest-extension \ Cm”, a „najnowsze-rozszerzenie” wyświetla listę wyboru przekleństw do wyboru najnowsze pliki dla każdego tokena „_” w wierszu poleceń.
Uważam to za ważne pytanie, ponieważ jedną z pozostałych zalet GUI nad SHELL jest dla mnie wybór ostatnio używanych / utworzonych plików i katalogów.
autojump
pomaga trochę dla katalogów, brakuje rozwiązania dla plików.źródło
$(ls -t|head -1)
do linii bash, więc należy go interpretować. To sprawia, że jest mniej przydatny, ale wciąż jest fajną sztuczką.