1.1shell特性
① history
查看历史命令,历史命令存在于 ~/.bash_history 中,默认存放1000个,重启shell后不会被删除,存放个数可以通过 echo $HISTSIZE 变量查询; !! 表示重复执行上一条命令, !$ 表示调用上一条命令最后一个参数, !c 则是重新执行最近的一条以c开头的命令。用法截图如下:http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/e223463dd5b2471eaef4215c9c086d8f/clipboard.png
② tab键
tab键可以用来补全命令,如果当前文件夹有多个重复选项,则连点两下,可以列出重复选项;
③ alias
alias是定制别名的命令,除了系统定义的,也可以直接用alias命令自定义,用unalias删除自定义,注意,自定义命令只在当前shell中有效,如果需要全局有效,则必须写入配置文件根目录下 ~/.bashrc
如:alias aaa='whish cd' unalias aaa
④通配符
* 是通配符,可以代表所有,而?则代表一个字符
⑤管道符 |
| 是将前一条命令执行的结果都到后面给后面一条命令执行,如:
http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/a341d8b9320049bc951f7bc548ffe1c1/clipboard.png
⑥重定向
> 重定向文件,覆盖!! >> 追加重定向,在文件末尾添加内容
< 反向重定向,覆盖!! 注:用 > 错误重定向时,当不存在文件直接重定向会报错,2>则是不会报错,强制定向
http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/b4e817db8691486aabccb484044cb22b/clipboard.png
⑦后台
用ctrl+z可以将正在执行的进程调入后台执行,我们可以通过fg将进程调到前台,也可以用bg将进程调入后台,(或者在命令末端加上&这个符号),可以通过jobs命令查看后台进程,其中+,-, 分别是从高到低的优先级
1.2shell 变量 shell是用户和机器的交互工具,所有操作系统都有shell,windows的shell就是cmd窗口,linux系统的shell就是bash;
我们可以通过env查看系统自带的变量,也可以用set查看所有变量(包括env全部、所有自定义的变量、额外变量),命令 echo $[变量名] 可以输出变量值;
我们可以直接定义变量,如 a=1 ;自定义变量只可以是数字、字母和下划线,没有位数限制,不能以数字开头,建议不要用大写字母或一些命令等定义自定义变量,容易混淆有歧义;如果定义值有特殊符号,则必须加上单引号,如 a='/tmp/qqq/' ;如果需要引用命令的值,可以用反引号表示,如 a=`which rm` 这个命令等同于 a='/bin/rm' ;如果需要引用变量定义新变量,则最好加上双引号,如 a="$b"11 ;
变量分为局部变量和全局变量,自定义的变量默认只在当前shell中生效,并不会在子shell里生效,这就是局部变量,如果需要在子shell里生效,则需要声明全局环境,这时就是全局变量,需要用到命令 export ,语法: export a=1 直接声明变量定义!但是这种声明只在本次登录有效,如果需要以后每次登录变量都有效的话,则必须更改变量配置文件了,修改方式如下
① 在 /etc/profile 文件里添加变量【对所有用户有效,并且永久的】
如 vim /etc/profile
export a='/bin/passwd'
注:如果要立即生效需要执行一下 $source /etc/profile ,不然只能重启后生效
② 在根目录 ~/.bash_profile 文件中添加变量【对当前用户生效,并且永久的】
如 vim ~/.bash_profile
export a='/bin/passwd'
注同①
PS:/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置,
/etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。
1.3 系统和用户的环境变量配置文件
在配置文件中定义变量可以永久有效,配置文件有/etc/profile和/etc/bashrc,但是并不建议在这两个文件中添加环境变量,可能会产生不必要的麻烦,建议在 /etc/profile.d/ 目录下创建一个新的shell(以.sh 结尾)就可以了。(新的shell可以直接定义变量,也可以在首行加上固定格式 #! /bin/bash)定义完成后,执行命令 source /etc/profile(/etc/bashrc) 就可以不用重启登录就调用文件内容了!
bashrc文件里面有一个变量 $PS1 就是定义命令行开头显示内容的,其中W只显示当前目录,w显示绝对路径,如截图http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/33b0d505759944e2b2ae7e7cef8a6a31/clipboard.png
以上是在系统所有用户都生效,而定义某一个单独用户时,只需要更改家目录中 .bash开头的文件,就可以永久生效了
PS:
.bash_profile和.bashrc文件的区别在于 .bash_profile是需要登录系统(本机、远程客户端等)时调用的,而 .bashrc 则是只要访问系统就会被调用。所以 .bashrc 里的信息会被更加全面的调用使用到!值得注意的是 .bash_profile 每次执行时默认会先调用 .bashrc 的。
① history
查看历史命令,历史命令存在于 ~/.bash_history 中,默认存放1000个,重启shell后不会被删除,存放个数可以通过 echo $HISTSIZE 变量查询; !! 表示重复执行上一条命令, !$ 表示调用上一条命令最后一个参数, !c 则是重新执行最近的一条以c开头的命令。用法截图如下:http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/e223463dd5b2471eaef4215c9c086d8f/clipboard.png
② tab键
tab键可以用来补全命令,如果当前文件夹有多个重复选项,则连点两下,可以列出重复选项;
③ alias
alias是定制别名的命令,除了系统定义的,也可以直接用alias命令自定义,用unalias删除自定义,注意,自定义命令只在当前shell中有效,如果需要全局有效,则必须写入配置文件根目录下 ~/.bashrc
如:alias aaa='whish cd' unalias aaa
④通配符
* 是通配符,可以代表所有,而?则代表一个字符
⑤管道符 |
| 是将前一条命令执行的结果都到后面给后面一条命令执行,如:
http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/a341d8b9320049bc951f7bc548ffe1c1/clipboard.png
⑥重定向
> 重定向文件,覆盖!! >> 追加重定向,在文件末尾添加内容
< 反向重定向,覆盖!! 注:用 > 错误重定向时,当不存在文件直接重定向会报错,2>则是不会报错,强制定向
http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/b4e817db8691486aabccb484044cb22b/clipboard.png
⑦后台
用ctrl+z可以将正在执行的进程调入后台执行,我们可以通过fg将进程调到前台,也可以用bg将进程调入后台,(或者在命令末端加上&这个符号),可以通过jobs命令查看后台进程,其中+,-, 分别是从高到低的优先级
1.2shell 变量 shell是用户和机器的交互工具,所有操作系统都有shell,windows的shell就是cmd窗口,linux系统的shell就是bash;
我们可以通过env查看系统自带的变量,也可以用set查看所有变量(包括env全部、所有自定义的变量、额外变量),命令 echo $[变量名] 可以输出变量值;
我们可以直接定义变量,如 a=1 ;自定义变量只可以是数字、字母和下划线,没有位数限制,不能以数字开头,建议不要用大写字母或一些命令等定义自定义变量,容易混淆有歧义;如果定义值有特殊符号,则必须加上单引号,如 a='/tmp/qqq/' ;如果需要引用命令的值,可以用反引号表示,如 a=`which rm` 这个命令等同于 a='/bin/rm' ;如果需要引用变量定义新变量,则最好加上双引号,如 a="$b"11 ;
变量分为局部变量和全局变量,自定义的变量默认只在当前shell中生效,并不会在子shell里生效,这就是局部变量,如果需要在子shell里生效,则需要声明全局环境,这时就是全局变量,需要用到命令 export ,语法: export a=1 直接声明变量定义!但是这种声明只在本次登录有效,如果需要以后每次登录变量都有效的话,则必须更改变量配置文件了,修改方式如下
① 在 /etc/profile 文件里添加变量【对所有用户有效,并且永久的】
如 vim /etc/profile
export a='/bin/passwd'
注:如果要立即生效需要执行一下 $source /etc/profile ,不然只能重启后生效
② 在根目录 ~/.bash_profile 文件中添加变量【对当前用户生效,并且永久的】
如 vim ~/.bash_profile
export a='/bin/passwd'
注同①
PS:/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置,
/etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。
1.3 系统和用户的环境变量配置文件
在配置文件中定义变量可以永久有效,配置文件有/etc/profile和/etc/bashrc,但是并不建议在这两个文件中添加环境变量,可能会产生不必要的麻烦,建议在 /etc/profile.d/ 目录下创建一个新的shell(以.sh 结尾)就可以了。(新的shell可以直接定义变量,也可以在首行加上固定格式 #! /bin/bash)定义完成后,执行命令 source /etc/profile(/etc/bashrc) 就可以不用重启登录就调用文件内容了!
bashrc文件里面有一个变量 $PS1 就是定义命令行开头显示内容的,其中W只显示当前目录,w显示绝对路径,如截图http://file:///C:/Users/Administrator/AppData/Local/YNote/data/18021050721@163.com/33b0d505759944e2b2ae7e7cef8a6a31/clipboard.png
以上是在系统所有用户都生效,而定义某一个单独用户时,只需要更改家目录中 .bash开头的文件,就可以永久生效了
PS:
.bash_profile和.bashrc文件的区别在于 .bash_profile是需要登录系统(本机、远程客户端等)时调用的,而 .bashrc 则是只要访问系统就会被调用。所以 .bashrc 里的信息会被更加全面的调用使用到!值得注意的是 .bash_profile 每次执行时默认会先调用 .bashrc 的。
编辑回复