Bash geeft je de mogelijkheid om door de geschiedenis van opdrachten die je uitgevoerd hebt te zoeken. Tik daarvoor op de opdrachtregel ctrl+r in en dan een deel van de opdracht die je zoekt. Voldoen er meerdere opdrachten in je geschiedenis aan je zoekterm, druk dan nog eens ctrl+r in om de volgende te zien. Met ctrl+s zoek je in de andere richting, handig als je een keer te veel op ctrl+r gedrukt hebt. Maar dan moet je wel de volgende opdracht in je ~/.bashrc staan hebben:

stty –ixon

 

Ctrl+r is een handige toetsencombinatie om in Bash te onthouden, maar de tool hh geeft je nog een betere manier om met je opdrachtgeschiedenis te werken. Ze ondersteunt zowel Bash als Zsh. Volg de installatie-instructies op GitHub voor je distributie. Voor Ubuntu gaat de installatie als volgt:

 

 

sudo add-apt-repository ppa:ultradvorka/ppa

sudo apt-get update

sudo apt-get install hh

 

 

Laat hh daarna wat opdrachten aan je ~/.bashrc toevoegen om de configuratie in orde te maken:

 

 

hh –show-configuration >> ~/.bashrc

 

Dat stelt onder andere meer kleuren in de uitvoer van hh in, verhoogt het aantal regels in je opdrachtgeschiedenis en roept hh op als je op ctrl+r drukt.

 

Als je nu een nieuwe shell start en je op ctrl+r drukt, krijg je jouw hele geschiedenis te zien op het scherm. Terwijl je een deel van de gezochte opdracht intypt, krijg je telkens alle opdrachten te zien die nog aan je zoekopdracht voldoen. Met de pijltjestoetsen ga je naar de gewenste opdracht, die je uitvoert met een druk op enter. Wil je de opdracht eerst nog aanpassen voordat je ze uitvoert, druk dan op Tab als je de opdracht geselecteerd hebt. Met ctrl+g verlaat je overigens hh zonder een selectie te kiezen.

 

Met ctrl+e schakel je over tussen exact zoeken of op zoeken met reguliere expressies. Deze laatste optie is handig als je niet meer de exacte opdracht weet die je zoekt, maar wel dat er bijvoorbeeld een ip-adres in voorkwam. Met ctrl+t schakel je over tussen hoofdlettergevoelig of niet. Dit is handig wanneer je zoekt naar opdrachten waarin bestandsnamen voorkomen waarvan je niet meer weet of je er nu hoofdletters in gebruikt hebt of niet.

 

Daarnaast biedt hh nog enkele mogelijkheden om je geschiedenis te beheren. Met del verwijder je de geselecteerde opdracht uit je opdrachtgeschiedenis. Met ctrl+f voeg je de geselecteerde opdracht aan je favorieten toe. Standaard krijg je de opdrachten te zien die zijn geordend op aantal keren dat je ze uitgevoerd hebt. Met een druk op ctrl+/ krijg je de geschiedenis chronologisch en inclusief dubbelen te zien en met nog een druk op ctrl+/ krijg je jouw favorieten te zien.

 

LINK

http://www.mindforger.com/projects/hh.html

 

 

Welke bestanden heeft dit programma open?

De Linux-opdracht lsof laat zien welke bestanden allemaal open zijn en welk programma deze bestanden open heeft. Als je lsof zonder extra parameters ingeeft in een shell, krijg je een waslijst van alle geopende bestanden te zien. Wil je alleen de geopende bestanden van een specifieke gebruiker zien, dan helpt lsof -u gebruikersnaam de uitvoer uit te dunnen. Met lsof -p PID krijg je alle bestanden te zien die het proces met ID PID open heeft. Het PID van een proces krijg je te zien als je pgrep procesnaam invoert.

 

Maar wat als je nou juist wil weten welk programma een bepaald bestand open heeft, bijvoorbeeld omdat je merkt dat het wordt overschreven? Ook dat kan. Bijvoorbeeld:

 

lsof /etc/passwd

 

Je krijgt dan het commando en de PID te zien van het proces dat het bestand open heeft. Wil je alleen het PID van het proces terugkrijgen, zodat het bijbehorende programma eenvoudig te killen is, gebruik dan de optie -t. Dat gaat dan als volgt:

 

kill `lsof -t /etc/passwd`

 

Je kunt ook van de open bestanden in een hele directory informatie opvragen, bijvoorbeeld met lsof +D /var/log/. Met +D worden alle subdirectory’s recursief bekeken. Wil je alleen de bestanden in de directory zelf nagaan, maar niet in subdirectory’s daarvan, gebruik dan de optie -d.

 

Voor wie geen zin heeft om in terminalvensters te kruipen en de syntax van lsof nooit kan onthouden, is er ook een grafische versie die gebruik maakt van Java, Glsof. Het project is opgesplitst in twee programma’s, Filemonitor en Queries. Filemonitor toont de uitvoer van lsof met geopende bestanden in een grafisch venster, terwijl Queries toelaat om specifieke zoektermen in te geven, bijvoorbeeld als je alleen wil zien welke bestanden Firefox open heeft. De zoekresultaten zijn te sorteren volgens de verschillende kolommen. Queries toont ook statistieken, zoals het aantal geopende bestanden per proces of gebruiker.

 

LINK

http://glsof.sourceforge.net/

 

Ruim wezen op

Als je software installeert en daarna weer verwijdert, blijven er allerlei library’s of hulpprogramma’s op je schijf staan die niet mee verwijderd worden. Dankzij de handige package managers in moderne Linux-distributies kun je allerlei software uitproberen. Doe je dat vaak, dan staat je harde schijf al snel vol met orphans, pakketten die je niet meer nodig hebt. Als je onder Debian of Ubuntu met apt-get pakketten installeert, waarschuwt het programma je als automatisch geïnstalleerde pakketten niet meer nodig zijn. Met sudo apt-get autoremove verwijder je deze.

 

Met het pakket deborphan vind je nog meer orphans. Standaard zoekt het programma alleen naar mogelijk ongebruikte library’s. Met deborphan -a zoekt het ook daarbuiten. Neem de resultaten van deborphan echter wel met een korreltje zout. Als je twijfelt of de uitvoer correct is, verwijder dan de voorgestelde pakketten niet.

 

Voor rpm-gebaseerde distributies, zoals Fedora en openSUSE, is er ook zo’n programma: rpmorphan. Het toont zelfs een grafische interface als je het opstart met de parameter -gui. Ook hier geldt de waarschuwing: verwijder niet blindelings alle voorgestelde pakketten, maar gebruik je gezond verstand!

 

Kopieer snel grote bestanden

Grote bestanden kopiëren duurt doorgaans behoorlijk lang. Op de meeste bestandssystemen heb je jezelf daar maar bij neer te leggen. Gebruik je echter Btrfs, het next-generation bestandssysteem van Linux, dan heb je een oplossing. Met de opdracht cp –reflink maak je een copy on write kopie van het bestand. Daarbij maakt cp alleen maar een nieuwe verwijzing in het bestandssysteem naar dezelfde blokken als het originele bestand. Dat is in een fractie van een seconde gebeurd, omdat de opdracht niet alle blokken van het bestand moet kopiëren.

 

Het verschil met een softlink of hardlink bij een traditioneel bestandssysteem is dat bij die manieren veranderingen in het originele bestand ook in de kopie worden doorgevoerd. Bij de copy on write aanpak worden veranderingen daarentegen naar nieuwe blokken geschreven, terwijl de ongewijzigde blokken nog zowel door het origineel als door de kopie gedeeld worden.

 

Een reflink-kopie is daarom handig als je een reservekopie wilt maken van bestanden waarop je scripts wilt uittesten, bijvoorbeeld als je automatisch mp3’s van ID3-tags wilt voorzien. Blijkt na de test dat zaken zijn misgelopen, dan heb je de originele bestanden nog. Bovendien hoef je niet lang te wachten voor je hele muziekcollectie gekopieerd is.