Conoscere i sistemi Unix-like (Linux/MacOS)
Buongiorno ragazzi!
Sono un entusiasta utente Mac e oggi, installando Octave ed altre utility, mi sono ricordato di quanto è bello sia smanettare il terminale
In passato sono stato anche uno smanettatore (Debian power
) e quindi due stupidaggini con il terminale le so fare (ls, cd, rm, mkdir, etc) ma vorrei cominciare ad affrontare più sistematicamente lo studio dei vari comandi e degli ambienti Unix/BSD/Mac/Linux.
Vorrei capirci un qualcosa in più ed essere un po' più sicuro davanti al cursore che lampeggia sullo sfondo nero*.
Per iniziare mi piacerebbe capire come (e perché) sono organizzate le varie cartelle (/usr,/var,/etc,/opt, etc.) in un sistema Unix-like in modo da sapere dove cercare le cose. Vorrei saper maneggiare i file, nasconderli, metterli in sola lettura, impostare i permessi dei vari utenti. Vorrei poi capire un po' come funziona la shell, come funziona nella pratica una pipe fra processi, come posso passare ad un altro processo l'output dell'altro e cose così. Quali sono i tipi di file di configurazione tipici del sistema.
[size=130]Riassumendo[/size]
Vorrei riuscire a sentirmi a mio agio nell'utilizzo del terminale e più padrone del mio sistema. Tra le altre cose vorrei conoscere la struttura delle cartelle, la gestione dei processi e dei permessi degli utenti, il linguaggio bash.
- Che riferimenti bibliografici mi sapreste consigliare?
- Esiste un manuale che spiega tutti questi aspetti?
Se conoscete un manuale che tratta anche della API di sistema via C/C++ è ben accetto!
Come ho detto all'inizio sono un utente Mac e quindi mi interesserebbe una risorsa valida per tutti i sistemi Unix-like e non solamente Linux, Mac o altro.
Scusate la prolissità, mi sono lasciato andare.
Un saluto,
Marco
----
*Ricordo quando da giovane installai il mio primo Debian e, una volta finita l'installazione, ci rimasi male perché mi si presentò la temuta shell in puro ambiente testuale. Realizzai allora che avevo installato il sistema senza ambiente grafico X11 e smanettai 2 giorni per capire come fare per mettere a posto il tutto
Sono un entusiasta utente Mac e oggi, installando Octave ed altre utility, mi sono ricordato di quanto è bello sia smanettare il terminale

In passato sono stato anche uno smanettatore (Debian power

Vorrei capirci un qualcosa in più ed essere un po' più sicuro davanti al cursore che lampeggia sullo sfondo nero*.
Per iniziare mi piacerebbe capire come (e perché) sono organizzate le varie cartelle (/usr,/var,/etc,/opt, etc.) in un sistema Unix-like in modo da sapere dove cercare le cose. Vorrei saper maneggiare i file, nasconderli, metterli in sola lettura, impostare i permessi dei vari utenti. Vorrei poi capire un po' come funziona la shell, come funziona nella pratica una pipe fra processi, come posso passare ad un altro processo l'output dell'altro e cose così. Quali sono i tipi di file di configurazione tipici del sistema.
[size=130]Riassumendo[/size]
Vorrei riuscire a sentirmi a mio agio nell'utilizzo del terminale e più padrone del mio sistema. Tra le altre cose vorrei conoscere la struttura delle cartelle, la gestione dei processi e dei permessi degli utenti, il linguaggio bash.
- Che riferimenti bibliografici mi sapreste consigliare?
- Esiste un manuale che spiega tutti questi aspetti?
Se conoscete un manuale che tratta anche della API di sistema via C/C++ è ben accetto!
Come ho detto all'inizio sono un utente Mac e quindi mi interesserebbe una risorsa valida per tutti i sistemi Unix-like e non solamente Linux, Mac o altro.
Scusate la prolissità, mi sono lasciato andare.
Un saluto,
Marco
----
*Ricordo quando da giovane installai il mio primo Debian e, una volta finita l'installazione, ci rimasi male perché mi si presentò la temuta shell in puro ambiente testuale. Realizzai allora che avevo installato il sistema senza ambiente grafico X11 e smanettai 2 giorni per capire come fare per mettere a posto il tutto

Risposte
Ciao, per quanto non sia la stessa identica cosa i concetti di base sono gli stessi, esiste infatti una guida scritta un po di tempo fa che tratta come argomento le API di Win32. Imparando ad usare questa libreria grafica, implementata con il C++, sarai in grado di creare dialoghi e finestre completamente da zero. Ma ti assicuro che non è per nulla facile, ed è una strada molto in salita. Il corso lo trovi qui: Click.
@Sergio: a tuo modo di vedere i testi da te consigliati(The Unix Programming Enviroment e Unix Shell Programming) hanno effettivamente qualcosa di più rispetto ai "must-read", passami il termine, Bash Guide for Beginner e Advance Bash Scripting Guide sullo scripting da shell e l'amministrazione di sistema?
"Sergio":
I vari sistemi si somigliano nelle cose fondamentali, ma ogni variante ha le sue peculiarità. Ad esempio, Linux ha un suo proprio standard: FHS.
Giusto! E sì che questa la sapevo. Già alla mia giovane età la memoria fa brutti scherzi

"Sergio":
Credo non sarebbe male farsi prima un'idea generale del mondo Unix.
Infatti è questo il mio obiettivo. Vorrei imparare prima le basi di Unix che è l'antenato comune di tutti i sistemi BSD (FreeBSD, Mac, Solaris, Linux, etc), e solo dopo passare a trattare le implementazioni specifiche dei vari "moderni" sistemi operativi.
"Sergio":
E qui, anche se... i giovani potranno avere le loro preferenze, mi sembrerebbe molto saggio partire da un classico: Kernighan & Pike, The Unix Programming Environment.
Sebbene sia giovane, anche a me piacciono i classici. Ho studiato il C su un K&R del '89* e l'ho trovata un'esperienza unica. Certo il testo non tratta l'ultimo standard C99, ma vedere il linguaggio dal punto di vista di chi l'ha concepito e che ci ha "smanettato" fin da subito su un libro dalle pagine oramai ingiallite mi ha regalato molte emozioni e soddisfazioni.
Detto questo, accolgo con entusiasmo questa proposta e consulterò di sicuro questo classico, magari integrandolo con qualcosa di più moderno, ma senza rinunciare al punto di vista di chi ha vissuto in prima persona gli eventi di quegli anni.
"Sergio":
Comunque, per la shell ancora uso qualche volta Kochan & Wood, Unix Shell Programming.
Diventare un guru dello shell scripting è un aspetto che mi interessa meno. Mi bastano le basi giusto per capire come funzionano le cose e saper fare due script in croce, ma penso che mi affiderò a qualche reference online per questo.
"Sergio":
Francamente non so quanto sia usato il C++ per la programmazione di sistema (fino a quando giocavo con queste cose, ancora no; ma è passato anche qui qualche anno).
Per quanto ne so io è ancora così. Il linguaggio principe della programmazione di sistema Unix/Linux è il sempreverde C (fatto giustificato dal fatto che gli stessi sistemi appena citati sono scritti quasi in toto in questo linguaggio).
Invece nella progettazione di interfacce grafiche e in molti altri aspetti il C++ ha soppiantato il suo predecessore.
Dato che però il mio obiettivo sarebbe padroneggiare il C++ al meglio**, mi chiedevo se ci fosse qualche manuale che trattasse, magari tramite una libreria wrapper riscritta a tal proposito, la programmazione di sistema tramite questo linguaggio. Per questo mi era scappato quel "\C++"

"Sergio":
In ogni caso, anche qui c'è un classico dal quale è difficile prescindere: Rochkind, Advanced Unix Programming. Insegna non solo "come fare" tante cose, ma soprattutto come farle "bene".
In questi giorni ho trovato anche questa discussione su stackoverflow che tratta appunto di testi per la programmazione C in Unix.
Darò un occhiata al testo da te indicato e a quelli proposti nella discussione (tra cui il Kernighan & Pike da te proposto

Invece adesso mi adopererò subito per recuperare il Kernighan & Pike

@Sergio Approfitto della tua età

In pratica non so se considerarlo uno Unix "normale" o un riadattamento proprietario.
Ti ringrazio della disponibilità e della completezza della risposta.
Saluti

----
* Lo se che per te Sergio questa data è un passato prossimo ma considera che per me è un tempo remoto

** Per motivi personali (è stato il mio primo Hello World) e per motivi didattici, la scelta del "mio linguaggio principe" è ricaduta sul C++
[OT]
@xMauri94
Detto questo, chiudo questo OT.
Perdonami la franchezza, il tuo intervento è abbastanza fuori luogo in questa discussione che non tratta minimamente né di programmazione Windows, né di programmazione GUI.
[/OT]
@xMauri94
Detto questo, chiudo questo OT.
Perdonami la franchezza, il tuo intervento è abbastanza fuori luogo in questa discussione che non tratta minimamente né di programmazione Windows, né di programmazione GUI.
[/OT]