Toisinaan tulee vastaan tilanne, että haluaa nopeasti tehdä jotakin hakemiston
uusimmalle tiedostolle. On esimerkiksi prosessi, joka tekee aina uuden
lokitiedoston kun se käynnistetään. Tiedostothan voi laittaa aikajärjestykseen
esimerkiksi ls -lasrt
, ja sitten manuaalisesti kaivaa siitä se uusin tulokas.
Tämä voidaan kuitenkin automatisoida aika näppärästi. Esittelen tässä aika
näppärin aliaksen mitä itse käytän.
Näin se menee. Lisätään ~/.bashrc
tiedostoon
alias latest='ls -cp -1 | grep -v /$ | head -1'
Komento palauttaa komento hakemistosta viimeiseksi muokatun tiedoston. Aliaksen
voi lisätä vaikkapa ~/.bash_aliases
-tiedostoon. ls -cp -1
komennossa -cp
järjestää ctimen mukaan ja -1
sanoo että tulostetaan yksi tulos per rivi.
Komento grep -v /$
suodattaa tulosteesta pois ne rivit, jotka päättyvät /
-merkkiin, eli hakemistot.
Jos hakemistossa on esimerkiksi tiedostot
jukka@jukka-XPS-13-9380:/tmp/test$ ls -la
total 44
drwxrwxr-x 3 jukka jukka 4096 kesä 6 00:15 .
drwxrwxrwt 49 root root 28672 kesä 6 00:15 ..
drwxrwxr-x 2 jukka jukka 4096 kesä 6 00:13 foo
-rw-rw-r-- 1 jukka jukka 13 touko 31 16:19 index.html
-rw-rw-r-- 1 jukka jukka 0 kesä 6 00:15 toinen.html
Ensimmäisenä ls -cp -1
palauttaa
jukka@jukka-XPS-13-9380:/tmp/test$ ls -cp -1
toinen.html
foo/
index.html
Ja tästä sitten siis grep -v /$
palauttaa
jukka@jukka-XPS-13-9380:/tmp/test$ ls -cp -1 | grep -v /$
toinen.html
index.html
Lopuksi head -1
palauttaa ensimmäisen tiedoston nimen.
Käyttö
Käyttö esimerkiksi tilanteissa, joissa yhteen hakemistoon tulee lokitiedostoja jostakin prosessista (esimerkiksi varmuuskopiointi), ja haluat seurata tai aukaista uusimman:
tail -100f `latest`
tai vaikkapa
cat `latest`