type
status
date
slug
summary
tags
category
icon
password
Property
Oct 25, 2022 12:31 AM
本文与 @JinghuiDeng 共同编辑完成
Shell命令
关于 $ 的整理
- 传递参数
在执行脚本时可以传递参数(类似于C的main函数),格式为
$n 其中 n 为数字,例如 $0 为执行的文件名(包含路径), $1 为传递的第一个参数,以此类推。- 变量替换(使用定义过的变量)
$变量名 建议加上花括号,用于识别变量的边界,如 ${变量名} - 命令替换
$( ) 等同于 $` `
与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行- 字符串操作(取路径、文件名、后缀)
首先定义一个文件路径作为例子
表达式 | 作用 | 结果 |
${file#*/} | 拿掉第一个 / 及其左边的字符串 | dir1/dir2/dir3/my.file.txt |
${file##*/} | 拿掉最后一个 / 及其左边的字符串 | my.file.txt |
${file#*.} | 拿掉第一个 . 及其左边的字符串 | file.txt |
${file##*.} | 拿掉最后一个 . 及其左边的字符串 | txt |
${file%/*} | 拿掉最后一个 / 及其右边的字符串 | /dir1/dir2/dir3 |
${file%%/*} | 拿掉第一个 / 及其右边的字符串 | (空) |
${file%.*} | 拿掉最后一个 . 及其右边的字符串 | /dir1/dir2/dir3/my.file |
${file%%.*} | 拿掉第一个 . 及其右边的字符串 | /dir1/dir2/dir3/my |
取子串及操作 | ㅤ | ㅤ |
${file:0:5} | 提取最左边的 5 个字节 | /dir1 |
${file:5:5} | 提取第五个字节右边的 5 个字节 | /dir2 |
${file/dir/path} | 将第一个 dir换为 path | /path1/dir2/dir3/my.file.txt |
${file//dir/path} | 将所有 dir换为 path | /path1/dir2/dir3/my.file.txt |
根据状态为变量赋值 | ㅤ | ㅤ |
${file-my.file.txt} | 若 $file 没设定,则使用 my.file.txt 作传回值 | 空值及非空值不作处理 |
${file:-my.file.txt} | 若 $file 没有设定或为空值,则使用 my.file.txt 作传回值 | 非空值时不作处理 |
${file+my.file.txt} | 若 $file 设为空值或非空值,均使用 my.file.txt作传回值 | 没设定时不作处理 |
${file:+my.file.txt} | 若 $file 为非空值,则使用my.file.txt 作传回值 | 没设定及空值不作处理 |
${file=txt} | 若 $file 没设定,则回传 txt ,并将 $file 赋值为 txt | 空值及非空值不作处理 |
${file:=txt} | 若 $file 没设定或空值,则回传 txt ,将 $file 赋值为 txt | 非空值时不作处理 |
${file?my.file.txt} | 若 $file 没设定,则将 my.file.txt 输出至 STDERR | 空值及非空值不作处理 |
${file:?my.file.txt} | 若 $file没设定或空值,则将 my.file.txt输出至STDERR | 非空值时不作处理 |
- 数组
命令 | 解释 | 结果 |
${A[@]} | 返回数组全部元素 | a b c def |
${A[*]} | 同上 | a b c def |
${A[0]} | 返回数组第一个元素 | a |
${#A[@]} | 返回数组元素总个数 | 4 |
${#A[*]} | 同上 | 4 |
${#A[3]} | 返回第四个元素的长度,即def的长度 | 3 |
A[3]=xzy | 则是将第四个组数重新定义为 xyz |
Kill命令
Linux kill 命令用于删除执行中的程序或工作。
kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 jobs 指令查看。
- 语法
- 参数说明
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]l <信息编号> 若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
s <信息名称或编号> 指定要送出的信息。
[程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
使用 kill -l 命令列出所有可用信号。
最常用的信号是:
- 1 (HUP):重新加载进程。
- 9 (KILL):杀死一个进程。
- 15 (TERM):正常停止一个进程。
输入输出重定向
重定向命令列表如下:
命令 | 说明 |
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
Linux命令大全
- 作者:NotionNext
- 链接:https://tangly1024.com/article/shell-learn
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

