14.bash(2) 与 环境变量

来源:互联网 发布:上海圣剑网络怎么样 编辑:程序博客网 时间:2024/05/29 10:17

变量内容的删除,替代和替换

删除:

echo ${path#/*kerberos/bin:}${variable#/*kerberos/bin:} // 代表从变量内容的最前面开始向右删除,且仅删除最短的那个echo ${path##/*:} //删除最长的那个因为在PATH中,每个目录以  :  隔开的,所以要从头删除目录就是介于斜线(/) 到冒号(:) 之间的数据。但是 PATH 中不止一个冒号(:) ,所以#,##就分别代表:    # : 符合替换的字符的"最短的"那一个,从前面开始删除    ## : 符合替换字符,最长的一个$ :  从后面开始删除$$ : 

这里写图片描述
这里写图片描述


替换:

将 path 的变量的 sbin 替换成大写 SBINecho ${path/sbin/SBIN} //  2个 //之间为旧字符串

这里写图片描述


命令别买和历史命令

命令别名设置: alias,unalias    alias lm='ls -al | grep more'    unalias 

这里写图片描述

历史命令 : history     -n : 数字,列出最近的n个命令    -c : 将目前shell 中所有的history全部删除

这里写图片描述
这里写图片描述


bash shell 的操作环境

路径与命令查找顺序: 1. 以相对或者绝对路径执行的命令,如 "/bin/ls" 2.alias 找到的该命令 3. 由 bash 内置的命令来执行 4. 通过 $PATH 这个变量的顺序找到的第一个命令来执行通过 type -a ls ,可以查看 ls 执行的顺序

这里写图片描述

bash 的登录与欢迎信息: /etc/issue, /etc/motd/etc/issue.net 远程界面显示的信息/etc/motd //登录后,显示的信息

bash 的环境配置文件

login shell 与 non-login shell

login shell : 取得 bash 时,需要完整的登录流程,就称login shell。non-login shell : 取得 bash 接口不需要重复登录的举动。
login shell 会读取2个配置文件: 1. /etc/profile : 这是系统整体的设置,最好不要修改这个文件; 2. ~/.bash_profile 或~/.bash_login 或~/.profile:属于用户个人设置,你要修改自己的数据,就写入这里
/etc/profile (login shell 才会读取): - PATH : 根据 UID 决定 PATH 变量要不要包含有 sbin 的系统命令目录 - MAIL : 会依据账号设置好用户的 mailbox 到 /var/spool/mail/账号名 - USER : 根据用户的账号设置此变量 - HOSTNAME : 依据主机的 hostname 命令来决定此变量内容 - HISTSIZE : 历史命令的记录条数 - /etc/inputrc - /etc/profile.d/*.sh - /etc/sysconfig/i18n : 由 /etc/profile.d/lang.sh 调用
~/.bash_profile(login shell 才会读取):bash 读完整体环境设置后,会读取个人配置文件。依序分别是: 1. ~/.bash_profile 2. ~/.bash_login 3. ~/.profile其实 bash 的 login shell 设置只会读取上面3个文件中的一个。读取顺序如上,也就是说如果,~/.bash_profile 存在,则不读取其他的。

这里写图片描述

source : 读入配置文件的命令由于/etc/profile 和 ~/.bash_profile 都是取得 login shell 的时候才会读取配置文件,所以配置好文件后,需要注销。用 source 命令可以不用注销。source 配置文件 //等同于下面命令 .     配置文件 利用 source 或者小数点(.) 可以将配置文件读入目前的 shell 环境中。

~/.bashrc (no login shell 会读取)

这里写图片描述


其他配置文件

 1. /etc/man.config  : 规定了去哪里查找 man page 。以 tarball 方式安装,可能需要定义。 2. ~/.bash_history : 历史命令 3. ~/.bash_logout : bash 注销后的动作

终端机的环境设置: stty, set

stty -a //查看目前终端设置^ 代表 Ctrl 如果想用 ctrl + h 来进行字符删除stty erase ^h

这里写图片描述


数据重定向

standard output(标准输出,1, > 或 >>) : 命令执行所回传的正确信息standard input(标准输入,0) : < 或 << standard error(标准错误,22>,或2>>) : 命令执行所回传的错误信息

/dev/null 垃圾桶黑洞设备与特殊写法

/dev/null 可以吃掉任何导向这个设备的信息。find /home -name .bashrc 2>>/dev/null如果要将正确与错误数据统统写入同一个文件: find /home -name .bashrc > list 2>list // 错误,2条数据可能交叉写入文件 find /home -name .bashrc > list 2>&1  //正确 find /home -name .bashrc &> list
standard input, < , <<cat > catfile <<"eof" // 如果输入 eof 代表输入结束

执行命令的判断依据: ; && ||

命令1 ; 命令2   // 分号前面的命令执行完会接着执行下面一个命令1 && 命令2  // 命令1对,执行2,错停止命令1 || 命令2 // 命令1对,不执行2,错,执行2

管道命令

ls -al | less    //信息太多,用 less 查看管道命令 " | ",仅能处理前面一个命令传来的正确信息,也就是说标准错误处理不了。每个管道后的第一个数据必是 "命令",能够接收 标准输入的数据才行。
选取命令 : cut , grepgrep [-acinv] [--color=auto] '查找字符串' filename    -a : 将 binary 文件以 text 文件的方式查找数据    -c : 计算找到 '查找字符串'的次数    -i : 忽略大小写    -n : 顺便输出行号    -v : 反向选择    --color=auto : 将找到的关键字上颜色last | grep root  //取出有 root的last | grep -v root // 取出没有 root 的
排序命令 : sort, wc,uniqsort [-fbMnrtuk] [file or stdin]cat /etc/passwd | sortuniq [-ic]    -i : 忽略大小写字符才不同    -c : 进行计数wc [-lwm]    -l : 列出多少行    -w : 列出多少字    -m : 多少字符

双重定向:tee

tee [-a] file     -a : 累加

这里写图片描述


字符转换命令

tr : last | tr ['a-z'] ['A-Z']  //将所有字母转换为大写

关于减号命令

stdin,stdout 可以用 - 代替tar -cvf - /home | tar -xvf - 将 /home 打包,不是记录到文件,而是传送到stdout,经过管道,传给 tar -xvf - 
0 0
原创粉丝点击