前言
shell 是一种脚本语言, 须要有编译器执行
即:应用程序 ->shell-> 操作系统 -> 硬件
bash 是 linux 下默认的 shell
sh 是 unix 下默认的 shell
多命令执行:xx && xx: 后面执行胜利才会执行前面的命令
xx || xx: 后面执行失败才会执行前面的命令
xx ; xx : 前后无关联,按程序执行
与操作:xx | xx:对后面执行后果持续前面命令操作
重定向输出 / 输入:< , >
stdin: 规范输出, 代码:0
stdout: 规范输入, 代码:1
stderr:规范谬误输入, 代码:2
> file:笼罩输入正确信息
>> file:追加输入正确信息
2> file:笼罩输入错误信息
> file 2>&1:合并笼罩输入谬误和正确信息到一个文件
api 文档
零碎操作类指令
<font size=”5″>mkdir</font> | ||
---|---|---|
作用 | 新建文件夹 | |
格局 | mkdir [option]… DIRECTORY… | |
示例 | rm -rf /xx/xx | |
option | -p | 递归创立 |
-m | 设置目录拜访权限 mode,如 777 | |
<font size=”5″>rm</font> | ||
作用 | 删除 | |
格局 | rm [option]… FILE… | |
示例 | rm -rf /xx/xx | |
option | -f | 强制删除 |
-r | 递归删除 | |
-i|-l | 删除前确认 | 删除超过 3 个文件以下或递归删除须要确认 | |
-d | 删除空目录 | |
-v | 列出详细信息 | |
<font size=”5″>chmod</font> | ||
作用 | 权限赋予 | |
格局 | chmod [option] [权限] [目录或文件] | |
示例 | chmod -R 777 /xxx/xxx | |
option | -R | 给目录下所有文件 (递归) 授予权限 |
权限 | 777 | 所有权限 |
<font size=”5″>groupadd</font> | ||
作用 | 新增用户组 | |
格局 | groupadd [option] | |
示例 | groupadd -g 8888 gadmin | |
option | -g | 指定组 id |
-p | 应用加密过的明码 | |
-r | 建设零碎工作组,id 必须小于 500 | |
<font size=”5″>useradd</font> | ||
作用 | 新增用户 | |
格局 | useradd [option] | |
示例 | useradd admin -g gadmin -G root | |
option | -g | 指定用户所属组 |
-G | 附加群组 | |
-d | 指定用户登入的起始目录 | |
-u | 指定用户 id | |
-r | 建设零碎账号 | |
-s | 指定用户登入后应用的 shell | |
-p | 设置明码 | |
<font size=”5″>chown</font> | ||
作用 | 设置文件用户和用户组 | |
格局 | chown [option]… OWNER] FILE… | |
示例 | chown -R admin:gadmin /xxx/xx | |
option | -R | 递归批改 |
-c | 显示更改局部信息 | |
-f | 疏忽错误信息 | |
-h | 修复符号链接 | |
-v | 显示具体解决信息 | |
-H | 命令行参数是指向目录的符号链接,则遍历它 | |
-L | 遍历遇到的每个指向目录的符号链接 | |
-P | 不遍历任何符号链接(默认) |
文件文本相干指令
<font size=”5″>stat</font> | ||
---|---|---|
作用 | 查看文件状态 | |
格局 | stat [option] /xx/xx | |
示例 | stat /xx/xx | |
option | -L | 跟踪软连贯文件原始文件状态信息 |
-f | 查看文件的文件系统状态信息 | |
-t | 简洁打印文件状态信息 | |
-c | 指定格局打印文件状态信息 -c %i: inode %u: 用户 ID %U: 用户 %g: 用户组 ID %G: 用户组 %m: 磁盘挂载点 %x|y|z: 文件拜访 | 批改 | 更改工夫 %A|a: 文件权限 其余查看 stat –help 自行翻译 |
|
<font size=”5″>cat</font> | ||
作用 | 查看文件内容 | |
格局 | cat [option] /xx/xx | |
示例 | cat /xx/xx | |
option | -A | 展现所有 |
-b | 对非空输入行编号 | |
-n | 对所有输入行编号 | |
-s | 间断空行转换为一个空行 | |
-e | 等价与 -vE | |
-v | 除了 LFD 和 TAB 之外不可打印的字符用 ^ 和 M - 标记形式显示 | |
-E | 每行完结中央显示 $ | |
-t|-T | TAB 显示为 ^| | |
<font size=”5″>tail</font> | ||
作用 | 查看文件开端内容 | |
格局 | tail [option] /xx/xx | |
示例 | tail -f /xx/xx | |
option | -f | 循环读取 |
-q | 不显示解决信息 | |
-v | 显示具体解决信息 | |
-c<num> | 显示的字节数 | |
-n<num> | 显示行数 | |
-q | 从不输入文件的头部 | |
-s | - f 下每次休眠距离 s 秒 | |
–pid=PID | - f 下在 pid 过程死掉后完结 | |
<font size=”5″>vi | vim</font> | ||
作用 | 编辑文件 | |
格局 | vi /xx/xx | |
示例 | vi /xx/xx | |
外部操作 | 挪动光标 | 0: 文章结尾 G: 文章开端 $: 行尾 ^: 行首 w: 下个字结尾 e: 下个字结尾 b: 上个字结尾 #|: 该行第 #个地位 |
删除 | [#]dd: 从光标开始删除 [#] 行 [#]x|X: 删除光标前面 | 后面的 [#] 个字符 |
|
复制 | [#]yy: 从光标往下数复制 [#] 行 [#]yw: 复制光标到字尾 [#] 个字 p: 粘贴 |
|
替换 | r: 替换光标所在处字符 R: 替换光标所到之处字符,按 esc 完结 |
|
撤回 | u: 撤回到上一个操作 | |
更改 | c[#]w: 更改 [#] 个字 | |
跳转 | ctrl+g: 列出光标所在行号 #G: 挪动光标到第 #行行首 |
|
last line mode 按 esc 键后输出 格局:[xxx] |
set nu | 展现行号 |
set ff[?|=unix|=dos] | [查看 | 批改]文件格式[为 unix|dos] | |
# | 跳到 #行 | |
/ 关键字 | 查找关键字,n 往后,N 往前 | |
? 关键字 | 查找关键字,n 往前,N 往后 | |
w | 保留 | |
q[!] | [放弃批改]退出 | |
wq | 保留后退出 | |
<font size=”5″>sort</font> | ||
作用 | 排序显示文本(默认升序) | |
格局 | sort [option] [目录或文件] | |
示例 | sort -u /xxx/xxx | |
option | -u | 去重 |
-r | 降序 | |
-o | 输入后果到文件 | |
-n | 数值排序 | |
-h | 以人类可读的数值排序 | |
-t : | 按: 分列 | |
-k N | 按第几列排序 | |
-f | 疏忽大小写 | |
-c | 查看文件排序,输入第一个乱序行的信息,最初返回 1 | |
-C | 与 - c 一样,只是不输入内容只返回 1 | |
-M | 月份排序 | |
-b | 疏忽空白局部,从第一个可见字符排序 | |
<font size=”5″>awk</font> | ||
作用 | 抽取文件或字符串中的信息 | |
格局 | awk [option] ‘[condition]COMMAND’ FILE | |
示例 | awk -F ‘print $1,$3’ /etc/passwd | |
option | -F ‘< 分隔符 >’|fs='< 分隔符 >’ | 指定分隔符,如:,默认是空格或 tab |
-f FILE | 指定文件中读取 awk 脚本指令 | |
-v var=val | 执行解决之前设置变量 var 初始值 val |
查找匹配指令
<font size=”5″>find</font> | ||
---|---|---|
作用 | 目录中搜寻文件 | |
格局 | find [path…] [expression] expression=[operators|options|tests|actions] |
|
示例 | find / -xdev -size 100M -exec ls -l {} \; | |
operators | (!|-not)expr; expr1 (-a|-and) expr2; expr1 (-o|-or) expr2; expr1,expr2 | |
options | -xdev | 不会进入到挂载点目录执行但依然会列出, 如 /dev,/sys 就是把其余文件系统目录当成整体搜寻, 而不会搜寻到目录外面 |
-maxdepth | 最多搜寻几层 | |
-depth | 查看目录之前先搜寻目录的内容 | |
-follow | 遇到符号链接文件,跟踪链接指向文件搜寻 | |
tests | -amin/-atime N | 查找最初 N 分钟 / 天拜访的文件 |
-cmin/-ctime N | 查找最初 N 分钟 / 天被需批改文件状态的文件 | |
-mmin/-mtime N | 查找最初 N 分钟 / 天被批改文件数据的文件 | |
-name pattern | 按文件名查找 | |
-path pattern | 指定目录查找 | |
-perm xx | 按文件权限查找 | |
-user name | 按文件归属用户查找 | |
-group name | 按文件归属组查找 | |
-nouser|-nogroup | 按没有归属 [用户 | 组] 查找 | |
-newer file | 按比 file 批改工夫新查找 | |
-type [bcdpflsD] | 查找某类型文件 b: 块设施文件 c: 字符设施文件 d: 目录 p: 管道文件 f: 一般文件 l: 符号链接文件 s:socket 套接字 |
|
-size N[bcwkMG] | 按文件大小为 N 个单位查找 b:512 位元组的区块 c:字元数 k:kilo bytes w:2 个位元组 |
|
actions | -prune | 在指定目录之外查找 |
-print|-print0 | 查找到的文件规范打印(开端加换行符)| 开端加 null 字符 | |
-exec command {} ; | 对所有查找后果 (这里{} 指的是以后一个查找后果)执行 shell 指令 ; 是列表操作符,须要本义(\;) |
|
-ok command {} ; | 更平安的 exec 操作, 每次执行命令前都会提醒用户是否执行 | |
<font size=”5″>grep</font> | ||
作用 | 文本搜寻工具 | |
格局 | grep [option] [pattern] /xx/xx | |
示例 | grep -i -n “^x” xx.txt | |
option | -i | 不辨别大小写 |
-n | 显示匹配行号 | |
-v | 排除匹配后果 | |
-c<num> | 只统计匹配行数 | |
-E<num> | 应用 egrep 命令 | |
-w | 只匹配过滤的单词 | |
-o | 只显示匹配的内容, 不显示整行 | |
–color=auto | 过滤后果增加色彩 | |
<font size=”5″>whereis</font> | ||
作用 | 定位某个命令应用的二进制文件、源文件、手册文件 | |
格局 | whereis [option] <name> | |
示例 | whereis docker | |
option | -b | 找二进制文件 |
-m | 找手册文件 | |
-s | 找源文件 | |
-f<num> | 不显示文件的目录名 | |
-u<num> | 找不蕴含指定类型的文件 | |
-B <dir> | 指定目录下找二进制文件 | |
-M <dir> | 指定目录下找手册文件 | |
-S <dir> | 指定目录下找源文件 | |
<font size=”5″>which</font> | ||
作用 | 查找某个命令的地位 | |
格局 | which command [args] <name> | |
示例 | which docker | |
option | -n <num> | 文件名长度大于 num |
-p <num> | 绝对路径长度大于 num | |
-w | 指定输入栏位宽度 |
过程相干指令
<font size=”5″>nohup</font> | ||
---|---|---|
作用 | 不挂起运行命令(加 & 则是挂起) | |
格局 | nohup [COMMAND] [ARG] [&] | |
示例 | nohuo java -jar xx.jar & | |
<font size=”5″>ps</font> | ||
作用 | 展现以后过程信息 | |
格局 | ps [option] | |
示例 | ps -ef|grep 9090 | |
打印格局 | USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND | |
STAT | D: 无奈中断的休眠状态(通常 IO 的过程) R: 正在执行中 S: 静止 T: 暂停 Z: 不存在但临时无奈打消 W: 没有足够的记忆体分页可调配 <: 高优先序的行程 N: 低优先序的行程 |
|
option | -e|-A | 所有过程 |
-f | 全格局显示 | |
-a | 除了会话主持过程外的所有过程显示 tty | |
-d<num> | 显示除了会话主持过程之外所有过程 | |
-u<num> | 无效的用户 id 或名字 | |
-x | 显示没有管制终端的过程 | |
<font size=”5″>netstat</font> | ||
作用 | 显示网络连接、路由表和网络接口信息 | |
格局 | netstat [option] | |
示例 | netstat -anp|grep docker | |
打印格局 | Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name |
协定 网络接管队列 网络发送队列 内网 IP 地址 外网 IP 地址 状态 过程 ID 和应用程序名 |
State | LISTEN: 侦听近程 tcp 端口连贯申请 SYN_SENT:tcp 第一次握手期待服务器确认的状态 SYN_RECV:tcp 第二次握手服务端期待客户端确认的状态 ESTABLISHED:tcp 三次握手胜利状态 FIN-WAIT-1: 被动敞开端敞开利用端程序,tcp 收回 FIN 申请被动敞开连贯后进入的状态 FIN-WAIT-2: 被动敞开端接到 ACK 后进入的状态 CLOSE-WAIT: 被动敞开端接到 FIN 后,收回 ACK 回应 FIN 申请后进入的状态 CLOSING: 期待近程 TCP 对连贯中断请求的确认 LAST-ACK: 被动敞开端一段时间后接管到文件结束符的应用程序调用 CLOSE,也发送 FIN 期待对方的 ACK 后进入的状态 TIME-WAIT: 被动敞开端接管到 FIN 后,TCP 发送 ACK 包后进入的状态 CLOSED: 被动敞开端接管到 ACK 后进入的状态 |
option | -a | 所有连贯 |
-n | 显示 ip 地址而不是域名 | |
-p | 显示 PID 和应用程序名 | |
-r<num> | 显示路由表 | |
-i<num> | 显示网络接口表 | |
-g | 显示多重播送性能群组组员名单 | |
-s | 显示网络工作信息统计表 | |
-M | 显示假装的网络连线 | |
-v | 显示指令执行过程 | |
-W | 显示 ip 地址且不截断 | |
-N | 显示网络硬件外围设备的符号连贯名称 | |
-e | 显示网络其余相干信息 | |
-o | 显示计时器 | |
-c | 继续列出网络状态(每隔一秒) | |
-l | 显示所有监控中服务器的 socket(个别关注端口) | |
-F | 显示 FIB | |
-C | 显示路由器配置的快取信息而不是 FIB | |
-t | 显示 tcp 协定的连线情况 | |
-u | 显示 udp 协定的连线情况 | |
-x | 显示 unix 类型的连线情况,相当于 -A unix | |
–ip | 显示 inet 类型的连线情况,相当于 -A inet | |
-A <networktype>|–networktype | 列出网络类型连线中的相干地址 |
工具类指令
<font size=”5″>tar</font> | ||
---|---|---|
作用 | 解压缩 | |
格局 | tar [function] [option] /xxx/xx | |
示例 | 压缩:tar -zcvf /xx/xx.tar.gz /xxx 解压缩: tar -zxvpf /xx/xx.tar.gz /xxx |
|
function | (-c|–create)|–delete|(-u|–update)|(-t|–list) | 增删改查 tar 文件 删除性能不能用于已保留在磁带上的文件 |
-x|–extract|–get | 解开 tar 文件 | |
-r|–append | 附加新文件到 tar 文件 | |
-A|–catenate|–concatenate | 追加 tar 文件作为一个整体到另一个 tar 文件 | |
-d|–diff|–compare | 将文件系统里的文件和 tar 文件里的文件比拟 | |
option | -v|–verbose | 列出每一步解决的文件信息 v: 仅文件名 vv: 权限、文件名等·详细信息 |
-k|–keep-old-files | 不笼罩已有文件 | |
-f|–file | 指定要解决的文件名 | |
-P|–absolute-names | 绝对路径 | |
-j|–bzip2 | 应用 bizp2 解压缩 | |
-J|–xz|–lzma | 调用 XZ Utils 解压缩 | |
-z|–gzip|–gunzip|–unzip | 调用 gzip 解压缩 | |
-Z|–compress|–uncompress | 调用 compress 解压缩 | |
<font size=”5″>zip|unzip</font> | ||
作用 | zip 解压缩 | |
格局 | zip [option] /xx/xx.zip /xx/xx.txt | |
示例 | 压缩: zip -r /xx/xx.zip /xx/xx 解压缩: unzip /xx/xx.zip /xx/xx |
|
option | -r | 递归解决,即目录下所有目录和文件 |
-b | 指定寄存文件的目录 | |
-d | 删除压缩内指定文件 | |
-f | 更新压缩包文件 | |
-m | 压缩并退出压缩文件,后删除原始文件 | |
-q | 不显示执行过程 | |
-v | 显示执行过程或版本信息 | |
-sf | 显示文件 | |
<font size=”5″>scp</font> | ||
作用 | 基于 ssh 协定的近程拷贝 | |
格局 | scp [option] /xxx [email protected]:/xx/xx | |
示例 | scp -r /xx/xx [email protected]:/xx/xx | |
option | -r | 递归拷贝 |
-C | 复制过程中压缩文件或目录 | |
-P | 指定 ssh 端口 | |
-p | 保留文件拜访和批改工夫 | |
<font size=”5″>date</font> | ||
作用 | 工夫操作 | |
格局 | date [option] [参数] | |
示例 | date -s ‘2022-10-21 00:00:00’ | |
option | 没参数显示零碎工夫 | |
+%F | 显示日期 | |
+%Y|m|d | 显示零碎年 | 月 | 日 | |
+%w | 显示星期几 | |
+%z|Z | 显示时区 | |
-s|–set [日期] | 设置零碎工夫 | |
<font size=”5″>hwclock</font> | ||
作用 | 操作硬件时钟 | |
格局 | hwclock [functions] [option] | |
示例 | hwclock –show | |
functions | -r|–show | 显示零碎硬件工夫 |
–set –date [’08/02/2012 12:00:00′] | 设置硬件工夫为 date 指定的工夫 | |
-s|–hctosys | 同步到零碎工夫 | |
<font size=”5″>tzselect</font> | ||
作用 | 批改时区 | |
格局 | tzselect | |
示例 | tzselect, 界面中抉择时区 再链接 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 再批改工夫配置文件:/etc/sysconfig/clock |
|
磁盘相干指令
<font size=”5″>df</font> | ||
---|---|---|
作用 | 显示整个磁盘分区的应用状况 | |
格局 | df [option] [目录或文件] | |
示例 | df -h /xxx/xxx | |
option | -h | 显示空间大小 |
<font size=”5″>du</font> | ||
作用 | 递归查看当前目录的大小(默认 kb 单位) | |
格局 | du [option] [目录或文件] | |
示例 | du -h /xxx/xxx | |
option | -h | 递归显示当前目录空间大小(MB 为单位) |
-sh [*] | 只查看当前目录大小[及蕴含目录] | |
–time | 递归查看当前目录的大小和工夫 | |
<font size=”5″>mount</font> | ||
作用 | 挂载零碎 | |
格局 | mount [option] <source> <directory> | |
示例 | mount /dev/sdb /xxx/xx | |
option | -f | 模仿挂载过程, 用于检错, 和 - v 一起用 |
-v | 显示执行信息 | |
-a | 将 /etc/fstab 定义的所有档案零碎挂上 实现开机主动挂载, 也可独自编辑 /etc/fstab 实现 UUID=xxxxx /d /nfts(这里来自第二步) defaults 0 0 |
|
-F | 为每个挂载设施分叉执行, 与 - a 一起用 用于挂载大量 NFS 零碎时减速 |
|
-n | 不在 /etc/mtab 写入挂载材料, 因而 mount 或 df 无奈查看挂载信息 | |
-r|-w | 只读 | 只写 | |
source | -L | 挂载指定标签的硬盘, 相当于 LABEL=<label> |
-U | 挂载指定 uuid 的零碎 -U|- L 前提是 /proc/partition 存在 |
|
<font size=”5″>umount</font> | ||
作用 | 卸载零碎 | |
格局 | umount [option] <source> | <directory> | |
示例 | umount /dev/sdb | |
option | -f | 强制卸载 比方无法访问 NFS 零碎的状况下 |
-v | 显示执行信息 | |
-a | 卸载所有零碎(/etc/mtab 中记录的零碎) | |
-n | 不在 /etc/mtab 写入卸载材料 | |
-l | 拆散文件系统,稍后革除 | |
-r | 无奈卸载状况下以只读形式从新挂载 | |
<font size=”5″>lvdisplay | pvdisplay</font> | ||
作用 | 显示 [逻辑 | 物理] 卷信息 | |
格局 | [lvdisplay|pvdisplay] [option] [逻辑卷 | 物理卷门路] | |
示例 | [lvdisplay|pvdisplay] -m /xxx | |
option | -m | 显示映射关系 |
<font size=”5″>lvremove | pvremove</font> | ||
作用 | 删除逻辑卷 | 物理卷信息 | |
格局 | lvremove|pvremove [option] [逻辑卷门路] | |
示例 | lvremove|pvdisplay -f /xxx | |
option | -f | 强制删除 |
–noudevsync(lvremove) | 禁用 udev 同步 | |
-y(pvremove) | 所有问题都回 yes | |
<font size=”5″>lvextend</font> | ||
作用 | 扩容 | |
格局 | lvextend [option] [逻辑卷门路] | |
示例 | lvextend -L +100G /xxx | |
option | -L +N[MGTP] | 扩容逻辑卷大小 N, 单位(MGTP) |
-l +num | 扩容逻辑盘区数 | |
–noudevsync | 禁用 udev 同步 | |
-f | 扩容不提醒 | |
-r | 应用 fsadm 调整与逻辑卷相干的文件系统 | |
-n | 扩大前不要执行 fsck | |
<font size=”5″>xfs_growfs</font> | ||
作用 | 扩大 xfs 文件系统 | |
格局 | xfs_growfs [option] [挂载点] | |
示例 | xfs_growfs /xxx/xx | |
option | -L [size] | 指定日志区域大小 |
-D [size] | 指定扩大文件系统数据局部的大小 | |
-d | 将文件系统数据局部扩大到底层设施最大的大小 | |
-m | 指定文件系统中可调配为 inode 的最大空间百分比新值 |