[test@VM-8-5-centos ~]$ command [options] [arguments]
其中,command表示命令的名称;options表示选项,定义了命令的执行特性,arguments表示命令作用的对象
[test@VM-8-5-centos ~]$ rm -r dir
该语句的功能为删除目录dir,其中rm为命令的名称,表示删除文件;-r为选项,表示删除目录中的文件和子目录;dir为命令作用的对象,该对象是一个目录。Linux系统中的命令都遵循以上格式,命令中的选项和参数可酌情缺省。
Linux操纵系统秉持“一切皆文件”的思想,将其中的文件、设备等都作为文件来操作。文件操作命令可分为四类:文件处理命令、文件查看命令、权限管理命令和文件搜索命令。
文件处理命令
1.ls
ls命令的原意为“list”,即“列出”,用于列出参数的属性信息
显示当前目录下的文件
[test@VM-8-5-centos ~]$ ls
apache-tomcat-9.0.56 a.txt jdk-linux-x64.rpm Test.class
apache-tomcat-9.0.56.tar.gz hello.c passwd Test.java
当参数缺省时,ls命令默认列出当前目录中的内容
显示当前目录下的所有文件信息
[test@VM-8-5-centos ~]$ ls -a
. apache-tomcat-9.0.56.tar.gz .bash_logout .cache jdk-linux-x64.rpm Test.java
.. a.txt .bash_profile .config passwd
apache-tomcat-9.0.56 .bash_history .bashrc hello.c Test.class
显示所有文件信息时会发现结果中多了许多以“.”和“…”开头的文件,这些文件是Linux中的隐藏文件
ls命令常用选项
选项 | 说明 |
---|---|
-l | 以详细信息的形式展示出当前目录下的文件 |
-a | 显示当前目录下的全部文件(包括隐藏文件) |
-d | 查看目录属性 |
-t | 按创建时间顺序列出文件 |
-i | 输出文件的 inode 编号 |
-R | 列出当前目录下的所有文件信息,并以递归的方式展示各个子目录中的文件和子目录信息 |
2.cd
cd目录的原意为change directory,即更改目录。若执行该命令的用户具有切换目录的权限,cd命令将更改当前工作目录到目标目录。
cd命令没有选项,其参数不可省略。
[test@VM-8-5-centos ~]$ cd ./Public
[test@VM-8-5-centos ~]$ cd ..
[test@VM-8-5-centos home]$ cd /etc/yum
[test@VM-8-5-centos ~]$
以上命令对应的功能如下:
3.pwd
pwd命令的原意为print working directory,即打印当前工作目录的绝对路径,该命令可直接使用
[test@VM-8-5-centos ~]$ pwd
/home/test
4.touch
touch命令的主要功能是将已存在文件的时间标签更新为系统的当前时间。若指定的文件不存在,该命令将会创建一个新文件,所以该命令有个附加功能,即创建新的空文件。touch命令的参数可以是文件,也可以是一个目录。
[test@VM-8-5-centos ~]$ ls -l b.txt
-rw-rw-r-- 1 test test 0 Jan 24 21:53 b.txt
[test@VM-8-5-centos ~]$ touch b.txt
[test@VM-8-5-centos ~]$ ls -l b.txt
-rw-rw-r-- 1 test test 0 Jan 24 21:54 b.txt
该命令先查看文件详细信息,再用touch命令更新文件信息,用ls -l命令再查看文件详细信息,可以看到touch命令成功更新了文件的时间标签。
5.mkdir
mdir命令的原意为make directory,即创建目录。
mkdir 命令的参数一般为目录或路径名。当参数为目录时,为保证新目录可成功创建,使用该命令前应确保新建目录不与其同路径下的目录重名;当参数为路径时,需要保证路径中的目录都已存在或通过选项创建路径中缺失的目录。
mkdir 命令常用选项
选项 | 说明 |
---|---|
-p | 若路径中的目录不存在,则先创建目录 |
-v | 查看文件创建过程 |
[test@VM-8-5-centos ~]$ mkdir ./test/bxg
mkdir: cannot create directory ‘./test/bxg’: No such file or directory
[test@VM-8-5-centos ~]$ mkdir -p ./test/bxg
[test@VM-8-5-centos ~]$ ls
apache-tomcat-9.0.56 a.txt hello.c passwd Test.class
apache-tomcat-9.0.56.tar.gz b.txt jdk-linux-x64.rpm test Test.java
如上所示,如果路径中的目录不存在,又未使用参数 -p, 将会报错,提示没有发现相应文件或目录,添加了-p 选项之后,目标目录则创建成功了。
6.cp
cp 命令的原意为 copy,该命令的功能为将一个或多个源文件复制到指定的目录。
默认情况下,该命令不能复制目录,若要复制目录,需要同时使用 -R 选项。
cp命令常用选项
选项 | 说明 |
---|---|
-R | 递归处理,将指定目录下的文件及子目录一并处理 |
-p | 复制的同时不修改文件属性,包括所有者、所属组、权限和时间 |
-f | 强行复制文件或目录,无论目的文件或目录是否已经存在 |
将 b.txt 文件复制到 ccc 目录下并查看 ccc 目录下是否有 b.txt 文件
[test@VM-8-5-centos ~]$ cp b.txt ./ccc
[test@VM-8-5-centos ~]$ cd ccc
[test@VM-8-5-centos ccc]$ ls
b.txt
7.mv
mv 命令的原意为 move,该命令用于移动文件或目录。若同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则该命令会将前面指定的多个文件或目录复制到最后一个目录。
若该目录操作的对象是相同路径下的两个文件,则其功能为修改文件名。
将 b.txt 文件移动到当前目录下的 ddd 目录中并查看 ddd 目录中是否有 b.txt文件
[test@VM-8-5-centos ~]$ mv b.txt ./ddd
[test@VM-8-5-centos ~]$ cd ddd
[test@VM-8-5-centos ddd]$ ls
b.txt
先查看 ddd 目录下的文件有 b.txt,使用 mv 命令将 b.txt 文件修改文件名为 t.txt
[test@VM-8-5-centos ddd]$ ls
b.txt
[test@VM-8-5-centos ddd]$ mv b.txt t.txt
[test@VM-8-5-centos ddd]$ ls
t.txt
8.rm
rm 命令的原意为 remove,功能为删除目录中的文件或目录。该命令可同时删除多个对象。
若要使用 rm 命令删除目录,需要在参数前添加 -r 选项。
rm 命令常用选项
选项 | 说明 |
---|---|
-rf | 选项 -r 与 -f 结合,删除目录中所有文件和子目录,并且不一一确定 |
-f | 强制删除文件或目录 |
-i | 在删除文件或目录时对要删除的内容逐一进行确认(y/n) |
查看 ddd 目录下有 t.txt 文件,使用 rm 删除后再查看发现文件已不存在
[test@VM-8-5-centos ddd]$ ls
t.txt
[test@VM-8-5-centos ddd]$ rm t.txt
[test@VM-8-5-centos ddd]$ ls
[test@VM-8-5-centos ddd]$
使用 rm 删除的文件无法恢复,所以在删除文件之前,一定要再三确认
rm -rf / 命令将会删除整个Linux操作系统的所有文件,整个系统的文件将会不复存在
9.rmdir
rmdir 命令的原意为 remove directory,该命令与 rm 命令类似,但它仅用于删除目录
rmdir 命令可删除指定路径中的一个或多个空目录。若在命令中添加参数 -p,此条命令将会在删除指定目录后检测其上层目录,若该目录的上层目录已变成空目录,则将其一并删除。
查看家目录下的文件,使用命令删除 ddd 目录后再查看发现 ddd 目录已不存在。
[test@VM-8-5-centos ~]$ ls
apache-tomcat-9.0.56 a.txt ddd jdk-linux-x64.rpm test Test.java
apache-tomcat-9.0.56.tar.gz ccc hello.c passwd Test.class
[test@VM-8-5-centos ~]$ rmdir ddd
[test@VM-8-5-centos ~]$ ls
apache-tomcat-9.0.56 a.txt hello.c passwd Test.class
apache-tomcat-9.0.56.tar.gz ccc jdk-linux-x64.rpm test Test.java
文件查看命令主要用于查看文件中存储的内容,常用的文件查看命令有 cat more head tail 等
cat
愿意为 concatenate and display,连接和显示文件,将文件中的内容打印到输出设备。
查看 a.txt 文件的内容
[test@VM-8-5-centos ~]$ cat a.txt
today
is
Friday
more
用于分页显示文件内容,在使用 more 命令分页显示文件内容时,可用快捷键进行翻页等操作,快捷键如下表
快捷键 | 说明 |
---|---|
f/Space | 显示下一页 |
Enter | 显示下一行 |
q/Q | 退出 |
head
也用于查看文件内容,该命令可指定只查看文件的前 n 行
查看 Test.java 文件的前4行内容
[test@VM-8-5-centos ~]$ head -4 Test.java
public class Test{
public static void main(String[] args){
System.out.println("hello world");
}
tail
tail 命令与 head 命令相反,用于查看文件的后 n 行内容。
文件搜索命令可根据文件名或关键字搜索文件所在路径,或者根据关键字符搜索文件内容。
which
我们使用的每条 Linux 命令都以文件的形式保存在系统中,使用 which 命令可查看命令所在的目录。
查找命令 ls 所在的路径
[root@VM-8-5-centos test]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
与 which 类似,whereis 也能找到命令所在的位置。不同的是 which 还能找到命令的别名记录,而 whereis 可以同时展示命令帮助文档所在的路径。
find
find 可以借助搜索关键字查找文件或目录
关键字为文件名、文件大小、文件所有者等
选项 | 说明 |
---|---|
-name | 根据文件名查找 |
-size | 根据文件大小查找 |
-user | 根据文件所有者查找 |
根据文件名在 /etc 目录下查找 passwd 文件
[root@VM-8-5-centos test]# find /etc -name passwd
/etc/passwd
/etc/pam.d/passwd
locate
搜索 /etc 目录下所有以 pas 开头的文件
[root@VM-8-5-centos test]# locate /etc/pas
/etc/passwd
/etc/passwd-
locate 的功能与 find -name 相同,但在速度上,locate 要比 find 命令快很多,因为它不是搜索Linux的整个目录,而是搜索数据库 /var/lib/locaedb。在使用 locate 命令之前,先使用 updatedb 命令手动更新一下数据库。
grep
grep 命令用于在文件中搜索与字符串匹配的行并输出。
查找 etc 目录下的 services 文件中包含 root 的行
[root@VM-8-5-centos test]# grep root /etc/services
rootd 1094/tcp # ROOTD
rootd 1094/udp # ROOTD