Linux是如何解析文件路径名的

Linux是如何解析文件路径名的,第1张

绝对路径也就是

以/为根目录层层指定

比如/etc/hosts

文件

相对路径么。。

就是在shell下参进去变量的路径

比如默认变量$HOME

就是你的home目录

$变量名可以任意制定

你可以在bash下敲

ETC=/etc

然后$ETC/hosts

也就是/etc/hosts

跟windows同样概念,应该好理解

只要玩过linux的命令行,切换个目录那简直是小菜一碟,直接cd命令就搞定了,但是除了简单的cd命令,还有许多其他的命令,能够令你的 *** 作更加方便快捷。

假设一种情况,一个文件A存放在了第十层目录ten中,经过千辛万苦好不容易进入了ten,结果一不小心敲入了一个cd命令,看着光标在根目录下闪烁,是不是很无奈呢?难道要再千辛万苦的敲一堆路径重新进到ten目录?

不必这么麻烦,输入“cd -”,看看是不是回到刚才的路径呢?

注:“cd -”能完成当前目录和之前所在的目录之间的切换

另外一个方便路径切换的命令就是pushd,可以完成多个不同路径之间的切换.

如果我希望在/usr和/etc/ssh和/etc/rc.d和当前路径之间切换,则可以在命令行下输入:

pushd /usr

/usr ~

pushd /etc/ssh

/etc/ssh /usr ~

pushd /etc/rc.d

/etc/rc.d /etc/ssh /usr ~

pushd会自动把当前路径加入到可切换路径中。执行dirs,可以看到显示四个路径:

dirs

/etc/rc.d /etc/ssh /usr ~

输入pushd,既可以在前两个路径之间相互切换。

如果想切换到最后一个(栈底)路径时 pushd +2即可。

pushd

/etc/ssh /etc/rc.d /usr ~

pushd

/etc/rc.d /etc/ssh /usr ~

pushd +2

/usr ~ /etc/rc.d /etc/ssh

如果想清空这些路径,执行dirs -c即可。

dirs -c

dirs

/usr

如果你需要从堆栈中删除一个目录,键入popd,然后是目录名称,再按回车键

在Linux的多目录命令提示符中工作是一种痛苦的事情,但以下这些利用cd和pushd切换目录的技巧有助于你节省时间和精力 。

在Linux命令提示中,用cd命令来改变当前目录。这是cd命令的一些基本用法:

改变你的根路径,键入cd,按回车键。

进入一个子目录,键入cd,空格,然后是子路径名(例如:cd Documents),再按回车键。

进入当前目录的上一级目录,键入cd,空格,两个点,然后按回车键。

进入一个特定的目录,键入cd,空格,路径名(例如 cd /usr/local/lib),再按回车键。

为了确定你所在的目录,你可以键入pwd,按回车键,你将看到你所在的当前目录名称。

用pushd实现在不同目录间切换。

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

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

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

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

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

/opt/wonderword/fonts /usr/share/fonts

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

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

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

绝对路径:始终从根目录(/)开始,比如:

/home/abhishek/scripts/my_scripts.sh

相对路径:从当前目录开始。比如,如果你在/home目录中,希望访问my_script.sh文件,那么访问的路径应该是:

abhishek/scripts/my_scripts.sh

绝对路径和相对路径的差异

Linux中目录结构其实是一个树,从根(/)开始,然后产生分支,假设我们使用ls命令查看my_script.sh的文件信息,那么使用绝对路径:

ls -l /home/abhishek/scripts/my_script.sh

然后,相对路径:

ls -l scripts/my_script.sh

那么,以上两种方式,除了文件路径不一样以外,其他的完全一样。

需要注意的是,在Linux中,文件名区分大小写。可以有大写、小写、数字、点、中划线、下划线以及除了斜杠(/)之外的大多数字符。斜杠(/)作为保留字符,用于根目录和用于分割路径中的目录。

有两种特殊的相对路径:

.(一个点):表示路径中的当前路径

..(两个点):表示父目录,即上一级目录


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8976266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存