710661809 发表于 2018-8-29 13:42:18

4、Bash基础及配置、标准I/O、管道及shell编程基础;

  1、Bash基础及配置
  站在用户的角度来讲,SHELL的类型:
  登录式shell
  正常通过某终端登录
  su - USERNAME
  su -l USERNAME
  非登录式shell
  su USERNAME
  图形终端下打开的虚拟终端
  自动执行的shell脚本
  bash的配置文件:
  全局配置:
  /etc/profile, /etc/profile.d/*.sh , /etc/bashrc
  个人配置:
  ~/.bash_profile, ~/.bashrc
  profile类的文件
  1、设定环境变量
  2、运行命令或脚本
  bashrc类的文件
  1、定义本地变量
  2、定义命令别名
  登录式shell如何读取配置文件:
  /etc/profile ----> /etc/profile.d/*.sh ----> ~/.bash_profile ----> /etc/bashrc
  非登录式shell如何读取配置文件:
  ~/.bashrc ---> /etc/bashrc----> /etc/profile.d/*.sh
  完全切换 su - USERNAME 或 su -l USERNAME
  半切换:su USERNAME
  作用范围越小,越是最终生效的。
  如何配置一个永久的别名命令?个人的?全局的?
  如何配置一个永久的全局提示语?个人的?全局的?
  2、管道及IO重定向
  
  
  运算器、控制器 ----> CPU
  存储器:RAM
  输入设备/输出设备
  程序:指令+数据
  控制器:指令
  运算器:
  存储器:
  地址总线:内存寻址
  数据总线:数据传输
  控制总线:控制指令
  实际上,是一根总线,三种功能
  寄存器:CPU暂时存储器
  I/O:硬盘,
  程序:
  INPUT设备:
  OUTPUT设备:
  系统设定:
  默认输出设备:标准输出,STDOUT,1
  默认输入设备:标准输入,STDIN,0
  默认错误输出:标准错误,STDERR,2
  标准输入设备:键盘
  标准输出和错误输出:显示器(廉价)
  I/O重定向:
  Linux
  输出重定向(大于号):> 覆盖输出
  >> 追加输出
  set -C 禁止对已经存在文件使用覆盖重定向
  若要强制覆盖输出:则使用>|
  set +C 关闭上述功能
  2> 重定向错误输出
  2>>追加方式
  &> :重定向标准输出或错误输出至同一个文件,覆盖方式
  输入重定向(小于号):<
  root
  单词:只要是以字母开始,字母结束,中间不出现特殊字符即可;r55t
  分组:
  \(\)
  \(ab\)*
  后向引用
  \1:引用第一个左括号以及与之对应的右括号所包括的所有内容
  \2:
  \3:
  练习:
  1、显示/proc/meminfo文件中以不区分大小的s开头的行;
  grep -i '^s' /proc/meminfo
  grep '^' /proc/meminfo
  2、显示/etc/passwd中以nologin结尾的行;
  grep 'nologin$' /etc/passwd
  取出默认shell为/sbin/nologin的用户列表
  grep "nologin$' /etc/passwd | cut -d: -f1
  取出默认shell为bash,且其用户ID号最小的用户的用户名
  grep 'bash$' /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1
  3、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
  grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab
  4、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
  grep '::' /etc/inittab
  5、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
  grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf
  6、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
  grep '^\(\).*\1$' /etc/inittab
  练习:
  1、找出某文件中的,1位数,或2位数;
  grep '\{1,2\}' /proc/cpuinfo
  grep --color '\' /proc/cpuinfo
  2、找出ifconfig命令结果中的1-255之间的整数;
  3、查找当前系统上名字为student(必须出现在行首)的用户的帐号的相关信息, 文件为/etc/passwd
  grep '^student\>' /etc/passwd | cut -d: -f3
  id -u student
  student1
  student2
  练习:分析/etc/inittab文件中如下文本中前两行的特征(每一行中出现在数字必须相同),请写出可以精确找到类似两行的模式:
  l1:1:wait:/etc/rc.d/rc 1
  l3:3:wait:/etc/rc.d/rc 3
  grep '^l\(\):\1.*\1$' /etc/inittab

页: [1]
查看完整版本: 4、Bash基础及配置、标准I/O、管道及shell编程基础;