2

我正在编写一些小的 bash 脚本来复制 GNU/Linux 和 Solaris 中的某些文件/目录。Linux 中一切正常,但 cp 命令在 Linux 和 Solaris 中没有相同的选项。

复制命令是这样的:

cp -ruv $source $dest

不幸的是,我不知道如何在 Solaris 中实现复制详细和复制更新。任何的想法?

谢谢

4

3 回答 3

1

不幸的是,cp在 Solaris 下没有这个选项。 man solaris应该揭示这一点。

您是否愿意让您的脚本依赖于rsync

或者,如果可能,您可以安装coreutils包并使用 GNU 的 cp。

于 2012-06-25T14:28:43.643 回答
0

我自己也遇到了类似的问题,发现 gcp 也可以解决这个问题。我已将安装 coreutils 作为标准系统设置的一部分。

我在新的 Solaris 安装上运行这些:

pkgadd -d http://get.opencsw.org/now
pkgutil -U
pkgutil -i -y coreutils
pkgutil -a vim
pkgutil -i -y vim
pkgutil -i -y findutils

请记住将路径 - 和文档路径 - 添加到您的配置文件,并可能添加到 /etc/profile 的系统配置文件:

# Set the program path
PATH=$PATH:/usr/sfw/bin:/usr/sfw/sbin:/usr/openwin/bin:/opt/csw/bin:/usr/ccs/bin:/usr/local/bin:/usr/local
export PATH

# Set the documentation path
MANPATH="$MANPATH:/usr/share/man:/opt/sfw/man:/opt/csw/man"
export MANPATH

听起来您可能是 Solaris 新手——因为我相对较新。我也做这些,应该不会影响任何事情。

我将 VIM 设置为默认编辑器而不是 VI - 它是兼容的,但具有更多功能,包括 ANSI 颜色,并且一些终端仿真器将通过您的鼠标单击和滚动以获得更大的灵活性:

# Set the default editor
EDITOR=vim
export EDITOR

然后,如果您仍在使用不显示任何内容的默认提示,您可能需要添加一些信息 - 此版本需要 Bash shell:

# Set the command prompt, which includes the username, host name, and the current path.
PS1='\u@\h:\w>'
export PS1
于 2018-08-24T14:51:10.490 回答
0

要重新创建详细模式,您可以将输出发送到控制终端 ( /dev/tty),同时将自身的stdoout输出tee传递给cpvia xargs

find /some/source/directory -type f | \
  tee /dev/tty | xargs -I {} cp {} /copy/to/this-directory/

将 替换为find您喜欢的任何内容,只要它将要通过管道复制到的文件的路径传递到tee.

在没有额外 GNU 实用程序的标准 Solaris 10 系统上测试。

于 2018-10-31T19:39:32.907 回答