Je recherche une solution à utiliser en réponse à "rm: supprimer le fichier normal protégé en écriture [x]?"
Je pensais émettre un caractère suivi d'un retour de voiture plusieurs fois, en bashrc. Comment fait-on cela?
Je recherche une solution à utiliser en réponse à "rm: supprimer le fichier normal protégé en écriture [x]?"
Je pensais émettre un caractère suivi d'un retour de voiture plusieurs fois, en bashrc. Comment fait-on cela?
Réponses:
Modifier en fonction de la question mise à jour:
Pour éviter d'être invité à supprimer des fichiers, ajoutez l' -f
option ("force"):
rm -f /path/to/file
Ceci a un effet secondaire dont vous devez être conscient: Si l'un des chemins donnés n'existe pas, il ne le signalera pas et il retournera avec succès:
$ rm -f /nonexistent/path
$ echo $?
0
Réponse originale:
Voici une solution simple:
yes "$string" | head -n $number | tr $'\n' $'\r'
yes
répète n'importe quelle chaîne que vous lui attribuez à l'infini, séparées par des nouvelles lignes. head
l'arrête après le $number
temps et tr
convertit les nouvelles lignes en retours à la ligne. Vous pourriez ne voir aucune sortie à cause des retours chariots, mais le passer à cette commande (in bash
) devrait l'illustrer:
printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"
Les utilisateurs ne bash
pouvant pas diriger le résultat vers od
, hexdump
ou xxd
voir les caractères réels retournés.
L’autre problème que j’ai rencontré de temps en temps est rm
son alias rm -i
, comme dans le fichier / etc / bashrc:
alias rm='rm -i'
Dans ce cas, vous pouvez unalias rm
utiliser cette astuce que j'ai découverte il y a des années. Vous pouvez placer une barre oblique inversée devant une commande avec alias, pour ignorer l'alias une seule fois, par exemple:
\rm somefile
Vous pouvez en apprendre plus sur les alias en lisant un article sur Nixcraft .
rm
est codé en dur pour demander "de manière interactive" (invite en attente d'une entrée utilisateur) sur les fichiers protégés en écriture. il existe deux méthodes pour empêcher rm
de demander:
rm -rf somedir
et
rm -r --interactive=never somedir
(les deux fonctionnent aussi sans -r
suppression de fichiers au lieu de répertoires)
explication:
-f
fait rm
pour "ignorer les arguments et les fichiers non existants, ne jamais inviter".
--interactive=never
fait ce qu'il dit: ne soyez jamais interactif. en d'autres termes: ne jamais demander.
la différence entre -f
et --interactive=never
est cette partie: "ignorer les fichiers et les arguments inexistants".
comparer:
$ rm -rf nonexistingname
$ echo $?
0
et
$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1
La différence est surtout intéressante lorsque vous écrivez des scripts dans lesquels vous ne voulez jamais rm
être interactif, mais voulez quand même gérer les erreurs.
résumé: utilisation en ligne de commande rm -rf
. dans les scripts utilisent rm -r --interactive=never
.
pour obtenir une réponse à la question indiquée ("Comment éviter la nécessité d'émettre plusieurs fois« y »lors de la suppression d'un fichier protégé»), voir https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line / 338860 # 338860
Moi aussi j'ai eu le même problème. La réponse ci-dessus ne concerne qu'un fichier, mais si vous souhaitez ignorer beaucoup de oui.
Vous pouvez utiliser
sudo rm -r /path/to/directory
supprimer tout fichier normal protégé en écriture