Linux bash 特性

一.bash

1.shell :外壳

GUI:gnone,kde,xfce 图形界面
CLI:sh,csh,ksh,bash开源协定的,tcsh,zsh 命令行

2.shell工作模式

多用户登陆后,没登陆一次打开一个shell,开始一个进程,每个进程当前主机上只有内核和当前主机

            pstree 显示当前系统的shell

        bash 进入子shell

        exit 退出子shell 
               shell 可以交互打开 csh ksh 都能打开

      /etc/shells:指定了当前系统可用的安全shell

进程:以进程号区别
进程是程序的副本,是程序的执行实例

二.命令行的快捷键

Ctrl+a 命令行首
Ctrl+e 跳到行尾
Ctrl+U 删除光标到行首
Ctrl+k 删除到行尾
Ctrl+<- -> 跳转一个单词
Ctrl+l 清屏幕

三.命令历史:

1.查看命令历史:history

-c:晴空命令历史
-d number 删除第num个
-d num1 num2 从num1开始删除num2个
-w 保存命令历史至历史文件

命令存储在 ~/.bash_history 中

环境变量 HISTSIZE 标志最多存储命令的多少

2.命令历史使用技巧

!n 执行命令历史的第n个命令
!-n 执行命令历史的倒数第n个命令
!! 执行上一条命令
!字符串 最近一次以指定字符串开头的文件
!$ 上一个命令的最后一个参数
ESC,. 同样的作用
Alt +.

3.命令补全
  tab path 环境标量下搜索补全
  路径补全
  tab
  在给出的打头路径下查找 两下tab显示所有的文件

  4.命令别名:只在当前shell 的生命周期有效
    alias 别名=‘命令’
      alias 显示系统的所有别名
    unalias 别名 撤销别名

    \命令 执行命令本身而不是别名


  5.命令替换
    把命令中某个子命令替换为其执行结果的过程
    1)echo “the current directory is $(pwd)"

    2)命令替换: $(COMMAND), 反引号:`COMMAND`

    bash支持的引号:
      ``: 命令替换
      "": 弱引用,可以实现变量替换
      '': 强引用,不完成变量替换

五.变量

  变量名称:只能包含字母、数字、下划线,不能以数字开头,不能与系统已有环境变量重名

   1.本地变量

  2.局部变量

      3.环境变量

  4.位置变量:脚本的参数

./filetest.sh /etc/fstab /etc/inittab
$1 :/etc/fstab
$2 :/etc/inittab
shift :轮换 参数踢出去
n 踢出去n个
if [ -e $1 ];then
echo "OK"
else
echo "No such file"
fi

5.特殊变量

$? :上一条命令的执行状态码
$# :参数的个数
$*:参数列表
$@:参数列表
if [ $# -lt 1] ;then
echo "Usage : ./filetest3.sh /arg1 agr2 .."
exit 2
fi

六. 用户的登陆

1.用户的角度shell的类型:
登陆式shell
  正常通过某终端登陆的
    su - username
    su -l username
非登陆式shell
  su username
  图形终端中打开的命令窗口
  自动执行的shell脚本

2.bash 的配置文件

   全局配置
    /etc/profile ,/etc/profile.d/*.sh,/etc/bashrc
   个人配置
    ~/.bash_profile,~/.bashrc

  profile类文件:设定环境变量(作用范围越小越生效)。运行命令脚本或脚本

  bashrc类的文件:设定本地变量
          定义命令别名

  3.登陆式shell如何读取配置文件

    /etc/profile --〉/etc/profile.d/*.sh --> ~/.bash_profile-->~/.bashrc-->/etc/bashrc

   非登陆式shell如何读取配置文件
    ~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh

 七.输入输出重定向以及管道

1.系统设定

    默认输入设备:标准输入,STDIN ,0 标识符
    默认输出设备:标准输出,STDOUT,1 标识符
    标准错误输出:STDERR,2
    标准输入:键盘
    标准输出:显示器
    错误输出:显示器

2.重定向:I/O重定向:改变设备的输入输出来源

  > 输出重定向 :覆盖输出,原有内容会被覆盖掉

    set -C 禁止对已存在文件进行覆盖重定向
        强制覆盖输出用>|
    set +C 允许覆盖重定向

  >> 追加输出:

 

  2> 重定向错误输出
  2>>追加的方式重定向错误输出

  两次重定向
    ls /var > /tmp/var.out 2>/tmp/var.out

  &>:重定向标准输出或错误输出到一个文件


  < 输入重定向 cat</etc/fstab
    tr 'ab' 'AB' </etc/fstab
  << 此处生成文档
    cat <<END 或EOF 输入内容一直到EOF END 结束输入
    cat >>/tmp/mysile.txt <<END 输出到文件中

3.管道:前一个命令的输出,作为后一个命令的输入

    命令1 | 命令2|命令3...

 echo “hello world” | tr 'a-z' 'A-Z'

    tee 既能输出到屏幕上又能保存到文件
      echo “hello world" | tee /tmp/hello.txt

 

 

posted @ 2016-07-04 21:28  ranran1203  阅读(84)  评论(0)    收藏  举报