J'ai un script bash qui crée un fichier en utilisant dd
. Le problème est que dd jette une grande quantité de sortie qui va gâcher la sortie de mon script. En cherchant, j'ai trouvé une solution:
dd if=boot1h of="/dev/r$temp1" >& /dev/null
Existe-t-il une alternative ou est-ce que la redirection est /dev/null
la seule?
/dev/null
- vous êtes soudain parce que vous avezdd
besoin d'un accès en écriture/dev/r$temp1
(je suppose). Vous allez avoir besoin de le faire, peu importe comment vous supprimezdd
la sortie; la redirection de la sortie vers/dev/null
ne nécessite pas de racinecat
,head
ou autail
lieu.Réponses:
De la
dd(1)
page de manuel:Ainsi:
Ceci produit toujours le
ordures lors de la
dd
sortie, la redirection vers un collecteur de données est donc votre seule option.la source
Ajouter
status=none
:Du dd (coreutils) 8.21 docs :
la source
info page
; la réponse initiale ici avait la citation exacte de laman page
. Je l'aurais copié / collé directement à partir de lainfo
page si laman
page était ambiguë, mais vraiment, à vous de décider ... Oh, au fait, merci beaucoup pour votre autre commentaire sur ma réponse concernant le tri par jour de la semaine.dd
sansstatus=
)dd: invalid status flag: `none' Try `dd --help' for more information.
Pour référence future:
Pour supprimer complètement la sortie dd, redirigez stderr vers / dev / null comme suit:
Cela fonctionne bien si vous souhaitez, par exemple, chronométrer le processus à l'aide de la commande time dans bash et affecter le résultat à une variable, sans obtenir aucune des sorties générées par dd.
référence: http://www.unix.com/shell-programming-and-scripting/131624-how-suppress-dd-output.html
la source
Quelque chose comme cela devrait également fonctionner pour vous avec les versions récentes de BASH et ZSH:
PS Ceci est juste un exemple que j'ai couru ...
la source
Avec toute application ou commande Unix, vous pouvez supprimer toutes les sorties avec
cmd >/dev/null 2>&1
Le premier bit redirige la sortie standard (numéro d'unité 1) vers / dev / null. Mais vous avez besoin de la deuxième partie pour AUSSI rediriger la sortie d'erreur (numéro d'unité 2) vers le même endroit que le numéro 1.
Sous UNIX, STDIN = 0, STDOUT = 1 et STDERR = 2
la source
stderr
a le descripteur de fichier 2 . (Je suppose que "STDERR = 3" est juste une faute de frappe.)cmd 2>logfile.txt
semble plus adaptéSi je comprends bien ce que vous essayez de faire,
sudo
insérez- vous cette commande dans le script et attendez-vous à ce qu'il vous demande votre mot de passe lorsqu'il s'exécute? Dans ce cas, vous ne faites que des choses compliquées.Une solution plus propre consiste à écrire le script de la manière habituelle (c'est-à-dire sans
sudo
) et à l' exécuter en tant que superutilisateur . La raison derrière cela est que, si le script nécessite un accès superutilisateur, donnez-lui simplement l'accès (pourquoi attendre jusqu'à une certaine commande?). Dans le script, pour vérifier s'il est exécuté en tant que root, procédez comme suit:la source
sudo
en premier lieu? Les utilisateurs normaux devraient pouvoir rediriger les choses/dev/null
très bien.vous pouvez rediriger la sortie vers un fichier normal, à savoir:
la source