# 第二章 常用命令及文件操作
[TOC]
## 2.1 命令行方式
### 2.1.1 进入命令行界面
**在linux桌面鼠标右键**,点击”终端中打开“命令,打开终端窗口;
### 2.1.2 退出终端程序
1.点击关闭按钮;
2.在shell提示符下输入exit;
3.Ctrl+D;
### 2.1.3 命令行中的提示符
**例**
```Linux
:[mengqc@localhost ~]$ 是shell主提示符。其中:
“mengqc”表示当前用户名
“localhost”是默认的主机名
“~”表示默认用户主目录
“$ ” 表示当前用户是普通用户。
“# ”表示超级用户。
```
### 2.1.4 PS1中常用转义字符
> 在bash中,主提示符用环境变量PS1表示。PS1定义主提示符是怎样构成的。
**PS1中常用转义字符及含义如下**
```
\d 以“星期月日”形式表示的日期,如Mon Dec 1。
\h 主机名,直至第一个“.”为止。
\H 主机名。
\s 所用shell名称。
\t 按24小时制(即小时:分:秒)形式表示的当前时间。
\T 按12小时制(即小时:分:秒)形式表示的当前时间。
\@ 按12小时制am/pm 形式表示的当前时间。
\u 当前用户的用户名。
\v bash的版本号。
\w 当前的工作目录。
\$ 如果有效的UID(用户标识)为0,那么它就是一个“#”;否则,就是一个“$”。
```
## 2.2 简单命令
### 2.2.1 命令介绍
| 指令 | 作用 |
| ------ | ------------------------------------------------------ |
| who | 列出所有正在使用系统的用户、终端名 |
| echo | 将命令行中的参数显示到标准输出(即屏幕)上 |
| date | 在屏幕上显示或设置系统的日期和时间 |
| cal | 显示公元1~9999年中任意一年或者任意一个月的日历 |
| clear | 清楚屏幕上的信息,它类似于DOS中的CLS命令 |
| passwd | 更改自己的密码 |
| ls | 列出指定目录的内容 |
| pwd | 显示当前目录路径 |
| su | 可以更改用户的身份,如超级用户(#)root改到普通用户($) |
## 2.3 命令格式
**star:注意事项**
(1)命令名**必须是小写的英文字母**。
(2)**命令名、选项和参数彼此间必须用空格或制表符隔开**。
(3)一般格式中由方**括号括起来的部分是可选的**。
(4)选项以**“-”**开始,它是**对命令的特别定义**。
(5)命令行的参数提供命令运行的信息或命令执行过程中所使用的文件名。
(6)如果命令行中**没有提供参数,命令将从标准输入文件(即键盘)上接收数据**。
(7)命令在正常执行后**返回一个0值,表示执行成功**。
(8)Linux操作系统的联机帮助对每个命令的准确语法都做了说明 。
## 2.4 文件及其类型
#### 2.4.1 定义
1.被命名的相关信息的集合体。
2.通常存放在外存(如磁盘、磁带)上,可以作为一个独立单位存放和实施相应的操作(如打开、关闭、读、写等)。
3.文件表示的对象相当广泛。
#### 2.4.2 成分
索引节点,又称I节点。
数据**:**文件的实际内容,它**可以是空的,也可以非常大,并且有自己的结构。**
#### 2.4.3 命名
1.文件名应尽量简单;
2.应避免使用/、空字符、空格、制表符或其它控制字符;
3.应避免使用 ; | ˋ ″ ′ $ ! % & * ? \ ( ) [ ]、
#### 2.4.4 通配符
1.星号(*):与0个或多个任意的字符相匹配。
2.问号(?):问号只与单个任意的字符匹配。
3.方括号([]):与括号中列出的字符之一匹配。
#### 2.4.5 文件类型
##### 1.普通文件
1.文本文件,它由ASCII字符构成。
2.数据文件,它由来自应用程序的数字型和文本型数据构成。
3.可执行的二进制程序,它由机器指令和数据构成。
##### 2.目录
目录由成对的“I节点号/文件名”构成的列表
I节点号是检索I节点表的下标,I节点中存放文件状态信息。
文件名是给一个文件分配文本形式的字符串,用来标识该文件。
##### 3.设备文件:通常在/dev下
Linux系统中,所有设备都作为一类特别文件对待,用户像使用普通文件那样对设备进行操作,从而实现设备无关性。有两类特别的设备文件:字符设备、块设备
##### 4.符号链接文件
一个小文本文件,包含所链接的目标文件的绝对路径名。
## 2.5 常用文件操作
#### 文件显示命令
| 指令 | 作用 |
| ----- | ------------------------------------------------------------ |
| cat | 其一是经常用来显示文件的内容;其二是连接两个或多个文件。<br />一般格式: cat [选项] [FILE]… |
| more | 显示文件内容,每次显示一屏。<br />一般格式:more [选项] [file ...] |
| less | 用来分屏显示文件的内容。允许用户向前或向后浏览文件。用PageUp键向上翻页,用PageDown键向下翻页。要退出 less 程序,可以按q、Q键或者:q、:Q键,或者ZZ |
| head | 在屏幕上显示指定文件的开头若干行。显示行数的默认值是10。 |
| tail | 在屏幕上显示指定文件FILE的末尾10行。 <br />一般格式:tail [选项]... [FILE]... |
| touch | 可以修改指定文件的时间标签或者创建一个空文件。<br />一般格式:touch [选项]... FILE… |
| file | 对每个参数FILE进行检查,并予以分类。<br />一般格式: file [选项]... FILE |
#### 匹配、排序及显示指定内容的命令
##### grep
```
1.在文本文件中查找指定模式的词或短语,并在标准输出上显示包括给定字符串模式的所有行。
2.该命令组包含三个命令:grep,egrep和fgrep命令。
```
##### sort
```
1.逐行对指定文件中的所有行进行排序,并将结果显示在标准输出上。
2.一般格式: sort [选项]... [文件]...
```
##### uniq
```
1.读取输入文件,比较相邻的行,去掉重复行,只留下其中的一行。
2.一般格式: uniq [选项]… [输入文件[输出文件]]
```
#### 比较文件内容
##### comm
```
1.用来对两个已排序文件进行逐行比较。
2.一般格式: comm [选项]... 文件1 文件2
例:$ comm -12 m1 m2 (比较文件m1和m2,并且只显示它们共有的行)
```
Diff
```
1.逐行比较两个文件,列出它们的不同之处,并告诉用户,为了使两个文件一致,需要修改它们的哪些行。
2.一般格式: diff [选项] 文件1 文件2
例:n1 a n3,n4(把文件1的n1行附加到文件2的n3~n4行后,则二者相同)
```
#### 复制、删除和移动文件的命令
##### cp
```
1.把源文件或目录复制到目标文件或者目标位置。
2.一般格式: cp [选项]... 源文件或目录 目标文件或目录
```
##### rm
> 注意:使用rm命令要格外小心。
```
1.删除每个指定的文件。
2.一般格式: rm [选项]... 文件...
```
##### mv
```
1.对文件或目录重新命名,或将文件从一个目录移到另一个目录中。
2.一般格式: mv [选项]... SOURCE DEST
```
#### 文件内容统计命令
##### wc
```
1.用来统计指定文件的字节数、字数、行数,并将统计结果显示出来。
2.一般格式: wc [选项]... [文件]...
3.输出格式:行数 字数 字节数 文件名
```
**常用选项:**
```
-c,--bytes 统计字节数。
-l,--lines 统计行数。
-m,--chars 统计字符数。
-w,--words 统计字数。
```
例:
```
$ wc -lcw mfile m2(统计文件mfile 和m2的字节数、字数和行数。)
$ wc mfile m2 不带选项,统计文件mfile和m2的字节数、字数和行数
```
