linux 下获得当前目录,上级目录,文件夹名

本文介绍了几种在Linux环境下获取当前工作目录及其名称的方法,包括利用bash内置命令、awk与sed等工具实现对路径的解析。

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


$PWD  /pwd   当前目录


 dname= $(dirname "$PWD")  上级目录


basename '$PWD'  当前文件夹名




!=====以下转载 

删除包含特定字符的行:

g/pattern/d   

 

删除不包含指定字符的行:

v/pattern/d


使用 ## 拆分变量
${var##pattern} 可以从 $var 变量中,去掉可以匹配 pattern 最大长度的字符串,所以,要获得目录名,可以:


cd /var/log/squid
echo ${PWD##*/}
squid


$PWD 是保存目录完整路径的环境变量,pattern 就是 */,也就是去掉了前面所有的上级目录。


使用 awk 和 rev
cd /usr/share/cups/data
pwd | rev | awk –F \/ '{print $1}' | rev
data


把结果分步显示,你就知道原理了:
pwd
/usr/share/cups/data
pwd | rev 
atad/supc/erahs/rsu/
pwd | rev | awk –F \/ '{print $1}'
atad
pwd | rev | awk –F \/ '{print $1}' | rev
data


-F 选项是指定分隔符,目录之间分隔符为 /。


使用 sed
cd /home/smith/music
pwd | sed 's,^\(.*/\)\?\([^/]*\),\2,'
music


第一个 pattern,^\(.*/\)?,匹配 / 符号前所有的东西,第二个 [^/]* ,匹配剩余部分不包含 / 的部分。

<think>我们正在讨论Linux系统中快速切换到指定目录的命令。 常见的命令是`cd`(change directory),但用户希望“快速”切换,可能意味着更高效的方式,比如使用绝对路径、相对路径、特殊符号(如~、-、..)等,或者使用一些工具(如pushd/popd、alias、autojump等)来加速切换。 考虑到用户可能已经知道基本命令,我们介绍几种高效的方法: 1. 使用绝对路径或相对路径:`cd /path/to/directory` 或 `cd ./subdir`(其中.表示当前目录,可省略) 2. 使用家目录符号:`cd ~` 进入当前用户的家目录,`cd ~username` 进入username用户的家目录。 3. 使用`-`返回上一个目录:`cd -` 可以在最近两个目录之间切换。 4. 使用`..`返回上级目录:`cd ..` 返回上一级,`cd ../..` 返回上两级。 5. 利用环境变量:`cd $MY_DIR` 如果已经设置了环境变量。 6. 创建别(alias):在`.bashrc`或`.zshrc`中设置别,例如: `alias mydir='cd /very/long/path/to/dir'` 然后执行`source ~/.bashrc`,之后就可以用`mydir`快速切换。 7. 使用`pushd`和`popd`:将目录加入目录栈,然后可以在多个目录间跳转。 - `pushd /path/to/dir` 进入目录并将原目录压栈 - `popd` 弹出栈顶目录并进入 8. 使用工具如`autojump`:它记录用户常去的目录,通过`j`命令快速跳转。 安装:`sudo apt install autojump`(Ubuntu/Debian) 使用:`j dirname`(无需完整路径,根据历史记录智能匹配) 用户的问题是如何快速切换到已知文件夹,所以如果已知完整路径,直接`cd`即可。但如果是经常访问的目录,建议使用别或autojump。 另外,如果只是临时切换,也可以结合`&&`在一次命令中完成多个操作,例如:`cd /path && ls`。 注意:在脚本中切换目录要注意作用域(通常使用子shell)。 根据用户需求,我们提供这些方法,用户可以根据自己的情况选择。 生成相关问题: 1. 如何设置Linux命令别? 2. 如何安装和使用autojump工具? 3. 如何查看最近访问的目录历史? 4. 如何将常用目录添加到环境变量? 5. 在脚本中切换目录后如何保持当前目录? 6. 如何配置bash以记住目录历史?</think>在Linux系统中快速切换到指定文件夹,主要依赖`cd`命令(Change Directory),以下是几种高效方法: ### 1. **绝对路径切换(推荐)** 直接使用完整路径: ```bash cd /home/user/documents/project ``` - ✅ 优点:精准直达,无歧义 - ⚠️ 注意:路径需正确,区分大小写 ### 2. **相对路径切换** 基于当前目录定位: ```bash cd ./subfolder # 进入当前目录的子文件夹 cd ../sibling # 进入同级目录(先返回上级) ``` ### 3. **特殊符号快捷方式** - `~`:用户家目录 ```bash cd ~ # 进入/home/用户 cd ~/downloads # 进入家目录下的Downloads文件夹 ``` - `-`:返回上一个目录 ```bash cd - # 在最近两个目录间快速切换 ``` ### 4. **环境变量路径** 若目录已存入环境变量: ```bash export PROJECT_DIR="/path/to/project" # 先定义变量 cd $PROJECT_DIR # 通过变量跳转 ``` ### 5. **目录栈管理(高级)** 使用 `pushd`/`popd` 保存目录历史: ```bash pushd /path/A # 进入A目录并压栈 pushd /path/B # 进入B目录并压栈 popd # 返回上一个目录(栈顶弹出) ``` - 查看栈:`dirs -v` ### 6. **别简化(常用目录)** 在 `~/.bashrc` 添加别: ```bash alias proj='cd /home/user/projects' # 自定义快捷命令 ``` 生效配置:`source ~/.bashrc` 使用:`proj` 直达目标目录 --- ### ⚙️ 性能与可靠性说明 - `cd` 是Shell内置命令,切换速度极快(纳秒级)[^1]。 - 路径补全:输入部分路径后按 `Tab` 键自动补全,减少输入错误。 - 符号链接支持:可直接 `cd` 到软链接指向的真实目录。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值