J'essaie de comprendre la signification du point dans bash et comment il diffère d'un astérisque. Quelqu'un peut-il élaborer? Par exemple, quelle est la différence entre cp -ar /foo/. /foo2/
etcp -pr /foo/* /foo2/
11
Le point ( .
) est juste le .
répertoire à l'intérieur d'un répertoire qui est le même que le répertoire lui-même (vous ls -la /foo
le montrera). Donc, si vous copiez foo/.
ailleurs, vous copiez efficacement tout l'arborescence ci-dessous foo
sans se copier foo
(vous le copiez dans foo2/.
lequel est le même que foo2
).
/foo/*
est étendu par le shell à la liste des fichiers et répertoires non cachés dans /foo
, de sorte qu'il copiera également la même structure de répertoires /foo
dans /foo2
, à l'exception des dotfiles / dotdirs. En effet, cp
recevra (potentiellement) de nombreux arguments. Si la liste est trop grande, cela peut même entraîner l' cp
échec de l'exécution de .
cp -r /foo/*
la même chose quecp /foo/*
?set -x
ouecho cp -pr /foo/* /foo2
pour voir ce qui se passe. Il est important de réaliser que c'est le shell qui étend les caractères génériques.cp
ne voit pas l'étoile.