当我在终端窗口中使用 cp 或 move 命令时,我目前在这样的某个文件夹中使用 bash。
NES@server:~/Desktop/dir1$
现在我想将一个文件从这里复制~/anotherdir/dir2
到 bash (dir1) 中当前选择的文件夹中,我将使用该命令
cp ~/anotherdir/dir2/file ~/Desktop/dir1
是否存在引用当前所选目录的快捷方式字符串?所以在这个例子中我不必提供目标目录的完整路径,但是命令知道它应该在 bash 中使用当前选择的目录?即~代表主目录?
您当前的目录是
.
. 因此,cp /foo/fam/foo .
将文件复制到当前目录。“一个目录向上”或当前工作目录的父目录的类似结构是两个点,即
..
. (感谢@djeikyb。)所以,从
/usr/house/firstfloor/basement
, cd..
带你上一级到/usr/house/firstfloor
.在同一个示例中(从 开始
/usr/house/firstfloor/basement
,该命令cd ../..
将带您到/usr/house
.您还可以使用
$PWD
withecho
来获取当前目录:顺便说一下,
$OLDPWD
会给你你以前的目录。(bash
您也可以通过键入来访问cd -
。)您可以使用 $(pwd),它将解析为 pwd 命令的输出。
例子:
./代表当前目录。所以你可以使用命令
cp ~/anotherdir/dir2/file ./
这会将文件“文件”复制到当前的工作目录中。要将当前目录用作目标目录,请使用单个点 '
.
'长答案
使用您的示例,您将键入:
cp ~/anotherdir/dir2/file .
要查看实际中的点
.
和目录名称..
,../../
请将以下命令复制并粘贴到您的终端中:tree 命令的输出如下所示:
树
.
输出顶部的 代表新的当前目录,它是我们使用命令导航到a
的祖父目录。在下面我们看到子目录,和a/b/c
cd ../../
a
a/b
a/b/c
a/b/c2
逐行分析
&&
首先,我们通过使用将多行连接在一起,在一行上创建了 4 个目录。然后我们切换到 directory
a/b/c
,这是以下复制命令的当前目录:cp
) 中,我们将目标设置为当前目录 ( c ),使用.
...
。../c2
然后,如前所述,我们将当前目录更改为
a
并运行tree
命令以显示a
.清理
完成后,我们删除三个目录和文件:
当前目录的环境变量是 $PWD
您可以使用点 (
.
)、~+
波浪号扩展、pwd
命令或 $PWD 变量来表示当前工作目录 (CWD)。所有这些命令都可以做到这一点:mv file_old_dir .
mv file_old_dir ~+
mv file_old_dir $(pwd)
mv file_old_dir $PWD
是的(正如其他人指出的那样),当前目录是“。”,这就是为什么您可以使用 ./script 从当前目录启动程序/脚本(除非 . 不是 PATH 的一部分,否则脚本将不起作用,不推荐这样做尽管)。使用 $PWD 或 $(pwd) 有点矫枉过正,即使其他人提到,使用单个点字符更短,当然:)“..”是父目录,“/”是根目录。还很高兴提到“cd -”会将您放在您更改 cwd 之前的上一个目录(当前工作目录)。它在日常工作中也很有用。命令行中没有任何其他命令的单个“cd”命令会将您放入“~”(您的家)。
反引号表示运行它们之间的命令并将其全部替换为结果输出,在本例中为工作目录(“pwd”表示“打印工作目录”)。
当然,我更喜欢“。” 版本。添加这个只是为了完整性。