Qual è l'equivalente di Linux ai file di programma di Windows?


179

In Windows, la maggior parte delle applicazioni e dei dati delle applicazioni sono archiviati in una directory speciale nota come C:\Program Files(e occasionalmente C:\Program Files (x86)). Qual è l'equivalente Ubuntu / Linux a questo percorso? Ce n'è anche uno?


2
Se vuoi sapere dove sono i file del pacchetto specifico, puoi usare il gestore pacchetti Synaptic. Basta cercare il pacchetto e vedere i file installati.
Asmerito,

6
Penso che questa domanda sarebbe migliorata da un motivo per volere un equivalente. Esiste una differenza tra, ad esempio, "vediamo cosa ho installato e cosa posso eseguire" e "Sto cercando di trovare il gioco di salvataggio di questo / quel software, così posso giocherellare con esso" e forse anche "sospetto un file di impostazione / file ini per questo programma che posso modificare". Quelle potrebbero essere tutte domande "Programmi", ma qui hanno risposte diverse.
Nanne,

4
Correlato (ma probabilmente non dovrebbe essere considerato un duplicato): come comprendere il layout del file system Ubuntu?
Eliah Kagan,

Risposte:


104

/bined /usr/binè dove sono gli script che avviano i programmi. Tuttavia, l'equivalente diretto di "Programmi" è probabilmente /usr/share( vedi Filesystem Hierarchy Standard ). Tale directory contiene i vari file di supporto per la maggior parte dei programmi.

Nautilus mostra / usr / share

Tuttavia, probabilmente non esiste un equivalente diretto, poiché, ad esempio, i file di libreria sono condivisi nel sistema (in /lib) e le opzioni sono specificate dall'utente (nella home directory dell'utente) o localizzate universalmente /etc.

Quindi l'installazione di un programma tramite un file deb, repository o build probabilmente posizionerà i file in tutte queste posizioni.

[EDIT] E come altri notano, c'è anche /sbine /usr/sbin. Inoltre /usr/local/bin, /opt/bine anche /usr/games/. Quindi sicuramente non un confronto diretto con c:\program files!


4
Che ne dici /opt? Ho visto che contengono molti programmi (di solito chiusi o basati su app) prima in modo simile a Program Files.
Kupiakos,

Sembra che vada così, con l'avvento di Ubuntu Software Center che offre i suoi giochi lì, sicuramente. Ma anche allora, a malapena un confronto diretto, vero? Potrebbe essere la cosa più vicina in questi giorni però.
Scaine,

Vedi askubuntu.com/a/294492/41499 per a cosa serve la /optdirectory.
Gerhard Burger,

/usr/local/binè una posizione semi-comune per software che potrebbe non essere comunemente utilizzato da un utente / azienda.
Mark Stewart,

E come è questo sistema operativo migliore di Windows? Ci sono passato per provarlo è bette per lo sviluppo web. Ma non riesco a capire quelle cose della gerarchia ... Ho installato PhpStorm ed è ora nelle cartelle 1238128 ..
Toma Tomov

84

Risposta in ritardo - Ho creato una tabella di marcia che i principianti devono seguire. Se stanno cercando un file ma non sanno dove cercare, possono usare la mappa per navigare approssimativamente. Puoi scaricare un PNG ad alta risoluzione qui . Puoi trovare il post correlato qui . Continuerò ad aggiornare sia il file che il post quando il tempo lo consente, includendo commenti utili.


6
questa risposta viene ignorata, dovrebbe essere in alto.
voldemort,

83

EDIT: Vedi anche la risposta di d4nyll di seguito per una mappa eccellente e adatta ai principianti!

Leggi la mia risposta qui sotto per maggiori informazioni su ciò che è la PATHvariabile d'ambiente, quali .desktopfile sono e come trovare un programma specifico usando vari comandi di Linux.

Risposta originale:


Non c'è una risposta facile.

/bin, /usr/bine/usr/share

Come menzionato nelle altre risposte, puoi trovare la maggior parte degli eseguibili in /bino /usr/bine in cui sono installati i file di supporto /usr/share.

/usr/local e /opt

Esistono tuttavia più directory in cui Ubuntu installa le applicazioni. La PATHvariabile, che determina dove cercare un comando inserito, potrebbe darti un indizio, il mio appare come ( echo $PATHin un terminale):

/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Come puoi vedere alcuni software sono installati /usr/locale hanno una propria directory e bin. Un altro posto in cui sono installati molti programmi è /opt. Le proprietà di queste posizioni sono spiegate dal Filesystem Hierarchy Standard , che è un'ottima lettura. Sfortunatamente, la differenza tra /opte /usr/localnon è molto ben spiegata, qualcuno sullo stackexchange di unix aveva una spiegazione più elaborata:

  • /usr/localè un posto dove installare i file creati dall'amministratore, di solito usando il comando make. L'idea è quella di evitare scontri con file che fanno parte dei sistemi operativi che verrebbero sovrascritti o altrimenti sovrascriverebbero quelli locali. per esempio. /usr/bin/foofa parte del sistema operativo mentre /usr/local/bin/fooè un'alternativa locale,
  • /optè una directory per installare pacchetti non raggruppati ciascuno nella propria sottodirectory. Sono già costruiti interi pacchetti forniti da un distributore di software di terze parti indipendente. Ad esempio, someappverrebbe installato in /opt/someapp, uno dei suoi comandi sarebbe in /opt/someapp/bin/foo[e quindi di solito viene creato un collegamento simbolico in una delle bindirectory nel PATH, oppure il programma viene chiamato da un file desktop (vedi sotto)].

Trovare un programma o un comando specifico

.desktop File

Per scoprire dove è installato un programma specifico, è possibile eseguire una serie di passaggi. Per prima cosa devi individuare il suo .desktopfile. I file desktop sono simili ai collegamenti in Windows e per le applicazioni di sistema in cui si trovano /usr/share/applications. Sono presenti i file desktop per le applicazioni disponibili solo per l'utente corrente ~/.local/share/applications. Prendi ad esempio Google Chrome, che ha il file desktop /usr/share/applications/google-chrome.desktope cerca la riga che inizia con Exec=, questo determina come avviare Google Chrome. Dice:

Exec=/opt/google/chrome/google-chrome

Quindi sai che è presente Google Chrome /opt.

Ora per Mozilla Firefox che si trova in /usr/share/applications/firefox.desktop. Dice semplicemente

Exec=firefox %u

All'inizio questo non sembra aiutare molto, ma poi ti rendi conto che firefoxdeve trovarsi in una directory che si trova nella PATHvariabile (molto probabilmente a bin), e possiamo cercarla (vedi sotto).

Ricerca dei comandi

Per cercare i comandi è possibile utilizzare uno o più dei seguenti: type, whiche whereis(ho incluso un link alle loro pagine di manuale on-line).

  • tipo : descrive un comando e indica come sarebbe interpretato se usato come nome di comando. I tipi possibili per un comando sono:

    1. alias (alias shell)
    2. funzione (funzione shell)
    3. builtin (shell builtin)
    4. file (file su disco)
    5. parola chiave (parola riservata alla shell)

    (il tipo stesso è un shell incorporato, provalo con type type: P)

    L'esecuzione type firefoxci dà

    firefox is /usr/bin/firefox
    

    che è quello che volevamo sapere

Se un comando è un file (con cui hai controllato type) puoi anche usare:

  • quale : mostra il percorso completo del comando,

    L'esecuzione which firefoxci dà

     /usr/bin/firefox
    
  • whereis : individua i file binari, di origine e della pagina del manuale per un comando.

    L'esecuzione whereis firefoxci dà

    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
    

indennità

Puoi ispezionare /usr/bin/firefoxpiù da vicino con ls -l /usr/bin/firefoxe questo dà:

/usr/bin/firefox -> ../lib/firefox/firefox.sh*

Sembra che /usr/bin/firefoxsia "solo" un collegamento simbolico alla sceneggiatura /usr/lib/firefox/firefox.sh. Se controlli lo script scopri che lo script chiama /usr/lib/firefox/firefox.
Puoi riposare in pace ora :)


Risposta piuttosto interessante. Una domanda, che cos'è il collegamento simbolico? È un collegamento di Windows equivalente?
Quazi Irfan,

@iamcreasy grazie! Sì, sono una sorta di scorciatoia, ma con l'intenzione principale di evitare copie di file. Le scorciatoie di Windows sono più comparabili a. file desktop, che possono essere utilizzati per creare, ad esempio, elementi di menu iniziale.
Gerhard Burger

Perché qualcuno dovrebbe usare il file .desktop su collegamenti simbolici e viceversa?
Quazi Irfan,

1
@iamcreasy Nei file .desktop puoi aggiungere ulteriori informazioni, come una descrizione e un'icona (vedi un esempio qui: standards.freedesktop.org/desktop-entry-spec/latest/apa.html ), è un file 'normale' . Un collegamento simbolico è un file "speciale" che collega solo a un altro file. Lo trovo difficile da spiegare correttamente, ma forse puoi trovare una risposta migliore qui: superuser.com/questions/253935/…
Gerhard Burger

18

Non esiste una singola directory che corrisponde esattamente alla cartella Programmi . Il modo in cui Linux organizza le cose è molto diverso da quello di Windows.

In Windows, ogni programma che installiamo ottiene la propria directory all'interno della directory Programmi. In quella directory, vengono create ulteriori sottodirectory per diversi tipi di file. Non esiste una struttura fissa per le sottodirectory. I programmi decidono da soli cosa vogliono chiamare ciascuna directory e dove vogliono mettere cosa.

Ma in Linux quando viene installato un programma, diversi tipi di file vengono copiati in posizioni diverse. Gli eseguibili vengono copiati in / usr / bin , i file della libreria in / usr / lib , la documentazione in uno o più di / usr / man , / usr / info e / usr / doc . Se ci sono file di configurazione, di solito sono nella home directory dell'utente o in / etc .


C'è qualche motivo per questo raggruppamento di file in base al loro scopo piuttosto che in base all'applicazione a cui appartengono i file? Lo "stile di raggruppamento dei file Unix" è generalmente più conveniente dal punto di vista dell'amministratore di sistema?
jojman,

1
non proprio. È una scelta di design che mi hanno fatto pensare. Anche se consente di creare utility come "man", "info" o molte altre che dipendono da questa struttura di file. Ad esempio "man" sa dove cercare la documentazione per ciascun comando. Se non esiste una posizione standard dei documenti, l'uomo non può lavorare.
binW,

10

La C:\Program Filescartella sarebbe /usr/binin Ubuntu. /binsembra più simile C:\windows.

Dalla pagina del manuale della gerarchia del filesystem :

/bin      This directory contains executable programs which are needed  in
          single user mode and to bring the system up or repair it.
/usr/bin
          This is the primary directory  for  executable  programs.   Most
          programs  executed  by  normal  users  which  are not needed for
          booting or for repairing the system and which are not  installed
          locally should be placed in this directory.

Ubuntu ha una struttura diversa da Windows. Ubuntu colloca quasi tutte le applicazioni in una directory, diciamo /usr/bin. Windows creerebbe una nuova cartella, diciamo Mozilla Firefox, e aggiungerebbe configurazione, file eseguibili, DLL, immagini, ecc. Ubuntu li divide, eseguono gli eseguibili /usr/bin, la configurazione dell'intero sistema in /etc, gli oggetti condivisi in /usr/lib, le immagini in /usr/share, ...


5

I "file di programma" di Linux sono presenti nell'intera gerarchia. Potrebbe essere su /usr/bin, /bin, /opt/..., o in un altro directory.

Penso che troverai alcuni file relativi alla tua applicazione. Quindi, ho un'idea di come guardare i file che vengono installati durante l'installazione del programma.

  1. Installa synapticemettendo sudo apt-get install synapticsul terminale.
  2. Cerca il pacchetto che desideri, cerca nell'input di testo di ricerca.
  3. Fare clic con il tasto destro del mouse sul pacchetto e selezionare Properties.
  4. Passa alla Installed Filescheda. Il risultato è lo stesso di dpkg -L package_name.
  5. Lì troverai tutti i file installati per il pacchetto.

È perché Linux sposta il file installato in directory separatamente in base al loro tipo.

  • L'eseguibile va a /usr/bino /bin.
  • L'icona si /usr/share/iconsaccende o si accende ~/.local/share/iconsper locale.
  • Tutta l'applicazione (portatile) accesa /opt.
  • Scorciatoia di solito acceso /usr/share/applicationso acceso~/.local/share/applications
  • Documentazione su /usr/share/doc
  • Libreria / modulo attivi /usr/lib

E molte altre directory. (CMIIW, accettazione della correzione)


3

In questa risposta quando dico Unix intendo sia Unix che sistemi operativi simili a Unix.

Ubuntu non ha davvero una cartella di programmi contenente tutti i dati per ciascun programma. Nei sistemi operativi Unix e simili a Unix, TUTTO è un file, anche i comandi del terminale. Sono anche file. Il modo in cui Unix gestisce i programmi può essere piuttosto caotico e organizzato allo stesso tempo.

Le icone per i programmi sono memorizzate in / usr / share / icons / *, i file eseguibili di solito sono memorizzati in / usr / bin, / bin e in altri luoghi con directory bin (bin è abbreviato in binario). Le librerie da cui dipendono i programmi sono in / lib.

Quindi non si finisce con una directory contenente tutti i dati per un programma, ma i dati per il programma si diffondono. Mentre all'inizio questo sembra molto disorganizzato, consente la condivisione di cose standard come librerie e icone.

Grazie alle autorizzazioni per ogni file, l'idea che tutto sia un file è molto geniale a dire il vero. Rende Unix MOLTO più sicuro di altri sistemi operativi.


3

Il modo in cui sono installati i programmi Linux e Windows è abbastanza diverso.

Il modello comune in Windows è per un programma; o un gruppo di programmi, da un fornitore andare nella propria sottodirectory in C: \ programmi \ fornitore o qualcosa di simile.

In Linux, i tuoi file sono suddivisi tra sottodirectory specifiche a seconda della loro funzione. Ci sono directory per librerie, icone, pagine man, file di registro, configurazione e così via. Puoi usarne alcuni, ma il sistema li gestirà tutti. Non sono accoppiati insieme, ma esistono insieme a file simili di altri programmi.

Quindi non esiste un vero equivalente a quella struttura di directory di Windows in una normale implementazione Linux.


2

Se installi i tuoi programmi, ti consiglio 1 cartella:


-2

Cerca in /bin, /usr/bine qualsiasi altra cosa che dice bin.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.