• 4.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—链接到目录


    在4.2章中我们已经会用cd进入到指定的目录中。这是导航最常见的用途之一,但是它还有几个值得关注的用途。第一个是使用cd ..(读作'see-dee 点点')返回当前目录级别的上一级:

    $ pwd
    /Users/mhartl/text_files
    $ cd ..
    $ pwd
    /Users/mhartl
    

    在这种情况下,由于/Users/mhartl是我的home目录,可以直接使用cd直接回到home目录:

    $ cd text_files/
    $ pwd
    /Users/mhartl/text_files
    $ cd
    $ pwd
    /Users/mhartl
    

    直接使用cd本事就能成的原因是它将目录改变至用户home目录。这意味着:

    $ cd
    

    $ cd ~
    

    是相等的。

    当改变目录时,有时指定home目录很有用。例如,假设我们创建了第二个目录并进入到这个目录中:

    $ pwd
    /Users/mhartl
    $ mkdir second_directory
    $ cd second_directory/
    

    现在如果我们想要到text_files目录中,可以使用通过home目录~结合text_files用cd进入:

    $ pwd
    /Users/mhartl/second_directory
    $ cd ~/text_files
    $ pwd
    /Users/mhartl/text_files
    

    另外,我们学到这里可以理解在插图6中的提示:我将我的提示配置成显示当前的目录,可能显示成[~], [ruby], [projects]。(我们将在Learn Enough Text Editor to Be Dangerous中讨论如何自定义提示。对于特别有求知欲望(或是等不及)的读者可以自行google怎么锻炼他们的技术精湛度(Box5)).

    和返回上一级(..)相似地是 . (读作点)指的是当前目录。对'.'最常用的场景是移动或复制当前目录的文件:

    $ pwd
    /Users/mhartl/text_files
    $ cd ~/second_directory
    $ ls
    $ cp ~/text_files/sonnets.txt .
    $ ls
    sonnets.txt
    

    注意第一次使用ls时什么都没返回, 因为最初的second_directory是空的。

    另一个常常使用'.'的场景是与find命令结合使用,这就像grep非常非常有用,但在我自己的使用场景中99%都是像下面这样使用:

    $ cd
    $ find . -name '*.txt'
    ./text_files/sonnet_1.txt
    ./text_files/sonnet_1_reversed.txt
    ./text_files/sonnets.txt
    

    用文字描述就是, 这些命令会找到名字匹配正则表达式'*.txt'的文件,从当前目录.开始然后是它的子目录。‘find’工具集对于在命令行中寻找一个随意放置的文件特别有用。

    也许我最喜欢使用.的场景是'open 点', 这只在macOS系统上能使用:

    $ cd ~/ruby/projects
    $ open .
    

    这个非凡的open命令将打开它的参数使用打开指定的文件或目录的默认程序。(xdg-open与这个命令相似,在一些linux系统上能正常使用)。例如open foo.pdf会用默认预览器打开pdf文件(在大多数的Macs上是Preview).在使用目录的场景如'.'时,默认程序是Finder,所以调用open .的结果就像插图20所展示的那样。

    一个最后导航相关的命令,是我个人十分喜爱的命令是cd -,这会进入到之前的目录:

    $ pwd
    /Users/mhartl/second_directory
    $ cd ~/text_files
    $ pwd
    /Users/mhartl/text_files
    $ cd -
    /Users/mhartl/second_directory
    

    我发现'cd -'当结合一些命令时十分有用,正如Box12 中所描述的那样。

    Box 12. 结合命令

    在命令行中结合命令通常非常方便,正如使用Unix程序 configure和make时安装软件,这通常会像下面这样显示:
    $ ./configure ; make ; make install
    这行命令在当前目录'.'运行configure程序,然后同时运行make和make install。(你并不需要理解这些程序是做什么的,而且实际上它们不会再你的系统上工作,除非你恰好在这样安装的程序目录中。)由于他们是被分号分隔,三个命令会同时一起运行。

    结合命令更好的方式是使用双&符号 &&:
    $ ./configure && make && make install

    两个命令间的却别在于用&&符号分隔开的命令只有在前一个命令执行成功后才会执行。相反,使用';'所有命令无论如何都会一起执行,在像下步命令会依赖于前个命令的场景中会报错。
    我特别喜欢将cd -和&&结合使用,这可以帮我做下面的事情:
    $ build_article && cd ~/tau && deploy && cd -
    再说一次,你不需要理解这些命令,但是这通常是在一个目录中创建一篇文章的好主意, cd进入一个不同的目录,再部署(也许是个网址)到生产环境,然后再cd 返回(cd -)到原始的目录,继续我们的工作。当然,如果需要,我们可以使用上箭头(在Box9中的有用方法)找到整个命令,并再做一遍。

    练习

    1. cd 和cd ~的区别是什么?(或是他们有区别吗)
      2.进入到text_files,然后到使用返回上一个目录等级(双点操作符..)到second_directory目录。
      3.在你当前的目录位置中,创建一个叫做nil的空文件在text_files目录中,可以使用任何方法。
      4.使用与之前不同路径移除在之前的练习中创建的nil文件.(换句话说,如果你之前使用路径~/text_files, 那就使用../text_files或者/Users//text_files).
  • 相关阅读:
    床前思
    捍卫永恒的爱情,注定是一场梦境(转)
    耳朵生豆
    有志人士自行创业之十大策略
    思念熟睡的你
    如何用好云的弹性
    测试一年多,上线就崩溃!微服务到底应该怎么测试?
    解决Tengine健康检查引起的TIME_WAIT堆积问题
    解读容器的 2020:寻找云原生的下一站
    Java 过滤器的作用
  • 原文地址:https://www.cnblogs.com/AliceX-J/p/9001791.html
Copyright © 2020-2023  润新知