基础常识
通配符
通配符 |
意义 |
* |
匹配任意多个字符(包括零个或一个) |
? |
匹配任意一个字符(不包括零个) |
[characters] |
匹配任意一个属于字符集中的字符 |
[!characters] |
匹配任意一个不是字符集中的字符 |
[[:class:]] |
匹配任意一个属于指定字符类中的字符 |
字符类 |
意义 |
[:alnum:] |
匹配任意一个字母或数字 |
[:alpha:] |
匹配任意一个字母 |
[:digit:] |
匹配任意一个数字 |
[:lower:] |
匹配任意一个小写字母 |
[:upper:] |
匹配任意一个大写字母 |
模式 |
匹配对象 |
* |
所有文件 |
g* |
文件名以“g”开头的文件 |
b*.txt |
以"b"开头,中间有零个或任意多个字符,并以".txt"结尾的文件 |
Data??? |
以“Data”开头,其后紧接着3个字符的文件 |
[abc]* |
文件名以"a",“b”,或"c"开头的文件 |
BACKUP.[0-9][0-9][0-9] |
以"BACKUP."开头,并紧接着3个数字的文件 |
[[:upper:]]* |
以大写字母开头的文件 |
[![:digit:]]* |
不以数字开头的文件 |
*[[:lower:]123] |
文件名以小写字母结尾,或以 “1”,“2”,或 “3” 结尾的文件 |
正则表达式
^ $ . [ ] { } - ? * + ( ) | \
插入符号和美元符号被看作是锚点。这意味着正则表达式只有在文本行的开头或末尾被找到时,才算发生一次匹配
插入字符(ˆ),其被用来表示否定;第二个是连字符字符(-),其被用来表示一个
字符范围。
[me@linuxbox ~]$ grep -h '^zip' dirlist*.txt
zip
zipcloak
zipgrep
zipinfo
zipnote
zipsplit
[me@linuxbox ~]$ grep -h 'zip$' dirlist*.txt
gunzip
gzip
funzip
gpg-zip
preunzip
prezip
unzip
zip
[me@linuxbox ~]$ grep -h '^zip$' dirlist*.txt
zip
字符集 |
说明 |
[:alnum:] |
字母数字字符。在 ASCII 中,等价于:[A-Za-z0-9] |
[:word:] |
与[:alnum:]相同, 但增加了下划线字符。 |
[:alpha:] |
字母字符。在 ASCII 中,等价于:[A-Za-z] |
[:blank:] |
包含空格和 tab 字符。 |
[:cntrl:] |
ASCII 的控制码。包含了0到31,和127的 ASCII 字符。 |
[:digit:] |
数字0到9 |
[:graph:] |
可视字符。在 ASCII 中,它包含33到126的字符。 |
[:lower:] |
小写字母。 |
[:punct:] |
标点符号字符。在 ASCII 中,等价于:[-!"#$%&’()*+,./:;<=>?@[\]_`{|}~] |
[:print:] |
可打印的字符。在[:graph:]中的所有字符,再加上空格字符。 |
[:space:] |
空白字符,包括空格、tab、回车、换行、vertical tab 和 form feed.在 ASCII 中, 等价于:[ \t\r\n\v\f] |
[:upper:] |
大写字母。 |
[:xdigit:] |
用来表示十六进制数字的字符。在 ASCII 中,等价于:[0-9A-Fa-f] |
alternation 交替特性
[me@linuxbox ~]$ echo "AAA" | grep AAA
AAA
[me@linuxbox ~]$ echo "BBB" | grep AAA
[me@linuxbox ~]$
grep -E, --extended-regexp
将模式 PATTERN 作为一个扩展的正则表达式来解释 (参见下面)。
[me@linuxbox ~]$ echo "AAA" | grep -E 'AAA|BBB'
AAA
[me@linuxbox ~]$ echo "BBB" | grep -E 'AAA|BBB'
BBB
[me@linuxbox ~]$ echo "CCC" | grep -E 'AAA|BBB'
[me@linuxbox ~]$
允许从一系列字符串或者是其它的正则表达式中选择匹配项
限定字符
? - 匹配零个或一个元素
*** -** 匹配零个或多个元素
限定符 |
意思 |
{n} |
匹配前面的元素,如果它确切地出现了 n 次。 |
{n,m} |
匹配前面的元素,如果它至少出现了 n 次,但是不多于 m 次。 |
{n,} |
匹配前面的元素,如果它出现了 n 次或多于 n 次。 |
{,m} |
匹配前面的元素,如果它出现的次数不多于 m 次。 |
^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$
简化为:
^\(?[0-9]{3}\)? [0-9]{3}-[0-9]{4}$
Linux 系统中的目录
目录 |
评论 |
/ |
根目录,万物起源。 |
/bin |
包含系统启动和运行所必须的二进制程序。 |
/boot |
包含 Linux 内核、初始 RAM 磁盘映像(用于启动时所需的驱动)和 启动加载程序。有趣的文件:/boot/grub/grub.conf or menu.lst, 被用来配置启动加载程序。/boot/vmlinuz,Linux 内核。 |
/dev |
这是一个包含设备结点的特殊目录。“一切都是文件”,也适用于设备。 在这个目录里,内核维护着所有设备的列表。 |
/etc |
这个目录包含所有系统层面的配置文件。它也包含一系列的 shell 脚本, 在系统启动时,这些脚本会开启每个系统服务。这个目录中的任何文件应该是可读的文本文件。有趣的文件:虽然/etc 目录中的任何文件都有趣,但这里只列出了一些我一直喜欢的文件:/etc/crontab, 定义自动运行的任务。/etc/fstab,包含存储设备的列表,以及与他们相关的挂载点。/etc/passwd,包含用户帐号列表。 |
/home |
在通常的配置环境下,系统会在/home 下,给每个用户分配一个目录。普通用户只能 在自己的目录下写文件。这个限制保护系统免受错误的用户活动破坏。 |
/lib |
包含核心系统程序所使用的共享库文件。这些文件与 Windows 中的动态链接库相似。 |
/lost+found |
每个使用 Linux 文件系统的格式化分区或设备,例如 ext3文件系统, 都会有这个目录。当部分恢复一个损坏的文件系统时,会用到这个目录。这个目录应该是空的,除非文件系统 真正的损坏了。 |
/media |
在现在的 Linux 系统中,/media 目录会包含可移动介质的挂载点, 例如 USB 驱动器,CD-ROMs 等等。这些介质连接到计算机之后,会自动地挂载到这个目录结点下。 |
/mnt |
在早些的 Linux 系统中,/mnt 目录包含可移动介质的挂载点。 |
/opt |
这个/opt 目录被用来安装“可选的”软件。这个主要用来存储可能 安装在系统中的商业软件产品。 |
/proc |
这个/proc 目录很特殊。从存储在硬盘上的文件的意义上说,它不是真正的文件系统。 相反,它是一个由 Linux 内核维护的虚拟文件系统。它所包含的文件是内核的窥视孔。这些文件是可读的, 它们会告诉你内核是怎样监管计算机的。 |
/root |
root 帐户的家目录。 |
/sbin |
这个目录包含“系统”二进制文件。它们是完成重大系统任务的程序,通常为超级用户保留。 |
/tmp |
这个/tmp 目录,是用来存储由各种程序创建的临时文件的地方。一些配置导致系统每次 重新启动时,都会清空这个目录。 |
/usr |
在 Linux 系统中,/usr 目录可能是最大的一个。它包含普通用户所需要的所有程序和文件。 |
/usr/bin |
/usr/bin 目录包含系统安装的可执行程序。通常,这个目录会包含许多程序。 |
/usr/lib |
包含由/usr/bin 目录中的程序所用的共享库。 |
/usr/local |
这个/usr/local 目录,是非系统发行版自带程序的安装目录。 通常,由源码编译的程序会安装在/usr/local/bin 目录下。新安装的 Linux 系统中会存在这个目录, 并且在管理员安装程序之前,这个目录是空的。 |
/usr/sbin |
包含许多系统管理程序。 |
/usr/share |
/usr/share 目录包含许多由/usr/bin 目录中的程序使用的共享数据。 其中包括像默认的配置文件、图标、桌面背景、音频文件等等。 |
/usr/share/doc |
大多数安装在系统中的软件包会包含一些文档。在/usr/share/doc 目录下, 我们可以找到按照软件包分类的文档。 |
/var |
除了/tmp 和/home 目录之外,相对来说,目前我们看到的目录是静态的,这是说, 它们的内容不会改变。/var 目录存放的是动态文件。各种数据库,假脱机文件, 用户邮件等等,都位于在这里。 |
/var/log |
这个/var/log 目录包含日志文件、各种系统活动的记录。这些文件非常重要,并且 应该时时监测它们。其中最重要的一个文件是/var/log/messages。注意,为了系统安全,在一些系统中, 你必须是超级用户才能查看这些日志文件。 |
Linux基础命令
cd
快捷键 |
运行结果 |
cd |
更改工作目录到你的家目录。 |
cd - |
更改工作目录到先前的工作目录。 |
cd ~user_name |
更改工作目录到用户家目录。例如, cd ~bob 会更改工作目录到用户“bob”的家目录。 |
cd /root
cd ~root
ls
选项 |
长选项 |
描述 |
-a |
–all |
列出所有文件,甚至包括文件名以圆点开头的默认会被隐藏的隐藏文件。 |
-d |
–directory |
通常,如果指定了目录名,ls 命令会列出这个目录中的内容,而不是目录本身。 把这个选项与 -l 选项结合使用,可以看到所指定目录的详细信息,而不是目录中的内容。 |
-F |
–classify |
这个选项会在每个所列出的名字后面加上一个指示符。例如,如果名字是 目录名,则会加上一个’/'字符。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkTtvbqv-1608639550549)(C:\Users\zsz\AppData\Roaming\Typora\typora-user-images\image-20201102004808929.png)] |
-h |
–human-readable |
当以长格式列出时,以人们可读的格式,而不是以字节数来显示文件的大小。 |
-l |
|
以长格式显示结果。 |
-r |
–reverse |
以相反的顺序来显示结果。通常,ls 命令的输出结果按照字母升序排列。 |
-S |
|
命令输出结果按照文件大小来排序。 |
-t |
|
按照修改时间来排序。 |
-rw-r--r-- 1 root root 3576296 2007-04-03 11:05 Experience ubuntu.ogg
-rw-r--r-- 1 root root 1186219 2007-04-03 11:05 kubuntu-leaflet.png
-rw-r--r-- 1 root root 47584 2007-04-03 11:05 logo-Edubuntu.png
-rw-r--r-- 1 root root 44355 2007-04-03 11:05 logo-Kubuntu.png
-rw-r--r-- 1 root root 34391 2007-04-03 11:05 logo-Ubuntu.png
-rw-r--r-- 1 root root 32059 2007-04-03 11:05 oo-cd-cover.odf
-rw-r--r-- 1 root root 159744 2007-04-03 11:05 oo-derivatives.doc
-rw-r--r-- 1 root root 27837 2007-04-03 11:05 oo-maxwell.odt
-rw-r--r-- 1 root root 98816 2007-04-03 11:05 oo-trig.xls
-rw-r--r-- 1 root root 453764 2007-04-03 11:05 oo-welcome.odt
-rw-r--r-- 1 root root 358374 2007-04-03 11:05 ubuntu Sax.ogg
字段 |
含义 |
-rw-r–r-- |
对于文件的访问权限。第一个字符指明文件类型。在不同类型之间, 开头的“-”说明是一个普通文件,“d”表明是一个目录。其后三个字符是文件所有者的 访问权限,再其后的三个字符是文件所属组中成员的访问权限,最后三个字符是其他所 有人的访问权限。这个字段的完整含义将在第十章讨论。 |
1 |
文件的硬链接数目。参考随后讨论的关于链接的内容。 |
root |
文件所有者的用户名。 |
root |
文件所属用户组的名字。 |
32059 |
以字节数表示的文件大小。 |
2007-04-03 11:05 |
上次修改文件的时间和日期。 |
oo-cd-cover.odf |
文件名。 |
less
命令 |
行为 |
Page UP or b |
向上翻滚一页 |
Page Down or space |
向下翻滚一页 |
UP Arrow |
向上翻滚一行 |
Down Arrow |
向下翻滚一行 |
G |
移动到最后一行 |
1G or g |
移动到开头一行 |
/charaters |
向前查找指定的字符串 |
n |
向前查找下一个出现的字符串,这个字符串是之前所指定查找的 |
h |