学习地址:
https://learnku.com/articles/5932/bash-command-and-syntax-take-you-to-upgrade-hit-boss,
https://www.youtube.com/watch?v=oxuRxtrO2Ag
shell命令行
基础命令
| 命令 | 解释 | 
|---|---|
| ls | 展示文件及目录; | 
| ls -a | 展示所有文件及目录(包括隐藏的); | 
| pwd | 输出当前目录(print working directory); | 
| cd xx | 传送到某个目录下; | 
| pushd xx | 传送到某个目录下,可返回; | 
| popd | 👆-返回; | 
| locate | 检索 | 
| history | 查看近1,000行你执行过的指令; | 
查看命令信息
| 命令 | 解释 | 
|---|---|
| whatis xx | 对某行指令做出简介。eg:whatis cal ; | 
| apropos xx | 例举出与xx有关的相关操作。 eg: apropos time ; | 
| which xx | 检查xx指令是否存在,在哪里。eg: which cal; | 
| man xx | 查看xx用法 ;eg: man man | 
文件操作
| 命令 | 用法 | 解释 | 
|---|---|---|
| mkdir | mkdir xx1 xx2 | 新建文件夹xx1和xx2 | 
| touch | touch xx1 xx2 | 1. 如果xx文件存在,则update这个文件,刷新文件中记录的时间;/n | 
| 2. 如果xx文件不存在,则新建该文件。 | ||
| cp | cp ~/xx rexx | 将某路径下的xx文件copy到当前目录,且命名为rexx | 
| mv | mv xx1 xx2 | 将xx1移动/move到xx2,xx1消失。若原来存在xx2,则xx2被覆盖;/n 若不存在,则相当于重命名了。 | 
| rm | rm xx | 删除/remove某个文件【删了就没有了,没有回收站】 | 
| rm xx* | 删除该文件夹下以xx打头的所有文件。同理,rm * 就是所有文件了。 | 
|
| rm -r xxDirectory | 删除xx文件夹和该文件夹下所有文件。 | |
| rmdir | rmdir xxDirectory | 删除某个空文件夹。 | 
| rmdir * | 删除所有空文件夹。 | 
文本操作
| 命令 | 用法 | 解释 | 
|---|---|---|
| cat | cat xx1,xx2 | 查看某(些)个文本。 | 
| cat >> xx | 编辑某个文本,内容会覆盖原文件。按 ctrl+D/c 返回编辑状态。 | |
| cat > xx | 编辑某个文本,内容会在添加在原文件末尾。 | |
| nano | nano | 新建一个文本。ctrl^x退出,y/n是否保存。 | 
| nano xx | 打开并编辑某个文本。 | |
| xcommand > xxFile | ls / > a | 将某条指令执行的结果写入a文本文件。 | 
权限操作
| 命令 | 解释 | 
|---|---|
| sudo -s | 进入root模式,后续的所有操作是root权限。exit退出。 | 
| su -userA | 切换账号,进入userA。 | 
| su - | 切换到root账号。exit退出。 | 
ls -l 可显示文件权限,执行结果如下:

| 第1位 | 2~4位 | 5~7位 | 8~10位 | 数字 | user | user | 
|---|---|---|---|---|---|---|
| 文件类型 | 所有者权限 | 所有组权限 | 普通用户权限 | 执行次数 | 用户名 | 组名 | 
| - 普通文件 | ||||||
| d 目录文件 | r 可读 | r 可读 | r 可读 | |||
| p 管理文件 | w 可写 | w 可写 | w 可写 | |||
| i 链接文件 | x 可执行 | x 可执行 | x 可执行 | |||
| b 块设备文件 | - 无权限 | - 无权限 | - 无权限 | |||
| c 字符设备文件 | ||||||
| s 套接字文件 | 

修改权限
| 命令 | 用法 | 解释 | 
|---|---|---|
| chmod (change mode) | chmod +x filed | 给filed文件(普通用户)添加可执行权限。 | 
| chmod +r filed | 给filed文件(普通用户)添加可读权限。 | |
| chmod +w filed | 给filed文件(普通用户)添加可写权限。 | 
也可以这么写,更舒服;参考上图:
chmod 743 filed —> 设置filed权限位:rwx,r–,-wx ;
因为我们可以用1-7的数字表示每一种权限的组合;
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 
|---|---|---|---|---|---|---|
| 1 | 2 | 1+2 | 4 | 1+4 | 2+4 | 1+2+4 | 
| x/可执行 | w/可写 | x+w/ | r/可读 | x+r/可执行可读 | w+r/可写可读 | x+w+r/可读可写可执行 | 
语法
变量
变量类型
运行shell时,会同时存在三种变量:
- 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
 - 2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
 - 3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
 
| 语法 | 说明 | |
|---|---|---|
| Shell 字符串 | str='this is a string' | 
your_name="runoob" | 
string="abcd" | 
echo ${#string}  #输出 4 | 
|
| Shell 数组 | array_name=(value0 value1 value2 value3) | 
创建数组:数组名=(值1 值2 … 值n) | 
valuen=${array_name[n]} | 
echo ${array_name[@]} # @表示获取所有元素 | 
|
length=${#array_name[@]} | 
length=${#array_name[*]} # 获取数组长度 | 
|
流程控制
https://www.runoob.com/linux/linux-shell-process-control.html
Shell 函数
https://www.runoob.com/linux/linux-shell-func.html
<未完·待续>