tr a A </ etc / hosts | ordina -r | pr -d> / etc / hosts


9

In questa linea:

tr a A < /etc/hosts | sort -r |pr -d > /etc/hosts 

quale sarebbe il risultato atteso? So che la lettera "a" minuscola cambierebbe in "A" maiuscola, ma quali sono le prospettive? Il file originale verrebbe sovrascritto poiché il reindirizzamento ha lo stesso nome file?


Dovresti ricevere un bash: /etc/hosts: Permission deniederrore (supponendo che la tua shell sia bash), a meno che tu non lo stia eseguendo come root. /etc/hostsè normalmente scrivibile solo da root. Se lo stai eseguendo come root(cosa che non dovresti davvero), ti svuoteresti /etc/hostscome ha spiegato Michael Homer.
arielf

Risposte:


17

Il risultato previsto è un /etc/hostsfile vuoto .

Il reindirizzamento si > /etc/hostsverifica e tronca il file prima che i programmi inizino a essere eseguiti e trinizia a leggere dal file.

Per scrivere l'output /etc/hosts, è possibile lavorare con una copia del file (o spostare successivamente il file di output in posizione) oppure utilizzare il spongecomando da moreutils , che assorbirà l'input standard e scriverà in un file:

tr a A < /etc/hosts | sort -r | pr -d | sponge /etc/hosts

In tal caso, ogni "a" in /etc/hostsverrà sostituita da "A", tutte le righe verranno ordinate al contrario in base alle impostazioni internazionali , verrà inserita una riga vuota tra ogni riga e il risultato verrà inserito /etc/hosts.


Potresti anche trovare utile:


1
Grazie mille per aver chiarito cosa dovrei aspettarmi dal modo in cui è stato scritto e come potrebbe essere scritto per ottenere il risultato atteso.
tdharrison,

moreutils è una suite di strumenti davvero eccezionale
Robert Riedl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.