【Linux】Linux 系统编程——cd 命令

本文详细介绍了cd命令在Unix、Linux和macOS中的使用,包括命令格式、常用选项(如切换到主目录、上级目录、上一个工作目录等),以及利用绝对路径、相对路径和环境变量进行目录切换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.命令概述

cd 命令,即 ‘change directory’ 的缩写,主要用于 Unix、Linux 和 macOS 等操作系统中,用于改变当前工作目录。该命令支持绝对路径和相对路径两种形式。若未指定目录名称,cd 命令默认将工作目录切换至用户的主目录(即用户登录时的初始目录)。

在路径表示上,‘~’ 符号代表用户的主目录,‘.’ 符号表示当前目录,而 ‘…’ 用于表示当前目录的上级目录。例如,命令 ‘cd ~’ 会切换到用户的主目录,而 ‘cd ..’ 则会将工作目录切换到上一级目录。

2.命令格式

基本格式是 cd [目录]

  • 如果不指定目录,它通常会切换到用户的主目录。
  • 可以使用绝对或相对路径。

3.常用选项

  • cd ~:切换到用户的主目录。
  • cd .:保持在当前目录(不常用)。
  • cd ..:切换到当前目录的上级目录。
  • cd -:切换到上一个工作目录。

4.相关描述

  • cd 是最基本的命令之一,在日常工作中非常有用。
  • 它帮助用户导航到文件系统的不同部分。

5.参考示例

切换到主目录

在这里插入图片描述

xjc@ubuntu:~/a$ ls
a1.c  a1.txt  b  output.txt
xjc@ubuntu:~/a$ cd 
xjc@ubuntu:~$ ls
a                          A1-QP-MPC-Controller-main.zip  Desktop    Downloads  Music     Pictures  QtCreator  Templates  test1    vi
A1-QP-MPC-Controller-main  clash                          Documents  lesson2    Newcoder  Public    snap       test       test_ws  Videos
xjc@ubuntu:~$ ^C
xjc@ubuntu:~$ 

使用绝对路径切换目录

命令:cd /usr/local

解释:此命令会将当前工作目录切换到 /usr/local。这里,/usr/local 是一个绝对路径,从根目录开始的完整路径。

在这里插入图片描述

xjc@ubuntu:~$ ls
a                          A1-QP-MPC-Controller-main.zip  Desktop    Downloads  Music     Pictures  QtCreator  Templates  test1    vi
A1-QP-MPC-Controller-main  clash                          Documents  lesson2    Newcoder  Public    snap       test       test_ws  Videos
xjc@ubuntu:~$ cd /usr/local
xjc@ubuntu:/usr/local$ ls
bin  etc  games  include  lib  man  sbin  share  src  webots
xjc@ubuntu:/usr/local$ 

使用相对路径切换目录

命令:cd Documents

解释:如果当前目录中存在 Documents 子目录,该命令会切换到这个子目录。相对路径是基于当前目录的路径。
在这里插入图片描述

在这里插入图片描述

xjc@ubuntu:/usr/local$ cd 
xjc@ubuntu:~$ ls
a                          A1-QP-MPC-Controller-main.zip  Desktop    Downloads  Music     Pictures  QtCreator  Templates  test1    vi
A1-QP-MPC-Controller-main  clash                          Documents  lesson2    Newcoder  Public    snap       test       test_ws  Videos
xjc@ubuntu:~$ cd Documents
xjc@ubuntu:~/Documents$ 

返回上一级目录

命令:cd ..

解释:该命令会将工作目录从当前目录切换到其父目录(即上一级目录)。

在这里插入图片描述

xjc@ubuntu:/usr/local$ cd 
xjc@ubuntu:~$ ls
a                          A1-QP-MPC-Controller-main.zip  Desktop    Downloads  Music     Pictures  QtCreator  Templates  test1    vi
A1-QP-MPC-Controller-main  clash                          Documents  lesson2    Newcoder  Public    snap       test       test_ws  Videos
xjc@ubuntu:~$ cd Documents
xjc@ubuntu:~/Documents$ cd ..
xjc@ubuntu:~$ ls
a                          A1-QP-MPC-Controller-main.zip  Desktop    Downloads  Music     Pictures  QtCreator  Templates  test1    vi
A1-QP-MPC-Controller-main  clash                          Documents  lesson2    Newcoder  Public    snap       test       test_ws  Videos
xjc@ubuntu:~$ 

切换到用户的主目录

命令:cd ~

解释:无论当前位于文件系统的哪个位置,此命令都会将工作目录直接切换到用户的主目录。

在这里插入图片描述

xjc@ubuntu:~$ cd A1-QP-MPC-Controller-main/
xjc@ubuntu:~/A1-QP-MPC-Controller-main$ cd ~
xjc@ubuntu:~$ 

在最近两个工作目录间切换

命令:cd -

解释:此命令允许用户在最近使用的两个工作目录之间来回切换,提高工作效率。

在这里插入图片描述

xjc@ubuntu:~$ cd A1-QP-MPC-Controller-main/
xjc@ubuntu:~/A1-QP-MPC-Controller-main$ cd ~
xjc@ubuntu:~$ cd -
/home/xjc/A1-QP-MPC-Controller-main
xjc@ubuntu:~/A1-QP-MPC-Controller-main$ 

利用环境变量切换目录

命令:cd $HOME

解释:此命令会将工作目录切换到 HOME 环境变量所指示的目录。在大多数 Unix 和类 Unix 系统中,$HOME 环境变量代表用户的主目录。

在这里插入图片描述

xjc@ubuntu:~/A1-QP-MPC-Controller-main$ cd $HOME
xjc@ubuntu:~$ 
ARM 是一种广泛使用的 CPU 架构,而 Linux 内核是一个开放源代码的操作系统内核。在 ARM 平台上,我们可以通过内核模块编程的方式与内核进行交互,实现一些自定义的功能。 下面,我们将介绍如何在 ARM Linux 上编写内核模块,并输出一个简单的 "Hello World" 消息。 ## 1. 环境准备 在开始编写内核模块之前,需要先准备好开发环境。具体步骤如下: 1. 安装交叉编译工具链。ARM 平台上的应用程序和内核模块需要使用交叉编译工具链进行编译。可以从官网下载对应的交叉编译工具链,也可以使用已经编译好的交叉编译工具链。 2. 下载内核源代码。可以从官网下载对应版本的内核源代码,也可以使用已经编译好的内核源代码。 3. 配置内核源代码。需要在内核源代码根目录下运行配置命令 `make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig` 进行配置,选择需要的模块和功能。 ## 2. 编写内核模块 在准备好开发环境之后,可以开始编写内核模块了。具体步骤如下: 1. 创建一个新的文件夹,用于存放内核模块代码。 2. 创建一个新的 C 文件,命名为 `hello.c`。 3. 在 `hello.c` 文件中编写以下代码: ```c #include <linux/init.h> #include <linux/module.h> static int __init hello_init(void) { printk(KERN_INFO "Hello, world!\n"); return 0; } static void __exit hello_exit(void) { printk(KERN_INFO "Goodbye, world!\n"); } module_init(hello_init); module_exit(hello_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Your Name"); MODULE_DESCRIPTION("A simple hello world module"); ``` 这段代码定义了一个简单的内核模块,当模块加载时会输出 "Hello, world!" 消息,当模块卸载时会输出 "Goodbye, world!" 消息。 4. 使用交叉编译工具链进行编译。在终端中进入 `hello.c` 文件所在的文件夹,运行以下命令进行编译: ```bash arm-linux-gnueabi-gcc -Wall -Werror -O2 -o hello.ko -c hello.c ``` 这个命令将生成一个名为 `hello.ko` 的内核模块文件。 ## 3. 加载和卸载内核模块 在编写好内核模块后,我们需要将它加载到内核中进行测试。具体步骤如下: 1. 将 `hello.ko` 文件复制到 ARM Linux 系统上。 2. 在终端中进入 `hello.ko` 文件所在的文件夹,运行以下命令以加载内核模块: ```bash insmod hello.ko ``` 这个命令将调用内核中的 `init_module` 函数,执行 `hello_init` 函数,输出 "Hello, world!" 消息。 3. 查看系统日志,可以看到 "Hello, world!" 消息。 ```bash dmesg ``` 4. 在终端中运行以下命令以卸载内核模块: ```bash rmmod hello ``` 这个命令将调用内核中的 `cleanup_module` 函数,执行 `hello_exit` 函数,输出 "Goodbye, world!" 消息。 5. 再次查看系统日志,可以看到 "Goodbye, world!" 消息。 至此,我们已经成功地在 ARM Linux 上编写了一个简单的内核模块,并输出了 "Hello, world!" 消息。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shopeeai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值