cClaude.rocks ☕ Le blog

[Nouvelles technologies, sciences et coups de gueule…]

Menu

Rappels concernant « Man »

L’objectif de la commande man (manuel) est d’afficher l’aide d’une commande donnée. Plus généralement sur des éléments du système puisque cela inclue les fichiers de configuration et des points d’entrée pour les programmes.

Par exemple :

Pour les explications du contenu du fichier /etc/machine-id :

man machine-id

Pour le fonctionnement du fichier /etc/fstab :

man fstab

Pour savoir comment un programme utilisant l’API C:

… peut créer un fichier temporaire :

man mkstemps

… peut allouer de la mémoire :

man malloc


La commande « eg »

eg est un programme qui documente les commandes par l’exemple, au lieu d’une description formelle.

En anglais « e.g. » est une abréviation anglaise pour dire « par exemple ».

Exemple complet pour « find » :

Si vous tapez la commande :

eg find

vous obtiendrez le résultat ci-dessous :

  • eg find
    # find
    
    files in searchdir named file.txt
    
        find ./searchdir -name file.txt
    
    
    only directories in searchdir
    
        find ./searchdir -type d
    
    
    show more info
    
        find ./searchdir -name 'file.txt' -ls
    
    
    # Basic Usage
    
    Find files and directories matching a given name:
    
        find <searchdir> -name <name>
    
    
    
    # By Name
    
    Search `/searchdir` for files and directories named `file.txt`:
    
        find ./searchdir -name file.txt
    
    
    
    ## Case Insensitive
    
    Use `-iname` for case insensitive name searching:
    
        $ find ./searchdir -iname file.txt
        ./searchdir/file.txt
        ./searchdir/bar/FiLe.TxT
    
    
    
    ## Wildcards
    
    Wildcards are supported with quotes.
    
    Find files starting with `prefix`:
    
        $ find ./searchdir -name "prefix*"
        ./searchdir/prefix.txt
        ./searchdir/prefixAndMore.txt
    
    
    
    # By Type
    
    ## Files only
    
    Will find files (`-type f`) but not directories named `foo`:
    
        find ./searchdir -type f foo
    
    
    
    ## Directories and Folders
    
    List only directories by specifying `-type d`:
    
        $ find ./searchdir -type d -name 'directory'
        ./searchdir/directory
    
    
    
    # Size
    
    Use the `-size` flag followed by a number and a unit. Without a unit it matches
    blocks.
    
    Find entries exactly two bytes (`-size 2c`). `c` stands for character:
    
        find ./searchdir -size 2c
    
    
    Find files exactly 2 kilobytes (`-size 2k`):
    
        find ./searchdir -size 2k
    
    
    Find files exactly 2 megabytes (`-size 2M`):
    
        find ./searchdir -size 2M
    
    
    
    ## Ranges
    
    Prefix a size with `+` for >= that value and `-` for <= that value.
    
    Find files greater than 5k (`-size +5k`):
    
        find /dir/to/search +5k
    
    
    Find files less than 5k (`-size -5k`):
    
        find /dir/to/search -5k
    
    
    
    # Time
    
    Files can also be filtered based on the last time they were changed, modified,
    and accessed.
    
    `-ctime` refers to the last time the inode or file was changed, which includes
    updating file attributes like owner or permissions as well as file
    modifications.
    
    `-mtime` refers to the last time a file was modified.
    
    `-atime` refers to the last time a file was accessed, including by other
    command line tools.
    
    Arguments to these flags can be in seconds (`s`), minutes (`m`), hours (`h`),
    days (`d`), or weeks (`w`). Preceding an argument with `+` will return files
    greater than the condition, while `-` will return files less than the
    condition.
    
    Find files modified (`-mtime`) less than 20 minutes (`-20m`) ago:
    
        find /searchdir -mtime -20m
    
    
    Find files last accessed (`-atime`) more than 2 weeks (`+2w`) ago:
    
        find /searchdir -atime -w2
    
    
    Alternatively, you can return files that have been modified more recently than
    another file with `-newer`:
    
        find /searchdir -newer other.txt
    
    
    
    # Depth
    
    Find files and directories only two levels deep (`-depth 2` or `-d 2`):
    
        $ find ./one -depth 2
        ./one/two
        ./one/foo.txt
    
    
    Find only files (`-type f`) >= two levels (`-mindepth 2`) and <= three levels
    (`-maxdepth 3`) deep:
    
        $ find ./one -type f -mindepth 2 -maxdepth 3
        ./one/twoLevels.txt
        ./one/two/threeLevels.txt
    
    
    
    # Boolean Operators
    
    Flags are ANDed by default, but can also achieve OR and NOT functionality.
    
    
    ## AND
    
    List files greater bigger than 500k (`+500k`) and named `bigFile.txt`
    (`-name bigFile.txt`). These two commands are equivalent:
    
        $ find ./searchdir -size +500k -name bigFile.txt
        $ find ./searchdir -size +500k -and -name bigFile.txt
    
    
    ## OR
    
    List files bigger than 500k (`+500k`) or those that are named `smallFile.txt`
    (`-or -name smallFile.txt`):
    
        find ./searchdir -size +500k -or -name smallFile.txt
    
    
    ## NOT
    
    List files bigger than 50 megabytes (`-size +50M`) that are not named
    `unwanted.txt` (`-not -name unwanted.txt`):
    
        find ./searchdir -size +50M ! -name unwanted.txt
    
    
    
    # Execute Commands on Results
    
    You can execute a command on all matched files using the `-exec` option. The
    string `{}` will be replaced with the name of the matched file, and the command
    must be terminated with an escaped semicolon (`\;`).
    
    
    ## Change Permissions
    
    Give all files (`-type f`) 755 permissions (`-exec chmod 755 '{}' \;`):
    
        find ./searchdir -type f -exec chmod 755 '{}' \;
    
    
    ## Delete
    
    Deleting files has its own flag. Find all files (`-type f`) ending with a tilde
    (`-name '*~'`) and remove them (`-delete`):
    
        find ./searchdir -type f -name '*~' -delete
    
    

Conclusion

La commande eg est parfaite pour une personne qui a une idée de la commande à utiliser mais qui n’a pas la syntaxe exacte dans la tête. Pour une personne expérimentée, c’est très utile pour les commandes qu’il utilise peu.

À ma connaissance la documentation de eg n’existe qu’en anglais, de toute façon pour la plupart des langages, une bonne connaissance de la langue anglaise est nécessaire, savoir que find veut dire « cherche/trouve » est quand même utile lorsqu’on souhaite utiliser cette commande.

Notez également que la base de donnée de la commande eg est moins complète que celle de man. Vous pouvez obtenir la liste des commandes connue par eg à l’aide de :

eg --list

Il est possible de compléter la documentation pour de nouvelle commandes

eg n’est donc pas vraiment un remplacement pour la commande man mais plutôt un complément.

La documentation de la commande indique :

Les pages man sont géniales. Comment fonctionne find, déjà ? man find vous le dira, mais vous devrez parcourir toutes les options juste pour comprendre une utilisation de base. Et qu’en est-il de l’utilisation de tar ? Même avec les pages du manuel, tar est réputé pour être impénétrable sans la recherche d’exemples sur Google.

Installation

eg est écrit en python et n’est pas directement supporté par les gestionnaires de paquets système, cependant vous pouvez utiliser le gestionnaire de paquets python pip pour installer eg.

pip3 install eg # ou simplement pip


Références

ᦿ


ℹ 2006 - 2022 | 🏠 Accueil du domaine | 🏡 Accueil du blog