El Diumenge 19 Juny 2005 14:56, Joan T va escriure: > de moment no sé ni executar arxius ... (aqui no hi ha cap .exe!!! :-) > > He sentit a dir que es pot retocar el software a les necessitats de > cadascú .. jo, nocions de PERL sí que tinc. Em serviran?
I tant! El Perl està per tot. Si saps un poc d'expressions regulars (gairebé intrínsec a saber Perl) treuràs prou suc de la línia/línies d'ordres :) Per exemple: http://weblog.bitassa.net/arxiu/2004/08/08/5/ Aprofito per fer un poc de culturilla general, ara que tenc temps. És llarg però perquè hi ha molt copypaste. Per agafar-s'ho amb calma i aprendre un poc :) Com saber que un arxiu és un executable? Vàries formes: 1) Té permís d'execució: [EMAIL PROTECTED]:~> ls -l bin/firefox/firefox -rwxr-xr-x 1 benjami users 6338 2005-05-12 00:43 bin/firefox/firefox És el firefox. Observa les x = execució. Els permisos estan representats per 3 lletres i 3 àmbits: Lletres: - r = lectura - w = escriptura - x = execució Àmbits: - Propietari (user, u) - Grup (group, g) - Altres (others, o) Així firefox de dalt té tots els permisos pel u i només de lectura i execució per g i o. u és benjami i g és users, tal com indica l'ls. Si volgués que el grup pogués escriure-hi, caldria usar el programa chmod: chmod g+w bin/firefox/firefox 2) Pot tractar-se d'un executable però no es pot executar perquè té malament els permisos. En aquest cas, el comandament file et dirà què és: [EMAIL PROTECTED]:~> file bin/firefox/firefox bin/firefox/firefox: Bourne shell script text És un script de shell, es pot executar (si té permís, que en aquest cas el té) 3) Està a llocs on sol haver-hi executables. Per exemple, ls mateix. És un arxiu que està al directori /bin/: [EMAIL PROTECTED]:~> ls /bin/ls -l -rwxr-xr-x 1 root root 90559 2005-05-04 20:50 /bin/ls [EMAIL PROTECTED]:~> file /bin/ls /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped És un binari (això és, un compilat) Per aquí també tenc un Perl, el gigl que fa àlbums de fotos. [EMAIL PROTECTED]:~> ls bin/jigl-2.0.1/jigl.pl -l -rwxr-xr-x 1 benjami users 113639 2003-11-14 03:54 bin/jigl-2.0.1/jigl.pl [EMAIL PROTECTED]:~> file bin/jigl-2.0.1/jigl.pl bin/jigl-2.0.1/jigl.pl: perl script text Els arxius de text que s'executen (scripts en Bash, Perl, etc) a la primera retxa tenen una indicació de quin és l'intèrpret que llegeix el text i el va executant. Provem-ho amb els dos scripts que hem vist (firefox, jigl). El comandament head mostra les primeres retxes d'un arxiu, que en tregui 1, basta la primera: [EMAIL PROTECTED]:~> head -n 1 bin/firefox/firefox bin/jigl-2.0.1/jigl.pl ==> bin/firefox/firefox <== #!/bin/sh ==> bin/jigl-2.0.1/jigl.pl <== #!/usr/bin/perl -w El firefox crida a sh, a veure? [EMAIL PROTECTED]:~> ls -l /bin/sh lrwxrwxrwx 1 root root 4 2004-06-08 21:25 /bin/sh -> bash Aha, un enllaç que a punta a bash (ho sabem perquè la primera lletra, la que no havíem vist, és l de link). Què és bash? [EMAIL PROTECTED]:~> ls -l /bin/bash -rwxr-xr-x 1 root root 447256 2004-04-24 20:57 /bin/bash Un executable :) De fet, és la famosa línia d'ordres: quan teclegem coses a la línia d'ordres, és bash qui les executa. Així tot el contingut de l'arxiu firefox, va al bash. És com si el teclegessim cada cop. El mateix passa amb el perl, que envia el contingut cap al programa perl que està a /usr/bin <incís> Tornem un poc enrere. Perquè un sh que apuntava a bash? Perquè hi ha molts shell a més de bash (en programari lliure almanco hi ha dues formes de fer-ho gairebé tot). Si demà trobo que bash no m'agrada o té un greu problema de seguretat sense solucionar, puc usar un altre shell, per exemple csh (C SHell). Per fer que els scripts usin csh en comptes de bash, seria tan fàcil com canviar l'apuntador sh: en comptes d'apuntar a bash, que apunti a csh. Així tothom que fa scripts sempre els comença amb #!/bin/sh I després cadascú sabrà, al seu sistema, cap a quin shell apunta sh. La tàctica s'usa per moltes coses. En Nyu tot són arxius. La tarja de so és un arxiu que es diu /dev/dsp Si hi escrius caràcters, farà soroll. Per exmple, si hi redirecciones la sortida del comandament ls, una de llarga. Per exemple: [EMAIL PROTECTED]:~> ls -l /etc/ > /dev/dsp (sona? :) és un truc per provar si van bé i no es té res millor a mà :) La tarja de so també té permisos, com qualsevol arxiu. Si la màquina és compartida i no vull que ningú em faci botar de la cadira amb un àudio-ensurt, la deixo amb permís d'escriptura només per mi. Tenc el CD-ROM al hdd (el secundari esclau de l'IDE, d'aquí la 2a d) i el dvd al hdc (el primari esclau de l'IDE). Si demà ho canvio, caldrà tocar un caramull de configuracions, punts de muntatge, programes de torrar, reproduïr. Solució, el dvd es diu sempre dvd, el mateix amb el cdrom, i apunten al lloc del moment: [EMAIL PROTECTED]:~> ls -l /dev/cdrom /dev/dvd -l lrwxrwxrwx 1 root root 8 2004-09-11 20:13 /dev/cdrom -> /dev/hdd lrwxrwxrwx 1 root root 8 2004-12-29 19:33 /dev/dvd -> /dev/hdc El mateix passa amb el mòdem. Li dic sempre mòdem, tant fot si és sèrie i està a la com1, com2 o si és usb [EMAIL PROTECTED]:~> ls -l /dev/modem lrwxrwxrwx 1 root root 5 2004-06-11 13:50 /dev/modem -> ttyS0 (està a la com1) Podria fer el mateix amb la tarja de so, dir-li tarjadeso. Els symlinks es creen fàcil (ln -s original enllaç): ln -s /dev/dsp /dev/tarjadeso Els links (enllaços simbòlics, coneguts com a symlinks) de Nyu són molt potents. No són com els accesos directos o dreceres del Windows. Aquí un symlink és a tots els efectes exactament el mateix que allò al que apunta. </incís> Hi ha programes a /bin, /sbin, /usr/bin i /usr/sbin La diferència està explicada al 'man hier' /bin : conté programes bàsics per arrancar i reparar un sistema /usr/bin : la resta amb s: els que no executa un usuari normal, que són d'administració Això és el bàsic, però hi ha més: /opt : programes grans, com KDE, Gnome, OOo, Mozilla... Jo sempre faig un directori bin al directori de l'usuari (el ~/ per abreviar). Allà hi poso scripts, fins i tot el Firefox del moment, per usar-lo en comptes del que té la distro (normalment més vell). I aprofito per tornar a il·lustrar la potència dels symlinks. La SuSE posa tots els plugins a /opt/mozilla/lib/plugins/ En posar el firefox a ~/bin/firefox, ell té el seu directori plugins. Sempre l'esborro: rm -r ~/bin/firefox/plugins i faig un symlink: ln -s /opt/mozilla/lib/plugins/ ~/bin/firefox/plugins El resultat és aquest: [EMAIL PROTECTED]:~> ls -l ~/bin/firefox/plugins lrwxrwxrwx 1 benjami users 25 2005-05-15 21:22 /home/benjami/bin/firefox/plugins -> /opt/mozilla/lib/plugins/ (i que els pluguins funcionen al firefox instal·lat al meu ~/) L'altre cosa: com s'executen? Escrivint el nom a la línia d'ordres. Si escric ~/bin/firefox/firefox , el navegador arranca. Un detall important: [EMAIL PROTECTED]:~> cd bin/firefox [EMAIL PROTECTED]:~/bin/firefox> firefox bash: firefox: command not found Primera reacció: "què? si el tinc!" i escriure [EMAIL PROTECTED]:~/bin/firefox> ls -l firefox -rwxr-xr-x 1 benjami users 6338 2005-05-12 00:43 firefox i dir "sí, el tinc!" No arranca per motius de seguretat. Un d'aquests de fons que fan el Nyu més mal d'explotar per virus i afegitons. El motiu és que en teclejar un nom i polsar intro, el sistema va a cercar els programes al lloc on l'administrador els posa (/bin, /usr/bin, /opt) amb el seu password. Si no fos així, algú podria fer un clon del comandament ls que en teclejar-lo fes el que l'ls, però a més recollís arxius delicats i els enviés a l'atacant --això és, un trojà. Podria trobar una forma de posar el seu ls silenciosament al nostre ~/ i no caldria cap contrasenya, perquè ja hi som quan ens hem infectat. Cada cop que teclejessim ls, s'executaria el seu i no el del sistema. Per aquest motiu no es pot executar res d'altres directoris no oficials per programes. Però hem de poder posar programes al nostre ~/ (*) i executar-los, si volem. Es pot fer, però posant davant el camí de directoris on es troba. És una forma de dir-nos "estas executant *aquest* programa que es troba *aquí*, fora del lloc oficial, que ho sabis". Per aquest motiu sí ha executat: [EMAIL PROTECTED]:~> ~/bin/firefox/firefox i també executaria: [EMAIL PROTECTED]:~/bin/firefox> ~/bin/firefox/firefox En aquest darrer cas, si ja estem a la ~/bin/firefox no cal escriure-ho. Basta amb posar . que en Nyu vol dir "el lloc on som ara" (i .. vol dir "el directori anterior". Cal afegir una / per separar-lo del nom, perquè els noms d'arxiu també poden començar per un punt (de fet, el punt inicial fa que un arxiu sigui ocult). Així també funcionaria: [EMAIL PROTECTED]:~/bin/firefox> ./firefox I l'altre dia n'Esteve havia d'executar, per compilar el driver del módem USB, un comandament amb el ./ davant. (*) La darrera curiositat: echo pinta abreviatures d'aquestes i altres variables, com la $PATH que conté els "llocs oficials" per executables: [EMAIL PROTECTED]:~/bin/firefox> echo ~/ /home/benjami/ [EMAIL PROTECTED]:~/bin/firefox> echo $PATH /home/benjami/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/java/jre/bin -- Benjamí http://weblog.bitassa.net . _______________________________________________ llista de correu de l'Internauta [email protected] http://zeus.internauta.net/mailman/listinfo/internauta
