【Linux命令详解 | pwd命令】Linux系统中用于显示当前工作目录的命令

在这里插入图片描述


文章标题

  • 简介
  • 一,参数列表
  • 二,使用介绍
    • 1. pwd命令的基本使用
    • 2. pwd命令中的参数
    • 3. pwd命令的工作机制
    • 4. pwd命令的实际应用
  • 总结


简介

pwd命令是Linux中的基础命令之一,使用该命令可以快速查看当前工作目录。在掌握Linux命令时,pwd命令是必不可少的一个环节。每当在终端环境中迷失方向,或者需要确定文件路径时,pwd命令就能发挥出其重要的作用。

一,参数列表

参数功能
-P显示物理路径
-L显示逻辑路径

这两个参数是pwd命令的基本参数,其中:

  1. -P参数会忽视所有符号链接(symbolic link),显示实际的物理路径。

  2. -L参数(这也是默认选项)会把符号链接作为实际的路径来显示。

二,使用介绍

1. pwd命令的基本使用

pwd命令的基本使用非常简单,只需要在命令行中输入pwd即可,这样就会返回当前工作目录的完整路径。例如,在用户的家目录(home directory)中执行pwd命令,结果可能会像下面这样:

$ pwd
/home/username

这表示当前工作目录是/home/username,也就是用户username的家目录。在Linux系统中,每个用户都有一个独立的家目录,通常位于/home/目录下,用户名即为其家目录的名称。

要理解这个结果,需要知道Linux中的文件系统结构。在Linux系统中,所有的文件和目录都从根目录/开始,每个目录下面又可以有其他的文件和目录。通过这种方式,形成了一种层次结构,就像一棵倒置的树。这种结构称为文件系统(File System)。

在文件系统中,每个文件和目录都有一个对应的路径,用于表示其在文件系统中的位置。路径可以是相对路径,也可以是绝对路径。相对路径是相对于当前工作目录的路径,绝对路径则是从根目录开始的完整路径。pwd命令显示的就是当前工作目录的绝对路径。

2. pwd命令中的参数

pwd命令中的两个参数,-P-L,是用于处理符号链接的。

在Linux中,符号链接是一个特殊的文件类型,它包含了另一个文件或目录的路径。通过这种方式,可以在不同的位置访问同一个文件或目录,而无需实际复制文件或目录的内容。符号链接在文件系统中就像是一个快捷方式,提供了一种灵活的文件和目录管理方式。

当在含有符号链接的目录中执行pwd命令时,-P-L这两个参数就会有所不同。使用-P参数时,pwd命令会显示实际的物理路径,忽视所有的符号链接。而使用-L参数时,pwd命令则会显示包含符号链接的路径。

例如,创建一个名为link_to_dir的符号链接,指向目录dir,然后切换到该符号链接:

$ ln -s dir link_to_dir
$ cd link_to_dir

此时执行pwd命令,结果可能会像下面这样:

$ pwd
/home/username/link_to_dir

使用-P参数执行pwd命令,结果可能会像下面这样:

$ pwd -P
/home/username/dir

这两个结果明显不同,前者显示了符号链接的路径,后者显示了实际的物理路径。

3. pwd命令的工作机制

对于如何使用pwd命令已经有了一定的了解,接下来将深入探讨pwd命令的工作机制。pwd命令的工作机制和Linux的文件系统密切相关,因此在理解pwd命令的工作机制时,也会更深入地理解Linux的文件系统。

在Linux中,每当启动一个shell,如bash或sh,都会创建一个新的进程。每个进程都有一个相关的当前工作目录,通常称为CWD。CWD是一个特殊的属性,保存在内核中,与进程相关联。CWD是一个指向文件系统中某个目录的引用,所有相对路径的操作都基于CWD进行。

当执行pwd命令时,shell会读取CWD,并把它转换为一个绝对路径。在大多数情况下,这个过程很简单:只需要从CWD开始,回溯到根目录,记录下每一级目录的名称,然后把它们连接起来就可以了。但是,如果文件系统中包含了符号链接,这个过程就会复杂一些。

如前所述,符号链接是一种特殊的文件类型,它包含了另一个文件或目录的路径。如果CWD或其父目录是一个符号链接,那么转换为绝对路径时就需要考虑到符号链接。这就是pwd命令中-P-L参数的作用。-P参数会忽略符号链接,直接回溯到物理路径。-L参数则会考虑符号链接,显示的路径可能包含符号链接。

这个工作机制解释了为什么在包含符号链接的目录中执行pwd命令可能会得到两个不同的结果。事实上,有些时候,两个结果都是有用的。例如,当需要知道实际的物理路径时,可以使用-P参数。而当需要知道包含符号链接的路径时,可以使用-L参数。

4. pwd命令的实际应用

虽然pwd命令看起来很简单,但在实际应用中却十分强大。这主要体现在以下几个方面:

  • 确定当前工作目录:在命令行环境中,不同的操作可能会改变当前工作目录。这时,可以使用pwd命令快速确定当前工作目录。

  • 生成绝对路径:当需要生成一个文件或目录的绝对路径时,可以使用pwd命令。例如,可以把pwd命令的输出和一个相对路径连接起来,生成一个绝对路径。

  • 处理符号链接:当文件系统中包含符号链接时,可以使用pwd命令的-P-L参数处理符号链接。这可以用于诊断符号链接相关的问题,或者在需要时生成包含符号链接的路径。

  • 脚本编程:在脚本编程中,pwd命令也非常有用。可以使用pwd命令确定脚本的运行环境,或者生成需要的文件路径。

以上是pwd命令的主要应用,理解了这些,就能更好地利用pwd命令了。

总结

总的来说,pwd命令是Linux命令行工具中的一员,虽然简单,但是却拥有强大的功能。掌握pwd命令是每个Linux用户必备的技能,无论是新手还是资深用户,都会在日常操作中频繁使用到pwd命令。希望通过本篇文章,读者能对pwd命令有更深入的了解,能更灵活、更有效地使用pwd命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/61750.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

golang函数传参——值传递理解

做了五年的go开发,却并没有什么成长,都停留在了业务层面了。一直以为golang中函数传参,如果传的是引用类型,则是以引用传递,造成这样的误解,实在也不能怪我。我们来看一个例子,众所周知&#xf…

单例模式(C++)

定义 保证一个类仅有一个实例,并提供一个该实例的全局访问点。 应用场景 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。如何绕过常规的构造器,提供一种…

微信小程序iconfont真机渲染失败

解决方法: 1.将下载的.woff文件在transfonter转为base64, 2.打开网站,导入文件,开启base64按钮,下载转换后的文件 3. 在下载解压后的文件夹中找到stylesheet.css,并复制其中的base64 4. 修改index.wxss文…

Netty:当Channel将数据发送成功以后,存放发送数据的ByteBuf会被自动释放

说明 使用Netty框架编程,当Channel将数据发送成功以后,存放发送数据的ByteBuf会被自动释放。 为了进行验证,我们可以在发送数据前,通过io.netty.buffer.ByteBuf的refCnt()函数看看引用计数,通过Channel发送成功以后再…

(数据库系统概论|王珊)第一章绪论-第一节:数据库系统概论

目录 一:四大基本概念 (1)数据(Data) (2)数据库(DataBase,DB) (3)数据库管理系统(DataBase Management System,DBMS) (4)数据库系统(Database System,DBS…

Laravel 框架路由参数.重定向.视图回退.当前路由.单行为 ②

作者 : SYFStrive 博客首页 : HomePage 📜: THINK PHP 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f44…

Nios初体验之——Hello world!

文章目录 前言一、系统设计1、系统模块框图2、系统涉及到的模块1、时钟2、nios2_qsys3、片内存储(onchip_rom、onchip_ram)4、串行通信(jtag_uart)5、System ID(sysid_qsys) 二、硬件设计1、创建Qsys2、重命…

VGGNet剪枝实战:使用VGGNet训练、稀疏训练、剪枝、微调等,剪枝出只有3M的模型

摘要 本文讲解如何实现VGGNet的剪枝操作。剪枝的原理:在BN层网络中加入稀疏因子,训练使得BN层稀疏化,对稀疏训练的后的模型中所有BN层权重进行统计排序,获取指定保留BN层数量即取得排序后权重阈值thres。遍历模型中的BN层权重&am…

MySQL事务管理

MySQL事务管理 MySQL增删查改时的问题一.什么是事务?二.为什么会出现事务?三.事务的其他属性1. 事务的版本支持2. 事务的提交方式 四.事务的准备工作五.事务的操作1. 事务的正常操作2. 事务的异常验证与产出结论 六.事务的隔离级别1. 事务隔离级别概念2.…

CentOS 安装 Jenkins

本文目录 1. 安装 JDK2. 获取 Jenkins 安装包3. 将安装包上传到服务器4. 修改 Jenkins 配置5. 启动 Jenkins6. 打开浏览器访问7. 获取并输入 admin 账户密码8. 跳过插件安装9. 添加管理员账户 1. 安装 JDK Jenkins 需要依赖 JDK,所以先安装 JDK1.8。输入以下命令&a…

如何打造属于自己的个人IP?

在当今信息爆炸的时代,个人 IP 已经成为人们在网络世界中的独特标签。无论是在职场上、创业中,还是在社交生活中,拥有个人 IP 的人都能脱颖而出,吸引更多的关注和机会。那么,如何打造属于自己的个人 IP 呢?…

PowerShell 中,你可以使用以下命令来获取磁盘、内存、CPU、GPU、网卡和声卡的硬件信息

在 PowerShell 中,你可以使用以下命令来获取磁盘、内存、CPU、GPU、网卡和声卡的硬件信息: 获取磁盘信息: Get-PhysicalDisk | Select-Object DeviceID, MediaType, Model, Size获取内存信息: Get-CimInstance Win32_PhysicalM…

中兴服务器支持百度“文心一言”,助力AI产业发展

前段时间,中兴和百度正式对外宣布中兴服务器将会支持百度“文心一言”,为其提供更加强劲的算力支撑,从而加速“文心一言”的完事升级与更新迭代,助力AI产业化应用和生态的繁荣发展。   “文心一言”是百度基于文心大模型技术推出…

【docker】docker-compose服务编排

目录 一、服务编排概念二、docker compose2.1 定义2.2 使用步骤2.3 docker-compose安装2.4 docker-compose卸载 三、编排示例 一、服务编排概念 1.微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启…

0-1搭建vue项目工程

一、下载node.js 简单介绍: Node.js是一个基于V8引擎的JavaScript运行时环境,它允许开发者在服务器端使用JavaScript进行开发。Node.js是一个非常强大的工具,可以帮助开发者构建高性能、可扩展的Web应用程序,并且可以与各种技术…

Gitlab CI/CD笔记-第二天-GitOps的流水线常用关键词(1)

一、常用关键词 在Gitlab项目的根目录需要创建一个 .gitlab-ci.yaml的文件。 这个文件就是定义的流水线。Call :"Pipeline as code" 二、这条流水线怎么写? 一、掌握常用的关键词即可。 1.关键词分类 1.全局关键词 Global Keywards 2.任务关键词…

长度最小的子数组_力扣209

文章目录 题目描述法一 滑动窗口法题目描述 法一 滑动窗口法 int minSubArrayLen(int target, vector<int>&nums){int

HDFS小文件解决方案---archive归档文件命令

小文件解决方案 背景Archive概述创建archive查看归档文件查看归档之后的样子查看归档文件之前的样子 提取archivearchive注意事项 背景 hdfs并不擅长存储小文件&#xff0c;因为每个文件最少一个block&#xff0c;每个block的元数据都会在namenode占用内存&#xff0c;如果存在…

Spring接口ApplicationRunner的作用和使用介绍

在Spring框架中&#xff0c;ApplicationRunner接口是org.springframework.boot.ApplicationRunner接口的一部分。它是Spring Boot中用于在Spring应用程序启动完成后执行特定任务的接口。ApplicationRunner的作用是在Spring应用程序完全启动后&#xff0c;执行一些初始化任务或处…