什么是Bash:

Bash就是Linux的默认shell:

  • shell是用户连接到计算机使用的外壳程序 
  • shell拥有多种类型,而Bash只是其中的一种
  • shell是外部执行程序,可以在shell中执行shell,结构会形成父子shell结构
  • 多用户登录系统,使用bash程序,程序只能有一个,但是进程可以有多个
  • 进程:正在运行中的应用程序,在每个进程来看,当前主机上只存在内核和当前进程
  • 进程是程序的副本,进程是程序执行实例

用户登录查看shell的类型

  • 登录式shell:
  • 正常通过终端登录
  • 使用su - 登录
  • 非登录式shell:
  • su 登录的shell
  • 图形终端下打开的命令窗口
  • 自动执行的shell脚本

 

Bash特性

  • 命令历史、命令补全
  • 查看历史命令:history(默认保存1000个)
  • -c :清空历史命令
  • -d :删除指定位置的历史命令
  • -w :将当前历史命令缓冲区命令写入历史命令文件中
  • 使用技巧
  • !n :执行命令历史中的第n条命令
  • !-n :执行命令历史中倒数第n条命令
  • !!:执行上一条历史命令
  • ![字符串] :执行命令历史中,最近一次以字符串开头的命令
  • !$:引用前一个命令的最后一个参数
  • esc . :引用前一个命令的参数
  • 命令补全:搜索PATH环境变量所指定的每个路径下面以我们给出的字符串开头的可执行文件,使用TAB键进行未写完的命令补全,或者连续两次使用tab键,进行类似命令查找
  • 路径补全:搜索给出的起始路径下的每个文件名,使用tab键补全,或者连续两次使用tab键,进行类似命令查找
  • 管道、重定向
  • 命令别名:使用自己习惯的字符串替换指定命令
  • 命令:alias
  • 语法:alias [别名] = [命令名 + 参数]
  • 在shell中定义的别名仅在当前shell声明周期中有效,且有效范围只在当前shell,如果切换shell进程或更替shell周期,则别名失效
  • 撤销别名:unalias [别名]
  • 命令行编辑
  • 光标跳转:
  • Ctrl + a :到行首
  • Ctrl + e :到行尾
  • Ctrl + u :删除光标到行首的内容
  • Ctrl + k :删除光标到行尾的内容
  • Ctrl + l :清屏
  • 命令行展开
  • 命令行替换
  • 使用 $(命令),$将命令执行的结果提取出来当参数
  • bash支持的引号:
  • ‘’ :命令替换
  • “” :弱引用,可以实现变量替换
  • “’ :强引用,不完成变量替换
  • 文件通配名
  • * :匹配任意长度的任意字符
  • ?:匹配任意的单个字符
  • [] :匹配指定范围内的单个字符
  • [] :匹配指定范围外的单个字符
  • [:space:] :匹配空白字符
  • [:punct:] :匹配标点符号
  • [:lower:] :匹配小写字母
  • [:upper:] :匹配大写字母
  • [:alpha:] :匹配大小写字母
  • [:digit:] :匹配数字
  • [:alnum:] :匹配数字和大小写字母
  • 支持使用变量
  • 支持编程

 

bash的配置文件

  • 全局配置
  • 文件位置:/etc/profile, /etc/profile.d/*.sh (以sh结尾的文件),/etc/bashre

linux中使用java linux中使用bash是什么意思_bash

  • 个人配置
  • ~/.bash_profile,~/.bashrc
  • profile类的文件:
  • 设定环境变量
  • 运行命令或脚本
  • bashrc类的文件:
  • 设定本地变量
  • 定义命令别名
  • 登录式shell如何读取配置文件
  • 首先读取/etc/profile,再读取/etc.profile.d/*.sh,再读取 ~/.bash_profile,再然后读取 ~/.bashre,最后读取 /etc/bashrc
  • 非登录式shell如何读取配置文件
  • 首先读取 ~/.bashrc,再读取 /etc/bashrc,最后读取/etc.profile.d/*.sh
  • 永久保存别名,针对用户,在用户目录修改/.bashrc文件,修改所有为 /etc/bashrc 文件