Linux一键脚本基础,纯指令修改文本,保姆级教程可直接上手

首先默认获取了权限,最好到一个空目录,看清楚指令再操作

简单:覆写或追加:

  • 任意命令行输出 >(覆盖) >>(追加) 单文件输出
  • tee默认覆盖 -a追加 能多文件输出
echo "hi" > echo.txt
seq 1 5 > seq.txt
ls > ls.txt
# 先确保路径存在,避免报错
mkdir -p a/b
cat echo.txt seq.txt ls.txt > a/b/cat.txt
# 使用单引号开头,可以防止解析$为变量
tee -a a/b/cat.txt a/b/tee.txt <<'EOF'
This is tee,use HereDocument$1$2
EOF
clear
cat a/b/cat.txt a/b/tee.txt
#可选 涉及删除 谨慎操作
rm -rf a *.txt

Here Document传代码和配置文件可以原封不动直接粘贴,不用转义

实战示例:创建便捷的systemctl 指令

cat>>~/.bashrc<<'EOF'
alias start='function _startctl() { systemctl start "$1"; }; _startctl'
alias restart='function _restartctl() { systemctl restart "$1"; }; _restartctl'
alias stop='function _stop() { systemctl stop "$1"; }; _stop'
alias status='function _statusctl() { systemctl status "$1"; }; _statusctl'
EOF
source ~/.bashrc
status nginx

就可以很方便的操作服务了

进阶:使用sed(简洁 快速 批量)查找目标内容,可打印可替换

  • 默认将修改后内容输出命令行
cat>target-file<<EOF
# hi:

TEST100test
TEST200test
EOF
# g全局替换 默认大小写敏感
sed 's/test/sed/g' target-file
# I大小写不敏感 p(print)多打印匹配行(通常配合-n做打印使用,后面有示例)
sed 's/test/sed/gIp' target-file
cat target-file    # 可见此时内容还未修改
# 补充:&原内容占位符,()捕获
sed 's/100/**&**/g' target-file
sed 's/\(200\)\(test\)/\2\1\1/' target-file
  • -i 直接修改不输出
  • -n 配合p输出匹配的行
sed -i 's/test/sed/gIp' target-file
cat target-file
sed -n 's/sed/Test/gIp' target-file
sed -n 's/sed/Test/gI' target-file
cat target-file
sed -in 's/sed/Test/gIp' target-file
cat target-file

接下来我们将 查询(‘s/xx/xxx/’) 换成 删除(‘d’)

sed '2d' target-file           # 删除第2行
cat target-file
sed -i '2,4d' target-file    # [2,5) 真删除2到4行
cat target-file
sed '/^#/d' target-file    # 删除以 # 开头的注释行
sed '/^$/d' target-file    # 删除空行

多条命令

# 分号分隔
sed 's/foo/bar/; s/baz/qux/' file
# 或使用 -e
sed -e 's/foo/bar/' -e 's/baz/qux/' file
# 还有 -f 从文件中读取sed指令

好啦,以上已经涵盖了大部分使用指令修改文本的情况,更多细节还得大家在实战中去多多体会

4 个赞

感谢大佬

1 个赞