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中的有用方法)找到整个命令,并再做一遍。
练习
- cd 和cd ~的区别是什么?(或是他们有区别吗)
2.进入到text_files,然后到使用返回上一个目录等级(双点操作符..)到second_directory目录。
3.在你当前的目录位置中,创建一个叫做nil的空文件在text_files目录中,可以使用任何方法。
4.使用与之前不同路径移除在之前的练习中创建的nil文件.(换句话说,如果你之前使用路径~/text_files
, 那就使用../text_files或者/Users//text_files).
4.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—链接到目录的更多相关文章
- 2《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——操作文件
已经学习了基本的命令,现在是时候学习操作文件了,这也是命令行的重要任务.还是基于本教程的事先规定,本教程是入门级的,不要求熟悉类似编辑文本的程序(这些文本编辑程序,将在下个系列教程中介绍, Learn ...
- 1.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——运行终端
终端是个允许我们运行命令行的程序,运行命令前,先打开它.在MacOS系统上,可以使用macOS应用 Spotlight来打开终端窗口,Spotlight也有其他两种方式触发,一种是键入⌘␣(comma ...
- 1.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——手册页
我们运行的命令行程序,通常在技术上称作shell, 它包含了一个非常强大(也很神秘)的工具,我们将用它来学习更多可用的命令.这个工具本身就是个称作'man'的命令('manual'的简写).它的参数是 ...
- 3.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——下载文件
首先,为了不手动创建一个长文件(这太麻烦了),我们将使用强大的curl(有时也写作"cURL")工具从网上下载一个文件,这个命令可以让命令行与URL交互.尽管这不是Unix核心命令 ...
- 2.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——重命名,复制,删除
最常用的文件操作除了将文件列出来外,就应该是重命名,复制,删除了.正如将文件列出来一样,大多数现代操作系统为这些任务提供了用户图形界面,但是在许多场景中,用命令行还是会更方便. 使用mv命令重命名一个 ...
- 1.2《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——开始第一条命令
现在开始准备运行我们的第一条命令了,在屏幕上打印'hello'.(字符打印的地方被称为'标准输出',通常指的是屏幕,很少指真的物理打印机设备).这条命令就是echo,这条命令的参数是想要输出的字符串或 ...
- 1.4《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——编辑命令
在编辑模式中,命令行包括几个重复之前命令的功能.这些以及其他很多命令功能时常设计键盘上的特殊键,所以给出Table 1作为参考,给出了许多键在典型的Macintosh键盘上的标记符号.若你的键盘不太一 ...
- 4.5《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—第四章小结
本章相关重要命令总结在Table 6. 命令 描述 示例 mkdir <name> 创建某目录 $ mkdir foo pwd 显示当前所在目录 $ pwd cd <dir> ...
- 4.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—目录结构
Unix风格的目录结构通常使用一个目录名列表并用正斜杠分隔来表示,这样我们可以结合ls命令: $ ls /Users/mhartl/ruby 或者 $ ls /usr/local/bin 正如图20, ...
随机推荐
- React Native中Mobx的使用
从今天开始我们来搞搞状态管理可否,这几天没怎么写博客,因为被病魔战胜了,tmd,突然的降温让我不知所措,大家最近注意安全,毕竟年底了,查的严,呸,大家注意保暖 特别声明:写该文只是写一下用MobX的思 ...
- SQLite保存报错sqlite.SQLiteConstraintException: UNIQUE constraint failed: ······ code 1555
往数据库里保存数据的时候报错,用的afinal框架,明明在save操作之前执行了一遍deleteAll操作,还是报错. 百度了一下说报这种错有两种情况:一是定义的字段为not null ,插入时对应的 ...
- Loading加载页面
一般页面有四种情况 加载中 :就是滚动页面,后台获取加载的数据,每个页面的数据不同所以就让子类来实现,直接抽象abstract了. 加载失败 :一般都需要点击后重新加载 空页面 :也需要点击后重新加载 ...
- window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置
最近公司有一个项目模块让用nosql-mongodb替换了,故,对mongodb做了一点研究,然后分享一下! 1.首先说一下安装时的坑 下载mongodb,如果你从官网下载,将会是一件很慢的事情,在公 ...
- recovery 差分升级包制作超时
我们在对android系统升级的时候,可以减少升级包的大小,只升级差异部分,也就是差分包升级,相关的描述可以参考:http://blog.csdn.net/csdn66_2016/article/de ...
- maven(一):是否有必要使用maven
以下是普通项目和maven项目 分别引入spring core模块的区别 1,假设我们有十个项目,都需要引入spring core模块,那么需要十份重复的Spring core.jar和commons ...
- MSSQL清理所有用户数据库日志(SQLSERVER2008)
USE [master]; SET NOCOUNT ON; )=''; )=''; DECLARE @clearSql VARCHAR(MAX)=''; ; ,),TMP_WHILE_FLAG, T. ...
- go time类操作
fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6- ...
- 【PAT】B1042 字符统计(20 分)
/* 15分的题很简单,但是自己写的时候在输入数据时没有考虑好下标 另外有忘记了输入字符时考虑是否有\n */ #include<stdio.h> #include<algorith ...
- January 14th, 2018 Week 02nd Sunday
Embrace your life, for we only live once. 拥抱你的生活,因为我们只能活一次. We just live once, so I would rather liv ...