Linux – Shell enzo… deel 3
In deel 3 van Linux Shell Enzo gaan we kijken naar een paar simpele maar o zo essentiƫle zaken. In dit deel gaan we kijken naar directory browsing en overige directory werkzaamheden zoals het aanmaken en verwijderen van directories. Vervolgens kijken we ook naar een stukje onderhoud van het Linux OS, namelijk het updaten en upgraden van het systeem.
Reguliere Expressie
Alvorens we gaan kijken naar commandoās om met directories (en ook files) te werken is het goed om te weten dat Bash (en andere Linux shells) reguliere expressie ondersteunen. Door het toepassen van reguliere expressie kun je bulktaken ontzettend snel uitvoeren. Over reguliere expressie heb ik een andere post gemaakt. Bekijk voor alle reguliere expressie tips deze post.
Linux root user rechten
Normale gebruikersaccount in Linux hebben nooit volledige āroot rechtenā. Dit voorkomt dat deze gebruikers core bestanden van linux modificeren of verwijderen waardoor Linux niet meer werkt. Omdat sommige werkzaamheden wel speciale (root) rechten vereisen kunnen we taken in bash uitvoeren als super user. Dit kunnen we op 2 manieren doen:
su
āsuā staat voor āsuper userā. Na het invoeren van dit commando moet je het wachtwoord van de root user ingeven. Als dit succesvol is gedaan dan voer je de actieve Bash shell uit als super user. Elk commando welke vervolgens ingevuld wordt zal uitgevoerd worden als super user en dus kun je vrijwel alle systeemtaken en commandoās uitvoeren.
sudo
āsudoā staat voor āsuper user doā en is de tijdelijke (eenmalige) variant van āsuā. Als je een commando uit moet voeren als super user kun je het āsudoā commando vooraan de commandoregel plaatsen. Het systeem zal je vervolgens eveneens om het root wachtwoord vragen en na het succesvol invoeren van het root wachtwoord voer je het commando uit als super user. Het volgende commando wordt weer uitgevoerd als gewone gebruiker omdat āsudoā dus van toepassing is op 1 commando.
Directory Browsing
Om van A naar B te komen moet je weten welke commandoās je moet gebruiken. Hoe zie je waar je jezelf bevindt in de boomstructuur en hoe ga je naar een andere locatie. Directory browsing in Linux Bash is simpel, heeft soms overeenkomsten met Windows maar gaat veel verder dan dat waardoor je ook veel sneller kunt browsen. De volgende commandoās zijn belangrijk tijdens het browsen maar kunnen ook toegepast worden op het kopiĆ«ren, verwijderen en aanmaken van directories en bestanden.
pwd
āpwdā staat voor āPrint Working Directoryā. Middels āpwdā weet je dus exact in welke folder je zit en welke parent folders (bovenliggende folders) er zijn.
ls
ālsā staat voor āListā. Dit commando is vergelijkbaar met het ādirā commando in Windows. Middels ālsā zie je de inhoud van een directory. Handige varianten op het ālsā commando zijn.
Lange weergave van namen:
ls āl |
Weergave inc. hidden files:
la āa |
Lange weergave inc. hidden files:
la āla |
Andere apparaten weergeven, zoals hierboven de aangesloten USB apparaten:
lsusb |
cd
Het commando ācdā staat voor āChange Directoryā en wordt gebruikt om naar een andere folder te navigeren. Handige varianten op het ācdā commando zijn.
Een map omhoog (ā/home/ā naar ā/ā) ā let op de spatie tussen het commando en de puntjes:
cd .. |
Navigeer naar de root:
cd / |
ācd” zonder toevoeging brengt je naar je home directory:
cd |
rm
ārmā staat voor āRemoveā. Met het ārmā commando worden bestand en mappen verwijderd. Hou er rekening mee dat Unix case sensitive en de naam correct gespeld moet worden (incl. de hoofdletters). Met ārmā kunnen alleen lege folders verwijderd worden.
De ā-rā toevoeging zorgt ervoor dat volle directories verwijderd kunnen worden:
rm -r |
De ā-iā toevoeging zorgt ervoor er om bevestiging gevraagd wordt bij elk bestand dat verwijderd wordt:
rm -i |
mkdir
āmkdirā staat voor āMake Directoryā. Middels āmkdirā maak je een nieuwe directory aan.
Voorbeeld ā Maak nieuwe test directory aan (in de folder waar je bent):
mkdir test |
cp
Met het ācpā (copy) commando kun je bestanden kopiĆ«ren van locatie A naar locatie B.
Onderstaande voorbeeld zorgt ervoor dat een bestand (testfile.txt) van /home/ naar /home/user/Desktop gekopieerd wordt:
cp /home/testfile.txt /home/user/Desktop |
Onderstaande variant met wildcard (*) zorgt ervoor dat alle *.txt bestanden in /home naar de Desktop gekopieerd worden :
cp /home/*txt /home/user/Desktop |
mv
āmvā staat voor āMoveā. Met āmvā kun je bestanden en mappen kunt verplaatsen, hernoemen en overschrijven.
Om bestanden te verplaatsen gebruik je het commando als: “mv file directory”. Dus bij onderstaande voorbeeld worden de 3 files naar de Desktop directory verplaatst:
mv file1.txt file2.txt file3.txt /home/user/Desktop |
Een wat geavanceerder voorbeeld staat hieronder. Hierbij wordt de folder āmy_dirā (op de Desktop) en alle *.bak bestanden in bovenliggende (user) folder verplaatst naar de folder āmynewdirā:
mv /home/user/Desktop/my_dir ../*.bak /home/user/Desktop/mynewdir |
Bestanden en directories hernoemen gaat als volgt:
mv /home/user/Desktop/my_dir /home/user/Desktop/mynewdir |
Onderstaande voorbeeld laat zien hoe je file2.txt kunt overschrijven met de content van file1.txt (als deze al bestaat) of kunt hernoemen (als file2.txt nog niet bestaat):
mv file1.txt file2.txt |
De toevoeging āl zorgt ervoor dat het systeem vraagt of je āfile2ā wilt overschrijven (veiliger):
mv -l file1.txt file2.txt |
locate
Met de “locate” functie kun je snel naar bestanden zoeken. Zoek je b.v. een bestand dat “skyrocket” heet dan gebruik je:
locate skyrocket |
Linux updaten (en opschonen)
Net als elk OS moet ook Linux up-to-date blijven. Dit betekend dat updates periodiek geĆÆnstalleerd moeten worden. Linux doet dit niet automatisch en hiervoor kun je prima Bash gebruiken. Onderstaande voorbeeld is voor āAPTā systemen. Linux servers zijn meestal āRPMā gebaseerde systemen en hoewel het idee identiek is zijn de commandoās net iets anders.
We kennen in Linux grofweg 3 update commandoās:
update
Update de lijst met beschikbare updates (pakketjes en versies)
upgrade
Installeert nieuwere versies van de reeds bestaande applicaties en pakketten. Bestaande pakketten worden hiermee nooit verwijderd.
dist-upgrade
Dit commando is een aanvulling van het “upgrade” commando. “dist-upgrade” gaat op intelligente wijze om met veranderende afhankelijkheden van nieuwe versies, heeft een “slim” conflict resolutie systeem, en “dist-upgrade” zal proberen de belangrijkste software en pakketten te upgraden ook als dit ten koste gaat van de minder belangrijke software en pakketten. Het “dist-upgrade” commando kan soms pakketten toevoegen en verwijderen. ādist-upgradeā zal dus in staat zijn om de kernel te updaten terwijl āupgradeā dit niet kan. Er is nog een commando (nieuwer) welke dezelfde functie heeft als ādist-upgradeā maar qua naamgeving de lading beter dekt. Dit is āfull-upgradeā
Zoals al eerder gezegd voeren we de updates uit middels apt-get. De apt-get functie wordt later verder besproken. Om updates uit te voeren moet je de update commandoās uitvoeren als super user. De complete commandoās zien er dan als volgt uit.
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade |
Het wordt ook aangeraden om de commandoās in deze volgorde uit te voeren. Het is in ieder geval zaak om altijd eerst de āupdateā uit te voeren en vervolgens de āupgradeā zodat het systeem weet welke pakketten geupgrade moeten worden.
Echter alvorens deze commandoās naar behoren te laten werken moet het systeem weten uit welke bron de pakketten gehaald en vergeleken moeten worden. Deze bron geef je op in het āsources.listā bestand. Dit bestand staat hier: ā/etc/apt/sources.listā.
Om de juiste sources (repositories) te vinden moet je weten welke versie van Linux je hebt. Dit doe b.v. door het commando uit āLinux Shell Enzo ā Deel 2ā te gebruiken:
cat /etc/*-release
In bovenstaande voorbeeld is mijn versie āLinux Kali Rollingā. Een simpele Google zoekopdracht resulteert in de volgende pagina waar de juiste resources vermeld staan.
Open het bestand ā/etc/apt/sources.listā en vul hier (indien dit niet zo is) de juiste repositories in.
Nu de repositories correct zijn kunnen we het systeem updaten. Dit kunnen we door bovenstaande commandoās separaat uit te voeren of door deze te bundelen in onderstaande commando. Let op de “-y” toevoeging waarmee voorkomen wordt dat het systeem steeds om bevestiging vraagt.
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y |
Ook is het aan te raden om voor het updaten alle reeds gedownloade archieven te verwijderen zodat er geen oude installatie pakketjes meer zijn en om ruimte op te schonen. Je kunt eventueel overwegen om ook alle ongebruikte pakketten (packages) te verwijderen. Dit doen we middels de volgende commandoās:
Verwijder gedownloade archiefbestanden:
sudo apt-get clean |
Verwijder alleen oude gedownloade archiefbestanden:
sudo apt-get autoclean |
Verwijder alle ongebruikte packages:
sudo apt-get autoremove |
Tenslotte is het aan te raden om alle pakket afhankelijkheden (dependencies) te controleren voor het updaten. Dit doen we met:
sudo apt-get check |
Om het verhaal compleet te maken is mijn favoriete upgrade commando als volgt:
sudo apt-get check && sudo apt-get autoclean && sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y |
*als er tijdens het updaten van Linux niet specifiek om een reboot gevraagd wordt dan is die niet nodig. Uiteraard mag Linux altijd even gereboot worden (kan helemaal geen kwaad) maar zonder vraag is het rebooten niet noodzakelijk en kan er gewoon doorgewerkt worden.
Op naar deel 4
Na het 3e deel hoop ik dat het werken met Bash een stuk minder eng is geworden en dat je ziet dat de Linux Shell een krachtige tool is om snel diverse werkzaamheden uit te voeren. In āLinux ā Shell enzo⦠deel 4ā gaan we werken met bestanden en geven we een snelle overview van de Linux editors. Ook zullen we kijken naar de archieffunctie ātarā. Tot deel 4!





