Shell 命令
一些自己常用
shell
命令的学习笔记
echo
输出
用于字符串的输出
sh
# 输出普通字符
echo "hello world"
# 使用 -e 开启转义
echo -e "这是第一行文本\n这是第二行文本"
# 使用 -n 不换行输出
echo -n "hello world"
# 输出变量(查看当前窗口使用的 shell)
echo $SHELL
# 输出命令执行结果
echo `date`
# 将结果输出到文件中
echo 'hello world' > test.txt
# 将结果追加到文件中
echo 'hello world' >> test.txt
echo > 和 echo >> 的区别
- 当文件不存在时都会创建文件
- 当文件存在时
echo >
会覆盖文件中的原有内容echo >>
会将结果追加到文件中
修改输出内容的样式
ANSI
转义序列是一些特殊的字符,它们可以用于修改文本的颜色、格式和其他外观属性。
sh
# 语法格式
echo -e "\033[背景颜色;字体颜色;显示方式m 需要输出的内容 \033[0m"
# 🌰 白底黑字
echo -e "\033[47;30m 白底黑字 \033[0m"
# 🌰 黑底白字 高亮显示
echo -e "\033[30;37;1m 黑底白字 高亮显示 \033[0m"
# 🌰 黑底白字带下划线
echo -e "\033[30;37;4m 黑底白字带下划线 \033[0m"
\033
转义起始符,定义一个转义序列,(也可以使用\e
或\E
代替)[
表示开始定义颜色- 背景颜色 范围
40-47
- 字体颜色 范围
30-37
m
转义终止符,表示颜色定义完毕\033[0m
表示关闭所有属性恢复默认样式
背景色和字体颜色
背景色范围: 40 - 47
字体颜色范围: 30 - 37
背景色 | 字体颜色 | |
---|---|---|
黑色 | 40 | 30 |
红色 | 41 | 31 |
绿色 | 42 | 32 |
黄色 | 43 | 33 |
蓝色 | 44 | 34 |
紫色 | 45 | 35 |
深绿 | 46 | 36 |
白色 | 47 | 37 |
显示方式
0
关闭所有属性1
设置高亮显示4
设置下划线5
闪烁7
反显8
不可见
其他属性
\033[nA
光标上移 n 行\033[nB
光标下移 n 行\033[nC
光标右移 n 列\033[nD
光标左移 n 列\033[x;yH
设置光标位置 x 行 y 列\033[2J
清屏\033[K
清除从光标到行尾的内容\033[s
保存光标位置\033[u
恢复光标位置\033[?25l
隐藏光标\033[?25h
显示光标
cp
复制
用于复制文件或目录
语法格式
cp [options] source_file target_file
cp [options] source_file ... target_directory
sh
# 复制单个文件到指定目录
cp test.txt ./test
# 复制单个文件到指定目录并重命名
cp test.txt ./test/test1.txt
# 复制多个文件到指定目录
cp test1.txt test2.txt ./test
# 复制目录到指定目录
cp -r ./test ./test1
# 复制目录到指定目录并重命名
cp -r ./test ./test1/test2
WARNING
复制目录时必须使用 -r
参数,否则会报错
常用参数说明:
-r
递归复制目录-i
覆盖前提示-f
强制覆盖已存在的文件-p
保留文件的属性(权限、时间戳等)-a
递归复制目录,并保留文件属性(相当于同时使用-p
和-r
)-v
显示详细的复制过程
mv
移动
用于移动文件或目录
语法格式
mv [options] source target
mv [options] source... directory
sh
# 移动单个文件到指定目录
mv test.txt ./test
# 移动单个文件到指定目录并重命名
mv test.txt ./test/test1.txt
# 移动多个文件到指定目录
mv test1.txt test2.txt ./test
# 移动目录到指定目录
mv ./test ./test1
TIP
- 当
source
为文件时,target
可以为文件或目录 - 当
source
为目录时,target
必须为目录 - 当
target
为目录时,source
会被移动到target
目录下 - 当
target
已存在时,source
会覆盖target
文件或目录 - 当
target
不存在时,source
会被重命名为target
文件或目录
常用参数说明:
-f
强制移动文件或目录-i
覆盖前提示-n
不覆盖已存在的文件-v
显示详细的移动过程