2.2《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——列表
也许最常用的Unix命令是ls
了,它是‘list’的简写(Listing 8)
Listing 8 用
ls
以列表的形式显示文件和目录(内容输出跟各自电脑有关)$ ls
Desktop
Downloads
sonnet_1.txt
sonnet_1_reversed.txt
ls
命令简单地列出了当前路径下的所有文件和目录(但不包括被隐藏的文件,我们过一会儿就会提到它)。从另一个意义上讲,它实际上是图形浏览器的命令行版本,用于显示文件和目录,如插图15。(我们将在第四章中加深对目录和文件的理解)正如一个图形文件浏览器样,在Listing 8中的输出内容只是个示例,具体结果会根据你用的系统有小的差异。(这对所有的例子都是一样,所以不用纠结于输出上的微小差别。)
插图15: 相当于`ls`的图形显示版本
ls
命令还可以用来检查一个文件(或目录)是否存在,因为如果ls
命令后接一个不存在的文件会报错,如Listing 9 所示:
Listing 9: 对一个不存在的文件使用
ls
命令
$ ls foo
ls: foo: No such file or directory
$ touch foo
$ ls foo
foo
上面Listing 9中使用touch
命令创建一个名为foo
的空文件(如Box7), 所以第二次我们再使用ls
时错误消失了。(touch
原本的用途是改变文件或目录的修改时间,但像Listing 9 中那样用touch
创建空文件是个常见的Unix用法。)
Box 7. Foo,bar, baz等.
当阅读计算机时,会遇到相当奇怪的词——像foo,bar, baz,而且它还经常被用到。确实,除了用
ls foo
和touch foo
外,在本教程中已经出现了四次这样的指示词: 一次在典型命令行(图2中)第一章节,一次是虚拟机器码(foobar!
,Box2),再有一次是逃离窘境(grep foobar
, Box4), 还有一次是在手册页中(Listing3),前三个是我自己用的,但是最后一个我什么也没做哦:
...if name contains a slash (/) then man interprets it as a file specification, so that you can do man ./foo.5 or even man /cd/foo/bar.1.gz.
这里我们看到了man
本身也在手册页中使用了foo和bar——这毫不含糊地证明了它在计算机中的地位。
那这些古老术语源自哪里?老办法, 查Jargon File(在上面输入foo
),上面说:
foo: /foo/
- 感叹词. 表达厌恶、恶心。
- [非常常见] 常用做任何事物的示例名字,尤其是程序或文件(特别是临时文件)。
- 最开始在语法示例使用metasyntactic变量的标准列表中使用,另外也有bar、baz,qux,quux等。
当我们结合使用'foo'和'bar'时,通常要追溯到二战时期说的喱语FUBAR(戳原意), 后来被改为foobar。早期版本的Jargon File将这一变化解释为战后的归化,但现在看起来FUBAR更可能是'foo'的衍生物,可能是受德国furchtbar(太糟了)的影响——'foobar'实际上可能是原来的形式。
在metasyntactic变量中,我们接着可以发现如下的内容:metasyntactic变量: n.
在例子中使用的名字,被理解为代表正在讨论的任何事物,或任何讨论中的任何类别的随机成员。foo就是个典型的例子。为避免疑惑,hackers从不(好吧,几乎不)使用'foo'或者其他能代表任何事物的名字。在文件命名上,一个公共惯例是以metasyntactic变量名开始的文件名是个随时可能被删除的临时文件。
Metasyntactic变量这么叫的原因有以下几点:
(1) 它们是用于讨论程序的元语言中的变量等
(2) 它们是变量,其值通常也是变量(比如用法:f(foo,bar)的值是foo和bar的和)。然而,有人认为,“metasyntactic 变量”流行的真正原因是它听起来不错。
换句话说,如果你创建一个文件,名字并不重要,通常就叫它'foo'。一旦你已经使用了'foo',那下个文件就叫'bar',再之后叫'baz'.再之后就有点不同了(“quux”是一个常见的选择),但是在大多数情境下3个就够了。
当我们使用命令行改变目录路径时,常用的方式是使用cd
(第四章中将会提到),然后马上用ls
命令查看该目录下的内容。这可以让我们定位自己,并且这也是我们操作下一步前好的开始。
ls
一个有用的功能是支持通配符*
(读做'星号')。例如,将所有后缀'.txt'的文件以列表形式展示出来,我们可以像这样输入:
$ ls *.txt
sonnet_1.txt
sonnet_1_reversed.txt
这里*.txt
(读作"星号点tee-ex-tee")自动匹配所有文件中名字是字符串后接着'.txt'的文件。
ls
有3个特殊且重要的可选操作选项,若以'长表单'开始,则使用-l
(读作‘短横线-ell’):
$ ls -l *.txt
total 16
-rw-r--r-- 1 mhartl staff 87 Jul 20 18:05 sonnet_1.txt
-rw-r--r-- 1 mhartl staff 294 Jul 21 12:09 sonnet_1_reversed.txt
现在,你可以放心地忽略ls -l
输出的大部分信息,但请注意,长表单列出了日期和时间,表示文件最后一次被修改的日期和时间。在日期前面的数字是文件的字节大小。
第二个非常有用的ls
变量是'以修改时间倒序列出文件信息(也是长表单)', 对应的命令是ls -rtl
,这会以最近修改时间在后面的顺序列出文件或目录的长表单(反转,即最近修改的文件或目录会出现在屏幕的下方,以便于检查)。当该目录下有许多文件,但你又只关心最近修改的文件时,用这个命令就非常方便,比如确认一个文件是否下载。我们将会在章节3.1中看到一个相关的例子,但你完全可以现在免费试试:
$ ls -rtl
<results system-dependent>
顺便说一下,-rtl
通常是这种紧凑的形式,但是你可以单独传入选项参数像这样:
$ ls -r -t -l
另外,它们间的顺序不相干,所以输入ls -trl
也会出现同样的效果。
隐藏文件
最后,Unix有‘隐藏文件(目录)’的概念,这些文件在用列表展示时默认不会显示出来。辨别隐藏文件或目录的方式是它们通常是以点'.'开始的文件或目录名,通常用于存储如用户偏好的内容。例如,在Learn Enough Git to Be Dangerous中,我们创建了一个叫做.gitignore
的文件告诉一个特殊的程序(Git)忽略匹配某些模式的文件。一个具体的例子,忽略所有以'.txt'结尾的命名文件,我们可以这样做:
$ echo "*.txt" > .gitignore
$ cat .gitignore
*.txt
如果我们之后运行ls
, 这些文件不会再出现,因为它被隐藏了:
$ ls
sonnet_1.txt
sonnet_1_reversed.txt
为了用ls
命令显示隐藏的文件或目录,我们可以传入-a
选项(意为'all,所有'):
$ ls -a
. .gitignore sonnet_1_reversed.txt
.. sonnet_1.txt
现在,.gitignore
正如预期,显示在表单中了。(我们将在4.3章节中学习.
和..
的作用)。
练习
- 用什么命令可以列出以字母's'开头的非隐藏文件和目录?
2.用什么命令可以列出所有包含字符串'onnet'的非隐藏文件,并且以修改时间的倒序列出?备注:在前后都使用通配符。
3.用什么命令可以列出所有文件(包含隐藏文件),并以长表单,修改时间的倒序列出?
2.2《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——列表的更多相关文章
- 4.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—链接到目录
在4.2章中我们已经会用cd进入到指定的目录中.这是导航最常见的用途之一,但是它还有几个值得关注的用途.第一个是使用cd ..(读作'see-dee 点点')返回当前目录级别的上一级: $ pwd / ...
- 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> ...
随机推荐
- Oracle常用方法备份
1.UNION ALL 和UNION.INTERSECT.MINUS 连接所有的查询结果.去掉重复的结果.操作返回查询结果中公共的行.在进行两个表格或者两个查询结果的时候,返回在第一个表格/查询结果中 ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 6
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 5------------------- 28 聚合函数 --求平均分 ...
- 让你的app体验更丝滑的11种方法!冲击手机应用榜单Top3指日可待
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由WeTest质量开放平台团队发表于云+社区专栏 一款app除了要有令人惊叹的功能和令人发指交互之外,在性能上也应该追求丝滑的要求,这样 ...
- Android--自定义半圆环型进度(带动画)
package com.newair.ondrawtext; import android.animation.ValueAnimator; import android.annotation.Tar ...
- Java的8种基本数据类型和3种引用数据类型
背景 最近被一个问题难倒:问到Java的基本数据类型有8种,具体是哪几个?一起复习下: Java数据类型概述 变量就是申请内存来存储值,即当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量 ...
- 树莓派上启动nfs server
1. nfs 是什么 (略)http://vbird.dic.ksu.edu.tw/linux_server/linux_redhat9/0330nfs.php 2. 安装 nfs-kernel-se ...
- Qt与PyQT中设置ToolBar在AllowedArea的显示
因为个人对传统的软件GUI界面不是太喜欢,最近又在学习Qt和PyQt5,所以就有了设置ToolBar在窗口的不同地方的想法,经过浪里淘沙,最终在Qt官网里找到了,原来再添加toolBar的时候是由设置 ...
- 高通 display 驱动【转】
高通display驱动 0. 关键字 MDSS : 高通平台lcd multimedia Display sub system DSI: Display Serial Interface qcom,m ...
- TMOUT优化终端超时
有时候,管理员终端登陆了系统,如果离开没有退出账户,则会有安全隐患存在,因此需要优化终端超时. 设置终端超时: export TMOUT=10 永久生效: echo "export TMOU ...
- [Redis_1] Redis 介绍 && 安装
0. 说明 Redis 介绍 && 安装 1. Redis 介绍 2. Redis 安装(Windows 10) [2.1 解压 redis-2.2.2-win32-win64.rar ...