Я извлек свой PATH в файл и указал его следующим образом:
/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
Теперь я хочу извлечь его из этого файла и восстановить его как одну строку в новом файле с двоеточиями между каждым каталогом. Я получаю пустой файл, может кто-нибудь показать мне, что я делаю неправильно? Вот команда, которую я выполняю для выполнения восстановления в файл:
echo -e ${bash_list tr \\ :\n} > bash_PATH
решение1
tr
принимает входные данные из STDIN (стандартный ввод). Попробуйте это:
$ tr '\n' ':' > output_file < input_file
Вы использовали синтаксис для расширения параметров Bash, но в качестве параметра используете файл, что неверно, поскольку параметр может быть только переменной или специальным параметром оболочки.
Чтобы сделать то, что вы пытаетесь сделать, используйте только bash
:
$ var="$(<bash_list)"
$ echo "${var//$'\n'/:}" > bash_PATH
Теперь bash_PATH
файл будет содержать:
/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
Также обратите внимание, что у вас есть дублирующиеся имена каталогов в "$PATH" (надеюсь, это сделано намеренно, для примера). Чтобы удалить дубликаты, не меняя порядок, попробуйтеэтот.