Quelle est la signification de la ls
commande suivante ?
ls -l *\:2,*T
ls
= liste-l
= long (liste)*T
signifie probablementT
à la fin
Mais qu'en est-il de cela *\:2
et de la virgule?
*\:2,*T
est le modèle global des fichiers à répertorier. Pour le comprendre, nous devons nous souvenir de quelques choses:
:
doit être échappé dans la coquille, devenant \:
Ainsi *\:2,*T
, par exemple, correspondrait à un fichier appeléTranscationNumber:2,EventType:XYT
ÉDITER
D'après les commentaires, la nécessité (ou non) d'échapper aux :
besoins en quelques mots: il n'est pas strictement nécessaire d'échapper au :
signe, mais bash le suggère lui-même lors de la saisie semi-automatique.
:
-il s'échapper?:
n'a pas besoin d'être échappé. Il n'est spécial que dans des circonstances spécifiques (lorsqu'il est utilisé comme une commande), pas dans les modèles glob. L'\:
équivalent de:
, s'échapper ne fait aucune différence.unset var; : ${var:=x}; echo $var
:
- points fait partie des valeurs par défaut de laCOMP_WORDBREAKS
variable d'environnement. Dans la saisie semi-automatique de Bash, ces caractères sont utilisés comme séparateurs de mots par la bibliothèque de lignes de lecture et un nom de fichier contenant deux points doit bien sûr être un seul mot. D'où la raison pour laquelle l'autocomplétion bash nécessite que le côlon soit échappé, bien qu'autrement ce ne soit « surtout » pas un caractère spécial ...Liste tous les fichiers qui correspondent au modèle générique
*:2,*T
Là, le caractère générique
*
correspond à tout (n'importe quel nombre de tous les caractères possibles):2,
sont des caractères qui doivent être présents dans les noms de fichier / répertoire.Le deux
:
- points est un caractère spécial qui doit être échappé, d'où la forme de\:2,
.Les noms de fichiers / répertoires doivent se terminer par un
T
.Les noms de fichiers qui correspondraient seraient
la source
COMP_WORDBREAK
valeurs d'environnement définies par défaut. - Il ne s'agit donc pas d'un caractère spécial réel, mais lorsque vous utilisez la saisie semi-automatique sur la ligne de commande et que vous souhaitez / devez faire correspondre les noms de fichiers avec deux points, il doit être échappé.Comme d'autres l'ont fait remarquer, cela répertoriera au format long, les fichiers contenant
:2
et se terminant parT
Cela ressemble à une recherche dans un dossier Maildir pour les fichiers qui ont été supprimés (mis à la corbeille). Cependant, pour la robustesse, il aurait dû en avoir un autre
*
à la fin. De nouveaux drapeaux avec une position alphabétique ultérieure pourraient être ajoutés, et Dovecot par exemple ajoute un autre champ avec la taille du fichier à la fin.la source