Tengo un script bash que crea algunos archivos usando dd
. El problema es que dd arroja una gran cantidad de salida que va a interferir con la salida de mi script. Buscando alrededor he encontrado una solución:
dd if=boot1h of="/dev/r$temp1" >& /dev/null
¿Existe alguna alternativa o se está redirigiendo a /dev/null
la única forma?
/dev/null
: estás suplantando porquedd
necesita acceso de escritura/dev/r$temp1
(supongo). Necesitará hacerlo sin importar cómo suprimadd
la salida; redirigir la salida a/dev/null
no requiere rootcat
,head
otail
en su lugar.Respuestas:
Desde la
dd(1)
página del manual:así:
Esto todavía genera el
basura cuando
dd
sale, por lo que redirigir a un sumidero de datos es realmente su única opción.fuente
Añadir
status=none
:Desde los documentos dd (coreutils) 8.21 :
fuente
info page
; La respuesta inicial aquí tenía la cita exacta deman page
. Hubiera copiado / pegado directamente de lainfo
página si laman
página es ambigua, pero realmente, depende de usted ... Oh, por cierto, muchas gracias por su otro comentario sobre mi respuesta relacionada con la clasificación por días de la semana.dd
sinstatus=
)dd: invalid status flag: `none' Try `dd --help' for more information.
Para futura referencia:
Para suprimir la salida dd, redirija completamente stderr a / dev / null de esta manera:
Esto funciona bien si desea, por ejemplo, cronometrar el proceso utilizando el comando time en bash y asignar el resultado a una variable, sin obtener ninguno de los resultados que produce dd.
referencia: http://www.unix.com/shell-programming-and-scripting/131624-how-suppress-dd-output.html
fuente
Algo como esto también debería funcionar para usted con versiones recientes de BASH y ZSH:
PD: Este es solo un ejemplo que ejecuté ...
fuente
Con cualquier aplicación o comando de Unix, puede suprimir todos los resultados con
cmd >/dev/null 2>&1
El primer bit redirige la salida estándar (número de unidad 1) a / dev / null. Pero necesita la segunda parte para redirigir TAMBIÉN la salida de error (número de unidad 2) al mismo lugar que el número 1.
En UNIX, STDIN = 0, STDOUT = 1 y STDERR = 2
fuente
stderr
tiene el descriptor de archivo 2 . (Supongo "STDERR = 3" es sólo un error tipográfico.)cmd 2>logfile.txt
parece más adaptadoSi entiendo correctamente lo que está tratando de hacer, ¿está poniendo ese
sudo
comando en el script y espera que el script solicite su contraseña cuando se ejecute allí? En ese caso, solo estás haciendo las cosas de la manera complicada.Una solución más limpia es escribir el script de la manera habitual (es decir, sin
sudo
) y ejecutarlo como superusuario . La razón detrás de esto es que si la secuencia de comandos necesita acceso de superusuario, solo dale el acceso (¿por qué esperar hasta cierto comando?). En el script, para verificar si se está ejecutando como root, haga algo como esto:fuente
sudo
en primer lugar? Los usuarios normales deberían poder redirigir las cosas a la/dev/null
perfección.puede redirigir la salida a un archivo normal, es decir:
fuente