Sto cercando una soluzione da utilizzare come risposta a "rm: rimuovere il file regolare protetto da scrittura [x]?"
Stavo pensando di rilasciare un personaggio seguito dal ritorno in carrozza per diverse volte, a Bashrc. Come lo facciamo?
Sto cercando una soluzione da utilizzare come risposta a "rm: rimuovere il file regolare protetto da scrittura [x]?"
Stavo pensando di rilasciare un personaggio seguito dal ritorno in carrozza per diverse volte, a Bashrc. Come lo facciamo?
Risposte:
Modifica in base alla domanda aggiornata:
Per evitare che ti venga chiesto di rimuovere i file, aggiungi l' -f
opzione ("force"):
rm -f /path/to/file
Questo ha un effetto collaterale si dovrebbe essere a conoscenza di: Se uno dei percorsi specificati non esistono, verrà non segnalare questo, e tornerà con successo:
$ rm -f /nonexistent/path
$ echo $?
0
Risposta originale:
Ecco una soluzione semplice:
yes "$string" | head -n $number | tr $'\n' $'\r'
yes
ripete qualsiasi stringa che le dai infinitamente, separata da nuove righe. head
lo ferma dopo $number
volte e tr
traduce le nuove righe in ritorni a capo. Potresti non vedere alcun output a causa dei ritorni a capo, ma passandolo a questo comando (in bash
) dovresti illustrarlo:
printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"
Gli utenti senza bash
possibile reindirizzare il risultato od
, hexdump
o xxd
per vedere i caratteri effettivi restituiti.
L'altro problema che ho riscontrato di volta in volta è che rm
è alias rm -i
, qualcosa del genere in / etc / bashrc:
alias rm='rm -i'
In quel caso unalias rm
puoi usare o puoi usare questo trucco che ho scoperto anni fa, mettere una barra rovesciata davanti a un comando che è stato modificato, per ignorare l'alias solo quella volta, ad esempio:
\rm somefile
Puoi saperne di più sugli alias attraverso un articolo su Nixcraft .
rm
è hardcoded per chiedere "interattivamente" (prompt in attesa di input dell'utente) su file protetti da scrittura. ci sono due metodi per impedire rm
di chiedere:
rm -rf somedir
e
rm -r --interactive=never somedir
(entrambi funzionano anche senza -r
eliminare file anziché dirs)
spiegazione:
-f
fa rm
"ignorare file e argomenti inesistenti, non chiedere mai".
--interactive=never
fa quello che dice: non essere mai interattivo. in altre parole: mai sollecito.
la differenza tra -f
e --interactive=never
è questa parte: "ignora file e argomenti inesistenti".
confrontare:
$ rm -rf nonexistingname
$ echo $?
0
e
$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1
la differenza è principalmente interessante quando si scrivono script in cui non si desidera mai rm
essere interattivi ma si desidera comunque gestire gli errori.
riepilogo: utilizzo da riga di comando rm -rf
. nell'uso degli script rm -r --interactive=never
.
per una risposta alla domanda dichiarata ("Come evitare la necessità di emettere più volte" y "quando si rimuove il file protetto") consultare https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line / 338.860 # 338.860
Anch'io ho riscontrato lo stesso problema. La risposta sopra è solo per un file, ma se si desidera ignorare molti sì.
Puoi usare
sudo rm -r /path/to/directory
per rimuovere tutti i file regolari protetti da scrittura