Skip to content

鼓励作者:欢迎 star 或打赏犒劳

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

背景色字体颜色
黑色4030
红色4131
绿色4232
黄色4333
蓝色4434
紫色4535
深绿4636
白色4737

显示方式

  • 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 显示详细的移动过程

如有转载或 CV 的请标注本站原文地址