suprimir els fitxers que no són d’un dipòsit

logotip del SubversionEs veu que m’ha agafat la dèria de fer-me scripts per a tot :)

El d’avui és per el típic cas en que estem treballant amb un dipòsit i per poder fer comparacions i tot plegat ens queden la tira de fitxers temporals repartits per tot arreu i que un cop acabada la feina i confirmada (commit en anglès) només fan nosa, així que anem a suprimir-los:

svn status | grep ? | cut -d” ” -f7 | xargs rm

amb svn status ens dirà quins fitxers hi ha diferents dels que estan actualment al dipòsit SVN, amb el grep agafem els que es desconeix (normalment seran aquests els que volem suprimir), seguidament agafem només el nom del fitxer amb el cut i per acabar amb l’xargs i un simple rm els eliminem tots :D

directoris d’ús comú

avui estic automatitzador :)

si abans feia un script per a poder baixar el codi font de manera més còmode i així escriure menys ara el que explicaré és pel següent cas:

normalment quan inicieu un terminal us deixa com a pwd a ~ però segur que allà no hi teniu directament tot el que voleu, en canvi teniu un altre directori (per exemple ~/gnome/codi) on hi teniu tot el codi font dels mòduls que us heu baixat amb l’script d’abans :) i per accedir-hi sempre heu de fer un cd gnome/codi

doncs bé, hi ha una variable d’entorn que ens permet afegir tants directoris com vulguem en el camí de directoris, altrament dit, que si posem export CDPATH=$CDPATH:~/gnome/codi al nostre ~/.bashrc a partir de llavors, des de qualsevol directori podrem accedir directament a qualsevol directori de ~/gnome/codi :)

en vaig sentir a parlar al planeta GNOME i avui cercant he anat a parar a Working more productively with bash 2.x/3.x, no està gens malament :D

baixar el codi amb 3 paraules

logotip del Subversioncansat d’haver d’escriure cada dia el svn co svn+ssh://gforcada@svn.gnome.org/svn/$mòdul/$branca $directori avui per fi m’he fet un script que només li has de dir el mòdul, la branca i opcionalment el directori (sinó agafa el mateix valor que el mòdul) i llestos ja t’ho baixa :)

exemple de crida:

svnco.sh NetworkManager trunk nm

a més ja hi he posat l’usuari i servidor com a variables al principi de tot perquè si algú el vol utilitzar li sigui ben fàcil canviar-ho :)

per a poder-lo cridar d’aquesta manera s’ha d’editar el fitxer ~/.bashrc i dir-li que afegeixi en el PATH el directori on deixeu l’script (normalment si sou usuari normal i no teniu permís de sistema seria a ~/.bin), de manera que si editeu el ~/.bashrc hi hauria d’haver una línia a l’estil:

export PATH=$PATH:~/.bin

i llestos, a baixar codi que falta poc pel GNOME 2.22!

ordre del dia

una de tapes … vull dir xargs!

no us heu trobat mai amb la necessitat de passar-li a una ordre el resultat d’una altra? i és que l’xargs l’únic que fa és passar com a arguments el que rep per l’entrada

a vegades amb l’accent tancat en teniu prou, però si no és el cas teniu l’xargs :)

amb aquesta ordre podeu, per exemple, seleccionar totes les imatges que acabeu d’importar i que estan en un directori per moure-les a un altre:

ls DCIM00*.jpg | xargs mv {} ~/Imatges/carpeta_nova

aquí seleccionem les imatges que volem amb ls DCIM00*.jpg, redirigim la sortida de l’ls a l’entrada de l’xargs que al seu moment ho reenvia com a arguments de l’ordre mv que mourà {} (que és el que ens envia l’xargs) a ~/Imatges/carpeta_nova

el {} a vegades no cal, si les volguéssim suprimir només ens hauria calgut fer ls *.jpg | xargs rm , però l’xargs ens dóna la possibilitat d e poder ubicar els paràmetres que volem passar a l’ordre de la manera que volem

fins i tot és tant intel·ligent que si la llista d’arguments és massa llarga la parteix a trossos perquè així no peti l’ordre!

suprimir totes les línies que coincideixen amb un patró

logotip del vimtot editant fitxers turcs[1] tenia la necessitat de suprimir totes les línies que comencessin per msgstr[1] així que he anat a buscar per Internet i al final he trobat que amb el vim pots fer:

:%g/^msgstr\[1/d

i amb això suprimiràs en tot el fitxer totes les línies que comencin per msgstr[1

[1] : l’altre dia actualitzant la meva còpia del que tinc a un dels servidors vaig veure que hi havia alguns mòduls que amb turc no passaven la comprovació msgfmt -cv així que li vaig demanar a en Baris si li feia res que ho arreglés i com que m’ha dit que sí és el que estic fent ara mateix :)

trivia

en l’escriptori hi tinc un (entre molts) fitxers anomenat goffice.HEAD.ca.po:

-rw-r--r-- 1 gil gil 163K 2008-01-16 00:56 /home/gil/Escriptori/goffice.HEAD.ca.po

però si vaig a un altre directori ( /gnome/codi/goffice/po )i l’intento copiar em surt això:

cp: ha fallat stat() sobre «../../../goffice.HEAD.ca.po»: No such file or directory

quina particularitat té el directori des d’on intento fer la còpia? :)

pista: mireu les etiquetes que li he posat

ordres del dia

tcpdump: per mirar el trànsit a la xarxa (la versió gràfica podria ser tranquil·lament el wireshark)

du: espai del disc ocupat per un fitxer o directori (amb -sh et diu el resum i en format humà :) (la versió gràfica podria ser el baobab)

svn info: gràcies a en Josep veig que sí que hi ha una manera més elegant de veure en quina branca estàs treballant, gràcies!

com utilitzes la consola de Linux?

seguint el meme d’en Xavi Ivars, aquí la meva sortida a l’ordre:

history | awk '{print $2}' | awk 'BEGIN {FS="|"} {print $1}' | sort | uniq -c | sort -rn | head -10

114 ./winbox.exe
95 exit
63 sudo
38 ping
34 ssh
26 iwlist
24 cd
22 ifconfig
11 route
11 ls

i si mirem l’usuari root:

129 ping
91 ifconfig
78 iwlist
54 dhclient
26 telnet
26 exit
21 route
14 iwconfig
10 cat
8 ./winbox.exe

suposo que es nota que formo part de guifi.net amb totes les ordres de root :)