zoukankan      html  css  js  c++  java
  • 认识与学习BASH

    bash子程序仅会继承父程序的环境变量,子程序不会继承父程序的自定义变量。所以你在原本的bash中自定义的变量在进入子程序后就会消失,等你离开子程序回到原来的父程序,这个变量又会出现。

    可以使用export将自定义变量变成环境变量,这样子就不会出现这个问题了。

    环境变量 = 全局变量

    自定义变量 = 局部变量

    1.2 Shell的变量功能

    1.2.1 与文件系统及程序的限制关系:ulimit

    [root@hadoop00 ~ 16:37 74]#ulimit -a
    core file size (blocks, -c) 0          <==只要是0就代表没限制
    data seg size (kbytes, -d) unlimited
    scheduling priority (-e) 0
    file size (blocks, -f) unlimited     <==可建立的单一文件的大小
    pending signals (-i) 3882
    max locked memory (kbytes, -l) 64
    max memory size (kbytes, -m) unlimited
    open files (-n) 1024                  <==同时可开启的文件数量
    pipe size (512 bytes, -p) 8
    POSIX message queues (bytes, -q) 819200
    real-time priority (-r) 0
    stack size (kbytes, -s) 10240
    cpu time (seconds, -t) unlimited
    max user processes (-u) 3882
    virtual memory (kbytes, -v) unlimited
    file locks (-x) unlimited

    1.2.2变量内容的删除、取代与替换

    删除:${variable#}  从前往后删除,删除最短的一个

         ${variable##} 从前往后删除,删除最长的一个

              ${variable%} 从后往前删除,删除最短的一个

              ${variable%%}从后往前删除,删除最长的一个

    取代:username=${username-root}如果username未设定内容,则以root取代,若已设定内容,则保留原有内容。

               username=${username:-root}加入冒号后,不管之前有无设定内容,均以root取代。

     

    1.3 命令别名与立式命令

    1.3.1 命令别名设定与取消:

    alias, unalias  相当于宏定义一样

    alias lm='ls -al | more'    执行此命令后使用lm就相当于使用ls -al | more.

    unalias则是取消命令的别名设定。

    1.3.2历史命令:history

    功能:显示之前执行过的命令。

    $HISTSIZE 保存历史命令的条数

    history 列出历史命令

    history -w 在默认情况下,会将历史记录写入 ~/.bash_history 当中

    !66 执行历史命令的第66行命令

    !!  执行上一条指令

    !al 执行最近以al为开头的指令

    1.4 Bash Shell 的操作环境

    1.4.1 路径与指令搜寻顺序

    1. 以相对/绝对路径执行指令,例如 /bin/ls 或者 ./ls;

    2. 由 alias 找到该指令来执行;

    3. 由 bash 内建的(builtin)指令来执行;

    4. 透过 $PATH 这个变量的顺序搜寻到第一个指令来执行。

    1.4.2 bash 的进站与欢迎讯息:/etc/issue, /etc/motd

    1.4.3 bash 的环境配置文件

    login shell 与 non-login shell

    • login shell: 取得bash时需要完整的登入流程的,就称为login shell。举例来说,你要有tty1~tty6登入,需要输入用户的账号与密码,此时取得的bash就称为 login shell。
    • non-login shell: 取得bash接口的方法不需要重复登入的举动,举例来说,(1)X windows登陆,(2)bash环境下下达bash指令。

    login 与 non-login shell读取的配置文件数据不一致。

    login shell读取的两个配置文件:

    1. /etc/profile: 这就是系统整体的设定,你最好不要修改这个文件。
    2. ~/.bash_profile或~/.bash_login或~/.profile:属于使用者个人设定,你要改自己的数据,就写入这里。
    • /etc/profile(login shell才会读取)
    • ~/.bash_profile(login shell 才会读取)

    bash在读完了整体环境设定的/etc/profile,接下来则会是读取使用者的个人配置的文件。在login shell的bash环境钟,所读取的个人偏好配置文件其实主要有三个,依次分别是:

    1. ~/.bash_profile
    2. ~/.bash_login
    3. ~/.profile

    其实bash的login shell设定只会读取上面三个文件的其中一个,而读取的顺序则是依照上面的顺序。只读一个。

    最终读取的配置文件是~/.bashrc这个文件,所以,可以讲自己的偏好设定写入该文件即可。接下来讨论一下source与~/.bashrc。

    • source(或小数点):读入环境配置文件的指令

    由于/etc/profile 和 ~/.bash_profile都是在取得login shell的时候才会读取的配置,所以,如果你讲自己的偏好设定写入上述的文件后,通常都是得注销再登入才能生效。可以利用source指令再不注销登陆的情况下让配置文件生效。

    • ~/.bashrc(non-login shell 会读)

    1.4.4 终端机的环境设定:stty set

    1.5 数据流重导向

    • standard output 与 standard error output  

    ll / >~/rootfile  覆盖内容

     ll / >>~/rootfile  累加内容

    • standard input  < 与 <<

    将原来需要由键盘输入

  • 相关阅读:
    dblink && 视图 数据库二合一
    oracle mybatis 逆向工程 应当注意的问题
    关于使用vue搭建前后端分离的项目,部署过程遇到的问题
    详解vue静态资源打包中的坑与解决方案
    bootstarap table 分页导出 vue版
    react中两个控件不是父子关系该怎么传递消息或任意控件怎么传递消息
    虚拟DOM中key的作用
    修改Antd的List列表的单个数据行
    移动端开发如何关闭手机键盘
    在一行显示两个数据,左边的数据右对齐,右边的数据左对齐
  • 原文地址:https://www.cnblogs.com/zhousong918/p/10026630.html
Copyright © 2011-2022 走看看