Extraje mi RUTA a un archivo y la enumeré como tal:
/bin
/usr/bin
/usr/local/bin
.
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin
/usr/java/default/bin
/usr/kerberos/bin
/usr/local/bin
/bin
/usr/bin
Ahora deseo extraerlo de este archivo y restaurarlo como una línea en un archivo nuevo con dos puntos entre cada directorio. Recibo un archivo vacío. ¿Pueden mostrarme qué estoy haciendo mal, por favor? Este es el comando que estoy ejecutando para realizar la restauración al archivo:
echo -e ${bash_list tr \\ :\n} > bash_PATH
Respuesta1
tr
toma entrada de STDIN (entrada estándar). Prueba esto:
$ tr '\n' ':' > output_file < input_file
Ha utilizado una sintaxis para la expansión de parámetros de Bash pero está utilizando un archivo como parámetro que no es correcto ya que el parámetro solo puede ser variable o un parámetro de shell especial.
Para hacer lo que estás intentando usar solo bash
:
$ var="$(<bash_list)"
$ echo "${var//$'\n'/:}" > bash_PATH
Ahora bash_PATH
el archivo contendrá:
/bin:/usr/bin:/usr/local/bin:.:/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin:/usr/java/default/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
También tenga en cuenta que tiene nombres de directorio duplicados en "$PATH" (espero que sean intencionales por ejemplo), para eliminar los duplicados sin cambiar el orden, puede intentareste.