认识与学习bash

认识与学习bash

认识bash这个shell

  1. 硬件,内核与shell
  • 硬件:整个系统中的实体工作者,包含硬盘,显卡,网络卡,cpu等。
  • 内核:真正控制硬盘工作的,有cpu进程,内存管理,磁盘输入输出等工作。
  • shell:狭义的shell只命令行方面的软件;广义的是指只要能够操作应用程序接口的都叫做shell,本文讲的是命令行界面的shell(bash)。
  1. bash shell的功能
  • 命令记忆功能:(history)
  • 命令补全功能 :(tab)键
  • 命令别名设置功能:(alias)
  • 作业控制,前台,后台控制
  • 程序脚本:shell script
  1. bash shell的内置命令查询:type

shell的变量功能

  1. 什么是变量:以一组文字或符号等,来代替比较复杂或者容易变动的数据。
  2. 变量的显示:echo 例如:echo $PATH
  3. 变量的设置规则:
  • 变量名只能是英文字母与数字,但不能以数字开头
  • 变量名与变量内容之间用=号连接,不能直接接空格字符
  • 变量内容若有空格符,可使用单引号或双引号,注意单引号不解析变量,原样输出
  • 可使用转义字符“\”转义特殊字符
  • 该变量增加变量内容时,例如:PATH="$PATH":/home/zj
  • 若该变量需要在其它子进程执行,则需要以export来使变量变成环境变量,例如:export PATH
  • 取消变量:unset 变量名
  1. 环境变量的功能
  • 查看环境变量:env
  • 自定义变量转成环境变量:export
  • 子进程仅会继承父进程的环境变量,不会继承父进程的自定义变量
  1. 变量键盘读取,数组与声明:read,array,decla
  2. 变量内容的删除,替代与替换:

从前面开始删除:

  • #:删除最短的 例如:echo ${path#/:} 把path中/到:最短的删除,号为通配符
  • ##:删除最长的 例如:echo ${path##/:} 把path中/到:最长的删除,号为通配符,即前面的目录都删除了,仅保留最后一个目录。

从后面开始删除:

  • %:删除最短的 例如:echo ${path%/:} 把path中/到:最短的删除,号为通配符
  • %%:删除最长的 例如:echo ${path%%/:} 把path中/到:最长的删除,号为通配符

变量的替换:

例如:把path变量中的sbin替换为大写的SBIN
echo ${path/sbin/SBIN} 只替换第一个
echo ${path//sbin/SBIN} 替换所有
  1. 命令别名与历史命令:alias , unalias,history

bash shell的操作环境

  1. 路径与命令的查找顺序
  • 以相对绝对路径执行命令
  • 由alias找到命令来执行
  • 由bash的内置命令来执行
  • 通过$PATH这个变量的顺序找到的第一个命令来执行
  1. bash的环境配置文件
  • loginshell 取得bash时需要完整的登入流程,需要用户输入登入账号与密码:系统整体设置文件/etc/profile与~/.bash_profile
  • non-login shell 取得bash的接口方法不需要重复登入,以图形界面启动终端机,并不需要再次输入账号与密码:~/.bashrc

数据流重定向

  1. 标准输入(stdin):代码为0,使用<或<<
  2. 标准输出(stdout):代码为1,使用>或>>
  3. 标准错误输出(stderr):代码为2 ,使用2>或2>>
  4. 命令执行的判断依据:;,&&,,||

管道命令

  1. 选取命令:cut,grep
  2. 排序命令:sort,wc,uniq
  3. 双向重定向:tee
  4. 字符转换命令:tr,col,join,paste,expand
  5. 参数代换:xargs
  6. 关于减号-的用途:某些命令需要用到文件名来进行处理时,该stdin与stdout可以利用减号来代替
tar -cvf - /home | tar -xvf -
将home里面的文件打包经管道传送给后面的tar -xvf -

相关推荐