仅使用bash内置函数在linux/solaris中移动/复制文件/文件夹

Kul*_*Dox 6 linux bash solaris

有人将整个rootdir移动到远程系统上的子目录中,因此所有系统工具(如cp,mv等)都不再起作用.我们有一个活跃的会话但是找不到使用bash内置函数复制/移动文件的方法.

有人知道实现这个目标的方法吗?

我甚至想过用currentdir复制cp或mv二进制文件

while read -r; do echo $LINE; done
Run Code Online (Sandbox Code Playgroud)

然后将其重定向到文件,但它不起作用.因为二进制文件中的所有特殊不可打印字符无法使用echo复制/显示而猜测.

谢谢.

eph*_*ent 10

/newroot/lib/ld-linux.so.2 --library-path /newroot/lib \
    /newroot/bin/mv /newroot/* /
Run Code Online (Sandbox Code Playgroud)

(类似于Solaris,但我认为动态链接器是ld.so.1在这些行上命名的.)

或者,如果你的shell是sh(不像csh一样),

LD_LIBRARY_PATH=/newroot/lib /newroot/bin/mv /newroot/* /
Run Code Online (Sandbox Code Playgroud)


Dou*_*der 5

如果你准备好sash预先安装,那么它是静态的并且内置了一个副本(-cp).

否则LD_LIBRARY_PATH=/copied/to/path/lib /copied/to/path/bin/cp可能有用吗?

我认为在预期的地方没有ld-so可能会有问题.


Ton*_*ler 0

/subdir/bin/mv /subdir /
Run Code Online (Sandbox Code Playgroud)

或者我在你的解释中遗漏了什么?

  • 如果“/bin/mv”是动态链接的(现在很常见),如果“/lib”也被移动了,它就不会加载。 (3认同)