31/12/2004

Les altres opcions del ls

Escrit per adriA

Possiblement l’acció que més sovint fem quan treballem en Unix és llistar els continguts d’un directori. Els usuaris novells aprenen a fer servir la utilitat ls per explorar l’arbre de fitxers. De seguida, descobreixen les opcions “-l", per obtenir informació detallada sobre els fitxers continguts en un directori , i “-a", per destapar els fitxers i directoris ocults que sovint en Unix contenen la configuració d’alguns programes.

Els programes i utilitats de què disposem quan treballem a la línia de comanes acostumen a tenir moltes opcions que sovint són difícils de recordar (per algun motiu escric aquest bloc ;-) . Més que obsessionar-se a intentar aprendre quantes més opcions millor en fred, sense una motivació concreta, és més productiu identificar una acció que fem sovint, o que ens agradaria fer però que no sabem com es fa, i què pensem que es podria automatizar o fer de manera més òptima, i llavors buscar al manual (e.a.d, man) les combinacions d’opcions que ens calen. Amb el temps, tothom acaba desenvolupant un estil propi, una col·lecció personal d’opcions que acabem fent servir sense haver de pensar, que ens fan moure els dits quan treballem al teclat d’una màquina Unix de la mateixa manera que les paraules ens brollen de la boca quan parlem.

Per al ls, les opcions que formen part de la meva col·lecció particular, les que acabo recordant i fent servir sovint són les següents:

  • “-la”: Com ja he dit abans, aquestes dues opcions serveixen per obtenir informació detallada sobre els fitxers continguts en un directori i per mostrar els fitxers ocults, que en Unix tenen noms que comencen per un punt.
  • “-lhS”: La “h” ens donarà la mida dels fitxers en unitats de kilobytes, megues, gigues etc, enlloc de bytes a pèl, i la “S” ens les ordenarà de més gran a més petit. Aquest combinació d’opcions és molt útil quan em cal fer lloc en un sistema de fitxers i estic buscant quins fitxers eliminar
  • “-u”: Per trobar els fitxers que hem obert (accedit) recentment. Molt útil la combinació “-ltu” per mostrar i llistar per data d’accés.
  • “-ltr”: Per obtenir un llistat ordenat cronològicament, amb els fitxers més recents al final. Sovint, el llistat de fitxers que ens dóna el ls és massa llarg perquè es vegi sencer al terminal. Per aquests casos acostumem a passar la sortida del ls a un visualitzador (less, more, el que sigui) a través d’un pipe. A vegades però només estem interessats en veure el principi del llistat, per exemple si les hem ordenat amb “-t” o “-hS". Per aquests casos, ens podem estalviar el pipe i el visualitzador fent servir l’opció “-r".
  • “-X”: Ordena el llistat en ordre alfabètic segons les extensions dels fitxers. Personalment, trobo aquesta opció molt útil quan busco coses a la partició del disc on tinc instal·lat el Windows.
  • “-F”:Afegeix un indicador al principi o final del noms del llistat per indicar si es tracta de directoris(/), links simbòlics (@), executables (*), etc. Hi ha qui converteix el ls en un alias a ls -F –color=auto perquè a més a més dels indicadors faci servir un codi de color per cada tipus d’entrada. A mi, personalment, el colors més aviat em molesten i només només tinc l’alias amb l’opció -F.

12/12/2004

Primers passos amb el vi

Escrit per adriA

Després de la presentació del vi que vaig fer al darrer post, avui entraré una mica més en materia. Aquest post l’escric per a la gent nova al unix que vingui a petar a aquest weblog. En els propers posts intentaré ser més fidel a l’objectiu d’aquest weblog, i els posts els escriuré més per a mi , perquè em serveixi de repositori de tècniques que estic fent servir ara però que si deixo d’utilitzar durant mesos pot ser que se m’oblidin. Anem per feina.

Un editor modal

El vi és un editor modal. Una paraulota que només indica que l’editor interpreta de manera diferent les tecles premudes depenent del mode d’edició en què es treballa. Bàsicament el vi té 2 modes diferents. En el mode inserir (el mode d’entrada de text) el fem servir precisament per això, per escriure text. En mode comana (o mode línia - line mode), en canvi, podem fer cerques, eliminar text, copiar i enganxar, moure’ns rapidament pel text, etc. L’avantatge de tenir 2 modes diferenciats per les comanes i per escriure és la facilitat i rapidesa amb que es poden entrar moltes comanes una darrera l’altra. D’aquesta manera podem fer tasques repetitives, que trenquen el flux normal d’escriptura i pensament, d’una manera rapidíssima.

Escriure

El millor que es pot fer quan es llegeix documentació sobre programes informàtics i, més encara si volem aprendre a fer anar un editor de textos, és tenir-los a punt per experimentar mentre llegim. La manera més senzilla d’invocar el vi és des d’un shell amb

$ vi nomfitxer

o millor encara,

$ vim nomfitxer

Si no indiquem el contrari amb opcions passades en invocar el vi, l’editor comença en mode comana. Per començar a escriure premem la tecla “i". Així passem al mode d’inserció de text i podem començar a escriure just davant del caràcter on tenim el cursor. En la majoria de varietats de vi, incloent-hi el vim, quan es treball en mode inserir veureu que a la cantonada esquerra del terminal hi diu “– INSERT –". Sempre que volguem tornar al mode comana farem servir la tecla ESC (la tecla que es troba a la cantonada esquerra superior del teclat). Per deixar el mode comana i començar a escriure ho podem fer utilitzant diverses comanes que mouen el cursor a posicions diferents del text abans de passar a mode inserir. Així, si volem afegir una línia damunt de la línia on tenim el cursor, farem servir la comana “O” (o majúsucla), mentre que per escriure una línia a sota podem premer “o” (o minúscula). A més a més de la comana “i” (inserir), també podem fer servir la comana “a", per començar a escriure darrera del caràcter on tenim el cursor col·locat.

Canviar el cursor de posició

En mode comana ens podem moure pel text caràcter a caràcter, o línia a línia, fent servir “h” (esquerra), “j” (avall), “k” (amunt) i “l” (dreta). També podem fer servir les fletxes de moviment que inclouen la majoria de teclats moderns per moure’ns pel text, tant si treballem en mode comana o mode inserir. Per moure’ns pel text saltant de paraula en paraula podem fer servir la comana “w” (per avançar) o “b” (per saltar a la paraula anterior). Les comanes “Ctrl-U” i “Ctrl-D” ens mouran mitja pantalla amunt i avall respectivament. En vi podem saltar a una línia concreta del text donant el seu número després del caràcter “:” (així, per saltar des de qualsevol punt del text a la línia 80 fariem servir la comana “:80″). Per ajudar-vos a fer salts d’aquesta manera podeu fer que l’editor us ensenyi el número de cada línia amb la comana “:set num".

Esborrar i moure text

El vim té moltíssimes comanes que ens faciliten moure de posició i esborrar fragments del text. Per eliminar el caràcter sobre el que es troba el cursor tenim la comana “x". Per esborrar una línia sencera farem servir “dd". Les comanes “d$” i “d^” eliminen tots els caràcters que es troben entre la posició actual del cursor i el principi ("d$") i el final de la línia ("d^"). El text eliminat es guarda en un registre per defecte (l’equivalent al porta-papers del windows) i es pot enganxar en una altre punt del text amb les comanes “p” o “P", segons si volem enganxar el text davant o darrera del caràcter on es troba el cursor. Per copiar una línia al registre per defecte, però sense esborrar-la, tenim la comana “yy".

Per a moltes comanes que realitzen un acció sobre el text (eliminar un caràcter, moure el cursor una paraula cap endarrera, etc), podem entrar un nombre immediatament abans de la comana per indicar quantes vegades volem que es repeteixi l’acció. Així, per exemple, si volem avançar el cursor 4 paraules de cop farem servir “4w” i si volem eliminar 5 caràcters entrarem la comana “5x".

Cerques

En mode comana, per cercar paraules, o seqüències de caràcters, entrem la paraula després de “?” (per cercar des de la posició actual del cursor cap al principi del text) o “/"(quan volem cercar cap al final). Per fer cerques i substitucions sobre les paraules trobades es fa servir la comana “s", que tractarem un altre dia en un post dedicat únicament a substitucions i expressions regulars.

Gravar els canvis i sortir

Ens seriviria de poc tenir un editor si no poguéssim desar els canvis introduits en un text. Per gravar la feina feta podem fer servir “:w” (write). Si volem gravar i sortir del vi teclejarem “:wq” (write i després surt quit). Si, en canvi, volem sortir del vi sense gravar les modificacions introduïdes ho indicarem amb “:q!".

Passets seguits de gambades

Tot i que només he passat el rasclet timídament sobre la superfície del potencial del vi, les comanes que he presentat poden fer una mica més planeres les primeres hores de treball amb vi. Encara que ara al principi potser us sembla que editar textos amb vi és com caminar amb crosses, d’aqui a 4 dies, quan tingueu ben apreses aquestes i una dotzena més de comanes, ja veureu que el vi us ajudarà a fer gambades de mig quilometre, i no entendreu com havieu pogut viure fins ara només amb el notepad de windows ;-)

Intentaré acabar els posts amb uns petits resums que combinaré cada cert temps en una “xuleta” actualitzada que aniré republicant al weblog amb una certa freqüencia. Aquí sota hi ha la primera versió.

Resum

Comana Funció
i, a, o, O Entra al mode inserir per escriure text
ESC Passa de mode inserir a mode comana
h, j, k, l Moviments de la posició del cursor caràcter a caràcter
w, b, g, e, ge Moviments de la posició del cursor paraula a paraula
:Ctrl-U, :Ctrl-D
yy Copia la línia al registre per defecte
p, P Enganxa el contingut del registre per defecte
dd Elimina linies senceres (guardant una còpia al registre per defecte)
x Elimina el caràcter
:set nu Mostra número de línia
:w Escriu el text al fitxer
:q Surt del vim
:q! Surt del vim descartant els canvis
/paraula, ?paraula Cerca d’una paraula o seqüència de caràcters en el text. Prement “n” es salta a la següent aparició de la darrera paraula cercada

PD> De moment, no tinc temps de fer un disseny decent per aquest weblog i temporalment he eliminat els comentaris.

9/12/2004

Viscal el pa, visca el vi, visca la mare que et va parir!

Escrit per adriA

Tot i que fa uns anys em semblava que aprenia coses seguint les discussions entre fanàtics dels diversos editors de texts, ara les batalles entre partidaris de l’emacs i el vi més aviat m’avorreixen. En el passat, he fet servir l’emacs, el nedit (que potser encara el recomanaria per aquells usuaris empedreïts de windows que s’estan passat al unix poc convençuts) , el pico i el vi. Si us acabeu d’estrenar en el unix, podeu provar diferents editors per veure quin és el que us agrada més. Personalment, penso, però, que per saber realment si un editor ens anirà bé a mig o llarg termini (és a dir, quan comencem a dominar-lo una mica), cal utilitzar-lo durant uns dies. Per tant, a vegades quan es prova un editor només per un parell d’hores acabem jutjant-lo més pel hàbits que ens venen marcats per l’editor al que estem acostumats (això és claríssim per als usuaris de windows), que per les virtuds de l’editor en si i el possible augment de productivitat que ens ajudarà a assolir. A vegades és útil per triar (o descartar) un editor (en el que segurament acabarem invertint força hores) dedicar uns minuts a llegir algun text introductori que parli de la “filosofia” de funcionament de l’editor (és un editor que requreix l’ús intensiu del ratolí? és configurable i expandible amb les nostres pròpies comanes? facilita la reutilització de les eines del sistema operatiu? etc). Jo us recomano el vi, que és l’editor que utilitzo actualment i del que parlaré més sovint en aquest weblog.

El vi és un editor molf eficient, és a dir que et permet fer molta feina prement unes poques tecles. Tot i que no m’aterviria a dir que és un programa intuitiu, utilitza conceptes senzills i és fàcil de configurar. El vi és present en totes les variants de unix/linux des de fa molts anys i per tant segur que no ens trobarem mai davant d’un shell sense el nostre editor de capçalera. Alguns principiants (sobretot si vénen del windows) es sorprenen quan veuen que el vi no fa servir un punter mogut amb un ratolí, sinó que funciona en mode text dins del terminal, i que totes les comanes consisteixen en combinacions de tecles. Precisament, aquest és un dels seus punts forts. Com que no hem de moure les mans del teclat per fer córrer les barres laterals de la interfície visual, ni per moure’ns per dins dels text amb el mouse, sinó que ens podem moure de manera super eficient prement unes poques tecles, el resultat és que els textos es poden editar molt més ràpid. Treure les mans del teclat per moure el ratolí, a banda de fer-nos perdre temps, també ens força els músculs del coll, el braços i les espatlles, i és sovint una font de lesions i dolors a les mans (el conjut d’afectacions que anglès es coneixen com a RSI), que poden esdevenir malalties cròniques molt difícils de curar. La possiblitat de treballar en mode text també ens permet fer servir l’editor quan treballem en una màquina remota a través de Telnet o SSH.

Avui en dia, en moltes distribucions linux, vi és, per defecte, un alias del vim. El vim no és res més que una versió de vi en esteroides. Quan parli de vi en aquest weblog en general em referiré al vim. El vim pot fer tot el que fa el vi i molt més. Fins i tot, i una mica contra natura, es pot fer servir el vim amb una interfície gràfica (vi -g / gvim)!

El vi no existeix només en sistemes unix, també hi ha version per a windows i mac. És a dir que si arribem a dominar el vi podrem utilitzar la competència adquirida en sistemes unix per augmentar la nostra productivitat també quan treballem en d’altres sistemes operatius.

En el proper post deixaré la filosofia i les introduccions gentils, i començaré a entrar en matèria amb exemples pràctics.

PD> Perdoneu per la irreverència en el títol d’aquest post, però sembla que qui va triar el nom de l’editor més clàssic de l’entorn unix, el vi, ens ho va posar fàcil als catalans per fer una petita exhibició de rauxa catalana ;-)

8/12/2004

(Re)aprendre UNIX

Escrit per adriA

Fa uns 3 mesos vaig començar a treballar en una nova feina en què em passo el dia manipulant fitxers de text. Estic constantment movent-me amunt i avall de l’arbre de fitxers. A mig editar un fitxer en un directori he de consultar la sortida d’un script que acaba d’executar-se en un altre directori. A continuació he d’editar el .bashrc d’un company de feina per afegir-li una variable de shell. De seguida comprovo l’efecte del canvi de variable executant un petit script de prova que improvitzo a corre-cuita, però llavors recordo que cal executar-lo en un directori concret. Evidentment, peta, i cal que faci la cerca d’una paraula en un fitxer de 10000 linies. Necessito el grep. Pero quina és la seqüència de caràcters exacta que busco? Vinga, a trobar una expressió regular adequada. Moviments d’aquests els estic fent tot el sant dia. A vegades sembla que balli una dansa frenètica canviant constantment entre 2 parelles de ball, l’editor de textos o la línia de comanes.

Ja fa anys que vaig fer els meus primers passets a unix, pero mai com ara m’havia trobat amb la necessitat de saber els “trucs” que els usuaris avançats es treuen un darrera l’altre del barret. Moltes vegades m’havia interessat en descobrir noves maneres de fer feines repetitives més per curiositat que per l’augment de producitvitat que em comportaven. El principal problema era la consolidació de les coses apreses. Fins ara, el tipus de feina que havia de fer no em requeria treballar cada dia canviant contínuament de fitxer i directori. Quan feia aquesta mena de tasques normalment era durant uns pocs dies. Després, a vegades passaven mesos fins que se’m tornava a presentar una ocasió per aplicar algunes de les tècniques apreses, i acabava oblidant-les pel desús. Ara, però, la situació ha canviat perquè de moment no veig data d’acabament a aquesta ballaruca de fitxers. Per ser productiu em cal aprendre (i recordar) aquest petits trucs que són l’oxigen del planeta unix.

Com que no sé quant de temps continuaré manipulant fitxers amb aquesta intensitat, he pensat que seria un bona idea crear un bloc amb notes sobre les tècniques que vagi (re)aprenent. Així, si mai em torno a trobar davant d’un teclat amb el meu unix rovellat després de mesos d’inactivitat, puc venir a llegir aquest weblog i posar-me a to ràpidament. Ja que hi estic posat, amaniré el weblog amb altres notes sobre coses de unix que no m’ha calgut recordar però que potser poden servir d’ajuda a d’altra gent que es (re)inicia al unix. Espero que hagi quedat clar que ni proclamo ser un expert en els temes dels que parlare aquí, ni dono cap garantia que les tècniques que descrigui funcionin (ni que sigui mínimament). Deixo els comentaris oberts (encomanant-me a Sant AntiSpam) i agrairé les vostres aportacions si coneixeu tècniques alternatives a les que jo exposi en aquest weblog.

Gràcies per haver arribat fins aquí i fins demà que, en especial atenció als que esteu aterrissant al unix, us presentaré la meva primera parella de ball.

PD> I sí, quan dic unix, també vull dir Linux.