Pourquoi l'exécution d'une archive en command line n'utilise pas automatiquement binary pour l'ouvrir comme sur Windows?

Essayer en command line pour ouvrir une archive sous Windows ouvre le programme associé à l'extension de file sans poser de questions. Par exemple, l'utilisation de cette command ouvrirait l'archive avec mon gestionnaire d'archives par défaut prenant en charge les files .rar.

$env:temp/SuperArchive.rar 

Pourquoi sur Linux, je ne peux pas ouvrir une archive, ou l'extraire simplement en utilisant une command similaire, comme

 ~/tmp/SuperArchive.tar.gz 

Cela est dû à une différence de design entre Windows et Unix concernant l'approche de chargement des programmes. Unix est principalement axé sur les applications: vous exécutez une application et, dans l'application, vous ouvrez des files. Windows est principalement centré sur le document (à cet égard): vous ouvrez un document et Windows choisit l'application pour vous.

Les deux templates ont leurs avantages et leurs inconvénients. Le Windows est un peu plus facile à utiliser parfois … jusqu'à ce que vous vouliez ouvrir un document dans une application non-par défaut. Ou vous vouliez juste voir ce qu'il y a dans les archives. Ou vous vouliez extraire l'archive dans un directory différent. Ou vous vouliez créer un nouveau document dans le directory actuel. Les gestionnaires de files charts sur Unix implémentent un model centré sur le document.

Quelque peu lié à cette décision de design, Unix facilite l'access aux applications: tous les exécutables sont installés dans une poignée de directorys situés sur le path de search des commands, vous pouvez donc appeler une application depuis la command line en tapant le nom de l'exécutable. Par exemple, pour ouvrir une archive dans Ark, lancez ark myarchive.tar.gz . Le système vous aide souvent en remplissant uniquement les noms de files qui ont un sens pour cette application particulière.

Vous pouvez exécuter la command xdg-open pour ouvrir un file dans une application choisie par le système. Pour un file .tar.gz , ceci est susceptible d'invoquer un gestionnaire d'archives graphique; quel programme est appelé dépend des programmes que vous avez installés et de votre environnement graphique.

Les applications binarys et les scripts avec un shebang sont exécutables. Un file .gz n'est pas exécutable et vous avez besoin d'un programme pour l'ouvrir.

Lorsque les xdg-utils sont installés, vous pouvez ouvrir le file avec le programme associé:

 xdg-open <file> 

La signification originale du goudron était T ape AR chiver.

Tu l'utiliserais comme

 tar cf /dev/rmt0 dir1 dir2 

qui mettrait le contenu de /dev/rmt0 sur n'importe quelle bande dans le lecteur local /dev/rmt0 .

Le file serait lu en utilisant

 tar xf /dev/rmt0 dir2 

pour extraire uniquement dir2 de la bande locale.

Dans la philosophie Unix, vous pouvez archiver dans un file ou un tube, par exemple

 tar cf - foo | ( ssh remote "cd /distant ; tar xf - ") 
  • transférer du directory local vers / distant dans un hôte distant

ou

 tar cf project.tar foo 

et mail project.tar à quelqu'un.

Donc, le goudron n'a jamais été conçu pour être auto-extractible. La chose la plus proche dans Unix était shar (shell archiver), qui était presque le faire. Vous recevrez un file appelé project.shar , puis exécutez

 sh project.shar 

qui dégonflerait le file sur le directory local (et apporterait un certain risque de security).

Les archives auto-extractibles ont besoin d'un composant binary et un composant binary provenant d'un environnement d'exécution non standard comme Win-DOS ne fonctionnera pas sur un environnement d'exécution standard comme UNIX.

Notez également qu'UNIX est un standard de code source, donc UNIX ne spécifie pas un standard binary unique.

Il y a eu des archives auto-extractibles sur UNIX (appelées shell archies ), mais ces archives ont le désavantage de ne pas pouvoir donner une compression décente.