1 Linux中如何让切换目录更方便?-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中如何让切换目录更方便?

Linux爱好者 来源:博客园 作者:学无止境 2020-12-24 11:38 次阅读

【导读】在 Linux 下切换目录,你还是只会 cd 这个命令吗? 快来学习下 pushd popd 命令吧,让你切换目录更加的方便。

在命令行模式下,当你工作在不同目录中,你将发现你有很多时间都浪费在重复输入上如果这些目录不在同一个根目录中,你不得不在转换时输入完整的路径名,这难免让人有些难以忍受但你可以用以下的一个或两个步骤来避免所有多余的输入:用命令行解释器中的历史记录,或者用命令行函数pushd。

用命令行解释器中的历史记录的好处是只需按很少的键在命令行中用向上的箭头来查找你用过的命令,直到你找到,然后按回车键如果你所切换的两个目录在整个驱动器的子目录结构中很接近,那用解释器中的历史记录可能是你最好的选择。

然而,如果你在两个截然不同的路径间转换的话,你可能很希望利用pushd这个函数,你可以用它创建一个目录堆栈(在内存中的一个列表)。

注释:缺省情况下,pushd函数可能不包括在你的Linux中;但它包涵在Red Hat和用Red Hat驱动的系统中如果你的系统中没有pushd函数,你可以在ibiblio.org网站上下载相关的函数工具。

这里说一下怎么用pushd假设你现在工作在/usr/share/fonts/目录下你需要对/usr/share/fonts/做一些改动,你将频繁的在两个目录间切换开始在一个目录下,用pushd函数切换到另一个目录在我们的例子中,开始在/usr/share/fonts/下,你键入pushd /home/yxy/,然后按回车键现在,你将在下一行看到堆栈中的内容:/home/yxy /usr/share/fonts。

正如你所看到的,当你键入pushd和一个路径名时,将自动产生一个堆栈,内容是你键入的目录名和你当前工作的目录名在我们的例子中,你所键入的路径(/opt/wonderword/fonts)在堆栈的顶部。

快速返回上一级目录,你可以直接键入pushd,如果不跟路径名,你将返回到堆栈中前一个目录的上一层目录。

如果你需要从堆栈中删除一个目录,键入popd,然后是目录名称,再按回车键想查看堆栈中目录列表,键入dirs,然后按回车键popd和dirs命令也是常用函数中的一部分。

一,为何要使用这几个命令?

可能大家会有疑问,为何要使用这几个命令,难道用cd不就可以切换目录了吗?

没错,使用cd就可以切换到需要访问的目录,但是有时会是一个路径很长,层次很多的目录,进到此目录下后,这时我们不小心运行了 cd命令,理所当然,我们回到了自己的home目录,这时如果想回去怎么办?

还有:因为工作的需要,我们需要不停在几个很深层的目录之间切换,不止一个,那么即使有tab键帮忙,我们也会因为一个cd命令花费很多时间,如何在多个目录之间切换时能更方便些呢?

pushd、popd是我们的好帮手

说明: pushd、popd、dirs 这几个我们讲到的命令是bash内建的命令,所以只要登录到了bash,这几个命令就可以使用了。

二,如何在两个目录之间切换?

如果只是在两个目录之间切换,那么还不必使用pushd,这时只需使用 cd -就可以了。

cd - 的作用是可以回到前一个目录。

看例子:

[root@localhost~]# cd/usr/share/kde4/apps/kget/pics/[root@localhostpics]# cd-/root[root@localhost~]#cd -/usr/share/kde4/apps/kget/pics[root@localhost pics]#

怎么样?在两个目录之间切换非常方便,无需再输入很长的路径。

说明:

为何cd -能够回到前一个目录?

这是因为 - 在此处等同于 $OLDPWD变量,此问题可以参见bash的info信息

cd 一项有相关的说明: An argument of - is equivalent to $OLDPWD。

$OLDPWD变量就是bash所记录的前一个目录,也就是说:$OLDPWD 和 - 相等。

下面我们再看一个例子:

[root@localhost~]#cd /usr/share/kde4/apps/kget/pics/[root@localhostpics]# echo$OLDPWD;/root[root@localhostpics]# cd$OLDPWD[root@localhost ~]# echo $OLDPWD;/usr/share/kde4/apps/kget/pics[root@localhost~]#cd $OLDPWD;[root@localhost pics]# echo $OLDPWD;/root

我们可以得到结构: 用cd -和cd $OLDPWD都可以在最近所操作的两个目录之间进行切换。

三,如何在多个目录之间切换?

因为 cd -和 cd $OLDPWD都是只支持最近操作的两个目录,所以要在多个目录之间操作时,我们需要使用 pushd。

1、先来介绍我们会用到的3条命令

pushd:切换到作为参数的目录,并把原目录和当前目录压入到一个虚拟的堆栈中如果不指定参数,则会回到前一个目录,并把堆栈中最近的两个目录作交换。

popd:弹出堆栈中最近的目录。

dirs: 列出当前堆栈中保存的目录列表。

看例子:

[root@localhost~]# pushd/usr/local/sbin//usr/local/sbin ~[root@localhostsbin]# dirs/usr/local/sbin ~[root@localhostsbin]# dirs-p-v0 /usr/local/sbin1 ~[root@localhostsbin]# pushd/usr/share/kde4/apps/kget//usr/share/kde4/apps/kget /usr/local/sbin ~[root@localhostkget]# dirs-p-v0 /usr/share/kde4/apps/kget1 /usr/local/sbin2 ~

说明: dirs的 -p参数可以每行一个目录的形式显示堆栈中的目录列表;

-v 参数可以在目录前加上编号;

注意:有 -v时,不添加 -p也可以每行一个目录的形式显示。

说明之二:我们可以看到:最近压入堆栈的目录位于最上面。

2,如何在最近的两个目录之间切换?

在最近的两个目录之间切换:用pushd不加参数即可

[root@localhostkget]# pushd/boot/grub//boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~[root@localhost grub]# dirs -v0 /boot/grub1 /usr/share/kde4/apps/kget2 /usr/local/sbin3 ~[root@localhostgrub]# pushd/usr/share/kde4/apps/kget /boot/grub /usr/local/sbin ~[root@localhostkget]# dirs-v0 /usr/share/kde4/apps/kget1 /boot/grub2 /usr/local/sbin3 ~[root@localhostkget]# pushd/boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~[root@localhostgrub]# dirs-v0 /boot/grub1 /usr/share/kde4/apps/kget2 /usr/local/sbin3~

说明:可以看到,用pushd不加参数在最近的两个目录之间切换时,当前目录总是位于堆栈的最上面。

3,如何在多个目录之间切换?

用 pushd +n 即可

说明:n 是一个数字,有此参数时,是切换到堆栈中的第n个目录,并把此目录以堆栈循环的方式推到堆栈的顶部。

需要注意:堆栈从第0个开始数起。

看例子:

[root@localhost grub]# dirs -v0 /boot/grub1 /usr/share/kde4/apps/kget2 /usr/local/sbin3 ~[root@localhostgrub]# pushd+2/usr/local/sbin ~ /boot/grub /usr/share/kde4/apps/kget[root@localhostsbin]# dirs-v0 /usr/local/sbin1 ~2 /boot/grub3 /usr/share/kde4/apps/kget

4,如何把目录从堆栈中删除?

用popd即可。

看例子:

root@localhost sbin]# dirs -v0 /usr/local/sbin1 ~2 /boot/grub3 /usr/share/kde4/apps/kget[root@localhost sbin]# popd~ /boot/grub /usr/share/kde4/apps/kget[root@localhost~]# dirs-v0 ~1 /boot/grub2 /usr/share/kde4/apps/kget[root@localhost~]# popd+1 ~ /usr/share/kde4/apps/kget[root@localhost~]# dirs-v0 ~1 /usr/share/kde4/apps/kget

说明:可以看到popd不加参数的运行情况:

popd把堆栈顶端的目录从堆栈中删除,并切换于位于新的顶端的目录。

说明之二: popd 加有参数 +n时,n 是堆栈中的第n个目录,表示把堆栈中第n个目录从堆栈中删除。

四,多学一点知识

1,pushd和popd都可以只影响堆栈而不切换目录

用 -n 参数即可。

看例子:

[root@localhost~]# dirs-v0 ~1 /usr/share/kde4/apps/kget[root@localhost~]# pushd-n/boot/grub~ /boot/grub /usr/share/kde4/apps/kget[root@localhost~]# dirs-v0 ~1 /boot/grub2 /usr/share/kde4/apps/kget

2, dirs可以清空目录堆栈

用 -c参数即可

看例子:

[root@localhost~]# dirs-v0 ~1 /boot/grub2 /usr/share/kde4/apps/kget[root@localhost~]# dirs-c[root@localhost~]# dirs-v0 ~

说明: 位于堆栈顶部的目录是当前目录,它不能被pop出去的。

- EOF -

推荐阅读点击标题可跳转

1、怎样用 Bash 编程:语法和工具

2、Shell 信号发送与捕捉

3、Shell 监控文件变化

看完本文有收获?请分享给更多人

推荐关注「Linux 爱好者」,提升Linux技能

原文标题:pushd、popd、dirs、cd :让切换目录更方便

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209322
  • 函数
    +关注

    关注

    3

    文章

    4327

    浏览量

    62569

原文标题:pushd、popd、dirs、cd :让切换目录更方便

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux的用户与创建

    Linux的用户与创建 用户的类型 超级管理用户: 权限最高的用户(uid:0) #uid:是用户的身份证号,Linux系统只认uid 普通用户: 权限受限的用户(uid:1000-60000
    的头像 发表于 12-20 14:24 149次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>中</b>的用户与创建

    畅享无线投屏新体验,USB连接设备兼容

    新增了按键旋转功能,使得用户可以方便地调整屏幕方向。无论是在横屏还是竖屏模式下,您都可以通过简单的按键操作迅速切换,适应不同的展示需求。这一功能特别适合需要展示竖屏内容的场合,比如阅读文档或展示社交媒体
    发表于 10-12 10:49

    Linux开发怎么学?

    令是使用 Linux 的基础,包括文件操作、目录管理、用户管理、进程管理、网络管理等方面。可以通过阅读相关的书籍、在线教程等方式学习。以下是常用的命令实例。 # 列出当前目录下的文件和子目录
    发表于 10-10 14:34

    Linux根文件系统的挂载过程

    Linux根文件系统(rootfs)是Linux系统中所有其他文件系统和目录的起点,它是内核启动时挂载的第一个文件系统。
    的头像 发表于 10-05 16:50 402次阅读

    常见的shell命令之目录相关命令

    目录内容参数:ls[选项]目录目录缺省时,默认为当前目录;选项如下,选项可以组合使用。示例:3、cd切换
    发表于 08-19 10:06

    常见的shell命令之目录相关命令

    功能:列出目录内容参数:ls[选项]目录 目录缺省时,默认为当前目录;选项如下,选项可以组合使用。示例:3、cd切换
    发表于 08-16 09:22

    详解Linux的权限控制

    本章将和大家分享Linux的权限控制。废话不多说,下面我们直接进入主题。
    的头像 发表于 08-05 15:32 561次阅读
    详解<b class='flag-5'>Linux</b><b class='flag-5'>中</b>的权限控制

    全志D1s软件入门之Tina Linux编译教程

    完成,可以在/out/d1s-nezha/tina_d1s-nezha_uart0.img 目录下找到打包完成的固件。 进阶编译操作 Tina Linux 提供了大量方便使用的快捷跳转命令。
    发表于 06-05 09:50

    手机信号放大器:提升手机信号,通讯畅快?

    手机信号放大器:提升手机信号,通讯畅快?|深圳特信电子
    的头像 发表于 03-19 09:04 1742次阅读

    ADS应用技巧—如何修改ADS的home目录

    这里说的home目录就是启动ADS后,默认打开的路径,通常是你存放ADS工程所在的目录
    的头像 发表于 02-26 09:43 2132次阅读
    ADS应用技巧—如何修改ADS的home<b class='flag-5'>目录</b>?

    如何CYUSB在linux上闪存固件?

    不起作用。 我能知道其他支持在 linux 刷新固件的应用程序吗,或者如何 CYUSB 在 linux 上闪存固件。 发行商 ID:Ubuntu 描述:Ubuntu 22.04
    发表于 02-22 06:23

    linux常用命令有哪些

    文件按照创建时间排序列出 -A 和-a 一样,但是不列出“ .” (当前目录)和“ ..” (父目录) -R 递归列出所有文件,包括子目录的文件 2、
    的头像 发表于 02-04 15:06 454次阅读

    无缝高清矩阵切换器有哪些主要的应用场景?

    到会议室的显示设备上,方便参会人员观看不同的视频内容。 安防监控:在安防监控系统,无缝高清矩阵切换器可以将多个摄像机的视频信号切换到监控中心的显示屏上,便于实时监控和录像回放。 多媒
    的头像 发表于 01-24 14:40 450次阅读
    无缝高清矩阵<b class='flag-5'>切换</b>器有哪些主要的应用场景?

    如何解决Linux系统的网络连接问题?

    如何解决Linux系统的网络连接问题? Linux系统的网络连接问题是常见的技术难题之一,通常涉及在Linux上配置网络接口、解决网络故
    的头像 发表于 01-12 15:17 978次阅读

    经典Linux面试题总结

    绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
    的头像 发表于 01-04 11:01 364次阅读