Shell学习——基础知识
-------------------------------------------------------------------------------------------------------
bash(Bourne Again Shell)有什么特点呢?
1:记录命令历史
- 只有当用户正常退出当前 shell 时,在当前 shell 中运行的命令才会保存至 .bash_history 文件中。
- !! (连续两个 ”!” ),表示执行上一条指令;
- !n(这里的 n 是数字),表示执行命令历史中第n条指令,例如 ”!100” 表示执行命令历史中第 100 个命令;
- !字符串(字符串大于等于 1 ),例如 !ta,表示执行命令历史中最近一次以 ta 为开头的指令。
2:指令和文件名补全
- 按 tab 键,它可以帮你补全一个指令,也可以帮你补全一个路径或者一个文件名;
- 连续按两次 tab 键,系统则会把所有的指令或者文件名都列出来。
3:别名
- 可以通过 alias 把一个常用的并且很长的指令别名一个简洁易记的指令。如果不想用了,还可以用 unalias 解除别名功能;
- alias语法很简单,alias [命令别名]=[’具体的命令’]。直接敲 alias 会看到目前系统预设的 alias;
4:通配符
- 在 bash 下,可以使用 * 来匹配零个或多个字符,而用 ? 匹配一个字符。
5:输入输出从定向
- 输入重定向的命令是 <,输出重定向的命令是 >,另外还有错误重定向2>,以及追加重定向>>
6:管道符
- 管道符 ”|”,就是把前面的命令运行的结果丢给后面的命令。
7:作业控制
- 当运行一个进程时,你可以使它暂停(按Ctrl+z),然后使用 fg命令恢复它,利用bg 命令使他到后台运行,你也可以使它终止(按Ctrl+c);
-------------------------------------------------------------------------------------------------------
变量
- 变量, 说简单点就是使用一个较简单的字符串来替代某些具有特殊意义的设定以及数据;
- 使用 env 命令即可全部列出系统预设的全部系统变量了。不过登录的用户不一样这些环境变量的值也不一样;
- set不仅可以显示系统预设的变量,也可以连同用户自定义的变量显示出来。
常见的环境变量:
- HOME 当前用户主目录
- HISTSIZE 历史记录数
- LOGNAME 当前用户的登录名
- HOSTNAME 指主机的名称
- SHELL 前用户Shell类型
- LANG 语言相关的环境变量,多语言可以修改此环境变量
- MAIL 当前用户的邮件存放目录
- PWD 当前目录
-------------------------------------------------------------------------------------------------------
那要想设置的变量一直生效怎么办?有两种情况:
1:要想系统内所有用户登录后都能使用该变量
- 需要在 /etc/profile 文件最末行加入 “export myname=zht” 然后运行”source /etc/profile” 就可以生效了。再运行 bash 命令或者直接su - test 账户看看。
2:只想让当前用户使用该变量
- 需要在用户主目录下的 .bashrc文件最后一行加入“export myname=zht” 然后运行”source .bashrc” 就可以生效了。这时候再登录 test 账户,myname 变量则不会生效了。上面用的 source 命令的作用是,讲目前设定的配置刷新,即不用注销再登录也能生效。
-------------------------------------------------------------------------------------------------------
在linux下设置自定义变量有哪些规则呢?
- 设定变量的格式为 ”a=b”,其中 a 为变量名,b 为变量的内容,等号两边不能有空格;
- 变量名只能由英文、数字以及下划线组成,而且不能以数字开头;
- 当变量内容带有特殊字符(如空格)时,需要加上单引号;需要注意,就是变量内容中本身带有单引号,这就需要用到双引号了。
- 如果变量内容中需要用到其他命令运行结果则可以使用反引号;
- 变量内容可以累加其他变量的内容,需要加双引号;
- 单引号和双引号的区别:用双引号时不会取消掉里面出现的特殊字符的本身作用(这里的 $ ),而使用单引号则里面的特殊字符全部失去它本身的作用。
- export 其实就是声明一下这个变量的意思,让该 shell 的子 shell 也知道变量 abc 的值是 123. 如果 export 后面不加任何变量名,则它会声明所有的变量。
- 如果想取消某个变量怎么办?只要输入”unset 变量名” 即可。
-------------------------------------------------------------------------------------------------------
系统环境变量与个人环境变量的配置文件
在 linux 系统中,这些变量被存到了哪里呢,为什么用户一登陆 shell 就自动有了这些变量呢?
- /etc/profile :这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umas等等。
- /etc/bashrc :这个文件主要预设 umask 以及 PS1。这个 PS1 就是我们在敲命令时,前面那串字符了,
- .bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。
- .bashrc:该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如可以将自定义的alias或者自定义变量写到这个文件中。
- .bash_history :记录命令历史用的。
- .bash_logout :当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中。
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------