初识 Shell

认识 Shell

什么是 Shell

  • Shell 是命令解析器,用于解析用户对操作系统的操作
  • Shell 有很多
    • cat /etc/shells
  • CentOS 7 默认使用的 Shell 是 bash

Linux 的启动过程

  • BIOS → MBR → BootLoader(Grub)→ Kernel → Systemd → 系统初始化 → Shell

Shell 脚本

  • UNIX 的哲学:一条命令只做一件事
  • 为了组合命令和多次执行,使用脚本文件来保存需要执行的命令
  • 赋予该文件执行权限(chmod u+rx filename)

标准的 Shell 脚本包含元素

  • Sha-Bang
  • 命令
  • “#” 号开头的注释
  • chmod u+rx filename 可执行权限

脚本不同执行方式的影响

  • bash ./filename.sh(无需添加执行权限,不改变当前目录,产生子进程)
  • ./filename.sh(需要添加执行权限,不改变当前目录,产生子进程)
  • source ./filename.sh(需要添加执行权限,改变当前目录,无子进程产生)
  • .filename.sh(需要添加执行权限,改变当前目录,无子进程产生)

内建命令和外部命令的区别

  • 内建命令不需要创建子进程
  • 内建命令对当前 Shell 生效

管道与管道符

  • 管道和信号一样,也是进程通信的方式之一
  • 匿名管道(管道符)是 Shell 编程经常用到的通信工具
  • 管道符是 “|”,将前一个命令执行的结果传递给后面的命令
ps | cat
echo 123 | ps

重定向符号

  • 一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符
  • 输入重定向符号 “<”
read var < /path/to/a/file
  • 输出重定向符号
    • “>”:清空内容再输出
    • “>>”:换行追加内容输出
    • “2>”:错误输出
    • “&>”:全部输出
echo 123 > /path/to/a/file
  • 输入和输出重定向组合使用
cat > /path/to/a/file << EOF
I am $USER
EOF

变量的定义

  • 变量名的命名规则
    • 字母、数字、下划线
    • 不以数字开头

变量的赋值

为变量赋值的过程,称为变量替换

  • 变量名=变量值 a=123
  • 使用 let 为变量赋值 let a=10 + 20
  • 将命令赋值给变量 l=ls
  • 将命令结果赋值给变量,使用 $() 或者 `letc=$(ls -l /etc)`
  • 变量值有空格等特殊字符可以包含在 “” 或者 '' 中

不能有空格

变量的引用

  • ${变量名} 称作对变量的引用
  • echo ${变量名} 查看变量的值
  • ${变量名} 在部分情况下可以省略为 $变量名

变量的作用范围

  • 变量的导出
    • export
  • 变量的删除
    • unset

系统环境变量

  • 环境变量:每个 Shell 打开都可以获得的变量

    • set 和 env 命令
    • $? $$ $0
    • $PATH
    • $PS1
  • 位置变量

    • $1 $2 ... $n

环境变量配置文件

  • /etc/profile
  • /etc/profile.d/
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!