AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 421125
Accepted
Juiceboss
Juiceboss
Asked: 2018-02-01 19:08:34 +0800 CST2018-02-01 19:08:34 +0800 CST 2018-02-01 19:08:34 +0800 CST

在 Unix 中,如何使用相对路径将 /etc/passwd 复制到我的主目录下的目录?[关闭]

  • 772
关闭。这个问题需要更加集中。它目前不接受答案。

想改进这个问题?更新问题,使其仅通过编辑此帖子专注于一个问题。

4年前关闭。

改进这个问题

我需要/etc/passwd使用新名称将 复制到我已经创建的目录中my_passwd。我了解如何使用绝对路径复制它:cp /etc/passwd /home/user/work/my_passwd.

所以我知道这.就是我在 shell 中的位置,并且..用于在我所在的目录中向上移动一个并且我输入了cd work,如果我在家,我可以移动到那里吗?我错了,我将如何使用相对路径进行复制?

shell-script cp
  • 2 2 个回答
  • 12109 Views

2 个回答

  • Voted
  1. Best Answer
    Kusalananda
    2018-02-02T01:19:38+08:002018-02-02T01:19:38+08:00

    相对路径是不以 开头的路径/。

    在此特定示例中,/etc/passwd是绝对路径,如果您知道要复制的文件的绝对路径,则(通常)将其转换为相对路径没有实际目的(实际上,它可能只是混淆了事情,因为路径取决于您当前在目录树中的位置)。

    您要将文件复制到的目录是$HOME/workfilename my_passwd。 $HOME将扩展到您的主目录的绝对路径。

    要仅使用绝对路径复制文件:

    cp /etc/passwd "$HOME/work/my_passwd"
    

    这不取决于您当前位于文件系统中的哪个位置(这很好)。

    要查找/etc/passwd文件的相对路径,您可以realpath在 Linux 上使用该命令(此实用程序可能在其他类型的 Unix 系统上不可用,并且至少在 Ubuntu 中可用)。假设您位于您的主目录中(在给出cd不带参数的命令之后):

    $ realpath --relative-to=. /etc/passwd
    ../../etc/passwd   
    

    这告诉我们“/etc/passwd位于从这里向上的两个目录,然后在etc”中。

    要使用相对路径复制文件,从位于您的主目录中(它不适用于目录树中的其他位置):

    $ cp ../../etc/passwd work/my_passwd
    

    work/my_passwd是从主目录到子目录中文件my_passwd的相对路径。work

    乙醚组合

    $ cp /etc/passwd work/my_passwd
    

    或者

    $ cp ../../etc/passwd "$HOME/work/my_passwd"
    

    显然也可以工作(从你的主目录),这取决于你想绝对或相对指定哪些路径。

    • 3
  2. ilkkachu
    2018-02-02T05:16:31+08:002018-02-02T05:16:31+08:00

    如何制作相对路径/etc/passwd?创建一个相对路径/,然后添加etc/passwd. 如何制作相对路径/?计算当前目录的深度,然后向根目录走那么多步。

    因此,如果我们在 中/home/user/work,我们会使用 3 次向根方向移动../../../。以编程方式,计算当前路径中的斜杠,或者将所有目录名称替换为..,并将第一个斜杠移到末尾。

    让我们在 Bash 中做后者:

    shopt -s extglob
    p=${PWD//+([^\/])/..}
    p=${p#/}/
    echo "current is: $PWD"
    echo "path to /:  $p"
    

    输出例如:

    current is: /tmp/x
    path to /:  ../../
    

    也许更实际的情况是我们需要从/foo/bar/some/pathto的相对路径/foo/bar/otherpath,在这种情况下,只需删除公共前缀并应用上面的解决方案。

    • 1

相关问题

  • 在awk中的两行之间减去相同的列

  • 打印文件行及其长度的脚本[关闭]

  • 通过命令的标准输出以编程方式导出环境变量[重复]

  • 按分隔符拆分并连接字符串问题

  • MySQL Select with function IN () with bash array

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve