如何在 Linux 上使用 cd 命令如何在 Linux 上使用 cd 命令如何在 Linux 上使用 cd 命令如何在 Linux 上使用 cd 命令
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 cd 命令

一些 Linux 命令是如此熟悉,我们甚至没有注意到我们正在使用它们。用于更改目录的 cd 命令就是其中之一。有一些技巧可以帮助您提高 cd 的效率——或者您可以完全放弃它。

您很少想到的命令

你每天都在眨眼,但大多数时候,你并没有意识到这一点。除非有什么东西进入您的眼睛,否则您很少会想到这种小而规律的运动。一些 Linux 命令就是这样。它们徘徊在你意识的外围。即使您每天都使用它们,它们也不会引起您的注意,因为它们又小又简单。

在使用 Linux 计算机的第一个小时内,您将学习如何使用 Bash 和其他 shell 中包含的 cd 命令。也许您之前有在其他操作系统上使用它的经验,不需要解释。它改变了当前的工作目录,对吧?还有什么要知道的?

好吧,比你想象的要多。这里有一些可能会提高您的效率的提示和技巧。

标准 cd 操作

为了完整起见,让我们快速浏览一下 cd 的标准用法。

如果我们在主目录中,但想切换到位于/usr/lib/firefox/browser 的目录,然后返回到主目录,我们可以使用以下命令:

cd /usr/lib/firefox/browser/
cd /home/dave

您不必键入整个目录路径;你可以使用自动完成。对于路径的每一部分,在键入足够多的字母以将目录名称与其他名称区分开来后,按 Tab 键自动完成目录名称。

例如,在命令行中键入以下内容:

cd /usr/lib/fire

现在,按 Tab 键,shell 将为您填充“firefox”目录的其余部分。如果将“/b”添加到路径并再次按 Tab,它会将“browser”目录添加到命令中。

shell 添加一个尾部正斜杠,以便您可以重复制表符完成过程。这也是为什么在第一个命令中有一个尾部正斜杠的原因。第二个没有,因为那个是打出来的。

您可以使用波浪号 (~) 作为从文件系统中的任何位置快速返回到主目录的简写方式;只需输入以下内容:

CD~

这些是绝对路径的示例,您可以在其中提供从文件系统的根目录到目标目录,再到 cd 的完整路径。

相对路径是从当前工作目录引用的。在主目录中,有一个名为 work 的目录。您可以使用 tree 命令查看 work 目录中的目录树——只需键入以下内容:

tree

work 目录包含一个名为 dev 的目录。在文件系统的根目录中还有一个名为 dev 的目录。您可以使用 ls 和 -d(目录)来查看其中的每一个。 -hl(人类可读的长列表)选项告诉 ls 为目录大小和长格式列表使用易于阅读的单位。

如果您键入 dev,shell 会假定您指的是当前目录中的“dev”。要强制它查看根目录中的“dev”,只需添加一个前导正斜杠来表示文件系统的根目录,如下所示:

ls -d dev -hl
ls -d /dev -hl

cd 命令在这方面的行为类似于 ls。如果您将该目录引用为 dev,如下所示,它假定您指的是 work 目录中的目录:

cd dev

如果没有前导正斜杠,则假定更长的路径也从当前工作目录开始,如下所示:

cd dev/mobile/android

用双点更改目录

双点标识符表示当前工作目录的父目录。如果您在一个深层嵌套的子目录中,您可以使用 .. 和 cd 移动到您所在目录的父目录。

这会使您在目录树中向上移动两个目录。如果您在命令中添加更多 ..,它允许您将目录树向上移动任意数量的级别。

输入以下内容:

cd ..
cd ../..

您还可以创建一组别名来为您执行这些操作,方法是键入以下内容:

alias .2="cd ../.."
alias .3="cd ../../.."

您可以像使用命令本身一样使用它们。

要使别名在计算机重新启动后保持一致,您必须将它们添加到 .bashrc 或 .bash_aliases 文件中。

在两个目录之间轻松跳转

连字符 (-) 是另一个具有特殊功能的符号。它将您的目录更改回您刚刚来自的目录。

对于此示例,假设您位于“c”目录中。您可以使用 cd 切换到“forth”目录。然后,您可以使用 cd - 在两个目录之间来回跳转。

为此,您键入以下内容:

裁谈会../来回

CD-

CD-

您要移动到的目录的名称会在您移动到其中之前出现。

另一种亲人

shell 使用当前工作目录作为相对路径的“根目录”或基本目录。您可以使用 CDPATH 环境变量将另一个位置设置为相对路径的基本目录。如果您将大部分时间花在文件系统树的某个部分,这可以每天为您节省大量的击键(和时间)。

让我们输入以下内容,使 work/dev/projects 成为相对路径的基本目录:

export CDPATH=/home/dave/work/dev/projects

现在,每次使用 dc 命令时,都会首先检查 CDPATH 环境变量中的位置以查找匹配的目录名称。如果其中任何一个与您在 cd 命令中提供的目标相匹配,您将被转移到该目录。

现在,无论您在文件系统中的什么位置,当您使用 cd 命令时,shell 都会检查目标目录是否位于基本目录中。如果是,您将移至该目标目录。

如果您的目标目录以前导正斜杠 (/) 开头,这使其成为绝对路径,则它不会受到 CDPATH 环境变量的影响。

为了证明这一点,我们输入以下内容:

cd c
cd prolog
cd /usr
cd forth

CDPATH 环境变量是一个真正的路径,就像 PATH 环境变量一样。当您键入命令时,shell 会在 PATH 中的位置搜索匹配项。当您使用 CDPATH 时,shell 会在 CDPATH 环境变量中搜索位置以进行匹配。此外,与 PATH 一样,CDPATH 可以包含多个位置。

要让 shell 在 CDPATH 环境变量中的其他位置之前搜索当前目录,您只需在路径的开头添加一个句点 (.),如下所示:

export CDPATH=.:/home/dave/work/dev/projects

要使您的设置永久生效,您必须将它们添加到配置文件中,例如 .bashrc。

需要注意的一件事:如果设置基目录,它还会影响在脚本中执行的目录更改。为避免这种情况,您可以在脚本中使用绝对路径或在指定 CDPATH 时在 .bashrc 文件中使用测试,如下所示:

if test "${PS1+set}"; then CDPATH=.:/home/dave/work/dev/projects; fi

这将执行测试以查看是否设置了命令行提示符变量 $PS1 。 CDPATH 环境变量只有在测试成功时才会被设置。

将 shopt 与 cd 一起使用

使用 shopt 命令,您可以为 shell 设置某些选项。其中一些可以增强您对 cd 的使用。要设置它们,您可以使用 -s(启用)选项和 shopt 将选项名称传递给它。

cdspell 选项检查您的目录名称并更正一些常见的打字错误,包括转置或遗漏字符,或字符过多的名称。如果它找到与任何更正相匹配的目录,则打印更正后的路径,并执行 cd 操作。

例如,我们键入以下内容来设置 cdspell 选项并拼错“Desktop”以查看 shell 是否为我们更正了它:

shopt -s cdspell
cd Desktpo

shell 捕获到错误,更正它,然后更改为“Desktop”目录。

可以与 cd 一起使用的另一个 shopt 选项是 autocd。它完全消除了您键入 cd 的需要。您键入的任何不是命令、脚本或其他可执行文件(例如别名)的内容都将用作目标目录。如果您可以转移到该目录,它会打印在终端窗口中,并且您已更改为该目录。

例如,我们键入以下内容:

shopt -s autocd
/usr/local/games
/etc
~

看!您甚至无需使用 cd 就可以遍历整个文件系统!

您使用 shopt 更改的设置只会影响交互式 shell,不会影响脚本。

唱片集

您可能不会采用所有这些。但是,您很可能在这里发现了一些有趣或有益的东西。毕竟,任何可以加速或简化命令行导航的东西都是好的!

Linux Commands
Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc
Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts

©2015-2025 艾丽卡 support@alaica.com