- LinuxStudy
- ssh,远程登录服务器
- linux文件结构
- 环境变量
- 自动填充
- 进程管理
- 命令扩展
- 命令格式
- 命令
- alias
- apt,软件包管理
- cd
- chmod,change mode
- chown,change owner
- col
- cp
- date
- declare
- df,显示文件系统的使用情况
- du,递归展示指定目录下所有文件大小
- echo
- find,根据文件属性,查找文件
- grep,在文件内部搜索或递归搜索整个目录结构
- history
- id
- jobs,显示后台任务的状态
- journalctl,查询systemed journal消息
- kill,根据进程ID向进程发送一个信号,通常可用来终止进程
- killall,根据进程名称向进城发送信号
- let,将参数作为一个数学表达式,并求值
- locate,根据文件路径名称模糊查找文件
- lpr
- ls
- lscpu,显示cpu的架构信息
- lsmod,展示linux内核的模块的状态
- lspci,显示全部的pci设备
- lsusb,显示全部usb设备
- man
- mkdir
- modinfo,展示一个linux内核模块的信息
- modprobe,模块探针,添加或移除linux内核模块
- mv
- nice,以特定的处理器优先级启动一个进程
- ps,报告当前线程的快照状态
- pwd
- read,从标准输入中读取一行,并拆分为字段
- renice,变更进程的处理器优先级
- rm
- rmdir
- rmmod,从内核中移除一个模块
- set
- sort,排序并输出
- tail,输出文件的最后十行
- top,面向屏幕来显示系统中运行的进程
- touch
- type
- umask
- updatedb
- useradd,创建一个用户或着修改默认新用户的信息
- userdel,删除一个用户
- usermod,变更用户
- wc
- who
- 文本编辑器
- SHELL脚本
- 注释
LinuxStudy
author:廉伟茂date:2019年11月15日
ssh,远程登录服务器
linux文件结构

文件浏览
ls -la命令预览结果
上图列含义
| drwxrwxrwx | 2 | joe | M | 7 | ||
|---|---|---|---|---|---|---|
| 权限 | 链接到该文件的数量 | 所属用户 | 所属组 | 文件大小 | 最近修改时间 | 文件或目录名称当前目录用.标示,父目录用..标示 |
权限第一个字符代表文件类型
| 字符 | 含义 |
|---|---|
| d | 文件夹 |
| - | 普通文件 |
| x | 可执行文件 |
| l(小写的L) | 连接文件Link |
| b | 块设备 |
| p | 命名的管道 |
| s | 套接字 |
权限最后一个字符
| 最后一个字符 | 含义 |
|---|---|
| s,可执行文件的权限中出现 | 应用程序可被任何用户访问 |
| t,目录权限后出现 | 所有者允许其他用户添加文件,但不允许删除文件 |
| + | 存在扩展属性,比如ACL或SELinux |
文件权限
一个典型的权限位:-rwxrwxr-x
| 权限符 | 全名 | 文件 | 目录 | |
|---|---|---|---|---|
| r | read | 4 | 查看文件内容 | 查看包含的文件和子目录 |
| w | write | 2 | 变更文件,重命名,删除文件 | 加文件或子目录,删除文件或子目录 |
| x | execute | 1 | 运行文件 | 将目录变更为当前目录,搜索目录或指定目录中的程序,方位目录中文件的文件元数据 |
环境变量
OLDPWD,上一个工作目录
PATH,shell搜索命令的路径
PATH=路径:$PATH;
export PATH
代表将新添加的路径放在之前的PATH前面,并导出新的PATH变量
PWD,当前工作目录
TMOUT,shell允许处于非活动状态的秒数
任意变量
自动填充
当输入的是普通文本,shell将尝试使用命令/别名/函数名来补充
如果是以$开头,shell将尝试使用变量填充
如果以~开头,shell将尝试使用用户名填充
如果以@开头,shell将尝试使用/etc/hosts中的一个主机名填充
进程管理
启动后台进程
在命令后追加&符,通过jobs命令查看后台进程
切换进程到后台
使用组合键将程序切换到后台
调出后台进程
输入命令 fg %编号,例如fg %1将把1号job切换到前台
fg %数字 根据job编号,调出后台进程
fg % 将最近一个放入后台的进程调到前台
fg %string 根据命令名,调出后台进程,但需要保证结果唯一
fg %?string 将任何包含字符的命令调出后台进程,但需要保证结果唯一
启动后台已停止的命令
输入命令 bg %编号
将命令输出定向到null
find /usr 1>/dev/null 2>&1
将find命令对usr目录的搜索结果中,标准输出(1)定向到null,错误输出也定向到1
命令扩展
元操作符
| 元操作符 | 定义 |
|---|---|
| |,管道 | 将前一个命令的输出传给另一个命令的输入 |
| ;,连接 | 分割多个命令 |
| <,重定向 | 将数据输入给前面的命令 |
| >,重定向 | 将领命输出并覆盖到文件中 |
| 2>,错误消息重定向 | 将错误消息输出到文件中 |
| >>,重定向 | 将命令输出并追加到文件末尾 |
| <<word,重定向 | 将word后面的数据输入给前面的命令,直到word再次出现为止 |
算数表达式,$[算数表达式]或$(表达式)
echo $[2-1] >> echo 1echo "there are $(ls | wc -w) files"
扩展变量
使用$加变量名,shell获取的是变量对应的值,而不是变量名
命令格式
格式
命令 选项 参数
命令
alias
创建命令别名
格式:alias 别名=’命令’
apt,软件包管理
| 命令 | 参数 | 作用 |
|---|---|---|
| list | installed已安装的 upgradeable可升级的 |
获取软件包列表 |
| search | 在包说明中搜索 | |
| show | 显示包的详细信息 | |
| install | 安装指定的软件包 | |
| remove | 删除指定的软件包 | |
| autoremove | 自动删除不在使用的软件包 | |
| update | 更新包信息 | |
| upgrade | 升级软件包到最新版本 |
cd
进入一个目录
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| 无参数 | 进入HOME目录,等同于cd ~ | ||
| / | 进入根目录 | ||
| ~ | 进入home目录 |
chmod,change mode
更改文件或目录的权限
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| R | 递归设置当前文件夹,以及所有内部文件的权限 | ||
| 数字方式 | ugo | 0无权限,1执行权限,2写权限,3写执行权限 4读权限,5读执行权限,6读写权限,7全部权限 |
|
| 字母方式 | a-x 删除所有人执行权限 |
u-所属用户,g-所属组,o-其他用户,a-前面所有 r-读,w-写,x-执行 + > 增加权限,- > 删除权限 |
|
chown,change owner
变更文件/目录的所属用户和所属组
格式: chown 选项 所属用户:所有组 文件
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| R | 递归变更目录和内部所有目录文件的所有者 |
col
从输入数据中过滤换行
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| b | 不输出任何删除符 |
cp
复制文件
格式 cp
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| r | 递归复制文件以及所由内部文件 | ||
| a | 复制过程保留权限和元数据 | ||
| i | 覆盖文件前提示 |
date
- 显示当前日期
declare
获取当前环境变量列表和变量值,同set
df,显示文件系统的使用情况
report file system disk space usage
du,递归展示指定目录下所有文件大小
echo
显示参数代表的文本
find,根据文件属性,查找文件
格式 find 路径 选项 参数
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| 查询当前目录下所有文件和目录 | |||
| 路径 | 查询指定路径下所有文件和目录 | ||
| ls | 类似于ls -l的效果,显示文件的具体属性 | ||
| name | 文件名 | 查找文件名与参数完全一致的 | |
| iname | 规则 | 查找文件名符合规则匹配的文件或目录 | |
| size | / | +10M/-5G | 根据文件大小查询文件,正负号表示大于小于 b:512byte,c:1byte,w:2byte,k:KiB,M:MiB,G:GiB |
| user | 用户名 | 查询用户的文件 | |
| group | 组名 | 查询组的文件 | |
| perm | 777或u=rwx /777 -777 |
查询指定权限的文件 没有前缀,代表权限需要和条件完全一致 /或+代表权限包含有条件即可 -代表权限包含有指定条件即可 |
|
| type | 类型 | 根据类型查找文件 d目录,f普通文件 |
|
| 分钟数 | 搜过最近X分钟内的文件,含义modified n miniutes ago | ||
| mtime | 天数,+3,-3 | 搜索最近X天内被修改(+号:或没有被修改)的文件,含义modified n*24 hours ago | |
| ctime | 天数,+3,-3 | 搜索最近X天内状态被修改(+号:或没有被修改)的文件,含义change n*24 hours ago | |
| atime | 天数,+3,-3 | 搜索X天内被访问(+号:或没有被访问)的文件,含义accessed n*24 hours ago | |
| exec | 命令 参数 ; | 在每一个搜索结果上执行命令,{}代表返回数据 示例:find -iname ‘*’ -exec echo “i find {}” ; |
|
| ok | 命令 参数 ; | 在每一个搜索结果上询问后执行命令,{}代表返回数据 示例:find -iname ‘*’ -exec echo “i find {}” ; |
|
| not | 后面的作为过滤条件 | ||
| or | 前后条件是或的关系,可以用括号包含条件,括号需要用\转义,括号和选项中间需要有空格 | ||
| and | 前后条件是与的关系,可以用括号包含条件,括号需要用\转义,括号和选项中间需要有空格 |

grep,在文件内部搜索或递归搜索整个目录结构
格式 grep 选项 搜索内容 搜索位置
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| i | ignore | case | 忽略大小写 |
| v | invert | match | 查询匹配的数据 |
| r | recursive | 递归搜索整个目录 | |
| color | when/never/auto | 颜色选项 | |
| l(小写L) | files | with-matches | 仅显示匹配到的文件名称 |
| L | files | without-match | 仅显示没有被匹配到的文件名称 |
history
查看在shell中输入的历史命令
| 命令 | 释义 |
|---|---|
| 8 | 显示指定数量的最新命令 |
| !1 | 再次运行history命令中,编号为1的命令 |
| !! | 运行history中的倒数第二个命令,即上一个命令 |
| !?string? | 运行符合字符模板的最新命令 |
id
- 显示当前登录用户的信息
jobs,显示后台任务的状态
journalctl,查询systemed journal消息
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| —list-boots | 查询启动启动日志 | ||
| b | —boot[=ID] | ID | 查询当前或者指定ID的启动日志 |
| k | dmesg | 查询当前的内核日志 | |
| f | follow | 显示最新的日志 | |
kill,根据进程ID向进程发送一个信号,通常可用来终止进程
命令格式: kill 信号值/-信号名 PID
或者 kill pid,默认值为15
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| n | sig number | 使用信号值作为参数 | |
| s | sig name | 使用信号名作为参数 | |
| 信号名 | 值 | 含义 |
|---|---|---|
| SIGHUP | 1 | 挂断对控制终端或者控制进程死亡的探测 |
| SIGIN | 2 | 通过键盘中断 |
| SIGQUIT | 3 | 通过键盘退出 |
| SIGABRT | 6 | 调用abort(3)产生的中止信号 |
| SIGKILL | 9 | 杀死信号 |
| SIGTERM | 15 | 终止信号 |
| SIGCONT | 18 | 继续被停止的进程 |
| SIGSTOP | 19 | 停止进程 |
killall,根据进程名称向进城发送信号
用法: killall 选项 参数
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| r | regexp | 匹配规则 | 向匹配的进程发送信号 |
let,将参数作为一个数学表达式,并求值
格式: let 参数 [参数…]
locate,根据文件路径名称模糊查找文件
根据文件名称模糊查找文件
搜索文件数据库来查询文件,速度快,但无法查询到updatedb命令执行后新增的文件,也无法查询数据库不进行索引的目录的文件,例如挂在盘/临时目录等
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| i | ignore | case | 忽略大小写 |
| p | ignore | spaces | 忽略空格 |
lpr
ls
列出当前目录的内容
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| d | directory | 列出目录自身,不显示子文件/文件夹 | |
| l,小写L | 以详情列表的方式显示数据 | ||
| a | all | 显示全部文件,包括已经隐藏的文件 | |
| F | classify | 在文件名后根据类型追加字符, 目录追加/ 可执行文件追加*, 连接文件追加@ |
|
| hide | pattern | 符合规则的不显示 | |
| R | 列出当前文件夹的所有子文件和文件夹,以及递归显示所有文件夹的文件 | ||
| S | 按文件大小显示文件 |
lscpu,显示cpu的架构信息
含义:display information about the CPU architecture
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| J | json | 以json来格式化输出 |
lsmod,展示linux内核的模块的状态
含义:show the status of modules in the linux kernel
lspci,显示全部的pci设备
含义:list all pci devices
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| v | verbose | 显示更详细的信息 |
lsusb,显示全部usb设备
含义:list all USB devices
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| v | verbose | 更详细的信息 |
向指定的账户发送电子邮件
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| s | subject | message | 发送message到指定邮箱 |
man
获取命令手册
格式:man command
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| k | apropos | 在手册的名称和概要部分搜索命令 | |
| 5 | 在手册指定章节搜索命令 | ||

mkdir
创建文件夹
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| p | parents | 创建文件夹时,不存在的父级文件夹自动创建 |
modinfo,展示一个linux内核模块的信息
modprobe,模块探针,添加或移除linux内核模块
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| r | remove | 移除模块 |
mv
移动文件
格式: mv 选项 源文件 目标文件
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| i | 覆盖前提示 | ||
| b | 目标目录如果存在同名文件,会进行备份 |
nice,以特定的处理器优先级启动一个进程
含义:niceness,进程的处理器优先度,取值范围[-20 — 19],数值越小,优先级越高
同时可用renice命令来变更运行中进程的优先级
ps,报告当前线程的快照状态
英文含义:processes

上面是一个典型的结果界面
| 列 | 含义 |
|---|---|
| USER | 启动该进程的用户名 |
| PID | 代表了 |
| %CPU | CPU使用比例 |
| %MEM | 内存占用比例 |
| VSZ,virtual set size | 总内存占用,单位KB |
| RSS,resident set size | 物理内存占用,单位KB |
| TTY | |
| STAT | 进程状态 S:正在运行 R:正在水面 +:进程与前台操作相关联 |
| START | 进程开始运行的时间 |
| TIME | 累积CPU占用时间,单位秒 |
| COMMAND | |
| 常用命令 | 参数 | 释义 |
|---|---|---|
| ux | 查看当前用户的所有进程 | |
| aux | 查看所有用户的进程 |
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| A、e | 全部进程 | ||
| a | 显示全部进程 | ||
| o | format | pid,user,uid,group,gid,vsz,rss,comm | 显示列 |
| k | sort | +/-pid,user,uid,group,gid,vsz,rss,comm | 以从大到小/从小到大,对对应的字段排序 |
pwd
打印当前工作目录
read,从标准输入中读取一行,并拆分为字段
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| p | 执行读取之前,输出提示 |
renice,变更进程的处理器优先级
普通用户只能增加nice值,不可以减少nice值,或者重设为负值
格式: renice [-n] nice值 [-p] PID
格式: renice [-n] nice值 -u userName/UID
格式: renice [-n] nice值 -g process group id
rm
删除文件
格式 rm 选项 文件
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| 删除前提醒 | |||
| f | force | 忽略提示,默认执行 | |
| r | 递归删除全部文件 | ||
| 文件名{词组}词{词组} | 按规则删除一组文件 |
rmdir
删除目录,需要目录为空,通常可用rm代替
rmmod,从内核中移除一个模块
语法:rmmod modname
set
设定或取消设定shell的变量
sort,排序并输出
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| n | 将字符转换为数字进行排序 | ||
| r | 倒序排列 |
tail,输出文件的最后十行
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| f | fllow | 输出文件新增的内容 |
top,面向屏幕来显示系统中运行的进程
默认按照CPU占用时间排序

| 按键 | 参数 | 释义 |
|---|---|---|
| h | 查看帮助页,按任意键退出 | |
| M | 安内存使用情况排序 | |
| P | 按CPU使用情况排序(默认) | |
| 1 | 切换每个CPU的使用情况 | |
| R | 反向排序 | |
| u | 用户名 | 过滤显示特定用户的进程 |
| r | PID,进程优先级数值 | 变更PID的进程优先级 |
| k | PID,进程信号数值 | 向进程发送信号,15终止进程,9杀死进程 |
touch
创建一个文件
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| 文件名{name1,name2} | 创建一组文件,每个文件分别与词组连接 | ||
| 文件名{词组}词{词组} | 创建一组文件,词组文件相互连接 |
type
查看命令的位置,输入错误时无法查询
umask
查看文件权限模式
| 值 | 文件 | 目录 |
|---|---|---|
| 000,普通用户模式 | rw-rw-rw- | rwxrwxrwx |
| 022,root用户模式 | rw-r—r— | rwxr-xr-x |
| 777,无权限模式 | ————- | ————- |
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| 值 | 切换默认的权限模式,切换后创建的文件和目录将使用模式 |
updatedb
更新数据库
useradd,创建一个用户或着修改默认新用户的信息
| 短命令 | 长命令 | 参数 | 作用 |
|---|---|---|---|
| c | comment | “comment here” | 新用户账户描述,通常填写用户全名 |
| d | home-dir | home dir path | 变更用户的默认家目录 |
| D | defaults | 将本次的设定作为默认设定 | |
| e | expiredate | yyyy-MM-dd | 设定账户的过期日期 |
| f | inactive | day | 密码过期几天后,账户被禁用,默认为-1 |
| g | gid | group name or number | 设定用户所在的组,默认创建用户同名组 |
| p | 为当前账户输入一个加密后的密码 | ||
| s | 指定的shell | 指定账户使用的shell | |
| u | uid | 指定账户的id,默认是分配下一个数字 |
userdel,删除一个用户
usermod,变更用户
wc
提供单词或字符的数量
| 短命令 | 长命令 | 参数 | 释义 |
|---|---|---|---|
| c | bytes | 字节数量 | |
| m | chars | 字符数量 | |
| l | lines | 行数 | |
| w | words | 单词数 |
who
- 显示当前登录会话的相关信息
文本编辑器
其他文本编辑器

vi
- 打开文件
- vi 文件
- 模式
- 输入模式
- 按键,在光标右边输入文本,含义append,追加
- 按键,在当前行行尾开始输入文本
- 按键,在光标左边开始输入文本,含义insert,插入
- 按键,
- 按键,
- 按键,在行头输入文本
- 按键,在当前行下创建新行,并进入插入模式
- 按键,在当前行上创建新行,并进入插入模式
- 按键,
- 命令模式
- 输入模式下按进入命令模式
- ex模式下按两次进入命令模式
- 输入模式
移动光标 | 按键 | 作用 | 命令模式 | 输入模式 | | —- | —- | —- | —- | | 方向箭头 | 光标移动上下左右一格 | 支持 | 支持 | | | 移动光标到下一个单词开头(用空格,制表符,标点分割),含义word | 支持 | 不支持 | | | 移动光标到下一个单词开头(用空格,制表符),含义word | 支持 | 不支持 | | | 移动光标到上一个单词开头(用空格,制表符,标点分割),含义before word | 支持 | 不支持 | | | 移动光标到上一个单词开头(用空格,制表符),含义before word | 支持 | 不支持 | | | 移动光标到行首 | 支持 | 不支持 | | | 移动光标到行尾 | 支持 | 不支持 | | | 移动光标到屏幕左上角,含义high | 支持 | 不支持 | | | 移动光标到屏幕中间行的行首,含义middle | 支持 | 不支持 | | | 移动光标到屏幕左下角,含义low | 支持 | 不支持 |
删除,复制,更改文本(适用于命令模式) | 按键 | 含义 | | —- | —- | | | 删除光标后面的字符 | | | 删除光标前的字符 | | | 删除光标后面一个单词,含义delete word | | | 删除光标前面一个单词,含义delete before word | | | 删除当前行 | | | 变更(删除)光标所在到行尾的文字,含义change to end | | | 变更(删除)光标至行首的字符,含义change to head | | | 变更(删除)光标后面的字符,含义change | | | 变更(删除)当前行 | | | 复制当前行 | | | 复制光标右侧的句子到缓冲区 | | | 复制光标右侧的段落到缓冲区 | | | 从当前行开始删除3行 | | | 从当前位置开始删除3个单词 | | | 从当前位置开始,删除5个字符 | | | 光标向下移动12行 | | | 从当前位置删除5个单词 | | | 复制接下来的4个句子 | | | 粘贴换冲突的文本,如果不包含换行,则放到光标右侧,否则插入一行并粘贴 | | | 粘贴换冲突的文本,如果不包含换行,则放到光标左侧,否则上方插入一行并粘贴 | | | 重复上一个编辑,修改, 删除,粘贴指令 | | | 撤销最后一个操作 |
其他操作指令 | 按键 | 含义 | | —- | —- | | + | 还原被撤销的操作 | | + | 显示当前文件名 | | + | 向前翻页,含义forward | | + | 向后翻页,含义back | | + | 向前翻半页 | | + | 向后翻半页 | | | 跳转到最后一行 | | | 跳转到第2行 | | | 运行一个shell命令 |
退出vi | 按键 | 含义 | | —- | —- | | | 保存并退出 | | | 保存,但不退出 | | | 退租,仅在没有变更内容时可用 | | | 保存并退出 | | | 不保存并退出 |
搜索文本(适用于命名模式)
- /hello 向前搜索hello
- ?goodbye 向后搜索goodbye
- /the*good 向前搜索
- ?[pP]rint 向后搜索print或Print
SHELL脚本
启动方式
- 将脚本文件作为shell的参数,文件不需要是可执行文件
- 在脚本第一行添加解释器名称,并在名称前加上#!,比如#!/bin/bash,以及添加了执行位(chmod +x filename),之后可输入脚本名称直接运行脚本
格式
注释
变量
NAME=value,等号前后没有空格MYDATE=$(date),将命令date的输出分配给MYDATE变量MYDATE2=(`date),将命令date的输出分配给MYDATE2变量,仅设置变量时运行date命令,读取变量则不会运行date命令MYDATE3=$MYDATE2,将变量MYDATE2的值赋值给MYDATE3
特殊变量
$0,脚本的相对或绝对路径$1,$2.....,执行脚本时,传入的参数$?,最后一条被执行命令的退出状态,0值意味着命令成功退出
echo "传入的参数依次为:1-$1,2-$2"echo "脚本所在位置:$0"$ bash myscript foo bar传入的参数依次为:1-for,2-bar脚本所在位置:~/myscript
变量与文本的链接
当变量要求于文本链接,且中间不能有空格是,可写作${VAR}TEXT,其他规则
${var:-value} 如果变量没有被设置或者为空,则设定为value
${var#pattern} 从var值的前面砍掉与pattern最短的匹配项
${var##pattern} 从var值的前面开始砍掉与pattern最长的匹配项
${var%pattern} 从var值的后面砍掉与pattern最短的匹配项
${var%%pattern} 从var值的后面砍掉与pattern最长的匹配项
$ THIS="Example"$ THIS=${THIS:-"THIS"}$ THAT=${THAT:-"THAT"}$ echo ${THIS}Example$ echo ${THAT}THAT
$ MYFILENAME="/home/digby/myfile.txt"$ FILENAME=${MYFILENAME##*/}$ DIR=${MYFILENAME%/*}$ NAME=${FILENAME%.*}$ EXTENSION=${FILENAME#*.}
接收用户输入
使用:read命令
read -P "请输入一个姓和名:" x1 m1echo "获取到姓名:$x1$m1"$ bash mycript请输入一个姓和名:廉 伟茂获取到姓名:廉伟茂
脚本计算
作为数字参与运算
$ BIGNUM=1024# 将BIGNUM/16的结果赋值给result$ let result=$BIGNUM/16;# 将BIGNUM/16的结果赋值给result$ result=`expr $BIGNUM / 16`# 通过echo生成一个1024 / 16的表达式,并发送给bc计算结果$ result=`echo "$BIGNUM / 16" | bc`
获取随机数
$ let RANDOM=$RANDOM
自增
$ num=1$ echo $((num++))1$ echo $num2
