Terminal

Door Mar2zz op vrijdag 25 maart 2011 11:39 - Reacties (17)
Categorie: Headless onderhoud, Views: 4.969

Ik bedacht me laatst dat ik tegenwoordig ontzettend veel doe met de terminal, ook op mijn desktop-linux machines. Raar eigenlijk, want daar zit gewoon bestandsbeheer/verkenner/programma's en dergelijke op, dus de terminal lijkt dan omslachtiger om dingen te doen.

Bij een headless server, of bijvoorbeeld XBMC Live, heb je niet direct zulke programma's tot je beschikking, en wordt je min of meer gedwongen om zaken via ssh te regelen. De terminal is dan ineens een must-have beheertool.

Ik weet ook nog dat ik altijd, toen ik nog Windows gebruiker was, dacht dat Linux enorm complex was omdat in elk forum voor linux-troubleshooting er commands voor de terminal gespammed worden. Daarnaast vond ik het ouderwets om een "Dos-like" schermpje erbij te pakken en een grote tekortkoming in Linux dat dat zo vaak nodig lijkt te zijn.

Nu ik al tijden linux gebruik, en helemaal sinds ik veel remote-beheer doe, dus via de terminal, van mijn xbmc-live machine, ben ik helemaal terminaltijger geworden. Voor het minste of geringste pak ik de terminal. Als je er goed mee overweg kunt gaan is de terminal snel, betrouwbaar en makkelijk. Het is overigens wel makkelijk als je goed kunt onthouden. Er zijn ontzettend veel commando's. In het begin moet je daar nog vaak voor googlen, maar er zijn ook genoeg manieren om in de terminal antwoorden te vinden over wat je moet/kunt doen, zolang je het commando maar kent voor wat je wilt uitvoeren.

Ik ga hier een blog van maken voor terminalbeginners. Ik ga de meest gebruikte commando's bij langs en leg uit hoe je iets over een commando kunt leren en hoe je het moet gebruiken. Ook geef ik een korte uitleg hoe je acties die je vaak uitvoert kunt automatiseren met scripts of cronjobs.

Midnight Commander
Wat waarschijnlijk het meest gebeurt in de terminal is bestandsbeheertaken. Hiervoor gebruik je op desktops de verkenner of finder of nautilus, of een dualpane commander zoals Total Commander of Gnome Commander. Voor de terminal is er ook zo een programma, Midnight Commander. Deze kun je installeren met 'sudo apt-get install mc' en vervolgens starten met mc (of sudo mc als je ook in mappen wilt waar je root-acces voor nodig hebt).

Dit programma vereenvoudigt simpele taken zoals kopieren/verplaatsen/hernoemen etc. Het oogt wat spartaans, en dat is het ook. Maar er zit een help-functie bij, de muis werkt er gewoon in en het is goed aan te passen voor geavanceerd gebruik (reguliere expressies zijn bijvoorbeeld mogelijk). Ik gebruik het zelf heel basic, voor als ik veel bestanden ineens wil verplaatsen ofzo. Meerdere bestanden selecteren doe je met Insert. Ze worden dan geel. Het doel bij een doe-naar-locatie-actie is altijd het andere venster.

mc

Veelgebruikte acties
Voor het hernoemen/verplaatsen/rechten etc van bestanden is de terminal een makkelijke tool. Deze zaken kunnen overigens ook via desktopverkenners gedaan worden, als die er maar bij kunnen via SSH of samba bijvoorbeeld.

Voor elke commando geld dat deze ook met sudo uitgevoerd kan worden indien nodig en sommige zullen zelfs met sudo moeten.

In de terminal kun je een beknopte uitleg krijgen door 'commando --help' te typen, bijvoorbeeld 'mkdir --help'. Als hier niet genoeg uitleg staat kan ook 'man commando' of 'info commando' getypt worden, dus 'man mkdir' of 'info mkdir'. Je komt dan op een uitgebreide pagina, de manual als het ware, van dat commando. Daar kom je weer uit door Q (=quit) te typen.

Ik gebruik nog wel eens -f (=forceren) of -i (=interactive) om zaken uit te voeren, zodat de terminal gewoon dom uitvoert ook al moet ie overschrijven (-f) of juist voor alles toestemming vraagt (-i).

Bestandsoperaties:
  • ls = inhoud map -> ls of ls -l (uitgebreider met rechteninfo) of ls -a (of -al) om alle bestanden, dus ook verborgen bestanden te tonen.
  • cp = copy/rename -> cp bronbestand doelbestand of cp -R bronmap doelmap
  • mv = move/rename-> mv bronbestand doelbestand of mv bronmap doelmap
  • rm = remove/verwijderen -> rm bestand of rm -R map
  • mkdir = map aanmaken -> mkdir map of mkdir -p /pad/naar/map
  • touch = bestand aanmaken -> touch bestandsnaam
Rechtenkwesties
Hierover is heel veel te vinden op internet. Linux is streng en strict en vooral als beginner loop je vaak tegen rechtenproblemen aan. Dit is vanwege veiligheid, en doordat het zo streng is is het juist enorm flexibel, omdat je heel gedetailleerd rechten kan zetten op elk bestand of map.

Helaas zijn er veel te veel posts op internet die direct 'sudo chmod 777 of sudo chmod 0777' bestand adviseren. Dit is vaak prima om daarmee een eventueel rechtenprobleem uit te sluiten als je er echt niet uitkomt, maar dit is bijna nooit een oplossing! Door deze chmod uit te voeren geef je alles en iedereen het recht om het bestand of de map waar je deze in uitvoert te lezen/muteren en uit te voeren. 755 of 0755 is meestal al wel een oplossing.

Er zijn twee rechtentools die veel gebruikt worden, chmod en chown.

Deze tools zijn ontzettend belangrijk, en moeten voorzichtig gebruikt worden. Het gebruik ervan is niet heel complex, maar verkeerd gebruik houd nogal wat risico's in. Omdat ze standaard als root (dus met sudo) uitgevoerd moeten worden kun je je hele systeem ermee in de soep draaien of onveilig maken.

Voor chmod zijn er twee manieren om te gebruiken, de octale (met nummers) of de symbolische (met letters) commando's. Ik vind zelf de symbolische makkelijker om te onthouden, omdat deze letters de 1 letter zijn van hun functie.

Een beknopt overzicht (hier meer).
  • r = read
  • w = write
  • x = execute
  • - is rechten weghalen
  • + rechten toevoegen
Met 'ls -l zie je een overzicht van de rechten op bestanden en mappen in je directory. Stel dat je een bestand download dat je volgens de website moet uitvoeren, dan is het niet direct uitvoerbaar, je moet het dan uitvoerbaar (=executable) maken. In principe kan je dit met elk tekstbestand doen. Als daar valide code instaat dan kun je dat uit laten voeren (=de basis van scripting). Een simpel 'sudo chmod +x bestandsnaam' is dan voldoende.

Stel dat je een bestand niet kunt lezen en bewerken en daarna wilt uitvoeren, maar die rechten nog niet aanwezig zijn. Dan kun je 'sudo chmod +rwx bestandsnaam' doen.

Stel dat je de eigenaar wilt worden van een bestand, dan kun je chownen (=change owner). Doe dan 'sudo chown usernaam:groepsnaam bestandsnaam'.

Op multi-usersystemen, of in combinatie met samba en netwerkbeheer zijn deze tools ontzettend nuttig en onmisbaar. Let wel, chmod en chown heb je nauwelijks nodig als je lekker in je eigen homefolder blijft. Probeer daar zoveel mogelijk zaken af te handelen/plaatsen en dergelijke. Niemand kan in je homefolder kijken, behalve jij en de beheerder. Dit zou je aan kunnen passen, maar waarom zou je? In home staat je configuratie van veel programma's en alles. In veel configbestanden worden ook usernames en alles opgeslagen. Daar moet niemand in kunnen lezen/prutsen.

Navigatie
Navigeren in de terminal is typen. Toch is ook daar aan gedacht. De terminal heeft bijvoorbeeld autocompletion voor locaties. Typ bijvoorbeeld /v en dan de tabtoets. De terminal zal er dan /var van maken. Dat is erg makkelijk als je ingewikkelde mapnamen hebt met wisselend hoofdletters en kleine letters, zoals ./sickbeard/autoProcessTV/autoProcessTV.cfg.

Let er ook op dat Linux hoofdlettergevoelig is. In een map kunnen meerdere mappen staan die test heten, bijvoorbeeld Test, test, tEst, TESt etc etc. Commando's zoals mv en cp letten daar ook op. Hiermee zou makkelijk dus iets fout kunnen gaan, dat je bijvoorbeeld perongeluk iets hernoemt terwijl je het alleen maar wilt kopieren, maar dat je een hoofdletter vergeet ofzo. Of dat je krijgt bestand niet gevonden, terwijl je zeker weet dat ie bestaat, maar dus net een letter groot waar jij hem klein dacht.

Waar je als linuxgebruiker ook niet dol op gaat zijn is mappen of bestanden met spaties. Let erop dat je bij commando's bij bestanden of mappen met spaties die namen altijd tussen aanhalingstekens zet, "bestand heet zo" of de spaties escapet. Escapen houdt in dat de spatie als onderdeel van de bestandsnaam wordt gelezen en niet als spatie tussen commando's in. Escapen kan met een backslash. Dus bestand\ heet\ zo. Aparte tekens moeten ook escaped worden met een backslash (bijvoorbeeld &, of ').

cd is een commando waarmee tussen mappen kunt navigeren. Gewoon cd typen gevolgd door enter zet je altijd terug in je homedirectory, dus /home/username/.
In een lijst:
  • cd brengt je naar je eigen homefolder
  • cd / brengt je naar de root van de bestandssysteem.
  • cd /pad/naar/map naar een map gelezen van de root.
  • cd map of cd pad/naar/map naar een submap van de map waar je in staat
  • cd .. brengt je 1 map terug
Als je in 2 directory's tegelijk werkt, of heel veel switched, dan kun je pushd gebruiken. Typ pushd /pad/naar/map terwijl je in de map staat waarmee je switchen. hierna kom je in de nieuwe map, maar als je dan weer pushd typt dan wordt je weer teruggeswitched. Dit kun je blijven herhalen tot je een nieuwe pushd opgeeft.

Commando's blijven overigens bewaard (ook in je homefolder in het bestand .bash_history). Zojuist uitgevoerde commando's in de terminal kun je terughalen met pijltoets naar boven/onder.

Scripts
Als je erachter komt dat je een bepaald commando, of reeks commando's vaak herhaalt, dan kun je ze scripten, zodat je niet meer alles hoeft te typen, maar alleen het script uit te voeren.

Deze kan je heel simpel maken door een nieuw tekstbestand te maken (typ editor bestandsnaam in ternmal) en zet op de eerste regel #!/usr/bin/env bash
Daaronder kun je je commando's opschrijven, 1 commando per regel, en doe && achter een regel als je zeker wilt weten dat de volgende regel pas start als het commando ervoor goed is gegaan.

Bijvoorbeeld dagelijks alle afbeeldingen naar je nas kopieren dan die map leegmaken, een script genaamd afbeeldingen_backuppen:
#!/usr/bin/env bash
cp -Rf /home/username/Afbeeldingen/* //NAS/Backup/Afbeeldingen &&
rm -Rf /home/username/Afbeeldingen/*

Deze maak je dus executable met sudo chmod +x afbeeldingen_backuppen en deze voer je vervolgens uit door ./afbeeldingen_backuppen te typen.

Cronjobs
Nog makkelijker is om die afbeeldingen automatisch te backuppen, vooral als je er achter komt dat je eigenlijk wel een script wil schrijven om afbeeldingen_backuppen dan weer uit te voeren omdat het zoveel typwerk is (een script genaamt ab is natuurlijk ook gewoon mogelijk :) )

Voor cronjobs toevoegen typ je crontab -e. De eerste keer moet je dan nog een editor kiezen, maar dan krijg je een file waarmee je taken kunt plannen.

Hoe dit moet staat hier. Ik ben zelf fan van de @blahblah operators. Ik wil bijvoorbeeld elke week mijn afbeeldingen backuppen met het script wat ik ervoor geschreven heb.
Dus crontab -e en dan typ ik daarin: @weekly ./home/mars/afbeeldingen_backuppen
Afsluiten met ctrl+x en dan y en ik heb er geen omkijken meer naar.

Zoals op de wikipediapagina is te zien kan je tot op de minuut nauwkeurig specificeren wanneer iets moet plaatsvinden. Cronjobs zijn daarom ontzettend handig en bijzonder prettig en flexibel in gebruik. Ik denk dan ook dat Cron vast afstamt van zoiets als Cronicum wat zoiets betekent als: Handig man, had ik eerder moeten doen...

Editors
In linux kun je zo een beetje alle bestanden bekijken/aanpassen, de meeste zijn gewoon opgebouwd uit tekst/code. Dat betekent dus ook dat je , als je weet wat je doet, kunt customizen tot op de komma.

Standaard komt Ubuntu met nano als default editor. (typ editor in de terminal om te zien welke standaard staat ingesteld). Een bestand aanpassen in de terminal is dan ook simpel het commando editor bestandsnaam. Of, editornaam bestandsnaam, bijvoorbeeld nano bestandsnaam of vi bestandsnaam.

Als je voor het eerst de crontab opent dan moet je ook een editor kiezen. Daar staat bij dat nano het makkelijkst is. Ik vind dat ook, want ik snap vi helemaal niet en heb me er ook nooit in verdiept omdat ik met nano mijn weg kan vinden. Toch zijn er ontzettend veel vi-fans in linuxland. Wellicht is dit van oudsher, vi was vroeger de standaard editor.

Nano heeft bij mij dus de voorkeur. Ik hoor dan ook graag van Vi liefhebbers waarom Vi veel beter is. Ik heb de vergelijking nooit kunnen maken omdat ik Vi dus echt helemaal niet snap. Wat in ieder geval prettig is dat de editors codekleur ondersteunen. Dit houdt in dat er, als je een script schrijft, dat commando's en dergelijke een aparte kleur krijgen. Hierdoor wordt ook zichtbaar dat je bijvoorbeeld sluitende haakjes of aanhalingstekens ofzo vergeet, wat ervoor zorgt dat je je later niet rot hoeft te zoeken waar je dat nou precies vergeten bent.. Hier een voorbeeld van nano in een script waarbij de kleuren vertellen aan de scripter wat de status is van tekst. Deze tekst komt uit mijn spotwebinstaller.
Nano met kleuren

Afsluiting
Ik ben vast iets vergeten. Zo ja, dan komt dat waarschijnlijk omdat terminal gebruik op een gegeven moment helemaal vanzelf gaat. Het werkt natuurlijk helemaal niet intuitief in den beginne, want je moet al die commando's leren en dergelijke, maar als je een poosje de terminal moet gebruiken dan slijten ze er vanzelf in. En dan wordt het bijna een tweede natuur.

Dan is er nog midnight commander, wat heel handig is, maar midnight commander starten en dan met de muis of pijltjes/tab navigeren en dergelijke kost tijd, het meeste wat je wilt doen gaat sneller door lekker van je af te typen in dat zwarte scherm (wat overigens niet perse zwart moet zijn.

De terminal geeft ook een leuke indruk als je iets moet fixen terwijl er iemand mee staat te kijken. Je bent gelijk de nerd alias digitale superheld van veel mensen. Terwijl de basis heel simpel is, makkelijk te leren en dergelijke. Een aap kan vast ook nog wel commando's leren typen van 2 letters. Dit hoef je er niet bij te zeggen. Ram er een paar keer ls -l door en wget een willekeurige website zodat ie lekker vanzelf wat aan het scrollen gaat en wellicht kun je dan een 10 euro meer per uur vragen als je pc van de buurman aan het fixen bent.

Volgende: Conky 04-'11 Conky
Volgende: Spotweb 02-'11 Spotweb

Reacties


Door Tweakers user -RetroX-, vrijdag 25 maart 2011 14:14

Leuke post.
Ik ben vast iets vergeten.
Bij de cronjobs en scripts noem je het al even maar verder ga je eraan voorbij: editors!

:D

[Reactie gewijzigd op vrijdag 25 maart 2011 14:50]


Door Tweakers user BillsGate, vrijdag 25 maart 2011 14:33

Mwa, een complete alinea gaat over MC, waarin een hele krachtige editor zit.

Goed artikel!

Door Tweakers user Sgreehder, vrijdag 25 maart 2011 14:49

Hmm, dit was altijd wel aardig in DOS, met Norton Commander. Maarja, dat is inmiddels meer dan 15 jaar geleden. De GUI is inmiddels redelijk ontwikkeld en eerlijk gezegd moet een modern desktop OS niet meer (deels) afhankelijk zijn van een CLI.

Door Tweakers user Cyphax, vrijdag 25 maart 2011 14:52

Tja, de terminal... veel krachtiger ga je het niet krijgen op een unix(-achtige). Sneltoetsen en werken met je toetsenbord is ook efficiŽnter dan muizen, en drie keer raden waar cli-applicaties voor zijn geoptimaliseerd. Je moet iets meer tijd steken in het leren werken ermee, maar als je eraan bent gewend kun je erg veel erg snel.

Je kunt in mc ook goed typen trouwens. cd <directory> werkt prima.

Door Tweakers user -RetroX-, vrijdag 25 maart 2011 14:58

Iemand die DOS wel kent en voor het eerst in de terminal werk (je legt ls uit dus we gaan uit van beginners) en die vi gebruikt loopt vlot vast. Wie verzint nu uit zichzelf: [ESC] : q ! [ENTER] om af te sluiten....

vi shortcuts

Door Tweakers user Mar2zz, vrijdag 25 maart 2011 14:59

Teksteditors toegevoegd.

@Sgreehder: Het is dus optioneel om de terminal te gebruiken. Net zoals je in windows via deze computer eigenschappen beheer naar services kunt gaan vond ik het daar ook altijd makkelijker om services.msc in Uitvoeren te typen om daar te komen (of msconfig bijvoorbeeld). Het ligt er dus maar net aan waar je voorkeur ligt, mousedriven of keyboarddriven beheer. En als het bij het keyboard ligt dan is de terminal ontzettend makkelijk.

Overigens, microsoft brengt nog steeds updates uit voor zijn CMD waar ze dan ook nieuwe functies aan toevoegen. Ook de windowsgebruiker kan veel voordeel halen met het gebruik van batchscripts (gezien het succes van autohotkey enzo).

Door Tweakers user sfranken, vrijdag 25 maart 2011 15:59

chmod en chown moeten helemaal niet met sudo worden uitgevoerd. Zolang jij rechten hebt op wat je witl chmodden/chownen niet dan he

Door Tweakers user Cyphax, vrijdag 25 maart 2011 16:04

-RetroX- schreef op vrijdag 25 maart 2011 @ 14:58:
Iemand die DOS wel kent en voor het eerst in de terminal werk (je legt ls uit dus we gaan uit van beginners) en die vi gebruikt loopt vlot vast. Wie verzint nu uit zichzelf: [ESC] : q ! [ENTER] om af te sluiten....

vi shortcuts
Dat heeft niets met de terminal te maken, da's gewoon VI(M). VI werkt erg goed over lijntjes met beperkte bandbreedte, daar is het dacht ik voor ontworpen. :)

Door Tweakers user -RetroX-, vrijdag 25 maart 2011 16:11

Cyphax schreef op vrijdag 25 maart 2011 @ 16:04:
[...]
Dat heeft niets met de terminal te maken, da's gewoon VI(M).
DŻh.
Maar even ontopic: Welke editor zou jij aanraden voor first-time CLI users?

Door Tweakers user Mar2zz, vrijdag 25 maart 2011 16:13

sfranken schreef op vrijdag 25 maart 2011 @ 15:59:
chmod en chown moeten helemaal niet met sudo worden uitgevoerd. Zolang jij rechten hebt op wat je witl chmodden/chownen niet dan he
Bij chown is wel sudo nodig bij een default gebruiker.

Bovendien maakt het niet uit wie het chmod, jij of root, dus kan je net zo goed sudo doen, de uitkomst is hetzelfde. Voor beginners is het dus makkelijker (en omdat het niet uitmaakt voor iedereen) om sudo chown of sudo chmod als 1 commando te leren. Het is alleen 'nodig' als je niet mag rooten maar wel bestanden wilt aanpassen qua rechten.

Er zijn ook commando's (creationele) waarbij de uitkomst wel beinvloed wordt door sudogebruik (zoals touch en sudo touch) waar bij de laatste root eigenaar zal zijn van het bestand).

Door Tweakers user C-dude, vrijdag 25 maart 2011 16:46

-RetroX- schreef op vrijdag 25 maart 2011 @ 16:11:
[...]

DŻh.
Maar even ontopic: Welke editor zou jij aanraden voor first-time CLI users?
Nano :)

Door Tweakers user Haijo, vrijdag 25 maart 2011 19:47

Nog een tip: Terminator, dan kun je meerdere terminals naast/onder elkaar draaien. Erg handig als je bestanden tussen meerdere systemen moet overzetten of iets dergelijks.

Door Tweakers user SA007, vrijdag 25 maart 2011 22:41

Het is ook een sterk voordeel om de opbouw van linux (en zeer zeker ook de terminal) te begrijpen.
In principe is alles gebouwd om 1 specifieke taak helemaal te doen en door die dingen te combineren kan je dan heel erg complexe dingen doen.

Bijv:
wc: Kan alleen tellen, karakters, woorden of regels.
grep: Filtert alleen tekst op een bepaalde tekst of expessie
tail: Laat alleen de laatste regels zien.
head: net als tail voor de eerste
sort: doet alleen tekst sorteren
enz.

Alleen de combinatie van die dingen kan je simpel heel krachtige dingen mee doen.
Voorbeeld:
Maak van de 10 grootste (qua bestandsformaat) jpg's een tar.gz file:
ls -S | head | xargs tar -czf grootste.tar.gz

ln -S -> maak een lijst van bestanden gesorteerd op grootte
head -> pak de bovenste (standaardaantal is 10)
xargs -> pak alle invoer, zet het achter elkaar en voer het achterstaande commando uit
tar -czf <file> <bestanden> -> creeer een tar.gzip met filename <file> met als inhoud <bestanden>

| is overigens een speciaal teken, het sluisteken en het sluist de uitvoer van door naar de invoer van een volgend programma.

Door Tweakers user Rowdy.nl, zaterdag 26 maart 2011 11:41

Wat ik persoonlijk ook erg veel gebruik is GNU Screen. Hiermee kun je in je terminal via SHH gaan werken, en mocht de verbinding verbreken, of je wilt gewoon later door gaan kun je die sessie via een nieuwe/andere verbinding weer oppikken. Of als je eerst remote hebt zitten werken kun je de sessie waar je aan bezig was weer oppikken op je desktop. Ik gebruik dit vaak als ik grote updates draai, dan hobbelt dat gewoon lekker door.
Sgreehder schreef op vrijdag 25 maart 2011 @ 14:49:
Hmm, dit was altijd wel aardig in DOS, met Norton Commander. Maarja, dat is inmiddels meer dan 15 jaar geleden. De GUI is inmiddels redelijk ontwikkeld en eerlijk gezegd moet een modern desktop OS niet meer (deels) afhankelijk zijn van een CLI.
Zoals TS al aangeeft; voor het beheren van een (headless) server is dit ideaal... Zelfs MS realiseert dit; gezien hun powershell.

Overigens en ik het niet geheel met je eens; ik grijp redelijk vaak terug op de command prompt in WIndows. Ik kan bepaalde zaken veel sneller doen of opzoeken met de command prompt dan door tig schermen heen te worstelen. (bijvoorbeeld je IP adres opzoeken)

Door Tweakers user Firestone, zaterdag 26 maart 2011 11:45

Vi(m) heeft inderdaad een hoge moeilijkheidsgraad, maar zodra je er een beetje bekend mee bent werkt het echt heel intuÔtief en efficiŽnt. Dat lijkt in het begin niet zo omdat je anders gewend bent. Kijk maar naar het simpel alledaags gebruik van een editor al; de veelal gewende shortcuts ctrl-x, ctrl-c en ctrl-v staan amper in relatie met hun functie, waarbij enkel bij ctrl-c aan copy gedacht kan worden. In Vi(m) staan deze functies onder "d", "y" en "p", van delete, yank en paste. Wil je het enkel bij het volgende woord toepassen, is het "dw" of "yw". Wil je twee woorden, dan is het "2dw" en "2wy". Wil je dat 5 keer plakken, dan doe je "5p".
Om uiteindelijk te saven, doe je ":w", van write en sluit je het af met ":q" van quit.
Natuurlijk is niet alles zo makkelijk, en ik zou het ook niet aanraden voor beginners, maar een groot deel is gewenning. Uiteindelijk werk je veel sneller en gemakkelijker.
Dit is trouwens maar ťťn reden waarom ik het gebruik. Een andere is dat er echt heel veel mee kan.

En nog iets wat je niet kan missen bij het gebruik met een terminal: ctrl-r ;)

Door Tweakers user Mar2zz, zondag 27 maart 2011 17:36

Hehe ctrl-r kende ik nog niet, beste optie. Dit wordt 1 van mijn meest gebruikte vanaf nu.

Als je vim zo omschrijft, d,y,p voor iets wat zo ontzettend is ingeburgerd als ctrl-v, ctrl-c en de delete-toets dan gaat vim een stille dood sterven. Ik kan me bijna niet voorstellen dat een 'nieuwe' linuxgebruiker dat fijn gaat leren vinden...

@SA007: Wat jij allemaal noemt is geavanceerd terminalgebruik. Ik gebruik dat veel in bashscripts, vooral die pipes om te controleren of iets wel of niet goed gaat (grep voor bepaalde te verwachten outputs in if-statements bijvoorbeeld, zodat je op basis van output volgende actie uit kan scripten).

Gewoon los in de terminal gebruik ik commando's toch vaak 1 voor 1, omdat ik dan zelf de output in de gaten kan houden (is ook leerzaam daar gewoon naar te loeren).

Bijvoorbeeld sed, is ook zoiets, tekst in bestanden aanpassen zonder ze te openen, als je precies weet wat je doet natuurlijk heel makkelijk, scheelt veel gedoe met nano enzo, helemaal als je heul veul van 't zelfde wilt vervangen in 1 bestand.

Door Tweakers user MtC, maandag 28 maart 2011 12:08

VIM heeft als grote voordeel imho de macros en plugins. Je kan van VIM perfect een zeer goede IDE maken voor development, inclusief versioning control. Je .vimrc ziet er dan wel ietsje uitgebreider uit dan de standaard:

let g:snips_author='mtc'
set t_Co=256
"let g:zenburn_high_Contrast=1
"colors zenburn
colors ir_black
set ai
set si
set ts=2
set sw=4
set sm
set vb t_vb=
set ru
set nohls
set is
set title
if has("autocmd")
" Drupal *.module and *.install files.
augroup module
autocmd BufRead,BufNewFile *.module set filetype=php
autocmd BufRead,BufNewFile *.install set filetype=php
autocmd BufRead,BufNewFile *.test set filetype=php
augroup END
endif
syntax on
"set bk
"set bdir=.
"set bex=.vib
filetype on
filetype plugin on
filetype indent on
set ofu=syntaxcomplete#Complete
set foldexpr=getline(v:lnum)=~'^\\(\\s\\+\\)\\?#'
set foldmethod=expr
set laststatus=2
set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c
function! CurDir()
let curdir = substitute(getcwd(), '/home/martijn', "~", "g")
return curdir
endfunction
set wildmenu
set cmdheight=2
map <F12> :bn<cr>
map <F10> :edit!<cr>
set number
set foldcolumn=3

Daarnaast ben ik een fervent gebruiker van zsh ipv bash als shell. Je hebt (met een goede) .zshrc een zeer performante shell. Tik je bvb "kill -Kill " en druk je op op de tab-toets, dan krijg je een process tree waar je doorheen kan bladeren. Bespaart weer tijd tov "ps ax | grep [process]" enter "kill -9 [processid]".

Commandos combineren kan ook leuke resultaten opleveren:

diff --left-column --side-by-side --suppress-common-lines --ignore-all-space --ignore-space-change <(sed -r 's/\s+/;/g' ch64.txt | cut -d";" -f1,5 | sed -r 's/;/\t\t/g' | sort) <(sed -r 's/\s+/;/g' ch.txt | cut -d";" -f1,5 | sed -r 's/;/\t\t/g' | sort)

Reageren is niet meer mogelijk