2010-09-15 12 views
3

Je suis nouveau à UNIX et quand je lisais un livre sur UNIX, je suis tombé sur deux problèmes que je n'ai pas compris. J'apprécierais vraiment votre aide.Commande UNIX tty et commande de fichier?

1) Recherchez la commande man dans la page de manuel, puis utilisez-la sur tous les fichiers du répertoire/dev. Pouvez-vous regrouper ces fichiers en deux catégories?

2) Exécutez la commande tty et notez le nom du périphérique de votre terminal. Utilisez maintenant ce nom de périphérique (/ dev/pst/6) dans la commande cp/etc/passwd/dev/pts/6. qu'observez-vous?

+0

Pouvez-vous expliquer ce que vous avez et n'avez pas compris à propos de ces questions? –

+0

La question a la réponse. Suivez simplement les étapes mentionnées. – codaddict

+1

Merci pour votre réponse rapide. En ce qui concerne la première question, je ne suis même pas sûr de savoir quelle est la question posée et en quoi regrouper deux catégories. En ce qui concerne la deuxième question, lorsque je suis les étapes mentionnées, cela produit tellement de lignes d'information que je ne comprends pas. –

Répondre

10

Foire question vraiment ... il est si facile pour nous de prendre autant pour acquis.

Pour lire la page de manuel pour la commande appelée file, il suffit de taper ...

man file 

... qui présentera beaucoup d'informations qui sera probablement assez déroutant, mais vous vous habituerez à cette substance assez rapide si vous persévérez. Fondamentalement, file est un programme qui tente de classer les fichiers que vous lui demandez. Si vous tapez ...

file /dev/* 

... qui faire ce que la question posée, et invoquer le fichier avec une liste des fichiers dans le répertoire/dev /. La liste est en fait préparée par le programme "shell" dans lequel vous tapez, qui exécute ensuite le programme de fichiers et le passe dans la liste. file puis affiche une description des fichiers. Sur mon ordinateur, et où [SHELL-PROMPT] sera différent sur votre ordinateur, je tapais fichier/dev/* et une partie de la sortie ressemblait à:

[SHELL-PROMPT] file /dev/* 
...lots of stuff... 
/dev/cevt:  character special (255/176) 
/dev/console: character special (5/1) 
/dev/core:  symbolic link to `/proc/kcore' 
/dev/cpqci:  character special (10/209) 
/dev/cpqhealth: directory 
/dev/crom:  character special (255/180) 
...lots of stuff... 
/dev/md8:  block special (9/8) 
/dev/md9:  block special (9/9) 
/dev/mem:  character special (1/1) 
/dev/mice:  character special (13/63) 
/dev/mouse0: character special (13/32) 
/dev/mptctl: character special (10/220) 
/dev/net:  directory 
/dev/nflog:  character special (36/5) 
/dev/null:  character special (1/3) 
/dev/parport0: character special (99/0) 
...lots of stuff... 

Il y a une entrée de système de fichiers pour chaque combinaison des répertoires/fichiers (connu sous le nom chemin) dans la colonne de gauche, et le fichier décrit le contenu dans la droite. Ces descriptions peuvent ne pas avoir beaucoup de sens, mais vous pouvez voir certains modèles: certaines entrées sont "bloc spécial", d'autres "caractère spécial", certains sont répertoire qui implique que vous trouverez plus de fichiers sous (ls /dev/net/*). Les numéros après les fichiers "spéciaux" ne sont que des identifiants du système d'exploitation pour différencier les fichiers mentionnés. L'importation de cela est que l'entrée et la sortie de certains périphériques connectés à l'ordinateur est rendue possible comme si le périphérique était un fichier dans le système de fichiers. Cette abstraction "fichier" est utilisée comme modèle général pour l'entrée et la sortie. Ainsi,/dev/tty est par exemple tty - ou terminal - device. Toutes les données que vous essayez de lire à partir de là seront effectivement prises à partir du clavier que vous utilisez pour taper dans le shell (dans le cas simple), et tout ce que vous écrivez là-bas deviendra visible dans le même terminal que vous tapez./dev/null est un autre intéressant: vous pouvez en lire et en écrire, mais c'est une chose imaginaire qui ne fournit jamais réellement de données (indique simplement la condition End-of-File, et rejette toute donnée écrite dedans). Vous pouvez continuer à lire depuis/dev/random et cela produira des valeurs aléatoires à chaque fois ... bien si vous avez besoin de nombres aléatoires ou de contenu de fichier pour le chiffrement ou un travail statistique.

2) Exécutez la commande TTY et notez le nom du périphérique de votre terminal. Maintenant, utilisez ce nom de périphérique (/ dev/pst/6) dans la commande cp/etc/passwd/dev/pts/6. qu'est-ce que vous observez?

En tapant "tty" vous pouvez demander le dispositif représentant votre terminal ...

[SHELL-PROMPT] tty 
/dev/pts/11 

Mais, je viens de dire/dev/tty est un autre nom pour la même chose, donc il n'y a normalement pas nécessaire d'utiliser le programme « téléscripteur » pour trouver ce nom plus spécifique. Cependant, si vous créez deux fenêtres de terminal sur votre hôte, et que vous tapez tty dans chacune, vous verrez que chaque shell est connecté à un périphérique pseudo-terminal différent. Pourtant, chaque shell - et chaque programme exécuté à partir du shell - peut par défaut se référer également à son propre périphérique d'entrée et de sortie terminal sous la forme/dev/tty ... c'est un nom sensible au contexte. La commande ...

cp /etc/passwd /dev/pts/6 

... où vous remplacez 6 avec quel que soit votre programme TTY vraiment rapporté (par exemple 11 dans mon cas), fait la même chose que ...

cp /etc/passwd /dev/tty 

. ..il lit juste le contenu du fichier/etc/passwd et les écrit sur votre écran. Maintenant, le problème est que/etc/mot de passe ressemble à beaucoup d'indésirable inintelligible pour la personne moyenne - il n'est pas étonnant que vous ne puissiez pas donner un sens à ce qui se passait. Essayez plutôt ...

echo "i said hello" > /tmp/hello.file 
cp /tmp/hello.file /dev/tty 

... et vous verrez comment diriger un contenu spécifique, reconnaissable dans un nouveau fichier (dans ce cas, mettre dans le répertoire tmp « temporaire » (le fichier disparaître lorsque vous redémarrez votre PC), puis en copiant ce contenu sur votre écran

(Si vous avez ouvert une session dans deux fenêtres de terminal, vous pouvez même entrer dans un shell et copier le fichier dans/dev/pts/NN périphérique signalé par l'autre shell, envoyant effectivement un message à l'autre fenêtre.Vous pouvez même contourner le fichier et echo 'boo' > /dev/tty/NN. Vous aurez seulement des autorisations pour le faire si le même ID utilisateur est connecté aux deux fenêtres.)

+0

Merci beaucoup pour l'explication parfaite et votre temps. C'était très utile. Merci. –

+0

De rien ... bonne chance pour l'étude. –