第十四讲——bash特性 本文共有7236个字,关键词: bash这个玩意儿看起来好像没有怎么见过,实际上我们已经使用了很久了,是的,就是CLI,一个shell。 shell:提供用户交互接口的程序。 因为bash功能强大且开源,所以很多发型版本默认的安装版本就是bash。 shell启动于用户输入正确的用户密码后,根据/etc/passwd中的第七字段来确认用户登录后的shell环境。 如果当前用户登录了两个相同的用户,他们的shell各不相干。 bashell程序只有一个,但是一个程序可以有多个进程。 进程是程序的副本,也是程序执行的实例。 linux操作系统允许一个用户登录多次,且每个登录后的终端都是独立的。 进程名可能会相同,但是内核是通过进程号来进行管理的。 shell是一个程序,但是它自身才有很多的内置命令。 shell是有shell和子shell的概念的,即shell中还可以再打开shell,且相互独立。可使用exit退出。 对于子shell而言,它本身bin不知道还有一个sell在运行,它认为自己就是一个独立的shell,父shell也是如此,即进程间相互不能知道彼此的存在。 bashell的特性: 1.命令历史 history 2.管道重定向 | 3.命令别名 alias 4.命令行编辑 5.命令展开 {花括号展开} ~波浪线展开 6.文件名通配 7.支持变量 8.支编程(.sh)即bashell是一个脚本语言解释器,支持脚本的编写 bash命令行编辑的快捷键 命令行光标跳转 ctrl+a 跳到行首 ctrl+e 跳到行尾 ctrl+u 删除光标前的所有字符(至行首) ctrl+k 删除光标后的所有字符(至行尾) ctrl+左右键 跳跃一个单词 ctrl+l 清屏 history 命令历史查看 -c 清空命令历史 history -d 500 删除第500条命令 history -d 500 3 删除从第500条开始的3条 用户登录进去执行的命令都在内存缓冲区里面,正常退出会保存到家目录下的~/.bash.hiatory -w 保存历史命令至历史命令文件 !n 执行历史命令中的第n条命令 !-n 执行历史命令中倒数第n条命令 !! 执行上一条命令 !string 执行历史命令中最近一个以指定字符串开头的命令。 string为指定的字符串 !$ 引用上一条命令的最后一个参数 按ESC键后再按.(dot)也可以引用上一条命令的最后一个参数 ALT + . 引用上一条命令的最后一个参数。 环境变量: PATH:命令搜索路径。 HISTSIZE:历史命令缓冲区大小。默认为1000 bash中的命令补全 PATH环境变量设置正常(命令路径),按下tab键会补全命令。 路径补全,在给出打头路径下查找,不唯一时,按两次tab键可以显示路径下的内容。 命令别名:是shell的别名 alias rm=’rm -rf’ 在shell中定义的别名只是在当前shell进程中有效,永久有效需要写入配置文件,也可以是全局的。 unalias 撤销别名 命令替换: 把命令中的某个子命令替换为命令的执行结果。 echo “This dir is `pwd`” 使用反引号。 echo “This dir is $(pwd)” 使用$()引用命令。 echo执行前先执行pwd bash 支持的引号 “ 反引号,命令替换 “” 弱引用,引号内可以实现变量的替换。 ” 强引用,不完成变量的替换。 站在用户的角度shell有两种 一是登录式shell 正常通过某终端登录的shell 也可以是su – username或者su -l username 登录式shell读取配置文件的顺序: /etc/profile——>/etc/profile.d/*.sh—–>~/.bash_profile—–>~/.bashrc—–>/etc/bashrc /etc/bashrc全局的但是是最后读取的 二是非登录式shell su username 图形界面下的命令窗口 自动执行的shell脚本 非登录式shell读取配置文件的顺序: ~/.bashrc—–>/etc/bashrc—–>/etc/profile.d/*.sh 不读取环境设定 编辑完文件后重启或者重新登录生效。 bash的配置文件:按作用范围 全局配置 /etc/bashrc /etc/profile /etc/profile.d/*.sh 对所有用户生效 个人配置(家目录下) ~/.bashrc ~/.bash_profile 对相应用户生效。 profile 类文件 1.设定环境变量 2. 运行命令或者脚本 3.已登录就执行的命令,准备工作 bashrc 类文件 1.设定本地变量 2.定义命令别名 如果一个环境变量在全局上定义了,个人用户也定义了,以个人用户的为准并生效,即作用范围越小越是最终生效。 bash是shell脚本解释器 脚本时shell提供的能力 所以脚本一定是某个shell的脚本,或者某个解释器的脚本。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2016-12-14 评论 1543 次浏览