当前位置: 代码迷 >> Linux/Unix >> 【学习札记——Linux】认识与学习BASH
  详细解决方案

【学习札记——Linux】认识与学习BASH

热度:6125   发布时间:2013-02-26 00:00:00.0
【学习笔记——Linux】认识与学习BASH

认识与学习BASH

Table of Contents

  • 1 认识Bash
  • 2 Shell的变量功能
  • 3 命令别名与历史命令
  • 4 Bash shell的操作环境
  • 5 数据流重导向
  • 6 管线命令

1 认识Bash

  • 通过Shell将输入的指令与Kernel沟通,让Kernel控制硬件工作
  • 查看Shell:cat /etc/shell
    • 登录后预设的shell类型记录在/etc/passwd中,与账户相关
  • 命令别名:alias lm='ls -al' #注意有无空格
  • 帮助:man bash
  • 命令类型:type
    • type ls # ls is aliased to `ls –color=auto'
    • type cat # cat is hashed (/bin/cat)
    • type cd # cd is a shell builtin
  • 命令执行:
    • \[Enter]:将[Enter]转义,按下后不执行,而是另起一行

2 Shell的变量功能

  • 概念:同一变量,不同用户可以有不同值,所以可以用变量来代表此值,而不用将具体的值 写入程序,如$PATH
  • 显示变量:echo $PATH
  • 设定变量:PATH=xxx #注意空格有无
  • 扩充变量:PATH=$PATH:xxx
  • 取消变量:unset MAIL
  • 查看环境变量:env
  • 查看环境变量及自定义变量:set
    • PS1:提示字符设定
  • 自定义变量转环境变量:export
    • 为什么要转成环境变量:因为子程序会继承父程序的环境变量
  • 语系支持
    • 查看系统支持的语系:locale -a
    • 查看与语系有关的变量:locale
  • 键盘读取用户输入read: read atest #将用户输入读入atest变量
  • 声明变量类型 declare: declare -i sum=100+50

3 命令别名与历史命令

  • 别名
    • alias lm='ls -al | more'
    • unalias lm
  • 历史命令
    • history

4 Bash shell的操作环境

  • 指令执行时查找顺序
    • 相对/绝对路径 -> alias -> bash内建 -> $PATH
  • bash配置文件
    • login shell/non-login shell
      • login shell: 进入shell时需要输入账号密码
      • non-login shell: 通过图形界面登录,再启动shell时无需输入账号密码
    • 配置文件
      • login shell:
        • /etc/profile :系统整体设定
        • 以下三个文件按顺序,如果存在,就读取,后面的就不再读取
        • ~/.bash_profile
        • ~/.bash_login
        • ~/.profile
    • 通配符
      • * : 0到无穷个字符
      • ? : 一个字符
      • []: [abc] # a or b or c
      • [-]: [0-9] # 0 到 9
      • [^]: [^abc] # 不是a,b,c的一个字符

5 数据流重导向

  • > :覆盖
  • >>:累加
  • /dev/null:接收信息但不显示
  • 依次执行:cmd1,cmd2,cmd3
  • 根据上一条执行结果确定下一条
    • cmd1 && cmd2
    • cmd1 || cmd2

6 管线命令

  • ls | less
  • cut:同一行数据分割
    • echo $PATH | cut -d ':' -f 5 #以':'分割,第5个数据
  • grep:如果一行里有需要的信息,就返回这一行
  • sort:排序
  • uniq:重复内容只显示一次
  • wc:统计单词数
  • tee:双向重定向
  • tr:删除或替换数据
  • col:转化为纯文本
  • join:将两个文件中相关信息放在一起
  • paste:将两行并在一起,中间用[Tab]分开
  • expand:将[Tab]转为空格
  • split:将大文件传为小文件