Sous Windows 10, git-bash et cygwin Shell peuvent-ils faire la même chose?
Que peut-on faire mais que l'autre ne peut pas?
Par exemple,
Quels programmes et commandes peuvent s'exécuter dans l'un mais pas dans l'autre?
Par exemple, dans git-bash, je ne peux pas exécuter de commande Windows:
$ reg add "HKCU\Software\Microsoft\VisualStudio\14.0_Config\MSBuild" /v EnableOutOfProcBuild /t REG_DWORD /d 0 /f
ERROR: Invalid syntax.
Type "REG ADD /?" for usage.
Mais dans Cygwin, ça marche bien
$ reg add "HKCU\Software\Microsoft\VisualStudio\14.0_Config\MSBuild" /v EnableOutOfProcBuild /t REG_DWORD /d 0 /f
The operation completed successfully.
à l'origine, je pensais que git-bash et cygwin pouvaient exécuter des programmes sous Windows. Alors, pourquoi git-bash ne fonctionne-t-il pas alors que cygwin le peut?
Merci.
La différence est que Cygwin sait comment traiter les noms de chemin dits "Win32". En gros, il sait que "\" est un séparateur de chemin d'accès et non un caractère d'échappement Shell, comme c'est le cas dans Bash. L'erreur que vous avez montrée est que Bash interprète "\" comme un caractère d'échappement. (Edit: vous pouvez essayer de remplacer un\par deux, ce qui évite la barre oblique inverse, de sorte que Bash transmette correctement la commande à reg.exe.)
Cela dit, même si Cygwin utilise des chemins d'accès Windows, il n'aime pas le faire. La documentation vous empêche de les utiliser. Bien sûr, un peu de recul en arrière de temps en temps ne fait pas mal. Mais bien que vous puissiez exécuter des programmes Windows dans Cygwin, hygiene vous suggère d'exécuter ces programmes dans les processeurs CMD.EXE et UNIX dans Cygwin pour votre santé à long terme.
Je viens de trouver une différence: je peux exécuter ce script dans Git bash, mais pas dans Cygwin.
for file in *.xml; do
echo "Processing file: $file"
sed -r 's:<Autorizado>([0-9]+)</Autorizado>:<Autorizado>00013069</Autorizado>:' -i "$file"
# ...
done
Dans Git bash, il traite mes fichiers xml, mais dans Cygwin, cela me donne une erreur:
Processing file: *.xml
sed: cannot read *.xml: No such file or directory
bash --version
dans Git bash:
GNU bash, version 4.3.42(5)-release (x86_64-pc-msys)
dans Cygwin:
GNU bash, versión 4.3.46(7)-release (x86_64-unknown-cygwin)