venerdì 14 giugno 2013

Link simbolici

Un post didascalico con uno spiegone per un mio amico che viene da Windows. E un'ottima occasione per provare Lubit.

Per evitare un'inutile accumulo di tensione spasmodica con conseguenze imprevedibili vi dico subito che il test è stato superato brillantemente. Ho tenuto d'occhio Conky e l'uso della RAM non ho mai superato 145MB. Adesso, su Ubuntu RR con 4 schede di Firefox, Gedit, Nautilus, Eog (visualizzatore di immagini) e qualche altra utility sono a 620MB.
Devo anche confessarvi un'altra cosa: ho installato Gedit su Lubit e Conky ha fatto un salto da 145 a 198MB. Era una prova, non so nemmeno se serve, Leafpad è OK.

Linux ha ereditato da Unix una cosa meravigliosa (una delle tante): i link. Adesso non è che vi racconto tutto quello che ci sarebbe da dire sui link, hard e simbolici. Semplicemente vediamo un paio di cose di quest'ultimo tipo, il più giovane, quello che ottenete facendo click con il tasto destro sull'icona di un file e scegliendo Crea collegamento. Questo nell'ambiente grafico, io che sono vecchio... OK, uso il terminale.

Sono partito da uno script semplicissimo in Python, ds.py:


1
2
3
4
5
6
7
8
9
#!/usr/bin/python
# -*- coding: utf-8 -*-

import os, os.path, sys

print "La directery corrente è:\n", os.path.abspath(os.curdir)
scrdir = os.path.dirname(os.path.realpath(sys.argv[0]))
print "\nLa directory dello script è\n", scrdir
 


Le prime righe sono come ce le aspettiamo, anche per chi viene da Windows. Poi le cose cambiano: chmod +x ds.py rende lo script eseguibile, cosa che si potrebbe fare anche con click con tasto destro / Proprietà / Permessi / Consentire l'esecuzione....
Questo in virtù della shebang, la prima riga dello script.
Segue la prova di esecuzione ./ds.py, tutto OK.
A questo punto mi sono trasferito nella directory ~/bin. Altra particolarità di Linux (e prima di Unix): se c'è bin nella tua home viene automaticamente inserita nella PATH (all'avvio, quindi non potete pretendere di averla subito disponibile appena creata (ci sarebbe un discorso lungo da fare, diciamo che dovete ri-logarvi)).
Lì ho creato il link DS e l'ho testato. OK, come pure quando mi sono spostato nella home e in altre directories (non presenti nell'immagine ma provate e vedrete che funziona tutto).

A questo punto lo spiegone dei link sarebbe finito. Da studiare bene che la prossima volta interrogo, nèh! Anzi compito in classe.

Però visto che ci sono continuo, faccio un altro test. Questa volta voglio creare un eseguibile. Un compilatore leggero ce l'ho, newLISP che ultimamente è cambiato parecchio, vediamo (s-d.nl):


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/usr/bin/newlisp

(println "La directory corrente è:\n" (real-path "."))
(set 'nf (main-args 0))
(set 'rnf (real-path nf true))
(set 'tree (parse rnf "/"))
(pop tree -1)
(set 'dir (join tree "/"))
(println "\nLa directory del programma è:\n" dir)
(exit)

che produce questi risultati:


Notare l'errore che ottengo lanciando l'eseguibile dalla directory in cui si trova; non sono riuscito a capirne la ragione anche perché nella versione interpretata funziona.
Poi tutto come per Python.

OK, questo è tutto. Solo più due comunicazioni per la regia:
  • Bit3Lux potrebbe pensare che sto barando; in effetti gli avevo comunicato che facevo altro, solo rimandato, prossimamente...
  • A me sembra che il post sia venuto bene, lo riciclo anche sull'altro blog, sperando che nessuno se ne accorga ;-)

1 commento: