struct stat { dev_t st_dev; /* périphérique*/ ino_t st_ino; /* node*/ mode_t st_mode; /* mode*/ nlink_t st_nlink; /* lien dur*/ uid_t st_uid; ID de groupe */ dev_t st_rdev; /* Type de périphérique */ off_t st_off; /* Nombre d'octets dans le fichier*/ unsigned long st_blksize; /* Taille du bloc*/ unsigned long st_blocks; /* Nombre de blocs*/ time_t st_atime; /* Heure du dernier accès*/ time_t st_mtime; / time_t st_ctime; /* Heure de la dernière modification (faisant référence aux attributs) */};Découvrons ces attributs un par un. Si vous avez besoin d'afficher les attributs d'un certain fichier, utilisez.
statistiqueÉmettez simplement la commande et elle répertoriera les informations selon la structure ci-dessus. en outre,
lsLa commande peut également afficher les attributs pertinents du fichier après avoir suivi certains paramètres, tels que
-lparamètre.
Les types de fichiers correspondent à ce qui précède
st_modeIl existe de nombreux types de fichiers, tels que les fichiers normaux, les liens symboliques (liens physiques, liens logiciels), les fichiers tuyaux, les fichiers de périphériques (périphériques symboliques, périphériques bloc), les fichiers socket, etc. Différents types de fichiers correspondent à différentes fonctions et rôles.
$ ls -ltotal 12drwxr-xr-x 2 racine racine 4096 2007-12-07 20:08 directory_fileprw-r--r-- 1 racine racine 0 2007-12-07 20:18 fifo_pipebrw-r--r-- 1 racine racine 3, 1 2007-12-07 21:44 hda1_block_dev_filecrw-r--r-- 1 racine racine 1, 3 2007-12-07 21:43 null_char_dev_file-rw-r--r-- 2 racine racine 506 2007-12-07 21:55 regular_file-rw -r--r-- 2 racine racine 506 2007-12-07 21:55 Regular_file_hard_linklrwxrwxrwx 1 root root 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_file$ stat directory_file/ Fichier : `directory_file/' Taille : 4096 Blocs : 8 Bloc d'E/S : 4096 DirectoryDevice : 301h/769d Inode : 521521 Liens : 2Accès : (0755/drwxr-xr-x) Uid : ( 0/ root) Gid : ( 0/ root)Accès : 2007-12-07 20:08:18.000000000 +0800Modifier : 2007- 12-07 20:08:18.000000000 +0800Changement : 2007-12-07 20:08:18.000000000 +0800$ stat null_char_dev_file Fichier : `null_char_dev_file' Taille : 0 Blocs : 0 Bloc IO : fichier spécial de 4096 caractèresPériphérique : 301h/769d Inode : 521240 Liens : 1 Type d'appareil : 1,3Accès : (0644/crw-r--r--) Uid : ( 0/ root) Gid : ( 0/ root)Accès : 2007-12-07 21 :43:38.000000000 +0800Modifier : 2007-12-07 21:43:38.000000000 +0800Modification : 2007-12-07 21:43:38.000000000 +0800
Description : Réussi
lsVous pouvez voir que les premiers caractères de chaque ligne des résultats de la commande sont différents les uns des autres, ce qui reflète simplement les types de fichiers différents.
dReprésente un répertoire,
-Représente un fichier ordinaire (ou un lien physique),
jeReprésente un lien symbolique,
pReprésente un fichier pipeline,
bet
cReprésente respectivement les périphériques bloc et les périphériques caractère (en plus
sexprimer
douilledocument). exister
statistiqueDans le résultat de la commande, vous pouvez trouver la description à la fin de la deuxième ligne. Comme le montre l’opération ci-dessus,
fichier_répertoireest le répertoire,
statistiqueUtilisé dans les résultats des commandes
annuairereprésente, et
null_char_dev_fileIl utilise
fichier spécial de caractèreillustrer.
Habituellement, seuls les répertoires, les fichiers ordinaires et les liens symboliques sont utilisés, et d'autres types de fichiers sont rarement rencontrés. Cependant, ces fichiers ont toujours leur propre utilisation si vous effectuez un développement intégré ou une communication de processus, etc., des fichiers de périphérique, un canal nommé. (FIFO). Ce qui suit est une opération simple pour refléter la différence entre eux (les principes spécifiques seront introduits dans la section suivante « Système de fichiers Paradigm de programmation Shell ». Si vous êtes intéressé, vous pouvez également vous rendre en ligne à l'avance pour trouver le rôle des fichiers de périphérique. , les périphériques de blocage et les différences entre les périphériques de caractères, et comment écrire les pilotes de périphérique associés dans le pilote, etc.).
Pour les fichiers ordinaires : il s’agit d’un ensemble de caractères, il peut donc être lu, écrit, etc.
$ echo bonjour, monde > fichier_regular$ cat fichier_regularbonjour, monde
De nouveaux fichiers peuvent être créés dans le répertoire, donc le répertoire est également appelé : dossier. La structure du fichier répertoire sera analysée plus tard. Il stocke en fait les noms de fichiers de chaque fichier en dessous.
$ cd répertoire_fichier$ touch fichier1 fichier2 fichier3
Pour les tubes nommés, l'opération est plus intéressante : si vous voulez le lire, il bloquera sauf s'il y a du contenu ; si vous voulez y écrire, il bloquera sauf si quelqu'un vient le lire ; Il est couramment utilisé dans la communication de processus. Deux terminaux peuvent être ouverts
borne1et
borne2, essaie-le :
terminal1$ cat fifo_pipe #Il bloque ici au début et n'imprime pas la chaîne de test jusqu'à ce que l'action d'écriture suivante se produise terminal2$ echo test > fifo_pipe
Concernant les périphériques blocs, les périphériques caractères, les fichiers de périphériques correspondent à
/dev/hda1et
/dev/null, si vous avez utilisé une clé USB ou écrit un script simple, vous auriez dû utiliser cette méthode auparavant : -)
$ mount hda1_block_dev_file /mnt #Montez la première partition du disque dur sur /mnt (le principe du montage sera abordé dans la section suivante) $ echo somefewfef > /dev/null #/dev/null est comme un trou noir, quelque chose manque Une fois à l'intérieur, tout disparaît
Les deux derniers fichiers sont
fichier_normalLiens physiques et liens logiciels de fichiers, si vous les lisez et les écrivez, leur contenu est le même, mais si vous les supprimez, ils n'ont rien à voir les uns avec les autres. Quelle est la différence entre les liens physiques et les liens logiciels ? Le premier peut être considéré comme le fichier original, tandis que le second a simplement une telle
inode, mais il n'y a pas d'espace de stockage réel, il est recommandé d'utiliser
statistiquecommande pour voir les différences entre eux, y compris leur
Blocs,
inodeÉquivalent, vous pouvez également envisager d'utiliser
différenceComparez leurs tailles.
$ ls Regular_file*ls Regular_file* -l-rw-r--r-- 2 racine racine 204800 2007-12-07 22:30 Regular_file-rw-r--r-- 2 racine racine 204800 2007-12-07 22 :30 regular_file_hard_linklrwxrwxrwx 1 racine racine 12 2007-12-07 20:15 régular_file_soft_link -> régular_file$ rm régular_file # Supprimer le fichier original $ cat régular_file_hard_link # Le lien physique est toujours là, et il y a encore du contenu fefe$ cat régular_file_soft_linkcat: régular_file_soft_link : Aucun fichier ou répertoire de ce type
Bien que le fichier de lien symbolique lui-même soit toujours là, il ne peut rien lire car il ne stocke pas le contenu lui-même. C'est la différence entre les liens symboliques et les liens physiques.
Il convient de noter que les liens physiques ne peuvent pas traverser les systèmes de fichiers, contrairement aux liens logiciels. De plus, il n’est pas permis de créer des liens physiques vers des répertoires.
Les types de fichiers sont divisés dans les types ci-dessus à partir du niveau du système de fichiers Linux, mais les fichiers ordinaires peuvent toujours être divisés (en fonction de la « structure de données » du contenu du fichier), tels que les fichiers texte courants, les exécutables.
ELFEdocument,
odtdocument,
jpgformat d'image,
échangerfichier de partition,
ELFESi vous êtes intéressé par le principe de fonctionnement du fichier, il est recommandé de lire les références et
ELFEPartie pertinente du fichier, cette partie est cruciale pour les ingénieurs Linux embarqué.
Bien que différents types de fichiers ordinaires disposent de leurs propres outils d'exploitation, vous pouvez toujours les lire et les écrire directement. Je mentionnerai d'abord ces outils et discuterai des détails plus tard.
oh: "Exporter" le contenu du fichier au format octal ou autre.
cordes: Lire les caractères du fichier (caractères imprimables)
gcc,
gdb,
lire soi-même,objdump
attendez:ELFE
Outils d'analyse et de traitement des dossiers (gcc
compilateur,gdb
débogueur,lire soi-même
Analyser les fichiers ELF,outil de décompilation objdump`)
Ajoutez une autre commande très importante,
déposer, cette commande est utilisée pour afficher les propriétés de différents types de fichiers. et
statistiquePar rapport à la commande, il peut identifier davantage les fichiers ordinaires, à savoir
statistiquecommande affichée
fichier régulier. parce que
fichier régulierIl peut y avoir une variété de structures différentes et donc être interprétées différemment et effectuer différentes actions avec le support du système d'exploitation. Bien que sous Linux, des suffixes spécifiques soient ajoutés aux fichiers afin que les utilisateurs puissent facilement identifier le type de fichier, le système d'exploitation Linux identifie différents types de fichiers en fonction de l'en-tête du fichier, et non du suffixe du fichier, ce qui rend encore plus difficile l'interprétation du fichier. fichiers correspondants. Ce qui suit est une brève introduction
déposerUtilisation de la commande.
$ fichier ././ : répertoire$ fichier /etc/profile/etc/profile : texte anglais ASCII$ fichier /lib/libc-2.5.so/lib/libc-2.5.so : objet partagé ELF 32 bits LSB, Intel 80386, version 1 (SYSV), non supprimé$ fichier /bin/test/bin/test : exécutable ELF 32 bits LSB, Intel 80386, version 1 (SYSV), lié dynamiquement (utilise des bibliothèques partagées), supprimé$ fichier /dev/hda/dev/hda : bloc spécial (3/0)$ fichier /dev/console/dev/console : caractère spécial (5/1) $ cp /etc/profile .$ tar zcf profile.tar.gz profile$ file profile.tar.gzprofile.tar.gz : données compressées gzip, depuis Unix, dernière modification : mardi 4 janvier 18:53:53 2000$ mkfifo fifo_test$ fichier fifo_testfifo_test : fifo (canal nommé)
Voir plus d'utilisation
déposerManuel de commande, à propos
déposerPour le principe de mise en œuvre de la commande, veuillez vous référer à
magiemanuel (regardez
/etc/fichier/magieFichier, comprendre ce qu'est un fichier
nombre magiqueattendez).
En tant que système multi-utilisateurs, Linux offre une grande commodité à plusieurs utilisateurs pour utiliser le même système. Par exemple, pour les fichiers du système, il distingue les différents utilisateurs selon leurs propriétaires afin d'attribuer leurs autorisations d'exploitation à différents fichiers. Pour une gestion plus facile, le propriétaire du fichier inclut l'utilisateur auquel appartient le fichier et le groupe d'utilisateurs auquel appartient le fichier, car un utilisateur peut appartenir à plusieurs groupes. Tout d’abord, présentons brièvement la gestion des utilisateurs et des groupes sous Linux.
Linux fournit un ensemble de commandes pour gérer les utilisateurs et les groupes, par exemple pour créer des utilisateurs.
utilisateurajouteret
groupeajouter, utilisé pour supprimer des utilisateurs
utilisateurdelet
groupedel,en outre,
mot de passeLa commande est utilisée pour changer le mot de passe de l'utilisateur. Bien entendu, Linux propose également deux configurations correspondantes, à savoir
/etc/mot de passeet
/etc/groupe, de plus, certains systèmes mettent également le mot de passe séparément dans le fichier de configuration
/etc/ombremilieu. Veuillez vous référer aux informations suivantes pour leur utilisation détaillée. Elles ne seront pas présentées ici. Seules certaines relations entre les fichiers et les utilisateurs seront présentées.
$ chown nom d'utilisateur : nom du groupe nom de fichier
Si vous souhaitez modifier de manière récursive les propriétaires de tous les fichiers d'un répertoire, vous pouvez ajouter
-Rpossibilités.
D'après la structure des fichiers répertoriée au début de cette section, nous pouvons voir qu'il n'y a que des utilisateurs
IDENTIFIANTet groupe
IDENTIFIANTinformations, mais
ls-lLe résultat affiche les informations sur le nom d'utilisateur et le nom de groupe. Comment y parvenir ? Jetons un coup d'oeil d'abord
-nLe résultat de :
$ ls -n fichier_régulier-rw-r--r-- 1 0 0 115 07/12/2007 23:45 fichier_régulier$ ls -l fichier_régulier-rw-r--r-- 1 racine racine 115 07/12/2007 23h45 fichier_normal
Comme vous pouvez le voir,
ls-nUtilisateurs affichés
IDENTIFIANTet groupe
IDENTIFIANT,et
ls-lLeurs noms sont affichés. N'oubliez pas les deux fichiers de configuration mentionnés ci-dessus
/etc/mot de passeet
/etc/groupeDéposer? Ils stockent respectivement les utilisateurs
IDENTIFIANTet nom d'utilisateur, groupe
IDENTIFIANTrelation correspondante avec le nom du groupe, il est donc facile de penser à
ls-lComment la commande traverse la structure du fichier une fois implémentée
IDENTIFIANTLes informations trouvent leurs informations de nom correspondantes. Si tu veux avoir raison
ls-lPour une meilleure compréhension de l'implémentation de la commande, vous pouvez utiliser
straceTracez pour voir s'il lit les deux fichiers de configuration.
$ strace -f -o strace.log ls -l fichier_normal $ cat strace.log | egrep passwd|group|shadow2989 open(/etc/passwd, O_RDONLY) = 32989 open(/etc/group, O_RDONLY) = 3
illustrer:
stracePeut être utilisé pour tracer les appels et les signaux du système. comme
gdbComme d'autres outils puissants, il est basé sur le système
traceImplémentation des appels système.
En fait, il n'est pas bon d'introduire le propriétaire et les autorisations séparément, car seule la combinaison des deux rend possible un système multi-utilisateurs, sinon il est impossible d'isoler les opérations des différents utilisateurs sur un certain fichier, donc l'opération sur le fichier les autorisations sont présentées ci-dessous.
depuis
ls-lDans les 9 derniers caractères de la première colonne du résultat de la commande, vous pouvez voir des informations similaires à celle-ci
rwxr-xr-x, qui correspondent à la structure du fichier
st_modepartie(
st_modeContient deux parties : informations sur le type de fichier et informations sur l'autorisation du fichier). Ce type d'informations peut être divisé en trois parties, à savoir
wx,
rx,
rx, correspondant respectivement aux autorisations d'exploitation de l'utilisateur, du groupe et des autres groupes sur le fichier auquel appartient le fichier s'il existe.
wxN'importe lequel d'entre eux signifie lisible, inscriptible et exécutable, si
-Indique qu'une telle autorisation n'existe pas. En conséquence, il peut être représenté en octal, tel que
rwxr-xr-xIl peut être exprimé sous la forme binaire 111101101 et l'octal correspondant est 755. Pour cette raison, il existe de nombreuses façons de modifier les autorisations d'utilisation des fichiers, et elles peuvent toutes être effectuées via
chmodcommande à modifier.
Par exemple, mettez
fichier_normalModifiez les autorisations du fichier pour qu'il soit lisible, inscriptible et exécutable par tous les utilisateurs, c'est-à-dire
rwxrwxrwx, peut également être exprimé par 111111111, traduit en octal, c'est 777. Cette autorisation peut être modifiée de deux manières.
$ chmod a+rwx fichier_régulier
ou
$ chmod 777 fichier_régulier
illustrer:
unFait référence à l'utilisateur utilisé. Si vous souhaitez uniquement accorder à l'utilisateur des autorisations de lecture, d'écriture et d'exécution, vous pouvez le faire.
unRemplacer par
toi;et
+Ajoutez simplement des autorisations. Au contraire, si vous souhaitez supprimer une certaine autorisation, utilisez.
-,et
wxCela correspond à lisible, inscriptible et exécutable. Voir plus d'utilisation
chmodAide à la commande.
En fait, en plus de ces autorisations, il existe deux autres autorisations liées à la sécurité, à savoir
setuid/setgidet contrôle en lecture seule, etc.
Si un fichier (programme ou commande) est défini
setuid/setgidautorisations, l'utilisateur pourra alors
racinePar conséquent, cela peut entraîner des risques de sécurité ; si les autorisations en lecture seule du fichier sont définies, l'utilisateur disposera uniquement d'autorisations en lecture pour le fichier, ce qui évite des situations telles que
rm-rfL'opération « abominable » apporte certains bienfaits.
Par défaut, le système ne permet pas aux utilisateurs ordinaires d'exécuter
mot de passecommander, passer
setuid/setgid, les utilisateurs ordinaires peuvent être autorisés à l'exécuter.
$ ls -l /usr/bin/passwd-rwx--x--x 1 root root 36092 2007-06-19 14:59 /usr/bin/passwd$ su #Basculez vers l'utilisateur root et ajoutez " Sticky bit" $ chmod +s /usr/bin/passwd$ ls -l /usr/bin/passwd-rws--s--x 1 root root 36092 2007-06-19 14:59 /usr/bin/passwd$ exit$ passwd #Les utilisateurs ordinaires peuvent modifier leurs mots de passe en exécutant cette commande.
illustrer:
setuidetdéfinir l'IDBit permet aux utilisateurs ordinaires deracineLe rôle de l'utilisateur s'exécute uniquementracineUn programme ou une commande qui ne peut être exécuté que par un compte.
Bien que cela facilite dans une certaine mesure la gestion, par exemple, l'opération ci-dessus permet aux utilisateurs ordinaires de modifier leurs comptes au lieu de
racineCompte pour effectuer ce travail pour chaque utilisateur. à propos
setuid/setgidPour une explication plus détaillée, veuillez vous référer aux dernières informations recommandées.
Exemple d'autorisation en lecture seule : verrouillez les fichiers importants (ajoutez un bit immuable [immuable])) pour éviter les conséquences catastrophiques causées par diverses erreurs d'opération (telles que
:``rm -rf)
$ chattr +i Regular_file$ lsattr Regular_file----i-------- Regular_file$ rm Regular_file #Après avoir ajouté le bit immuable, vous ne pouvez effectuer aucune activité "destructrice" sur le fichier : supprimez la protection en écriture. fichier normal `regular_file' ? yrm : impossible de supprimer `regular_file' : opération non autorisée$ chattr -i Regular_file #Si vous souhaitez effectuer des opérations régulières dessus, vous pouvez supprimer ce bit$ rm Regular_file
illustrer:
chatPeut être utilisé pour définir des autorisations spéciales sur les fichiers. Pour plus d'utilisation, veuillez vous référer à.
chataide.
Pour les fichiers ordinaires, la taille du fichier est la taille du contenu du fichier. En tant que fichier spécial, le répertoire stocke diverses informations sur les fichiers organisées dans une structure de répertoires. Par conséquent, la taille du répertoire est généralement fixe. Le nombre de fichiers est naturellement stocké. a une limite supérieure, c'est-à-dire sa taille divisée par la longueur du nom de fichier. La "taille du fichier" du fichier de périphérique correspond aux numéros de périphérique majeur et mineur du périphérique, et la taille du fameux fichier pipe est toujours 0 en raison de ses propriétés spéciales de lecture et d'écriture. Un lien physique (les fichiers de répertoire ne peuvent pas créer de liens physiques) est essentiellement une copie complète du fichier original, sa taille correspond donc à la taille du fichier original. Un lien logiciel n'est qu'un
inode, stocke un pointeur vers le fichier d'origine, sa taille correspond donc uniquement au nombre d'octets du nom de fichier d'origine. Ensuite, nous augmentons la mémoire grâce à la démonstration.
Exemples de tailles de fichiers pour les fichiers originaux et les fichiers liés :
$ echo -n abcde > fichier_régulier #Écrire 5 octets dans le fichier_régulier $ ls -l fichier_régulier*-rw-r--r-- 2 root root 5 08/12/2007 15:28 fichier_régulier-rw-r--r -- 2 racine racine 5 08/12/2007 15:28 regular_file_hard_filerwxrwxrwx 1 racine racine 12 07/12/2007 20:15 Regular_file_soft_link -> Regular_filerwxrwxrwx 1 racine racine 22 08/12/2007 15:21 Regular_file_soft_link_link -> Regular_file_soft_link$ i=regular_file$ j=regular_file_soft_link$ echo ${#i} ${# j} #Les liens logiciels stockent exactement le nombre d'octets du nom de fichier du fichier d'origine vers lequel ils pointent 12 22Taille du fichier correspondant au numéro d'appareil : numéro d'appareil majeur et mineur
$ ls -l hda1_block_dev_filebrw-r--r-- 1 racine racine 3, 1 2007-12-07 21:44 hda1_block_dev_file$ ls -l null_char_dev_filecrw-r--r-- 1 racine racine 1, 3 2007-12-07 21:43 null_char_dev_file
Supplément : principal
(majeur), foisLe numéro d'appareil (mineur) a différentes fonctions. Lorsqu'un fichier de périphérique est ouvert, le noyau détermine le numéro de périphérique principal (
numéro majeur) pour trouver le pilote qui a été enregistré avec le numéro de périphérique principal dans le noyau (vous pouvez
chat /proc/appareilsVérifiez la correspondance entre le numéro de pilote enregistré et le numéro d'appareil majeur), et le numéro d'appareil mineur (
numéro mineur) est transmis au pilote lui-même via le noyau (reportez-vous au chapitre 10 de « The Linux Primer »). Par conséquent, pour le noyau, le pilote correspondant peut être trouvé pour identifier un périphérique via le numéro de périphérique majeur, et pour le pilote, afin de pouvoir accéder au périphérique de manière plus complexe, par exemple en accédant à différentes parties du périphérique (telles que matériel divisé en différentes parties via des partitions), apparaît
hda1,
hda2,
hda3etc.), comme la génération de nombres aléatoires avec des exigences différentes (telles que
/dev/aléatoireet
/dev/urandomattendez).
La taille du fichier répertoire, pourquoi est-ce comme ça ? Regardez la taille de la structure du répertoire ci-dessous. Le bloc du fichier répertoire stocke les entrées de tous les noms de fichiers du répertoire.
$ ls -ld fichier_répertoire/drwxr-xr-x 2 racine racine 4096 07/12/2007 23:14 fichier_répertoire/
La structure du répertoire est la suivante :
struct dirent { long d_ino; off_t d_off; unsigned short d_reclen; char d_name[NAME_MAX+1];L'attribut time d'un fichier peut enregistrer les informations d'opération de l'utilisateur sur le fichier et fournira une référence à l'administrateur dans la gestion du système, déterminant les informations sur la version du fichier, etc. Par conséquent, lors de la lecture de documents, il est recommandé d'utiliser
chatAttendez les outils de lecture, n'utilisez pas les outils d'édition
vimAllez lire, car même si aucune opération de modification n'est effectuée, une fois la commande de sauvegarde exécutée, les informations d'horodatage du fichier seront modifiées.
Le nom du fichier n'est pas stocké dans la structure de fichiers, mais dans la structure de répertoires dans laquelle il se trouve. Par conséquent, les noms de fichiers doivent être uniques au même niveau du répertoire.
Pour les fichiers, les opérations courantes incluent la création, la suppression, la modification, la lecture, l'écriture, etc. Les « actions en coulisses » correspondant à diverses opérations seront analysées en détail dans le prochain chapitre « Opérations du système de fichiers Shell Programming Paradigm ».
douilleLe fichier est un type spécial de fichier qui peut être créé via le langage C. Il ne sera pas présenté ici (on ne sait pas s'il peut être créé directement avec des commandes).
$ touch Regular_file #Créer un fichier normal $ mkdir directory_file #Créer un fichier de répertoire pouvant contenir plus de fichiers $ ln Regular_file Regular_file_hard_link #Lien dur, une copie complète du fichier original $ ln -s Regular_file Regular_file_soft_link #Similaire à un pointeur de fichier , pointant vers le fichier original $ mkfifo fifo_pipe # ou créé via mknod fifo_pipe p, FIFO répond aux caractéristiques du premier entré, premier sorti $ mknod hda1_block_dev_file b 3 1 #Bloquer le périphérique $ mknod null_char_dev_file c 1 3 #Périphérique de caractère
La création d'un fichier ajoute en fait un nœud au système de fichiers (
inode), les informations sur le nœud seront enregistrées dans la table des nœuds du système de fichiers. Pour le dire plus clairement, cela signifie qu'une nouvelle feuille (fichier) ou une nouvelle branche (fichier de répertoire, le type sur lequel poussent des feuilles) pousse sur un arbre.arbre
commande ouLa commande ls` est présentée visuellement. Du point de vue d'une utilisation quotidienne, le système de fichiers peut être considéré comme une arborescence inversée, car ils sont très similaires et faciles à mémoriser.
$ arborescence du répertoire courant
ou
$ ls répertoire actuel
L'impression la plus directe de la suppression d'un fichier est que le fichier n'existe plus. Cela peut également être réalisé en.
lsou
arbreLa commande est présentée comme une branche coupée d’un arbre ou une feuille arrachée. En fait, après la suppression, ces fichiers ne disparaissent pas immédiatement, mais sont uniquement marqués pour suppression. Par conséquent, s'il n'y a pas d'opérations d'écriture sur le disque pertinentes pour « couvrir » l'espace disque correspondant après la suppression, ils peuvent en principe être récupérés (bien que , un tel travail est souvent fastidieux, alors réfléchissez-y à deux fois avant de supprimer certaines données importantes, comme effectuer une tâche de sauvegarde). Pour la méthode correspondante, veuillez vous référer aux informations suivantes.
Les commandes spécifiques pour supprimer des fichiers sont
rm, si vous souhaitez supprimer des répertoires vides, vous pouvez utiliser
rmdirCommande. Par exemple:
$ rm fichier_régulier$ rmdir fichier_répertoire$ rm -r fichier_répertoire_not_empty
rmIl y a deux paramètres très importants, l'un est
-f, cette commande est très "barbare" et elle fait probablement souffrir de nombreux utilisateurs de Linux.
-je, cette commande est très "douce", et elle irrite probablement de nombreux utilisateurs. Celui que vous utilisez dépend de votre « humeur ». Si vous avez effectué un travail de sauvegarde adéquat ou pris des mesures efficaces pour éviter des conséquences catastrophiques, vous pouvez vous sentir plus à l'aise lorsque vous effectuez ces tâches.
La copie d'un fichier fait généralement référence à une copie « temporaire » du contenu du fichier. Grâce à l'introduction au début de cette section, nous devons comprendre que les liens physiques et les liens logiciels de fichiers sont également des « copies de fichiers » dans un sens. Les premiers copient le contenu du fichier de manière synchrone, et les seconds « copient » de manière synchrone dans le fichier. cas de lecture et d'écriture. "Contenu du fichier. Par exemple:
utiliser
CPcommande pour copier les fichiers normalement (la copie des répertoires nécessite
-rchoix)
$ cp fichier_régulier copie_fichier_régulière$ cp -r fichier_répertoire copie_fichier_répertoire
Créer un lien physique (
lienet
copieLa différence est que ce dernier est mis à jour de manière synchrone, mais pas le premier. Après copie, les deux ne sont plus pertinents.)
$ ln fichier_régulier fichier_régulier_hard_link
Créer un lien symbolique
$ ln -s fichier_régulier regluar_file_soft_link
La modification du nom du fichier ne modifie en fait que l'identifiant du nom de fichier. peut passer
mvcommande pour modifier le nom du fichier (c'est-à-dire renommer).
$ mv fichier_régulier nom_nouveau_fichier_régulier
L'édition d'un fichier consiste en fait à manipuler le contenu du fichier, ce qui correspond à l'édition de fichiers texte ordinaires. Cela implique principalement la lecture, l'écriture, l'ajout, la suppression, etc. du contenu du fichier. Ces tâches sont généralement effectuées via des éditeurs spécialisés, tels que des éditeurs de ligne de commande.
vim,
emacset interface graphique
gedit, keditattendez. S'il s'agit de fichiers spécifiques, il existera des outils d'édition et de traitement spéciaux, tels qu'un logiciel de traitement d'image.
boiteux, logiciel d'édition de documents
OpenOfficeattendez. Ces outils disposent généralement de tutoriels dédiés.
Ce qui suit est une brève introduction à ces opérations courantes d'édition de fichiers via redirection sous Linux.
Créez un fichier et écrivez
abcd
$ echo abcde > nouveau_fichier_regular
Ajoutez une autre ligne au fichier ci-dessus
abcd
$ echo abcde >> nouveau_fichier_regular
Lire un fichier ligne par ligne
$ pendant la lecture de LINE ; do echo $LINE ; done < test.sh
Astuce : Si vous souhaitez exécuter une variable chaîne contenant une redirection sous forme de commande, utilisez
évaluercommande, sinon la redirection ne peut pas être interprétée. Par exemple,
$ redirect=echo abcde >test_redirect_file$ $redirect #Ici > sera imprimé comme un caractère > au lieu d'être interprété comme une redirection abcde >test_redirect_file$ eval $redirect #Ceci sera interprété > comme une redirection$ cat test_redirect_fileabcde
La compression et la décompression de fichiers visent à faciliter la transmission du contenu du fichier dans un certain sens, mais elles peuvent également avoir des utilisations spécifiques, telles que les fichiers image du noyau et du système de fichiers, etc. (Pour plus de connaissances connexes, veuillez vous référer aux documents suivants).
Voici quelques méthodes courantes de compression et de décompression :
goudron
$ tar -cf fichier.tar fichier #Compresser $ tar -xf fichier.tar #Décompresser
gz
$ fichier gzip -9 $ fichier gunzip
tar.gz
$ tar -zcf fichier.tar.gz fichier$ tar -zxf fichier.tar.gz
bz2
$ fichier bzip2$ fichier bunzip2
tar.bz2
$ tar -jcf fichier.tar.bz2 fichier$ tar -jxf fichier.tar.bz2
D'après la démonstration ci-dessus, il devrait être très clair
goudron,
bzip2,bunzip2,
gzip,pistolet
Est-ce le rôle du commandement ? Si ce n'est pas encore clair, faites-en plus, comparez certaines des commandes ci-dessus et consultez leurs manuels :mec tar'...
La recherche de fichiers fait référence à la recherche de l'emplacement des fichiers avec certains attributs dans un système de fichiers dans une certaine hiérarchie de répertoires. Si cet emplacement est étendu à l'ensemble du réseau, il peut être exprimé sous la forme d'un fichier.
URLL'adresse, pour une adresse locale, peut être exprimée sous la forme
fichier://+chemin local. Le chemin local dans le système Linux commence par
/Pour commencer, par exemple, le répertoire personnel de chaque utilisateur peut être représenté comme suit :
fichier:///home/. Ce qui suit présente uniquement certaines méthodes de recherche de fichiers locaux.
trouverLa commande fournit une méthode de recherche « juste à temps ». En fonction de la demande de l'utilisateur, elle parcourt tous les fichiers de la hiérarchie de répertoires spécifiée jusqu'à ce que le fichier requis soit trouvé. et
mis à jourb+localiserFournit une stratégie de recherche « rapide »,
mis à jourbMettez à jour et générez une base de données de fichiers locale, tout en
situerRecherchez dans cette base de données par nom de fichier pour trouver rapidement le fichier correspondant. Le premier prend en charge la recherche via divers attributs de fichier et fournit une interface (
-exécutableoption) est utilisé pour traiter les fichiers recherchés. Par conséquent, il offre une grande commodité aux fans de scripts à « commande unique », mais pour les recherches basées sur les noms de fichiers,
mis à jourb+localiserCette méthode améliorera considérablement l’efficacité de la recherche. Ce qui suit est une brève introduction à ces deux méthodes :
trouverDémonstration de l'utilisation de base des commandes
$ find ./ -name *.c -o -name *.h #Recherche tous les fichiers de langage C, -o is ou $ find ./ ( -name *.c -o -name *.h ) - exec mv '{}' ./c_files/ ;# Déplacer les fichiers trouvés vers c_files Cette utilisation est très intéressante.L'utilisation ci-dessus peut être utilisée
xargssubstitution de commande
Commande $ find ./ -name *.c -o -name *.h | par exemple, je dois corriger
Changez tous les suffixes des noms de fichiers en majuscules.
$ find ./ -name *.c -o -name *.h | xargs -i ./toupper.sh '{}' ./c_files/topper.shIl s'agit d'un fichier de traitement que nous devons implémenter pour convertir les minuscules en majuscules. L'implémentation spécifique est la suivante :
$ cat toupper.sh#!/bin/bash# le {} sera étendu à la ligne actuelle et deviendra le premier argument de ce scriptFROM=$1BASENAME=${FROM##*/}BASE=${BASENAME%.* }SUFFIX=${BASENAME##*.}TOSUFFIX=$(echo $SUFFIX | tr '[az]' '[AZ]')TO=$2/$BASE.$TOSUFFIXCOM=mv $FROM $TOecho $COMeval $COMmis à jourb+localiserDémonstration d'utilisation de base
$ updateb #Mettre à jour la bibliothèque $ Locate find*.gz #Trouver tous les packages compressés gz contenant la chaîne de recherche
En fait, en plus des deux commandes ci-dessus, il existe également des outils de recherche de commandes sous Linux :
lequelet
où est, le premier est utilisé pour renvoyer le chemin complet d'une certaine commande, tandis que le second est utilisé pour renvoyer une certaine commande, un fichier source,
Le chemin d'accès au fichier man. Par exemple, trouvezChemin absolu vers la commande find :
$ which find/usr/bin/find$ où est findfind : /usr/bin/find /usr/X11R6/bin/find /usr/bin/X11/find /usr/X11/bin/find /usr/man/man1/ find.1.gz /usr/share/man/man1/find.1.gz /usr/X11/man/man1/find.1.gz
Il convient de mentionner que si vous souhaitez rechercher un fichier en fonction de son contenu, alors
trouveret
mis à jourb+localiserainsi que
lequel,
où estNous ne pouvons rien faire, l'alternative est
grep,
sedAttendez la commande, la première est ajoutée
-rÀ l'avenir, le paramètre pourra être utilisé pour rechercher le contenu du fichier spécifié dans les fichiers du répertoire spécifié, puis utiliser
-jeAprès avoir passé les paramètres, le contenu du fichier peut être remplacé. Leur utilisation de base a été présentée en détail dans les chapitres précédents et ne sera pas répétée ici.
Il convient de souligner que ces commandes sont très utiles pour les opérations sur les fichiers. Ils font abstraction de la structure du système de fichiers dans une certaine mesure, simplifiant le fonctionnement de l'ensemble du système de fichiers en un seul fichier. Si un seul fichier ne prend en compte que la partie texte, il sera finalement converti en opération de chaîne précédente. ce qui a été discuté dans la section précédente. Afin d'avoir une compréhension plus claire de la structure organisationnelle des fichiers et des relations entre les fichiers, le système de fichiers sera abordé en profondeur dans la section suivante.
Examen du système de fichiers virtuel Linux à partir des E/S de fichiers
Analyse du système de fichiers Linux
"Linux Core" Chapitre 9 Système de fichiers
Pilotes de périphériques Linux, 3e édition
Astuces : Quelques astuces pour la redirection d'E/S Linux
Chargement, analyse et exemple d'analyse de lien dynamique de fichier ELF sous Linux sous plateforme Intel :
partie1,
partie 2
Technologie de débogage de script Shell
Résumé du format de fichier ELF et du processus d'exécution du chargement du programme
Programmation en langage C sous Linux - opérations sur les fichiers
Opération de fichier faisant partie de la programmation en langage C sous Linux
Norme de hiérarchie du système de fichiers
Apprenez à récupérer des fichiers Ext3 supprimés dans le système Linux
Utilisez mc pour récupérer les fichiers supprimés
Principe de suppression et de récupération accidentelle de Linux ext3
Une liste complète des méthodes de compression/décompression Linux
Tout est un octet
Compte tenu de l'importance des fichiers et des systèmes de fichiers, il sera présenté en trois sous-sections : fichiers, systèmes de fichiers, programmes et processus. Dans la section « Fichier », nous présentons principalement les attributs de base et les opérations régulières des fichiers. Dans la section « Système de fichiers », nous discuterons en profondeur des différentes parties du système de fichiers Linux (y compris la structure du système de fichiers Linux et). la structure générale d'un système de fichiers spécifique. Analyse, le principe de fonctionnement du pilote sous-jacent), la section "Programmes et processus" abordera spécifiquement le contenu pertinent des fichiers exécutables (y compris les différents types de programmes, les processus de chargement et d'exécution, les interactions entre les différents processus [canaux de commande et tuyaux sans nom, communication de signal], contrôle des processus, etc.)
Il est nécessaire de discuter clairement de la signification de la taille du répertoire. De plus, il est préférable de prendre en compte toutes les opérations conventionnelles sur les fichiers, y compris la lecture, l'écriture, l'exécution, la suppression, la modification, la copie, la compression/décompression, etc.
Je suis revenu de Shanghai dans l'après-midi. , et a découvert que Shanghai est une belle ville. À mon retour, j'ai commencé à régler ce blog que j'avais manqué pendant deux semaines en raison de la compétition.
Le 15 décembre, ajoutez la pièce de recherche de fichiers