您的位置:首页 > 运维架构 > Shell

Bash相关知识

2020-07-24 19:20 525 查看

Bash

bash定义: linux使用版本的shell叫做的“Bourne again Shell”,简称bash。

type:查看是否为shell的内置命令

1.echo $变量名: 取用变量 ,设置规则介绍略过。

unset 变量名 : 取消设置的变量

2.env :观察环境变量 (environment的缩写)

set: 观察环境变量和自定变量(set 还可以帮我们设置整个指令输出/输入的环境。 例如记录历史命令、显示错误,这个懒得写笔记了好累啊)

列举几个变量:

PS1变量:这个东西就是我们的“命令提示字符”.可以用man bash去看看PS1 , echo ${PS1}

$ : 目前这个线程的pid代号 echo $$

? : 上一个指令的回传值, 正确时候回传0,错误时候回传非零 echo $?

export 将自定变量转为环境变量

locale查看语系变量,整体系统的默认语系定义在

/etc/locale.conf

3.read:读取来自键盘输入的变量

选项与参数:
-p :后面可以接提示字符
-t :后面可以接等待的“秒数

declare 宣告变量的类型

4.例`

  • echo ${path#/*local/bin:}`

#从前往后删最短的那个, ##从前往后删符合取代文字的最长的那个。 从后往前%,%%

${变量/旧字串/新字串} 替换第一个旧字符

${变量//旧字串/新字串}替换所有的旧字符

5.变量设置方式str 没有设置str 为空字串str 已设置非为空字串

str没值 str为空串 str有值
var=str−exprvar=exprvar=var={str-expr} var=expr var= var=str−exprvar=exprvar=var=str
var=str:−exprvar=exprvar=exprvar={str:-expr} var=expr var=expr var=str:−exprvar=exprvar=exprvar=str

6.别名alias,unalias

历史命令history ,当期用的操作记录在

~/.bash_history

7.配置文件解释

/etc/profile :login shell 才会读/etc/profile还会去调用外部的设置数据。在 CentOS 7.x 默认的情况下,下面这些数据会依序的被调用进来: /etc/profile.d/*.sh

/etc/locale.conf
: 这个文件是由
/etc/profile.d/lang.sh
调用进来的

~/.bash_profile : login shell 才会读,bash 在读完了整体环境设置的 /etc/profile 并借此调用其他配置文件后,接下来则是会读取使用者的个人配置文件。所读取的个人偏好配置文件其实主要有三个~/.bash_profile, ~/.bash_login, ~/.profile 其实 bash 的 login shell 设置只会读取上面三个文件的其中一个, 而读取的顺序则是依照上面的顺序。

~/.bashrc : nonlogin shell
时,该 bash 配置文件仅会读取 ~/.bashrc

/etc/bashrc
: CentOS 7.x 还会主动的调用 这个文件。由于这个
~/.bashrc
会调用
/etc/bashrc
/etc/profile.d/*.sh
, 所以,万一你没有
~/.bashrc
(可能自己不小心将他删除了),那么你会发现你的 bash 提示字符可能会变成这个样子:
-bash-4.2$
因为并没有调用 /etc/bashrc 来规范 PS1 变量(这个我还真遇到过。不过当时不知道为什么特别郁闷)

/etc/man_db.conf
: 规范了使用 man 的时候, man page 的路径到哪里去寻找。

~/.bash_history
: 历史命令就记录在这里

~/.bash_logout
: 当我登出 bash 后,系统再帮我做完什么动作后才离开

组合按键执行结果
Ctrl + C 终止目前的命令
Ctrl + D 输入结束 (EOF),例如邮件结束的时候;
Ctrl + M 就是 Enter 啦!
Ctrl + S 暂停屏幕的输出
Ctrl + Q 恢复屏幕的输出
Ctrl + U 在提示字符下,将整列命令删除
Ctrl + Z “暂停”目前的命令

符号 :

  • 代表“ 0 个到无穷多个任意字符

?代表“一定有一个”意字符

[ ] 同样代表“一定有一个在括号内”的字符(非任意字符)。例如 [abcd] 代表“一定有一个字符, 可能是 a, b, c, d 这四个任何一个

[ - ] 、[^ ]

  1. 标准输入  (stdin) :代码为 0 ,使用 < 或 << ; <<代表结束符
  2. 标准输出  (stdout):代码为 1 ,使用 > 或 >> ;>覆盖的方式输入,>>累加的方式输入
  3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;

/dev/null 垃圾桶黑洞

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

10管道

管线命令仅会处理 standard output,对于 standard error output 会予以忽略
管线命令必须要能够接受来自前一个指令的数据成为 standard input 继续处理才行。

撷取命令: cut, grep

排序命令: sort, wc, uniq

双向重导向: tee

字符转换命令: tr, col, join, paste, expand

分区命令: split

参数代换: xargs

stdin 与 stdout 可以利用减号 “-” 来替代
ctrl+a、ctrl+e让光标移动到最前、后面

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: