Linux 基础命令是任何一个开发人员应该掌握的基本技能。大多数项目的生产部署环境都会选择 Linux,所以在项目运维和故障排除的时候,Linux 命令能够起到关键的作用。
获取文件内容
基本指令
命令 | 描述 | 备注 |
---|---|---|
cat | 打印文件内容 | -n: 打印出行号;-b: 不打印出行号 |
tac | 是 cat 的反向操作,从最后一行开始打印 | |
more | 一页一页查看文件内容,比较适合大文件的查看 | |
less | 和 more 类似,但是多了一个向前翻页的功能 | |
head | 打印文件前几行 | head -n filename |
tail | head 的反向操作,打印后几行 | |
od | 以字符或者十六进制的形式显示二进制文件 |
指令 & 文件搜索
基本指令
命令 | 描述 | 备注 |
---|---|---|
which | 指令搜索 | -a: 列出所有指令,而不是列出一个 |
whereis | 文件搜索。速度非常快, 只搜索几个特定的目录 | |
locate | 文件搜索。可以用关键字或者正则表达式进行搜索 | |
find | 文件搜索。可以使用文件的属性和权限进行搜索 |
find 指令详解
指令的基础用法如下:
1 | find [basedir] [option] // basedir 不指定则为当前目录,及其子目录 |
按修改时间搜索的参数
1 | -mtime n :列出在 n 天前的那一天修改过内容的文件 |
按文件所属搜索的参数
1 | -uid n |
按文件属性搜索的参数
1 | -name filename |
正则表达式
基本指令
指令 | 描述 | 备注 |
---|---|---|
grep | 使用正则表示式进行全局查找并打印 | |
printf | 用于格式化输出 | 在给 printf 传数据时需要使用 $( ) 形式 |
awk | 每次处理一行,处理的最小单位是字段 |
grep 详解
指令 grep (globally search a regular expression and print)的基本用法如下:
1 | grep [-acinv] [--color=auto] 搜寻字符串 filename |
示例如下:
1 | test.txt 的内容如下 |
awk 详解
指令 awk 的基本用法如下:
1 | awk '{[pattern] action}' {filenames} |
每次处理输入流中的一行,然后根据设置的条件匹配相应的字段,然后做处理。
awk 变量:
变量名 | 代表意义 |
---|---|
NF | 每一行拥有的字段总数 |
NR | 目前所处理的是第几行数据 |
FS | 目前的分隔字符,默认是空格键 |
示例如下:
1 | 取出登录用户的用户名和 IP |
Pipeline 指令
管线指令 | 将一个命令的标准输出作为另一个命令的标准输入,在数据需要经过多个步骤的处理之后才能得到我们想要的内容时就可以使用 Pipeline。
下面的指令通常与管线指令搭配使用,将其它指令的输出作为指令的输入。
字符转换基本指令
指令 | 描述 | 备注 |
---|---|---|
tr | 删除一行中的字符,或者对字符进行替换 | |
col | 将 tab 字符转为空格字符 | |
expand | 将 tab 转换一定数量的空格,默认是 8 个 | |
join | 将有相同数据的那一行合并在一起 | |
paste | 直接将两行粘贴在一起 | |
split | 将一个文件划分成多个文件 |
cut 指令
cut 对数据进行一行一行的切分,用法如下:
1 | cut -d |
sort 指令
sort 对数据进行排序,用法如下:
1 | sort [options] [file & stdin] |
uniq 指令
uniq 只将重复的数据读取一次,用法如下:
1 | uniq [-ic] |
tee 指令
输出重定向会将输出内容重定向到文件中,而 tee 不仅能够完成这个功能,还能保留屏幕上的输出。也就是说,使用 tee 指令,一个输出会同时传送到文件和屏幕上。
进程管理
基本指令
指令 | 描述 | 备注 |
---|---|---|
ps | 查看某个时间点的进程信息 | -l: 查看自己的进程;-aux: 查看系统进程 |
top | 实时显示进程信息 | |
pstree | 查看进程树 | |
netstat | 查看占用端口的进程 | 查看特定端口的进程:netstat -anp | grep port |
进程状态
在 Linux 中进程一共有 6 种状态,如下所示:
状态 | 说明 |
---|---|
R | running or runnable (on run queue) |
D | uninterruptible sleep (usually I/O) |
S | interruptible sleep (waiting for an event to complete) |
Z | zombie (terminated but not reaped by its parent) |
T | stopped (either by a job control signal or because it is being traced) |
X | dead (should never be seen) |
常用指令
查看程序对应的进程号
ps -ef|grep 进程名
查看进程占用的端口号
netstat -anp|grep pid
查看端口号所对应的进程号
lsof -i:端口号
数据流重定向
重定向指的是使用文件代替标准输入、标准输出和标准错误输出。
描述 | 代码 | 运算符 |
---|---|---|
标准输入 (stdin) | 0 | < 或 << |
标准输出 (stdout) | 1 | > 或 >> |
标准错误输出 (stderr) | 2 | 2> 或 2>> |
注意:
- 一个箭头的表示以覆盖的方式重定向,两个箭头的表示以追加的方式重定向。
- 可以将不需要的标准输出以及标准错误输出重定向到 /dev/null,相当于扔进垃圾箱。
- 如果需要将标准输出以及标准错误输出同时重定向到一个文件,需要将某个输出转换为另一个输出。例如 2>&1 表示将标准错误输出转换为标准输出。
指令搜索的顺序
在类 Unix 操作系统中,按照如下的顺序搜索指令:
- 以绝对或相对路径来执行指令,例如:/bin/ls 或者 ./ls
- 由别名找到该指令来执行
- 由 Bash 内建的指令来执行
- 按 PATH 变量指定的搜索路径的顺序来找到指令来执行