认识与学习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  < 与 <<

将原来需要由键盘输入

原文地址:https://www.cnblogs.com/zhousong918/p/10026630.html