Bash: Upprepa kommando med dubbla utropstecken
Glömde du sudo?
Alla som använt Ubuntu eller någon annan linuxdistribution där sudo används för att utföra ett kommando som kräver root-rättigheter har säkerligen någon gång glömt att skriva just sudo innan det kommando man vill utföra. Eller hur? Det ger vanligtvis till svars:
[anders@anders-laptop ~]$ cat /etc/shadow cat: /etc/shadow: Åtkomst nekas
Detta förstås för att vi glömde sudo och därmed inte har rättigheter att läsa /etc/shadow-filen. Jag glömmer det ofta i kombination med apt-get install då jag behöver hämta hem nya paket och program. Vad göra?
Lugn, det ordnar sig
Vi kan förstås alltid skriva om kommandot med prefixet sudo.
[anders@anders-laptop ~]$ sudo cat /etc/shadow nobody:*:15014:0:99999:7::: usbmuxd:!!:15072:::::: avahi-autoipd:!!:15072:::::: ...
Har vi just skrivit ett långt kommando (så som i det tidigare rsync-exemplet) med flera parametrar ter sig dock detta jobbigt, och jobbiga saker vill vi ju alltid undvika! Hur görs det mindre jobbigt? Vi kan förstås trycka pil upp för att bläddra upp ett steg i kommandohistoriken, trycka på home-knappen för att komma till början av raden och skriva sudo där. Nu börjar det bli riktigt enkelt! Det enklaste alternativet kvarstår dock, nämligen användandet av dubbla utropstecken:
[anders@anders-laptop ~]$ sudo !!
De dubbla utropstecknen är en inbyggd funktion i bash som alltid returnerar det senast inslagna kommandot. Att skriva ovanstående blir alltså i vårt fall samma sak som att skriva:
[anders@anders-laptop ~]$ sudo cat /etc/shadow
Enkelt, eller hur?


Tack, man slipper trycka pil-upp, home och sudo. Ska försöka komma ihåg det här kommandot !! :)