Linux 系统编程之三系统常用命令

大纲

命令格式

Linux 命令的格式:command [-options] [parameter1] ...

  • command:命令名称,相应功能的英文单词或单词的缩写
  • [-options]:选项,可用来对命令进行控制,也可以省略,[] 代表可选
  • parameter1 ...:命令的参数,可以是零个、一个或者多个

基础命令

管道 |

管道,也就是一个命令的输出可以通过管道做为另一个命令的输入。简单概括,管道可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里 | 的左右分为两端,左端塞东西(写),右端取东西(读)。

1
$ ls -alh | more

清屏 clear

clear 作用为清除终端上的显示(类似于 DOS 的 cls 清屏功能),也可使用快捷键:ctrl + l

1
$ clear

输出重定向 >

Linux 允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。> 输出重定向会覆盖原来的内容,>> 输出重定向则会将内容追加到文件的尾部。

1
2
3
4
5
# 覆盖文件内容
$ ls > abc.txt

# 追加文件内容
$ date >> abc.txt

切换工作目录 cd

在使用 Unix/Linux 的时候,经常需要更换工作目录,cd 命令可以帮助用户切换工作目录。Linux 所有的目录和文件名都区分大小写。cd 命令后面可跟绝对路径,也可以跟相对路径;如果省略目录,则默认切换到当前用户的主目录。

linux-cmd-line-3

显示当前路径 pwd

使用 pwd 命令可以显示当前的工作目录,该命令很简单,直接输入 pwd 即可,后面不带参数。

查看命令位置 which

which 命令可以用来查看特定命令的具体位置。

1
2
# 查看ls命令的位置
$ which 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 命令设置了如下的功能键:

linux-cmd-line-0

查看帮助文档 - -help

--help 一般是 Linux 命令自带的选项,但并不是所有命令都自带这个选项,例如以下命令可以查看 ls 命令的帮助文档:

1
$ ls --help

文件管理

查看文件列表 ls

ls 是英文单词 list 的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于 DOS 系统下的 dir 命令。Linux 文件或者目录名称最长可以有 256 个字符,. 代表当前目录,.. 代表上一级目录,以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示。

linux-cmd-line-1

与 DOS 系统下的文件操作类似,在 Unix/Linux 系统中,也同样允许使用特殊字符来同时引用多个文件名,这些特殊字符被称为 通配符

linux-cmd-line-2

创建目录 mkdir

通过 mkdir 命令可以创建一个新的目录,参数 -p 可递归创建目录。需要注意的是,新建目录的名称不能与当前目录中已有的目录或文件同名,并且目录创建者必须对当前目录具有写权限。

1
2
3
$ mkdir www

$ mkdir -p www/nginx/

删除目录 rmdir

可使用 rmdir 命令删除一个目录,但必须离开目录,并且目录必须为空目录,不然会提示删除失败

删除文件 rm

可通过 rm 命令删除文件或目录。使用 rm 命令要特别小心,因为文件删除后不能恢复。为了防止文件误删,可以在 rm 命令后使用 -i 参数以逐个确认要删除的文件。结合 -r 参数,可以递归删除非空目录里的所有文件和文件夹。

linux-cmd-line-3

1
2
3
$ rm run.log

$ rm -rf /www/share/

拷贝文件 cp

cp 命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于 DOS 下的 copy 命令。

linux-cmd-line-6

移动文件 mv

用户可以使用 mv 命令来移动文件或目录,也可以给文件或目录重命名。

linux-cmd-line-7

1
2
3
4
5
6
7
8
# 文件重命名
$ mv run.log runtime.log

# 移动文件
$ mv /tmp/run.log /usr/local/share/

# 移动目录
$ mv /tmp/share/ /usr/local/share/

创建文件 touch

touch 命令用于修改文件或者目录的时间属性,包括存取时间和更改时间,若文件不存在,则会创建一个新的文件。命令格式为: touch [-acfm] [-d<日期时间>] [-r<参考文件或目录>] [-t<日期时间>] [--help] [--version][文件或目录...]

  • -a:更改文件的读取时间记录
  • -m:更改文件的修改时间记录
  • -c:假如指定的文件不存在,不会创建新的文件,与 --no-create 的效果一样
  • -f:可忽略不使用,是为了与其他 Unix 系统的相容性而保留
  • -r:使用其他文件的时间信息,而不是当前系统时间
  • -d:设定时间与日期,可以使用各种不同的格式
  • -t:设定文件的时间信息,格式与 date 命令相同
  • --no-create:不创建新的文件
1
2
# 修改文件时间属性为当前系统时间
$ touch testfile

值得一提的是,使用 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 [-选项] "搜索内容" 文件名

linux-cmd-line-4

1
2
3
4
5
6
7
8
# 在文件中搜索字符串
$ grep "time" /tmp/run.log

# 在文件中搜索字符串,不区分大小写
$ grep -i "time" /tmp/run.log

# 在文件中搜索字符串,不区分大小写,显示行号
$ grep -i -n "time" /tmp/run.log

值得一提的是,在 grep 命令中输入字符串参数时,最好使用引号或双引号括起来,例如:grep "a" run.log

计算文件行数或字数 wc

linux-cmd-line-5

1
2
3
4
5
6
7
8
9
10
11
 # 统计文件行数
$ wc -l run.log

# 统计文件字数
$ wc -w run.log

# 统计文件字节数
$ wc -c run.log

# 统计文件字符数
$ wc -m run.log

分页显示文件内容 more

查看内容时,在信息过长无法在一屏上显示时,会出现快速滚屏,使得用户无法看清文件的内容。此时可以使用 more 命令,每次只显示一页,按下 空格键 可以显示下一页,按下 回车键 可以显示下一行,按下 q 键退出显示,按下 h 键可以获取帮助。

1
$ more README.md

查看或者合并文件内容 cat

1
2
3
4
5
# 查看文件内容
$ cat 1.log

# 合并文件内容
$ cat 1.log 2.log > 3.log

文件压缩解压