La création d'un fichier texte dans vi changera-t-elle mon ordinateur?

9

Je sais que Linux est un système d'exploitation basé sur des fichiers texte. Ce que je voudrais faire, c'est créer un fichier en utilisant vitoutes les différentes commandes que j'ai apprises. De cette façon , je pouvais trouver chaque commande très facilement en utilisant l' /en vi. Mais je ne veux le faire que si cela ne change pas le fonctionnement de mon ordinateur. Serait-ce une bonne idée?

BJsgoodlife
la source
12
Oui, il y aura un fichier texte plus quelque part. ;-) (Blague) Vraiment, un fichier est un fichier. C'est comme demander si l'ajout d'une photo à un dossier ou la création d'un nouveau document Word changera votre ordinateur. Oui, il sera; vous avez encore une photo / un document. Quoi qu'il en soit, les réponses que vous avez obtenues sont généralement correctes.
Rmano
Pourquoi pensez-vous que cela suffirait?
Braiam
2
Je ne sais pas ce que vous entendez par "un système d'exploitation basé sur des fichiers texte", mais Linux n'est pas vraiment différent, disons, de Windows, en ce qui concerne les fichiers texte. Windows a des fichiers .ini et .bat par exemple, si c'est ce que vous pensez.
hyde
En outre, pensez-vous qu'il y a quelque chose de spécial vi(par rapport à, disons gedit) ou vouliez-vous simplement dire "un éditeur de texte"?
M. Lister
1
@BJsgoodlife Certains fichiers texte contrôlent le système. Ils sont placés dans des endroits spéciaux et ne peuvent généralement pas être modifiés sans sudo.
cpast

Réponses:

34

Écrire un fichier texte ne va pas "changer le fonctionnement de votre ordinateur".

En particulier, pour faire quelque chose comme ça, vous devez faire l'une des

  • écraser un fichier important
  • écrire votre fichier dans un emplacement protégé spécial comme un répertoire * .d dans / etc; vous n'aurez pas la permission de le faire
  • marquez le fichier exécutable et placez-le sur votre chemin

Puisque vous n'allez pas explicitement faire quelque chose comme ça, il n'y a rien à craindre. En particulier, l'autre réponse va à des longueurs inutiles en suggérant que vos fichiers texte doivent commencer par des hachages sur chaque ligne. Bien sûr que non. Le simple stockage d'un fichier texte quelque part dans un répertoire de base normal ne fera rien.

thomasrutter
la source
3
J'ai suggéré de le faire #pour que rien d'accidentel ne soit exécuté par hasard. Je pense que c'est toujours mieux d'être du côté le plus sûr.
heemayl
8
Je pense qu'il n'est pas toujours préférable d'être du côté le plus sûr. La sécurité a un coût, et il y a un moment où le risque réduit ne vaut plus le coût. Par exemple, quand il dépasse la valeur de la chose que vous essayez de garder en sécurité (dans des contextes où cet argument est logique). Sur la sécurité de l'information, vous pouvez trouver de nombreuses réponses sur la façon dont une sécurité appropriée est un compromis, et le seul système complètement sécurisé est également complètement inutile, il serait donc stupide d'insister sur une sécurité parfaite dans tous les cas.
David Z
9
En tant que problème quelque peu distinct, je pense que le point le plus important à soulever (ce que fait cette réponse et l'autre pas) est que la création d'un fichier arbitraire ne va rien faire pour changer le système. Vous ne pouvez affecter le système qu'en créant un fichier recherché par un autre processus ou en exécutant le fichier que vous créez, s'il contient le code affectant le système - mais cela tombe sous le conseil général de ne pas exécuter de commandes shell complètement inconnues. , ce qui est intelligent que vous travailliez avec des fichiers ou non.
David Z
2
Fais moi un sandwich. You won't have permission to do this. sudo me fait un sandwich. Aye, aye, sir!
Lie Ryan
2
@heemayl pourquoi ne pas simplement faire la première ligne du fichier exit?
Random832
15

Vous pouvez enregistrer toutes les commandes que vous avez apprises dans un fichier mais quelques points importants à noter:

  • Ne rendez pas le fichier exécutable
  • Jamais sourcele fichier
  • La meilleure façon serait de mettre un #au début de toutes les commandes pour commenter toutes les commandes afin qu'elles ne soient pas exécutées accidentellement. De cette façon, vous pouvez réellement rechercher la commande dont vous avez besoin et sans risque. Vous pouvez ajouter #au début de chaque ligne par la commande suivante:

    sed -i 's/^/#/' <file_name>

EDIT: J'ai donné le troisième point comme une mesure de sécurité extrême, comme "neon_overload" et "David Z" ont souligné que mettre des hachages dans toutes les lignes est trop étendu et donc pas nécessaire, je les soutiendrais dans ce contexte. Comme indiqué par "random832", une bien meilleure alternative à mon troisième point serait de démarrer le fichier exit, car aucune commande ultérieure ne sera alors exécutée.

EDIT-2: "Rinzwind" a mentionné deux points importants:

  • Ne pas écraser un fichier existant

  • Stockez le fichier dans le répertoire personnel de l'utilisateur ( /home/$USER/).

heemayl
la source
4
put a # in the beginning of all the commands to comment out all the commands so they don't get executed accidentallyJe ne sais pas trop si c'est censé être une suggestion sérieuse ou une blague. Mon détecteur de sarcasme m'a échoué aujourd'hui.
Lie Ryan
Le mot que vous avez besoin de mettre sur l' importance est « accidentellement » .. l'utilisateur peut garder accidentellement le fichier quelque part comme dangereux exécutable .... ici , je prends juste pas chances..hope vous êtes clair maintenant ..
heemayl
4
Ne pourrait-il pas simplement mettre une "sortie" ou quelque chose comme ça au début du fichier, au lieu de commenter chaque ligne?
o0 '.
Peut-être qu'il voulait dire #! - qui définit l'interpréteur sur null pour qu'il ne s'exécute pas.
Joshua
1
@BJsgoodlife, non #!- juste exit; De cette façon, vous êtes également protégé contre sh yourfilelequel un shebang invalide ne vous aidera pas.
Charles Duffy
7

neon_overload a une très bonne réponse.

Je vais développer un peu une certaine facette de votre question - je voudrais en faire un commentaire, mais je n'ai pas assez de réputation ici.

Linux, en tant que système d'exploitation, n'est PAS basé sur des fichiers texte. Cela dit, je peux voir d'où vous venez. Pour un observateur extérieur, il y a pas mal de choses à faire avec l'édition et le lancement de fichiers "texte", surtout par rapport à Windows.

Cela a plusieurs raisons, dont certaines sont:

  • Il n'y a pas de système de registre sous Linux, comme c'est le cas sous Windows. Par conséquent, il est courant que les applications stockent leurs paramètres dans des fichiers texte et vous serez invité à les modifier plutôt qu'à modifier le registre comme dans Windows.
  • Linux est très largement utilisé comme système de serveur, et beaucoup de ceux qui l'utilisent sur les ordinateurs de bureau travaillent avec des systèmes de serveur. Contrairement à Windows Server, les serveurs Linux fonctionnent généralement sans interface graphique. Par conséquent, les produits qui devraient s'exécuter sur des serveurs Linux et, en fait, leurs utilisateurs et administrateurs, devraient fonctionner sans interface graphique. Les produits (et les fonctionnalités du système, à noter) qui ne devraient s'exécuter que sous Windows sont généralement plus centrés sur l'interface graphique (comme, par exemple, MS SQL)
  • Le système de script Linux est un peu plus courant et plus transparent que Windows. Vous verriez des scripts sur Windows - mais ils s'appelleraient quelque chose.vbs ou another.bat. Vous ne vous rendriez pas nécessairement compte qu'il s'agit de fichiers texte - mais, compte tenu de ce qui est dans mon deuxième point, il est beaucoup plus courant sous Linux d'aller fouiner dans les fichiers .sh.
  • Enfin, de nombreux utilisateurs de Linux sont habitués à travailler sans interface graphique et, pour beaucoup de choses, préfèrent éditer les fichiers directement comme ils le feraient sans interface graphique, plutôt que de tâtonner avec des outils graphiques. Je sais que lorsque je veux faire quelque chose de plus profond dans le système, je démarre simplement le terminal, tout comme nombre de mes collègues.
Fabo.sk
la source
"Il n'y a pas de système de registre sous Linux", mais il y a dconf ( en.wikipedia.org/wiki/Dconf ). Tous les systèmes qui exécutent le noyau Linux ne l'auront pas, et cependant tout ce qu'un système Windows configurerait dans le registre n'y sera pas configuré.
Daniel Landau
1

La réponse courte est non, vous ne changerez pas votre ordinateur en créant un fichier texte dans vi. Cependant, si vous ne faites pas attention, la création de ce premier fichier texte pourrait changer votre vie . Apprendre à la manière Unix peut être une pratique profondément enrichissante.

hackerb9
la source
0

viest un éditeur de texte , donc si tout ce que vous voulez, c'est simplement stocker des extraits de texte dans un fichier texte et le rechercher, vous pouvez tout faire directement à partir du terminal avec les commandes intégrées.

  1. Écrivez une note dans un fichier texte (créera le fichier s'il n'existait pas):

    note d'écho avec des données importantes >> info.txt

IMPORTANT: faites attention aux guillemets simples et doubles et préfixez-les avec des barres obliques si vous souhaitez les inclure.

  1. Recherchez dans le fichier du texte (par exemple important):

    grep --color -i important info.txt

Pour éviter de taper --color -icela devrait être aliasé dans votre ~/.bashrc.

Vous pouvez également ajouter du texte multiligne à des fichiers texte existants ou non existants:

cat >> info2.txt

puis tapez ou collez le texte, puis appuyez sur CTR+Z

Quant à changer le système, non, cela ne changera pas la façon dont votre système fonctionne tant que vous créez des fichiers dans votre propre dossier de départ et ne les exécutez pas (vous pouvez exécuter un fichier même s'il n'est pas exécutable, par exemple avec bash myFile) . Assurez-vous également que vous n'utilisez les privilèges root que lorsque vous en avez besoin.

Et enfin, votre interprétation du système basé sur des fichiers vous a quelque peu induit en erreur: la plupart des systèmes d'exploitation ont des fichiers qui stockent des paramètres importants qui affectent profondément le fonctionnement du système, mais ils sont situés dans des emplacements prédéfinis et sont généralement protégés des modifications par les utilisateurs réguliers.

Il est cependant possible de se tirer une balle dans le pied, par exemple, si en tant qu'utilisateur normal vous avez un dossier `` exécutable '' local que vous avez ajouté à PATH, et si dans ce dossier vous avez des fichiers exécutables qui ont les mêmes noms que ceux construits -dans les services communs ou les mots clés de bash, tels que test, echo, cat, for, cut, etc.

ccpizza
la source