当前目录的命令行快捷方式类似于〜对于主目录?


24

当我在终端窗口中使用cp或move命令时,我目前在bash这样的特定文件夹中。

NES@server:~/Desktop/dir1$

现在我想从此处将文件复制~/anotherdir/dir2到bash(dir1)中当前选择的文件夹中,我将使用以下命令

cp ~/anotherdir/dir2/file ~/Desktop/dir1

快捷方式字符串是否存在以引用当前所选目录?这样,在此示例中,我不必提供目标目录的完整路径,但是命令知道它应该使用bash中当前选择的目录吗?即作为〜代表主目录?

Answers:


42

您当前的目录是.。因此,cp /foo/fam/foo .将文件复制到当前目录。

“一个目录向上”或当前工作目录的父目录的类似构造是两个点,即..。(感谢@djeikyb)

因此,从/usr/house/firstfloor/basementCD ..开始,您将升级到/usr/house/firstfloor

在同一个示例中(从开始/usr/house/firstfloor/basement,命令cd ../..将带您到/usr/house

您还可以使用$PWDwith echo获取当前目录:

echo $PWD

顺便说一句,$OLDPWD将为您提供以前的目录。(bash您也可以通过键入来达到此目的cd -。)


3
作为学习的好时机,这..意味着目录要低一个。可以使用多次,即cd ../..
djeikyb

1
@djeikyb-我确定你的意思是上面的。因此,cd ..将带您到当前目录的父目录。好点子。
belacqua

1
我提到过popdpushd但这正在变成一篇论文。
belacqua

2
要记住的一个小区别:.并且..它们是文件系统级的,因此任何程序都可以接受它们。另一方面,诸如~和的快捷方式~-是外壳程序的一部分。
grawity 2011年

2
为+1 cd -;不知道它的存在。
jg-faustus


3

./代表当前目录。因此,您可以使用命令“ cp ~/anotherdir/dir2/file ./将文件”复制到当前工作目录中。


3
您不需要斜杠“。”。也足够了。仅当您要在其后放置其他路径组件时才需要斜线(作为路径组件分隔符),但是斜线./则更容易留下,因为相对路径始终意味着从当前目录开始:)
LGB

我知道/不是必需的。我一个人感到困惑。还用于从当前外壳程序中的文件(例如“。envsetup.sh”)执行命令。因此,在末尾添加一个/使其更加清晰。
2011年

1
切线地,如果不ln -s /some/long/path/to/get/to/cake 使用第二个参数,它将把cake符号链接直接放在当前参数中。非常适合懒惰的人。保存一个.
belacqua 2011年

2

要将当前目录用作目标目录,请使用单个点' .'

长答案

使用您的示例,您将输入: cp ~/anotherdir/dir2/file .

要查看点...../../在行动目录名,复制以下命令粘贴到你的终端:

mkdir a && mkdir a/b && mkdir a/b/c && mkdir a/b/c2
cd a/b/c
cp /etc/default/grub .
cp /etc/default/grub ..
cp /etc/default/grub ../c2
cd ../../
tree

tree命令的输出如下所示:

.
└── b
    ├── c
       └── grub
    ├── c2
       └── grub
    └── grub

3 directories, 3 files

.在树输出的顶级代表新的当前目录a 是的祖父a/b/c我们导航使用cd ../../命令。在下面a看到子目录a/ba/b/ca/b/c2

逐行分析

首先,我们使用以下命令在一行上创建了4个目录 &&将多行连接在一起,。

然后,我们转到目录a/b/c,这是以下复制命令的当前目录:

  • 在第一个复制命令(cp)中,使用以下命令将目标设置为当前目录(c.
  • 在第二个复制命令中,我们将目标设置为父目录(b..
  • 在第三个复制命令中,我们将目标设置为同级目录(c2../c2

然后,如前所述,我们将当前目录更改为,a并运行该tree命令以显示下的所有目录和文件a

清理

完成后,我们使用以下命令删除三个目录和文件:

cd ~/
rm -r tree


1

您可以使用点(.),~+ 代字号扩展pwd命令或$ PWD变量表示当前工作目录(CWD)。所有这些命令都可以做到这一点:

  1. mv file_old_dir .
  2. mv file_old_dir ~+
  3. mv file_old_dir $(pwd)
  4. mv file_old_dir $PWD

0

是的(如其他人所指出的那样),当前目录为“。”,这就是为什么您可以使用./script从当前目录启动program / script的原因(除非。不是PATH的一部分,否则脚本将不起作用。虽然)。使用$ PWD或$(pwd)有点过分,即使其他人提到,使用单点字符会更短,请确保:)“ ..”是父目录,请确保“ /”是根目录。还要提及的是,“ cd-”将使您进入更改cwd之前的目录(当前工作目录)。在日常工作中也很有用。单个“ cd”命令,而命令行中没有其他命令,将把您带入“〜”(家中)。


1
$PWD在创建指向绝对路径的符号链接时,这并不是一个过大的杀伤力。
ulidtko 2011年

我确实考虑过“ cp”示例的位置。即使具有符号链接,它也取决于以下情况:“ ln -s / this / file”。会在当前目录中创建一个指向文件“ / this / file”的符号链接,文件名为“ file”(人们通常认为这与“ cp”类似,只是不复制数据,只是某种形式的链接:这不是正确的定义,但这是一个好的开始)。但是,相反的构造:“ ln -s。/ this / dir”有点有趣(用当前目录的Refers创建一个/ this / dir的符号链接),但我认为这超出了原始主题的范围,这也不是问题。
LGB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.