Gère les caractères non valides du nom de fichier dans unix

Je dois faire des opérations de commande linux sur des fichiers ayant “!” comme les caractères du nom de fichier. Mais chaque fois que j’essaie d’exécuter les commandes, je me retrouve en dessous de l’erreur.

[root@ATD-6000 ~]# cat a!aapoorv.txt -bash: !aapoorv.txt: event not found 

J’exécute ces commandes en python en utilisant le module paramiko. Je ne peux pas utiliser la chaîne brute r’filessortingngname ‘, car je lis le nom de la chaîne à partir de db lui-même.

Comment échapper / manipuler ces roi de caractères en utilisant python / bash.

essaye ça:

 cat a\!aapoorv.txt 

ou ca

 cat 'a!aapoorv.txt' 

Notez que si cat a\!aapoorv.txt fonctionne dans tous les shells qui implémentent cette extension, cat 'a!aapoorv.txt' ne fonctionne pas dans csh / tcsh.

Pour plus d’informations, vous pouvez voir l’ man bash parler de la cotation .

Voici une partie de ce document:

La citation est utilisée pour supprimer la signification particulière de certains caractères ou mots dans le shell.

La citation peut être utilisée pour désactiver le traitement spécial pour les caractères spéciaux, pour empêcher la reconnaissance des mots réservés en tant que tels et pour empêcher l’expansion des parameters.

Et voici la sortie:

 [kevin@Arch test]$ ls a!aapoorv.txt [kevin@Arch test]$ cat a\!aapoorv.txt Hello, This is a test [kevin@Arch test]$ cat 'a!aapoorv.txt' Hello, This is a test 

Sur Python, vous n’avez pas besoin d’échapper au caractère spécial, voici un test:

 >>> with open('a!aapoorv.txt') as f: ... f.read() ... ... 'Hello, This is a test\n' >>> with open(r'a!aapoorv.txt') as f: ... f.read() ... ... 'Hello, This is a test\n' >>> 

utiliser des guillemets simples ”:

 $ cat 'a!aapoorv.txt' cat: a!aapoorv.txt: No such file or directory 

Pour Bash, vous devez utiliser les méthodes d’échappement (guillemets simples ou antislash) décrites par les autres réponses.

En Python, vous ne devriez pas avoir besoin d’utiliser des chaînes brutes ou tout autre type d’échappement pour ouvrir un fichier avec des caractères spéciaux.

Par exemple, cela fonctionne bien:

 my_f_contents = open("a!aapoorv.txt").read()