Shell的基本信息、重定向与管道符

sehll的基本信息

shell的作用
(1)shell的作用——命令解释器 “翻译官”

  • 介于系统内核与用户之间,负责解释命令行
    (2)用户的登录shell
  • 登录后默认使用的shell程序,一般为 /bin/bash
  • 不同shell的内部指令、运行环境等会有所区别
    (3)[root@localhost ~]# cat /etc/shells (显示所有的shell)
    使用cat命令查看所有的shell

编写第一个shell脚本

(1)编写脚本代码

  • 使用vi或vim编辑器

  • 每行一条Linux命令,按执行顺序依次编写
    [root@localhost ~]# vi first.sh (一般shell脚本的后缀都是.sh)
    写入 (推荐使用vim编辑器,因为会变颜色,写的时候写错了不会变颜色)(没有的可以使用yum -y install vim 安装,一般安装了图形界面的Centos系统都会有,命令行的得自行安装)
    第一个shell脚本
    (2)赋予可执行权限

  • 使脚本具有可执行属性 (没有可执行的权限就无法运行脚本)
    [root@localhost ~]# chmod +x first.sh (使用chmod给脚本加可执行权限)
    (3)执行脚本文件
    方法一:./脚本文件路径 (使用./时最好就直接进入脚本所在目录执行即可)
    方法二:sh 脚本文件路径
    方法三:source 脚本文件路径

  • 执行脚本 (使用./时时必须要求有x可执行权限的使用sh或source可以不用,但是还是要养成习惯给一个x权限)
    方法一:[root@localhost ~]# ./first.sh
    使用./执行脚本
    方法二:[root@localhost ~]# sh /first.sh
    使用sh执行脚本
    方法三:[root@localhost ~]# source /first.sh
    使用source执行脚本
    (4)更完善的脚本构成 (通常都是这么写的)

  • 脚本声明 第一行 声明脚本的运行环境

  • 注释信息 以 # 开头的行时注释行,一般会写这个脚本时干什么的等等

  • 可执行语句
    示例:[root@localhost ~]# vi /first.sh
    #!/bin/bash (脚本声明,在/bin/bash下运行)
    #这是我的第一个shell脚本 (注释信息)
    cd /boot (下面都是可执行语句)
    echo “当前的目录位于:”
    pwd
    echo “其中以vml开头的文件包括:” (输出友好的提示信息)
    ls -lh vml* (ls -lh 长格式更加人性化方式显示出以vml开头的文件)
    第一个shell脚本
    [root@localhost ~]#chmod +x first.sh (添加可执行权限)
    [root@localhost ~]# ./first.sh (执行脚本)
    执行脚本

    扫描二维码关注公众号,回复: 12451650 查看本文章

重定向与管道符操作

(1)交互式硬件设备

  • 标准输入:从该设备接收用户输入的数据
  • 标准输出:通过该设备向用户输出数据
  • 标准错误:通过该设备报告执行出错信息
    【类型】 【设备文件】【文件描述编号】【默认设备】
    标准输入; /dev/stdin ; 0 ; 键盘
    标准输出; /dev/stdout; 1 ; 显示器
    标准错误输出;/dev/stderr; 2; 显示器
    (2)重定向操作
    【类型】【操作符】【用途】
    重定向输入; < ; 从指定的文件读取数据,而不是从键盘输入
    重定向输出; > ; 将输出结果保存到指定的文件 (会覆盖原文件)
    重定向输出; >> ; 将输出结果追加到指定的文件 (不会覆盖原文件默认加到指定文件的末尾)
    标准错误输出; 2> ; 将错误信息保存到指定的文件(会覆盖原文件)
    标准错误输出; 2>> ; 将错误信息追加到指定的文件(不会覆盖原文件默认加到指定文件的末尾)
    混合输出; &> ; 将标准输出、标准错误的内容保存到同一个文件(就是不管是对的还是错的只要是执行问前一个命令后的所有结果都保存到指定文件,会覆盖原文件)
    (一个 > 是覆盖 两个>> 是追加)

重定向示例:

  • uname -p > kernel.txt
    重定向输出
    cat kernel.txt
    uname -p
    查看输出内容
  • uname -r >> kernel.txt
    追加
    cat kernel.txt
    查看
    查看
  • echo “123456” > pass.txt (利用重定向去设置用户密码)
    输入数字到指定文件

cat pass.txt
查看文件内容

useradd tom
创建用户

passwd --stdin tom < pass.txt
利用重定向将文件内容作为密码输入到创建用户的密码

  • tar jcf /nonedir/etc.tgz /etc
    创建归档文件

tar jcf /nonedir/etc.tgz /etc 2>error.log (将错误信息输入到error.log文件里)
混合输出

cat error.log
查看文件内容

管道符 “|”

  • 将左侧的命令输出结果,作为右侧命令的处理对象
  • 格式: cmd1 | cmd2 | … | cmdn (cmd执行的命令,可以使用管道符|一直执行)
    [root@localhost ~]# grep “bash$" /etc/passwd
    查看后缀是bash的数据

[root@localhost ~]# grep “bash$” /etc/passwd | awk -F: ‘{print $1,$7}’ (利用管道符和awk行处理器筛选出数据中的第一个和第七个字段 -F是用什么分割,这里是使用的是 :分割的)
输出的内容
示例:通过管道符和awk行处理器提取出mac地址以/挂载的使用情况

  • df -hT | grep “/$” | awk ‘{print $6}’ (以/结尾挂载的使用情况)
    以/挂载的使用情况
  • ip a | grep “ff:ff:ff:ff:ff:ff$” | awk ‘[print $2}’(通过grep、awk提取出mac地址)
    mac地址

猜你喜欢

转载自blog.csdn.net/rzy1248873545/article/details/110307516
今日推荐