【问题标题】:Copying a file a level above when using $(pwd)使用 $(pwd) 时复制上一级文件
【发布时间】:2019-03-05 16:38:03
【问题描述】:

我查看了以下答案,该答案与我的要求接近,但我无法使答案的相关部分正常工作。

$(pwd) - one level up

我正在编写一个作者创建变量的脚本

currentlocation=$(pwd)

然后导航到另一个名为 scripts 的文件夹并使用 cp -p $currentlocation/* . 将所有脚本复制到 Scripts 文件夹中。

我在当前位置上方的文件夹级别中添加了一个新脚本,我想将其复制到 Scripts 文件夹中。

如果有人能告诉我实现这一点的代码行,我将不胜感激。

我试过了

cp -p $currentlocation/../newScript

cp -p $currentlocation/..:/newScript

但到目前为止还没有运气

【问题讨论】:

  • “没有运气”是什么意思?你的电脑是不是突然着火了?从您的代码中,我希望您收到一条错误消息,因为缺少目标参数,但您没有写出您有一个,所以我想知道您观察到了什么效果。
  • 假设你正在复制到当前目录cp -p $currentlocation/../newScript .
  • 什么是newScript?它是一个变量吗?它是目标目录吗?你有一些错误信息吗?
  • 我猜你想要cp -p "$currentlocation"/../newScript .,其中第二个参数. 表示你想要复制它的位置。还要注意正确的引用。
  • 尝试:onelevelupdir=${currentlocation%/*} 或:onelevelupdir=$( dirname "$currentlocation" )

标签: bash unix cp


【解决方案1】:

你可以添加这一行从上层目录复制脚本:

cp -p ${currentlocation%/*}/newScript .

为了获得上一级目录,从包含当前工作目录的 currentlocation 变量中,您应该删除最后一个 / 以及它之后的所有内容。

另一种获取一级目录的方法:

dir=$( dirname "$currentlocation" )dir=$( dirname "$PWD" )

无论如何,不​​建议像在您的情况下使用“。”那样引用目录/目标。而是应该使用绝对路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 2011-05-10
    • 2020-04-13
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多