GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation du tiret (-) à la place d'un nom de fichier ?

Pour une commande, si vous utilisez - comme argument à la place d'un nom de fichier signifiera STDIN ou STDOUT.

  1. Mais dans cet exemple, il crée un fichier avec le nom - :

    echo hello > -
    

    Comment puis-je faire - dans cet exemple signifie STDOUT ?

  2. Inversement, comment puis-je faire - désigne un fichier nommé - dans des exemples tels que :

    cat -
    

Réponse acceptée :

Utiliser - comme nom de fichier pour signifier que stdin/stdout est une convention utilisée par de nombreux programmes. Ce n'est pas une propriété spéciale du nom de fichier. Le noyau ne reconnaît pas - comme spécial donc tous les appels système se référant à - comme nom de fichier utilisera - littéralement comme nom de fichier.

Avec la redirection bash, - n'est pas reconnu comme un nom de fichier spécial, donc bash l'utilisera comme nom de fichier littéral.

Quand cat voit la chaîne - en tant que nom de fichier, il le traite comme un synonyme de stdin. Pour contourner ce problème, vous devez modifier la chaîne que cat voit de telle manière qu'il se réfère toujours à un fichier appelé - . La manière habituelle de le faire est de préfixer le nom de fichier avec un chemin - ./- , ou /home/Tim/- . Cette technique est également utilisée pour contourner des problèmes similaires où les options de ligne de commande entrent en conflit avec les noms de fichiers, donc un fichier appelé ./-e n'apparaît pas comme le -e option de ligne de commande à un programme, par exemple.


Linux
  1. Linux - Utilisation réelle de la mémoire ?

  2. Mesurer l'utilisation de RAM d'un programme ?

  3. Commande Linux df

  4. FAQ sur les flux cloud

  5. Profilage détaillé par processus

cPanel – Utilisation du disque

sar :commande introuvable

Comment profiler l'utilisation de la mémoire ?

Comment extraire le fichier filename.tar.gz

comment ar x filename.a dans un répertoire différent

Utilisation de la mémoire de la commande TOP