Linux 系统编程之三系统常用命令
大纲
命令格式
Linux 命令的格式:command [-options] [parameter1] ...
command
:命令名称,相应功能的英文单词或单词的缩写[-options]
:选项,可用来对命令进行控制,也可以省略,[]
代表可选parameter1 ...
:命令的参数,可以是零个、一个或者多个
基础命令
管道 |
管道,也就是一个命令的输出可以通过管道做为另一个命令的输入。简单概括,管道可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里 |
的左右分为两端,左端塞东西(写),右端取东西(读)。
1 | $ ls -alh | more |
清屏 clear
clear
作用为清除终端上的显示(类似于 DOS 的 cls
清屏功能),也可使用快捷键:ctrl + l
。
1 | $ clear |
输出重定向 >
Linux 允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。>
输出重定向会覆盖原来的内容,>>
输出重定向则会将内容追加到文件的尾部。
1 | # 覆盖文件内容 |
切换工作目录 cd
在使用 Unix/Linux 的时候,经常需要更换工作目录,cd
命令可以帮助用户切换工作目录。Linux 所有的目录和文件名都区分大小写。cd
命令后面可跟绝对路径,也可以跟相对路径;如果省略目录,则默认切换到当前用户的主目录。
显示当前路径 pwd
使用 pwd
命令可以显示当前的工作目录,该命令很简单,直接输入 pwd
即可,后面不带参数。
查看命令位置 which
which
命令可以用来查看特定命令的具体位置。
1 | # 查看ls命令的位置 |
帮助文档
查看帮助文档 man
man
是 Linux 提供的一个帮助手册命令,可以查看绝大部分命令、函数的使用说明。该帮助手册分成很多章节(section),使用 man
命令时可以指定不同的章节来浏览不同的内容。各个章节(section)的含义如下:
- 1.Standard commands(标准命令)
- 2.System calls(系统调用,如 open,write)
- 3.Library functions(库函数,如 printf,fopen)
- 4.Special devices(设备文件的说明,/dev 下各种设备)
- 5.File formats(文件格式,如 passwd)
- 6.Games and toys(游戏和娱乐)
- 7.Miscellaneous(杂项、惯例与协定等,例如 Linux 档案系统、网络协定、ASCII 码;environ 全局变量)
- 8.Administrative Commands(管理员命令,如 ifconfig)
man
命令的使用格式是:man [选项] 命令名称
,例如查看 ls
命令的用法可以使用:man 1 ls
,其中 1 是数字,代表第 1 个 章节(section)。实际上,一般不用指定第几个章节也可以正常查看,例如 man ls
。但是有一种情况除外,假如命令的名称和函数的名称刚好相同(如:printf
),它既是命令,也可以是库函数;如果不指定章节号直接使用 man printf
,那么它只能查看命令的用法,不能查看函数的用法,因为 man
命令是按照手册的章节号的顺序进行搜索的。man
命令设置了如下的功能键:
查看帮助文档 - -help
--help
一般是 Linux 命令自带的选项,但并不是所有命令都自带这个选项,例如以下命令可以查看 ls
命令的帮助文档:
1 | $ ls --help |
文件管理
查看文件列表 ls
ls
是英文单词 list
的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于 DOS 系统下的 dir
命令。Linux 文件或者目录名称最长可以有 256 个字符,.
代表当前目录,..
代表上一级目录,以 .
开头的文件为隐藏文件,需要用 -a
参数才能显示。
与 DOS 系统下的文件操作类似,在 Unix/Linux 系统中,也同样允许使用特殊字符来同时引用多个文件名,这些特殊字符被称为 通配符
。
创建目录 mkdir
通过 mkdir
命令可以创建一个新的目录,参数 -p
可递归创建目录。需要注意的是,新建目录的名称不能与当前目录中已有的目录或文件同名,并且目录创建者必须对当前目录具有写权限。
1 | $ mkdir www |
删除目录 rmdir
可使用 rmdir
命令删除一个目录,但必须离开目录,并且目录必须为空目录,不然会提示删除失败
删除文件 rm
可通过 rm
命令删除文件或目录。使用 rm
命令要特别小心,因为文件删除后不能恢复。为了防止文件误删,可以在 rm
命令后使用 -i
参数以逐个确认要删除的文件。结合 -r
参数,可以递归删除非空目录里的所有文件和文件夹。
1 | $ rm run.log |
拷贝文件 cp
cp
命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于 DOS 下的 copy
命令。
移动文件 mv
用户可以使用 mv
命令来移动文件或目录,也可以给文件或目录重命名。
1 | # 文件重命名 |
创建文件 touch
touch
命令用于修改文件或者目录的时间属性,包括存取时间和更改时间,若文件不存在,则会创建一个新的文件。命令格式为: touch [-acfm] [-d<日期时间>] [-r<参考文件或目录>] [-t<日期时间>] [--help] [--version][文件或目录...]
-a
:更改文件的读取时间记录-m
:更改文件的修改时间记录-c
:假如指定的文件不存在,不会创建新的文件,与--no-create
的效果一样-f
:可忽略不使用,是为了与其他 Unix 系统的相容性而保留-r
:使用其他文件的时间信息,而不是当前系统时间-d
:设定时间与日期,可以使用各种不同的格式-t
:设定文件的时间信息,格式与date
命令相同--no-create
:不创建新的文件
1 | # 修改文件时间属性为当前系统时间 |
值得一提的是,使用 touch
命令时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件 newfile
,可以使用如下命令:
1 | $ touch newfile |
建立链接文件 ln
Linux 的链接文件类似于 Windows 下的快捷方式,链接文件分为 软链接
和 硬链接
:
- 硬链接:硬链接只能链接普通文件,不能链接目录,命令格式:
ln 源文件 链接文件
- 软链接:软链接不占用磁盘空间,源文件删除则软链接失效,命令格式:
ln -s 源文件 链接文件
1 | $ ln -s /bin/less /usr/local/bin/less |
如果没有 -s
选项则代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,所以 -s
选项是更常见的使用形式。特别注意,如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。
获取文件类型 file
Linux 系统文件类型不是根据文件扩展名分类的,通过 file
命令可以确认文件的具体类型。
1 | $ file run.log |
文件内容搜索 grep
Linux 系统中的 grep
命令是一种强大的文本搜索工具,grep
命令允许对文本文件进行模式查找。如果找到匹配模式,grep
命令会打印包含模式的所有行。grep
命令的格式为 grep [-选项] "搜索内容" 文件名
。
1 | # 在文件中搜索字符串 |
值得一提的是,在 grep
命令中输入字符串参数时,最好使用引号或双引号括起来,例如:grep "a" run.log
。
计算文件行数或字数 wc
1 | # 统计文件行数 |
分页显示文件内容 more
查看内容时,在信息过长无法在一屏上显示时,会出现快速滚屏,使得用户无法看清文件的内容。此时可以使用 more
命令,每次只显示一页,按下 空格键
可以显示下一页,按下 回车键
可以显示下一行,按下 q
键退出显示,按下 h
键可以获取帮助。
1 | $ more README.md |
查看或者合并文件内容 cat
1 | # 查看文件内容 |