zoukankan      html  css  js  c++  java
  • bash的基础特性

    1. 命令历史:history
      环境变量:
      HISTSIZE: 命令历史的条数
      HISTFILE:~/.bash_history
      HISTFILESIZE: 命令历史文件记录历史的条数

       history -d OFFSET: 删除命令历史
                -c: 清空缓冲区命令历史
                -a: 手动追加当前会话缓冲区的命令历史至命令历史文件中 
       history #:显示命令历史中最近的#条命令
      

      调用命令历史中的命令:
      !#:重复执行第#条命令
      !!: 重复执行上一条命令
      !string: 执行最近的第一条匹配string的命令
      调用上一条命令的最后一个参数:
      !$ ESC,. Alt+.
      控制命令历史的记录方式
      环境变量: HISTCONTROL
      ignoredups:忽略重复的命令;连续且相同方为重复
      inorespace:忽略所有以空白开头的命令
      ignoreboth:上述两者都生效
      修改环境变量值得方式: export 变量名="值"
      变量赋值:把赋值符号后面的数据存储于变量名指向的内存空间

    2. 命令补全和路径补全:Tab

    3. 命令行展开
      ~:展开为用户的主目录
      ~USERNAME:展开为指定用户的主目录
      {}:可承载一个以逗号分隔的列表,并将其展开为多个路径

    4. 命令的执行结果状态
      $? : 0表示成功,其他数值为失败

    5. 命令别名
      请过alias命令实现
      (1)alias
      显示当前shell进程所有可用的命令别名
      (2) alias NAME='VALUE'
      定义别名NAME,其相当于执行命令value
      注意: 在命令行中定义的别名,仅对当前shell进程有效,如果要永久有效,要定义在配置文件中
      仅对当前用户有效: ~/.bashrc
      对所有用户有效: /etc/bashrc
      Note: 编辑配置给出的新配置不会立即生效
      bash进程重新读取配置文件:
      sourch /path/to/config_file
      . /path/to/config_file

    撤销别名: unalias NAME
                        -a: 撤销全部
    Note: 如果别名同原命令名称,如果要执行原命令,可使用"COMMAND"
    
    1. glob(globing)
      bash中用于实现文件名"通配"
      (1)*
      任意长度的任意字符
      (2)?
      任意单个字符
      (3)[]
      匹配指定范围内的任意单个字符
      (4)[^]
      匹配指定范围外的任意单个字符

      专用字符集合:
      [:digit:]: 任意数字,相当于0-9
      [:lower:]: 任意小写字母
      [:upper:]: 任意大写字母
      [:alpha:]: 任意大小写字母
      [:alnum:]: 任意数字或字母
      [:space:]: 空格
      [:punct:]: 标点符号

    2. bash的快捷键
      Ctrl+l:清屏,相当于clear
      Ctrl+a: 跳转至命令开始处
      Ctrl+e: 跳转至命令结尾处
      Ctrl+c: 取消命令的执行
      Ctrl+u:删除命令行至光标所在处的所有内容
      Ctrl+k:删除光标处命令行尾部的所有内容

    3. bash的I/O重定向及管道
      输出重定向:COMMAND>NEW_POS,COMMAND>>NEW_POS
      >: 覆盖重定向,目标文件中的原有内容会被清除
      >>: 追加重定向,新内容会追加至目标文件尾部
      # set -C: 禁止将内容覆盖至已有文件中
      # set +C: 允许将内容覆盖至已有文件中
      2>: 只能覆盖重定向错误输出数据流
      2>>:追加重定向错误输出数据流

      标准输出和错误输出各自定向至不同位置
      # COMMAND > /path/to/somefile 2> /path/to/error.txt

      合并标准输出和错误输出为同一个数据流进行重定向
      &>: 覆盖重定向
      &>>: 追加重定向
      COMMAND > /path/to/file.out 2> &1

      输入重定向: <

      管道:COMMAND1 | COMMAND2 | COMMAND 3 | ...
      Note: 最后一个命令会在当前shell进程的子shell进程中执行

      tee命令:
      tee [OPTIONS]... [FILE]...
      -a: 追加内容至指定文件中

    练习:
    1.将/etc/passwd文件中的前5行转换为大写后保存至/tmp/passwd.out文件中
    head -n 5 /etc/passwd | tr 'a-z' 'A-Z' > /tmp/passwd.out

    2.将登陆至当前系统上用户信息中的后3位的信息转换为大写后保存至/tmp/who.out文件中
    	who | tail -n 3 | tr 'a-z' 'A-Z' > /tmp/who.out
    
    1. bash的配置文件

      按生效范围划分:
      全局配置:
      /etc/profile
      /etc/profile.d/*.sh
      /etc/bashrc

       个人配置:
           ~/.bash_profile
           ~/.bashrc
      
       按功能划分,存在两类:
           profile类: 为交互式登录的shell提供配置
                   全局: /etc/profile, /etc/profile.d/*.sh
                   个人: ~/.bash_profile
                   功用:
                       1. 用于定义环境变量
                       2. 运行命令或脚本
      
           bashrc类: 为非交互式登录的shell提供配置
                   全局: /etc/bashrc
                   个人: ~/.bashrc
                   功用: 
                       1. 定义命令别名
                       2. 定义本地变量
      

    10 shell登录
    交互式登录
    直接通过终端输入账号密码登录
    使用su - USERNAME 或su -l USERNAME 切换的用户
    /etc/profile -> /etc/etc/profile.d/*.sh -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc

        非交互式登录:
            su   USERNAME
            图形界面下打开的终端
            执行脚本
            ~/.bashrc -> /etc/bashrc -> /etc/profile.d/*.sh
    

    问题:
    1. 定义对所有用户都生效的别名 /etc/bashrc
    2. 让用户的PATH环境变量的值多出一个路径,例如/usr/local/apache2/bin,
    管理员? ~/.bash_profile
    所有人? /etc/profile 或 /etc/profile.d/*.sh

    1. 编程语言:
      低级:汇编
      高级:
      编译: 高级语言 -> 编译器 -> 目标代码
      c, c++, java
      解释: 高级语言 -> 解释器 -> 机器代码
      shell, perl, python
      shell 如何执行程序: 过程式、解释执行
      运行脚本:
      1. 给与执行权限,通过具体的文件路径指定文件执行
      2. 直接运行解释器,将脚本作为解释器程序的参数运行
  • 相关阅读:
    Spring 定时任务
    JSOUP 爬虫
    Google 翻译(中英,英中)
    linux mysql 卸载与安装及配置命令
    2.logback+slf4j+janino 配置项目的日志输出
    DW3 消息推送
    JQuery 常用知识
    intellij idea 2016.3.5 控制台取消行数限制
    1.搭建Maven 多模块应用 --Intellij IDEA 2016.3.5
    JSON 解析工具的封装(Java)
  • 原文地址:https://www.cnblogs.com/ckh2014/p/10763896.html
Copyright © 2011-2022 走看看