bash小结
2024-09-05 04:45:32
context:CentOS
什么是shell?
shell就是与计算机交互的接口。
linux支持的shell
[root@node1 ~]# cat /etc/shells
/bin/sh #被 /bin/bash 所取代
/bin/bash #Linux 预设的 shell
/sbin/nologin #特殊的shell
/bin/dash
/bin/tcsh #整合 C Shell ,提供更多的功能
/bin/csh #被tcsh取代
shell的功能:
- 历史命令查询功能:(history)(.bash_history 记录上次登录之前执行的命令,本次登录命令在内存中,注销时会刷入文件)
- 命令与文件补全功能 :(Tab)
- 命令别名设定功能: (alias)
- 工作控制、前景背景控制: (job control, foreground, background)
- 程序化脚本: (shell scripts)
- 通配符
- bash 的进站与欢迎讯息: /etc/issue, /etc/motd
- 终端机设定stty,set
bash中指令的运行顺序
- 以相对/绝对路径执行指令,例如『/bin/ls 』或『./ls 』;
- 由 alias 找到该指令来执行;
- 由 bash 内建的 (builtin) 指令来执行;
- 透过 $PATH 这个变量的顺序搜寻到的第一个指令来执行
ps:先alias,然后是$PATH中的/bin/ls。
type -a CMD,查询命令是否为内建命令,同时它也指出了执行该命令时,去哪里寻找该命令路径的顺序。
bash 的环境配置
1.login和nolog
- inlogin shell:
取得 bash 时需要完整的登入流程的,就称为 login shell。举例来说,你要由 tty1 ~ tty6 登入,需要输入用户的账号与密码,此时取得的 bash 就称为login shell
- non-login shell:
取得 bash 接口的方法不需要重复登入的举动,举例来说:
(1)你以 X window 登入 Linux 后,再以 X 的图形化接口启动终端机,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 nologin shell 了。
(2)你在原本的 bash 环境下再次下达 bash 这个指令,同样的也没有输入账号密码, 那第二个 bash (子程序) 也是 nologin shell 。
2.login shell读取配置文件流程
ps:
- /etc/profile:这是系统整体的设定,你最好不要修改这个文件;
- ~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人设定,你要改自己的数据,就写入这里!
数据流重导向
stdin 0 < <<
stdout 1 > >>
stderr 2 2> 2>>
示例1:
[root@node1 test]# ls
a
[root@node1 test]# cat a b cat: b: No such file or directory
[root@node1 test]# cat a b >stdout >stderr
[root@node1 test]# ls
a stderr stdout
[root@node1 test]# cat std*
cat: b: No such file or directory [root@node1 test]# cat stderr
cat: b: No such file or directory
[root@node1 test]# cat stdout
示例2:垃圾桶/dev/null
[root@node1 test]# cat a b &>/dev/null
[root@node1 test]# cat a b >/dev/null >&
示例3:读取键盘输入
[root@node1 test]# cat >catfile
hello world
what a good day! #Ctrl+d结束输入
[root@node1 test]# cat catfile
hello world
what a good day! #eof取代信号
[root@node1 test]# cat >catfile <<eof
> Helo!
> What a good day!
> eof
[root@node1 test]# cat catfile
Helo!
What a good day!
示例4:读取文件输入
[root@node1 test]# cat >catfile <a
[root@node1 test]# cat catfile [root@node1 test]# cat a
什么时候需要重定向?
- 屏幕输出的信息很重要,而且我们需要将他存下来的时候;
- 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
- 一些系统的例行命令 (例如写在 /etc/crontab 中的文件) 的执行结果,希望他可以存下来时;
- 一些执行命令的可能已知错误讯息时,想以『2> /dev/null 』将他丢掉时;
- 错误讯息与正确讯息需要分别输出时。
最新文章
- Windows下nodejs 模块配置 全局模式与本地模式的区别
- DevExpress 2015.2发布 看看有哪些更新
- Android开发之MediaPlayer类
- Java Spring 中你不知道的注入方式
- Maven学习:Eclipse使用maven构建web项目(转)
- SSM搭配中的web.xml的配置信息
- 关于margin-right的应用问题
- UI自动化测试简介及Selenium工具的介绍和环境搭建
- 基于hashicorp/raft的分布式一致性实战教学
- 目前大热的AI和SLAM的职业发展的想法
- Day23--Python--常用模块02--序列化,configparser
- poj 3734 方块涂色 求红色 绿色方块都为偶数的方案数 (矩阵快速幂)
- MYSQL的历史
- GENIL_BOL_BROWSER 中显示的Object Name 是root object的名字
- PC Access的使用
- JIRA状态为任务结束,但是解决结果为未解决相关配置
- cat /proc/net/sockstat
- 理解SQL Server中索引的概念,原理
- c# 获取当前程序运行根目录
- PHP简单利用 token 防止表单重复提交