美文网首页
【Shell】基础知识

【Shell】基础知识

作者: 熊本极客 | 来源:发表于2023-03-21 22:54 被阅读0次

1.命名和编写规范

1.1 命名规范

文件名.sh.sh 是 linux下 bash shell 的默认后缀

1.2 编写规格和执行

vi test.sh

#!/bin/bash              [指定告知系统当前这个脚本要使用的shell解释器]

echo "begin"
content="xyz"
content=$(cat /root/flink/data.txt)
echo $content > /root/flink/tmp.txt
# 执行命令1
./test.sh

# 执行命令2
sh test.sh

# 执行命令3
bash test.sh

2.输入输出重定向

命令 文件描述符 设备 类型
/dev/stdin 0 键盘 标准输入
/dev/stdout 1 显示器 标准输出
/dev/stderr 2 显示器 标准错误输出

2.1 输入重定向

输入重定向就是不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备,简单理解就是使用 < 符来修改标准输入设备。

命令 类型 说明
命令 < fileA 标准输入 命令把文件A的内容作为标准输入设备
命令 << 标识符 标识符限定输入 命令把标准输入中读入内容,直到遇到“标识符”分解符为止
# "<" 样例1
config=/usr/config.ini
...
while read server ip;
do
...
done < $config
# read 会逐行读取 /usr/config.ini 文件中的字段,其中每行两个字段,即分别作为 server 和 ip

# "<" 样例2
cat < tmp.txt

# "<<" 样例1
cat >> command.txt << EOF
function getser() {
  if [ \$2 ]; then
      kubectl exec -niot -it \`getser "\$1" |grep "\$2" -m 1| awk '{print \$1}' \` -- bash
  else
      kubectl get pods -niot -o wide | grep "\$1" |grep -v Evicted
  fi
}
EOF

# "<<" 样例2
FLINK_CONFIG=$(cat << END
security.kerberos.login.keytab: /home/hadoop-user/hadoop-user.keytab
security.kerberos.login.principal: hadoop-user
slot.request.timeout: 120000
END
)

2.2 输出重定向

重定向输出就是把要输出的文件信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台。在linux中,默认的标准输出设备是控制台,即用户输出的信息默认情况下都会显示到控制台。

命令 类型 说明
命令 > fileA 输出重定向 以覆盖方式把命令的正确输出内容输出到指定的文件或设备当中
命令 >> fileA 输出重定向 以追加方式把命令的正确输出内容输出到指定的文件或设备当中
命令 2> fileA 标准错误输出重定向 以覆盖方式把命令的错误输出输出到指定的文件或设备当中
命令 2>> fileA 标准错误输出重定向 以追加方式把命令的错误输出输出到指定的文件或设备当中
命令 > fileA 2>&1 正确输出和错误输出同时保存 以覆盖方式把正确输出和错误输出都保存到同一个文件当中
命令 >> fileA 2>&1 正确输出和错误输出同时保存 以追加方式把正确输出和错误输出都保存到同一个文件当中
命令 &> fileA 正确输出和错误输出同时保存 以覆盖方式把正确输出和错误输出都保存到同一个文件当中
命令 &>> fileA 正确输出和错误输出同时保存 以追加方式把正确输出和错误输出都保存到同一个文件当中
命令 >> fileA 2>>文件B 正确输出和错误输出同时保存 把正确的输出追加到文件A中,把错误的输出追加到文件B中
# ">" 样例
echo "  { \"master\": \"127.0.0.1\"}" > conf/node_ip.json
kill -9 $FLINK_PID > /dev/null

# ">>" 样例
echo "FROM ${FLINK_IMAGE_NAME}" >> Dockerfile

# "2>" 样例
rm $FLINK_DIR/log/* 2> /dev/null
kill -9 $FLINK_PID 2> /dev/null

# "2>&1" 样例
rm -rf $FLINK_DIR/log/* > /dev/null 2>&1
kill -9 $FLINK_PID >> /dev/null 2>&1
com.huawei.xx.AppMain 2>&1 &
# 后台执行 main 函数并以覆盖方式把正确输出和错误输出

# "&>" 样例
rm -rf $FLINK_DIR/log/* &> /dev/null
kill -9 $FLINK_PID &>> /dev/null

3.命令执行顺序

符号 样例 说明
; 命令A ; 命令B 命令A和命令B顺序执行,且两者之间没有任何逻辑联系
&& 命令A && 命令B 只有在 && 左边的命令A返回真,&& 右边的命令B才会被执行
|| 命令A || 命令B 只有在 || 左边的命令A返回家假,|| 右边的命令B才会被执行
# "&&" 样例
[ -e "/root/flink/start.sh" ] && echo "file exits"

# "||" 样例
kill ${FLINK_PID } 2> /dev/null || true

【参考】
1.Shell 教程
2.markdown表格中怎么插入逻辑或符号|

相关文章

  • Linux Shell:基础知识和Shell变量

    摘要:Linux,Shell 整理Shell内容要点: Shell基础知识 Shell变量的类型 Shell变量赋...

  • Linux :常用命令的基础知识

    // 命令的基础知识 Shell 用户与内核交互的应用程序. shell <--- 输入命令/显示命令执行结果 ⬇...

  • shell

    第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...

  • 兄弟会精英班 - 学习笔记(三)

    Shell 基础知识 命令解释器,处于内核与用户之间,shell把用户指令传递给内核,然后把内核执行结果回显给用户...

  • Shell基础知识

    简介 Shell是Linux内核系统下的脚本工具,由于是开源系统,Shell工具被开发出不同的版本。 /etc/s...

  • shell基础知识

    shell脚本 shell脚本执行 chmod +x xx.sh ;./xx.sh注意点:最好使用第一种 注释...

  • shell基础知识

    1:在shell中,如果变量被声明成整数,把一个结果不是整数的表达式赋值给它时就会变成0. 2:bash并不内置对...

  • shell基础知识

    Shell 1. Shell脚本基本概述 1.1 什么是shell Shell是一个命令解释器,它在操作系统的最外...

  • 【shell】基础知识

    变量 变量名和等号之间不能有空格 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头 不能使用bash里的...

  • Shell基础知识

    shell 确认当前终端tty使用的Shell类型: Shell(Unix Shell)是一种命令行解释器,是Un...

网友评论

      本文标题:【Shell】基础知识

      本文链接:https://www.haomeiwen.com/subject/esorrdtx.html