我已经将 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 参数扩展的语法,但使用文件作为参数,这是不正确的,因为参数只能是变量或特殊的 shell 参数。
要执行您尝试的操作,仅使用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”中有重复的目录名称(希望这些是为了示例而故意为之),要删除重复项而不更改顺序,您可以尝试这。