目录
1. linux目录结构
2. linux基本命令操作
2.1 目录操作命令
2.2 文件操作命令
2.3 查看登录用户命名
2.4 文件内容查看命令
2.5 系统管理类命令
3. bash通配符
4. 压缩与解压缩命令
4.1 压缩和解压缩
4.2 测试网络连通性命令 ping
4.3 vi编辑器
4.4 管道操作(常用)
1. linux目录结构
| /bin | bin是Binary的缩写,目录中存放着最经常用的命令,有管理员和员工共享 | 
| boot | boot存放Linux使用的核心文件,比如链接、镜像等 | 
| dev | dev是device的缩写,目录中存放linux的外部设备 | 
| /etc | etc中存放重要的系统配置文件,目录类似windows的控制面板中数据 | 
| /home | home中是普通用户的家目录 | 
| /lib | lib是库文件 | 
| /lost+found | lost+found保存故障期间的文件 | 
| /media | media中是媒体设备,linux中识别U盘、光驱等 | 
| /mnt | mnt中是外部文件系统的标准挂载,例如光驱或数码相机 | 
| /opt | opt中是额外的和第三方软件,放置大型应用程序 | 
| /proc | proc中是虚拟目录,它是系统内存映射,可以通过直接访问这个目录来获取系统信息 | 
| /root | root是系统管理员 | 
| /sbin | sbin存放管理员root使用的程序 s: Super User | 
| /tmp | sbin存放管理员root使用的程序 s: Super User | 
| /usr | usr包括用户的应用程序和文件,类似windows的program files目录 | 
| /var | var中是用户创建的所有可变文件和临时文件,如日志文件(/var/log) | 
2. linux基本命令操作
2.1 目录操作命令
| cd | 切换到另一个目录 | 
| pwd | 打印当前所在目录 | 
| ls | 快速查看目录内容 | 
| ls -lh | 长格式输出的文件字节数转换为K,M,G的形式方便人阅读 | 
| ls -R | 列出当前目录下的所有文件,如果有目录遍历所有目录和子目录的文件(文件多可装逼,不常用) | 
| mkdir |   创建目录,使用 -p 选项可以级联创建目录( 场景 1:创建单层目录 场景 2:创建多层嵌套目录 场景 3:批量创建多个目录 )  | 
| rmdir |   删除空目录,必须是空目录,否则用rm -rf filename删除  | 
| du |   统计目录下每个文件字节数 
 
  | 
2.2 文件操作命令
| which | which后面的命令接磁盘位置 例如 which cd、which ls、which date  | 
| touch |   创建空文件,例如 创建一个空文件(例如 file.txt) touch file.txt  | 
| cp |   1. cp 复制文件 例如:复制 /root/install.log 文件到 /tmp cp /root/install.log /tmp 例如:复制 /root/install.log 文件到 /tmp并改名为 abc.log cp /root/install.log /tmp/abc.log 2、cp 复制目录 例如:复制整个 /root 目录到 /tmp cp -R /root /tmp 例如:复制整个 /root 目录到 /tmp并改名为 abc cp -R /root /tmp/abc  | 
| mv |   1、mv 移动文件或目录 例如:移动 /root/install.log.bak 文件到 /tmp mv /root/install.log.bak /tmp 2、mv 给文件或目录改名 例如:给/tmp下的root目录改名为root1 mv /tmp/root /tmp/root1  | 
| rm |   1、rm 删除文件 例如:删除/root/install.log.bak rm /root/install.log.bak 2、rm 删除目录 (root用户操作一定要小心) 例如:给/tmp下的root1目录 rm -rf /tmp/root1 常用选项: -r 级联删除目录下的所有文件 -f 不提示(不用用户键入'y'或'n'进行确认)  | 
| file | file 是 查看文件类型 | 
| echo |   向文件中写入内容(使用 echo 和重定向 >),例如 echo "Hello, this is my text file." > file.txt  | 
2.3 查看登录用户命名
| who | 当前用户登录的信息 | 
| w | 当前用户登录的信息,以什么程序登录的 | 
2.4 文件内容查看命令
| cat |   查看文件内容,例如 cat file.txt  | 
| tac |   倒叙查看文件内容,例如 cat file.txt  | 
| more |   分页显示文件内容,例如:more /root/install.log 默认显示进度百分比 空格往下翻页,b往上翻页,f往下翻页,q退出  | 
| less |   分页显示文件内容,例如:less /root/install.log 选项 -m 显示进度百分比 可以用“/”后跟关键字搜索文件内容 空格往下翻页,b往上翻页,f往下翻页,q退出  | 
| tail |   查看文件尾部10行,例如:tail /root/install.log 选项-N (N为正整数)可以指定显示末尾N行内容 例如 tail -n 行数 文件名 tail -n 5 file.txt  | 
| head |   查看文件头部10行,例如:head /root/install.log 选项-N (N为正整数)可以指定显示头部N行内容 例如 head-n 行数 文件名 head-n 5 file.txt  | 
2.5 系统管理类命令
| shutdown |   关机命令 shutdown -h now 立刻关机 shutdown -h +10 "10分钟后关机",每个登录用户收到“10分钟后关机”的消息,并于10分钟后关机 shutdown -c 取消关机  | 
| reboot | 重启系统 | 
| lscpu | 查看系统cpu信息 | 
2.6 日期时间管理类命令
| date |   打印操作系统时钟 date -s 20190101 按照指定日期重新设定日期和时间  | 
| clock |   打印硬件时钟(主板中依靠纽扣电池保存在芯片中的时钟) clock -s 按照硬件时钟设置操作系统时钟 clock -w按照操作系统时钟设置硬件时钟  | 
3. bash通配符
| * | 匹配任意长度的任意字符 | 
| ? | 匹配任意单个字符 | 
| [] | 匹配指定字符范围内的任意单个字符,简化写法[a-z]不区分大小写 | 
| [[:upper:]] | 大写字母 | 
| [[:lower:]] | 小写字母 | 
| [[:alpha:]] | 大小写所有字母 | 
| [[:digit:]] | 匹配数字,可以写成[0-9] | 
| [[:alnum:]] | 字母+数字 | 
| [[:space:]] | 空格 | 
| [[:punct:]] | 标点符号 特殊字符 | 
| [^] | 匹配指定字符范围外的任意单个字符 | 
#列出a开头的所有文件
ls a*#列出a开头一共3个字母的文件
ls a??#列出三个大写字母文件名的文件
ls [[:upper:]][[:upper:]][[:upper:]]#列出一个字母后跟三个数字的文件
ls [a-z][0-9][0-9][0-9]#列出不以a字母开头后跟三个数字的文件
ls [^a][0-9][0-9][0-9]
 
拓展:Bash中的组合键
| 键或组合键 | 功能 | 
| Ctrl+A | 将光标移动到命令行开头 | 
| Ctrl+C | 结束正在运行的程序并返回提示符 | 
| Ctrl+D | 退出当前shell会话,相当于键入exit或logout | 
| Ctrl+E | 将光标移动到命令行末尾 | 
| Ctrl+H | Generate backspace character | 
| Ctrl+L | Clear this terminal | 
| Ctrl+R | 查询命令历史记录 | 
| Ctrl+Z | 暂停一个程序 | 
|   ArrowLeft and ArrowRight  | 将光标在命令行上向左或向右移动一个位置,这样就可以在其他位置插入字符,而不仅仅是在开头和结尾 | 
|   ArrowUp and ArrowDown  | 浏览历史。转到要重复的行,如果需要编辑详细信息,按Enter键以节省时间 | 
| Shift+PageUp and Shift+PageDown | 浏览终端缓冲区(查看已“滚屏”的文本) | 
| Tab | 命令或文件名补全;当有多种选择时,系统会发出声音或视觉铃声,如果选择太多,则会询问你是否都想看 | 
| Tab Tab | 显示文件或命令补全的可能性 | 
4. 压缩与解压缩命令
4.1 压缩和解压缩
1) zip/unzip(兼容 Windows 的 zip 格式)
 压缩:
 zip archive.zip file1 file2 dir1 
解压缩:
 unzip archive.zip
查看zip文件内容:
 unzip -l archive.zip
2) gzip 压缩(.gz 格式)
 压缩文件:
 gzip filename  # 生成 filename.gz
 解压缩:
 gunzip filename.gz
 或
 gzip -d filename.gz
4.2 测试网络连通性命令 ping
ping命令可以用来测试网络的连通性
常用选项
| -c | 次数 | 
| -w | 等待秒数,优先级高于-c | 
示例:测试百度网址的连通性,发生4个ping包
ping -c 4 www.baidu.com
示例:测试百度网址的连通性,发生4个ping包,2秒后停止ping
          ping -c 4 -w 2 www.baidu.com
  
4.3 vi编辑器
1)vi三种模式
 1.一般模式(normal mode),默认即为一般模式。
2.插入模式(insert mode)。
3.末行模式(last line mode)。
2)三种模式的切换:
 1.一般模式 --> 插入模式
i:当前光标处输入内容。
I:在当前光标所在行的行首。
a:在当前光标所在处的后面。
A:在当前光标所在行的行尾输入。
o:在光标所在行的下方新增一行空白行。
O:在光标所在行的上方新增一行空白行。
2.插入模式 --> 一般模式
使用:ESC键
3.一般模式 --> 末行模式
使用:“:”(英文状态下)
4.末行模式 --> 一般模式
使用:ESC键
3)退出编辑器
 末行模式下,输入下述内容可退出:
1. q!:强制退出,不保存并退出。
2. wq:保存修改并退出。
3. x:保存并退出。
4)重点! :vi操作流程 
 1.  新建或编辑文件:vi filename
2. i或insert键,即可进入插入模式。
3. 编辑内容。
4. ESC键,退出到一般模式。
5. 键入英文“:”进入末行模式,按wq(保存并修改)后回车。
6. 查看编辑内容是否正确:cat filename
5)拓展
 在一般模式下:
d 删除。dd 删除一行
y 复制。yy 复制一行
p 粘贴
x 清除
g 行跳转;gg 行跳转:如10gg,表示跳转到第10行。
/或? 查找
n/N 上下翻
v 可视化模式。可视化模式中,可移动光标选择文本。键入y复制选中文本,键入d删除选中文本,键入v回到一般模式。
u 撤销之前的操作
 4.4 管道操作(常用)
 
 # 查看日志文件并过滤错误信息
 cat /var/log/syslog | grep -i 'error'
# 显示文件第10-20行
 cat file.txt | head -20 | tail -11
# 查看日志中最近出现的错误(最常用)
 tail -100f /var/log/nginx/error.log | grep -i 'error\|fail\|exception'
# 快速搜索历史命令(日常效率提升)
 history | grep 'docker' | grep 'run'
# 生成随机密码(安全相关)
 cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 12 | head -1