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

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

一、sehll的基本信息


(1)shell的作用——命令解释器


  • 介于系统内核与用户之间,负责解释命令行,可以认为shell扮演者一个翻译官的角色


(2)用户的登录shell


  • 登录后默认使用的shell程序,一般为 /bin/bash
  • 不同shell的内部指令、运行环境等会有所区别


(3查看所有shell

[root@Centos7 ~]# cat /etc/shells  (查看所有shell)
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

二、编写shell脚本


从写一个脚本到执行脚本大致需要经过三个步骤

编写脚本 —— 添加可执行权限 —— 执行脚本


-编写脚本:


  • 使用vi或vim编辑器
  • 每行一条Linux命令,按执行顺序依次编写
    (推荐使用vim编辑器,因为会变颜色,写的时候写错了不会变颜色)
    没有的可以使用yum -y install vim 安装,一般安装了图形界面的Centos系统都会有,命令行的得自行安装


-添加可执行权限:


写完脚本之后需要添加可执行权限即:chmod +x 脚本名


-执行脚本:


执行脚本的命令有:(虽然有的命令需要可执行权限有的命令不需要,但是还是要养成添加可执行权限的习惯)


  • ./脚本文件路径
  • sh 脚本文件路径
  • source 脚本文件路径
  • bash 脚本文件路径


-脚本格式


通常来说脚本格式为:


(1)以#!开头的注释行,脚本声明,说明在什么环境下执行

(2)可执行语句


-写一个脚本

[root@Centos7 ~]# vim aaa.sh  (编写脚本,以sh为后缀)
#!/bin/bash       (注释以#!开头的)
cd /etc/sysconfig
pwd
ls | wc -l
保存退出
[root@Centos7 ~]# chmod +x aaa.sh  (添加可执行权限,脚本写好之后需要添加可执行权限)
[root@Centos7 ~]# sh aaa.sh  (执行脚本)
/etc/sysconfig
30
[root@Centos7 ~]# ./aaa.sh 
/etc/sysconfig
30
[root@Centos7 ~]# source aaa.sh  (发现只有source进入到了指定目录中,说明source执行完脚本后会停留在最后目录,而其他的会回到最初目录)
/etc/sysconfig
30
[root@Centos7 sysconfig]# cd
[root@Centos7 ~]# bash aaa.sh 
/etc/sysconfig
30
[root@Centos7 ~]# 

重定向与管道符操作


(1)交互式硬件设备


  • 标准输入: 从该设备接收用户输入的数据
  • 标准输出: 通过该设备向用户输出数据
  • 标准错误: 通过该设备报告执行出错信息


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


(2)重定向操作


类型 操作符 用途
重定向输入 < 从指定的文件读取数据,而不是从键盘输入
重定向输出 > 将输出结果保存到指定的文件 (会覆盖原文件)
重定向追加 >> 将输出结果追加到指定的文件 (不会覆盖原文件默认加到指定文件的末尾)
标准错误输出 2> 将错误信息保存到指定的文件(会覆盖原文件)
标准错误追加 2>> 将错误信息追加到指定的文件(不会覆盖原文件默认加到指定文件的末尾)
混合输出 &> 将标准输出、标准错误的内容保存到同一个文件(就是不管是对的还是错的只要是执行问前一个命令后的所有结果都保存到指定文件,会覆盖原文件)



(一个 > 是覆盖 两个>> 是追加)


(3)管道符 “|”


  • 将左侧的命令输出结果,作为右侧命令的处理对象
  • **格式: ** cmd1 | cmd2 | … | cmdn (cmd执行的命令,可以使用管道符|一直执行)


[root@localhost ~]# grep “bash$" /etc/passwd

20201129110644415.png

[root@localhost ~]# grep “bash$” /etc/passwd | awk -F: ‘{print $1,$7}’ (利用管道符和awk行处理器筛选出数据中的第一个和第七个字段 -F是用什么分割,这里是使用的是 :分割的)

20201129111120585.png

示例:通过管道符和awk行处理器提取出mac地址以/挂载的使用情况


  • df -hT | grep “/$” | awk ‘{print $6}’ (以/结尾挂载的使用情况)

20201129111407449.png

ip a | grep “ff:ff:ff:ff:ff:ff$” | awk ‘[print $2}’ (通过grep、awk提取出mac地址)


20201129111439865.png

目录
相关文章
|
3月前
|
域名解析 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
173 1
|
3月前
|
存储 监控 Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
82 0
|
3月前
|
Shell Linux 编译器
【Shell 命令集合 备份压缩 】Linux 提取zip压缩文件的详细信息 zipinfo命令 使用指南
【Shell 命令集合 备份压缩 】Linux 提取zip压缩文件的详细信息 zipinfo命令 使用指南
78 0
|
3月前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
44 0
|
3月前
|
存储 Unix Shell
【Shell 命令集合 系统管理 】⭐⭐Linux 显示系统的基本信息 uname命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐Linux 显示系统的基本信息 uname命令 使用指南
56 1
|
3月前
|
存储 Linux Shell
【Shell 命令集合 系统设置 】Linux 获取指定模块的元信息 minfo命令 使用指南
【Shell 命令集合 系统设置 】Linux 获取指定模块的元信息 minfo命令 使用指南
46 0
|
3月前
|
监控 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
144 1
|
2月前
|
Unix Shell Linux
Shell 重定向:控制数据流向的艺术
在Unix/Linux中,Shell提供输入输出重定向来灵活控制数据流。了解和运用重定向能提升Shell效率。标准输入(0)、输出(1)和错误输出(2)是基础。`&gt;`用于覆盖输出,`&gt;&gt;`用于追加,而`&lt;`用于改变输入源。错误输出可单独重定向,如`2&gt;`或`2&gt;&gt;`。组合使用如`2&gt;&1`可合并输出和错误到同一文件。输入重定向示例:`cat &lt;&lt;END`读取直到`END`。掌握这些,可高效管理命令输出。
29 0
|
3月前
|
存储 弹性计算 运维
自动化收集员工信息的Shell脚本
【4月更文挑战第30天】
37 0
|
3月前
|
网络协议 Shell Linux
【Shell 命令集合 系统管理 】Linux 查询域名的注册信息 whois命令 使用指南
【Shell 命令集合 系统管理 】Linux 查询域名的注册信息 whois命令 使用指南
97 1