Com*_*erd 6 command-line shell filenames
单个句点.表示当前工作目录
双句号..表示当前工作目录的父目录
我只能想到.在相对路径名等中使用cd ./bin/usr
以上.&如何..在 shell 命令行中使用
小智 6
以上情况如何。& .. 在shell 命令行中使用?
在很多方面取决于上下文。简单的插图:
cd命令的路径解析,例如像你说的Literally, 在模式内,例如在路径名扩展的上下文中pattern中用类似的命令替换任何单个字符grep考虑一下man cd,man path_resolution以及关于内置命令如何在内部工作的解释cd(man cd这里):
(4). 如果目录操作数的第一个组成部分是点或点-点,则继续执行步骤 6。
(6). 将 curpath 设置为由 PWD 的值、斜杠字符和操作数串联而成的字符串。
(8). 然后将 curpath 值转换为规范形式,如下所示,从头到尾依次考虑每个组件:
一种。应删除点组件和将它们与下一个组件分开的任何斜线。
湾 对于每个点-点组件,如果有一个前一个组件并且它既不是根也不是点-点,则前一个组件、将前一个组件与点-点、点-点分隔的所有斜线以及将点-点与点-点分隔的所有斜线删除以下组件。...
这是一个分步示例,说明上述步骤似乎适用于将目录从 更改/home/user为../../boot/memtest86:
# echo $PWD
/home/user
(4). cd ../../boot/memtest86
(6). curpath = /home/user/../../boot/memtest86
(8)b
/home/user/../../boot/memtest86
/home/../boot/memtest86 //step 1
/ boot/memtest86 //step 2
curpath = /boot/memtest86 //result
Run Code Online (Sandbox Code Playgroud)
通过将点组件修剪到与工作目录深度相同的程度,这不可避免地会产生从根表示的路径。单点大小写等的步骤被跳过,因为它像上面一样连接,然后删除./这很容易想象,因为我们在当前目录中。因此,这说明了如何在此命令的上下文中内部实现.和..引用当前和父目录,这不是通过“替换”而是类似于流编辑...
您可以调查路径名扩展和模式匹配bash
分词后,除非设置了 -f 选项(请参阅 Set Builtin),否则 Bash 会扫描每个单词中的字符 *、? 和 [...] 如果出现这些字符之一,则该单词被视为模式,并替换为与模式匹配的按字母顺序排序的文件名列表。...
在像这样的路径名的模式中,除*,?和之外的任何字符都[...]匹配自身。所以这意味着一个点可以从字面上匹配自己:
ls .*
Run Code Online (Sandbox Code Playgroud)
...将扩展为.., .(因为 * 也包括空值)并相应地列出当前目录和父目录以及当前目录中的任何文件或目录,这些文件或目录字面上以点 (.*) 开头,后跟其他任何内容长度。正如手册中所解释的,您对扩展行为等有一定程度的控制(使用 *glob 选项set和shopt)。
这是在模式中使用字符(因为它是grep pattern file1)来选择任何一个字符的示例,当然与文件或目录名称无关:
ls -la | grep .
Run Code Online (Sandbox Code Playgroud)
这将打印目录内容,以便捕获所有内容(grep -v .用于捕获空行)。通常对于此类表达式中的模式,最肯定的情况是grep,单个点匹配任何单个字符。最后考虑点部分中的这些特殊字符示例,.以快速提醒一些不同的用例。
因此,点可以用于路径解析,作为模式的一部分的文字字符,它可以替换表达式中的单个字符,grep甚至可以是用于从文件等执行命令的 bash内置函数。它在命令行上使用因上下文而异...
1. 这当然是关于特定命令的语法。如果一个命令接受一个文件/路径作为参数,那么使用点代替它,正如其他人所示,扩展到当前工作目录,这非常方便。
您经常想要引用相对于当前目录的某个位置。
如果您想转到上一个目录,您只需说cd ..,如果您想将文件复制到当前目录,您可以说cp /some/file .。
每当您需要指定某个位置时,您可以使用以 开头的绝对位置/或相对位置。您不需要经常指定当前值,因为许多命令默认为它。(例如,一个简单的命令ls实际上默认为ls .。)其他命令(例如cp)要求您显式指定路径。在这种情况下.可能正是您想要的。
| 归档时间: |
|
| 查看次数: |
39330 次 |
| 最近记录: |