bash的发展

1974年 贝尔实验室 Bourne Bourne Shell --> Bsh.sh
1978年 berke bill jey C shell --> Csh tcsh
80年代初,贝尔实验室 Korn korn shell -->Ksh
1983年左右,基于bsh和ksh开发了bourne-again shell --> bash 红帽里面默认使用的shell

查看当前系统支持的shell类型

 cat /etc/shells

# List of acceptable shells for chpass().
# Ftpd will not allow users to connect who are not using
# one of these shells. /bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
#/bin/zsh
bash
.命令历史,命令补全
.管道,重定向
.命令别名
.命令行编辑
.命令行的展开
.文件名的通配
.变量的设定
.编程

bash的命令历史记录

每个用户的家目录里面,有一个隐藏文件叫.bash_history
默认情况下,内存中的命令历史不会自动的存放到文件中,除非注销或重启

history 查看命令历史记录
-c:清空命令历史缓冲区
-w:手动的将历史缓冲区保存至文件

!1 :执行曾经执行过的第一条命令

命令补全

TAB键(由于shell中包含的PATH变量才能命令补全)
单击TAB建:补全唯一存在的命令
双击TAB建:命令参数在不唯一情况下为我们提供选择列表

echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

ESC+. 把上一个命令执行的最后一个参数补全(不同时按)

!$ : 把上一个命令执行的最后一个参数补全

ALT+. :在终端上有效。如上功能(同时按下)

管道

连接两个命令的通道,将前面命令的输出结果作为后面命令的执行条件或参数来使用
管道的符号: |
所有参与管道连接的命令一般都必须有输出结果,否则没有意义

命令的别名

自定义命令
alias
定义一个命令的别名;查看当前所有已经定义的别名
unalias
取消一个定义过的命令的别名

在设置命令别名的时候,使用命令来实现的会立即生效,但是注销后失效
alias cp='cp -i'

写入.bashrc,永久生效

开关机

注销: exit ,logout ,ctrl+d
重启: shutdown -r (now,0,+#,12:00) , reboot , init 6
关机: shutdown -h (now,0,+#,12:00), poweroff,halt,init 0

I/O重定向

  • 文件描述符

0:标准输入:从键盘输入
1:标准输出:到显示器上的输出
2:标准错误:到显示器的错误消息

  • 输入重定向

符号:<

  • 输出重定向

符号:> (覆盖输出重定向)
>>(追加输出重定向)

<<:here document(此处文档)

cat << EOF > test.txt
das
sdas
sadas
EOF

  • 错误重定向 2>, 2>>

/dev/null 黑洞设备

echo $? 用来描述上一条命令是否成功执行,如果成功执行,返回值为0;如果执行失败,返回值为1-127间的正整数。1,2,127被系统保留,其他我们可以自己定义

  • &>:同时重定向(错误输出重定向)

一个命令在执行之后,有两个返回值,
1.命令执行结果返回值
2.命令执行状态返回值

创建文件
> new.txt
echo > new.txt

BASH中的特殊符号 man 7 glob

 .文件名通配符
*:通配绝大多数的多个字符(文件名最开始的.无法通配)。任意多个任意字符
?:通配除了文件名开头的.以外的任意单个字符
[]:通配任意指定范围内的单个字符(不允许包括特殊符号)
^:脱字符,取反,不包括,跟中括号配合使用:
[:alpha:]:不区分大小写的字母,大写和小写字母
[:lower:]:小写字母
[:upper:]:大写字母
[:digit:]:数字
[:alnum:]:大写字母、小写字母和数字
[:space:]:空格
[:punct:]:特殊符号 ls *[[:space:]]* 中间带空格
ls *[^[:digit:]]
.各种引号
"":弱引用符号,正常进行变量代换
'':强引用符号,不进行变量替换
``:shell将反引号引用的内容当作命令优先执行,也叫命令替换 相当于$(命令)
.反斜线
\ 转义字符,将其后一个字符转义为普通字符
.逻辑操作符
) &&-逻辑与
命令1 && 命令2
如果命令1的执行状态返回值为假,则命令2不执行
如果命令1的执行状态返回值为真,则命令2执行 只要前面为假,整个结果一定为假
只要前面为真,整个结果取决于后者
只要前面为假,后面不再判断
mkdir /bin && cd /bin )||-逻辑或
只要一个结果为真,整个结果就是真
只要判断一个结果为真,后面不再判断 如果命令1的执行状态返回值为假,则命令2执行
rm -rf /china || cd /
)!-逻辑非
! 命令:将命令的执行状态返回值取反
! ls /china && mkdir /china
注意:!后面必须有空格,若不加空格就是读取命令缓冲区
!改变的是命令的执行状态返回值
) :-并列

变量的设定

  • bash的环境变量配置文件

从作用生效范围来划分,有两类
全局配置文件
/etc/profile /etc/bashrc /etc/profile.d/*.sh
用户个人配置文件(用户家目录下)
.bash_profile .bashrc

从配置文件的功能来将,有两类
profile类
设置全局变量,执行命令或脚本
bashrc类
设置本地变量,定义命令的别名

  • 登录式shell

①su - | -l | --login USERNAME 的加载顺序
/etc/bashrc-->/etc/profile.d/*.sh
②从终端正常登录配置文件加载顺序:/etc/profile->/etc/profile.d/*.sh->-/.bash_profile->-/.bashrc->/etc/bashrc

  • 非登录式shell

①su USERNAME
②在图形界面中打开的终端窗口
配置文件加载顺序:
/etc/profile->/etc/profile.d/*.sh->-/.bashrc

/etc/profile的作用:
USER变量;
LOGNAME变量;
MAIL变量;
PATH变量;
HOSTNAME变量;
HISTSIZE变量;
umask;
调用/etc/profile.d/*.sh

.bash_profile的作用
调用了.bashrc文件
在PATH变量后面加入了“:$HOME/bin”这个目录

.bashrc的作用
定义默认的别名
调用/etc/bashrc

  • 注销时生效的环境变量配置文件

.bash_logout

历史记录配置文件
.bash_history

shell登录信息
本地终端欢迎信息:/etc/issue

alt + F2 切换终端

远程终端欢迎信息:/etc/issue.net
转义字符不能使用,是否显示此欢迎信息由SSH的配置文件
/etc/ssh/sshd_config决定,加入“Banner /etc/issue.net
才能显示(记得重启SSH服务)

service sshd restart

登陆后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息

【linux之bash】的更多相关文章

  1. Linux下Bash入门学习笔记

    学习好shell编程是很有用的,可以使用shell脚本轻巧地完成有趣的工作. 本文地址:http://www.cnblogs.com/yhLinux/p/4047516.html 1. Bash实例, ...

  2. 关于LINUX权限-bash: ./startup.sh: Permission denied

    关于LINUX权限-bash: ./startup.sh: Permission denied <script type="text/javascript"></ ...

  3. [linux服务器][bash]让切换目录更方便

    本文转载:[linux服务器][bash]让切换目录更方便: 一,为何要使用这几个命令?   可能大家会有疑问,为何要使用这几个命令,   难道用cd不就可以切换目录了吗?   没错,使用cd就可以切 ...

  4. Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法

    Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法 经常在ubuntu 64位下运行 ./xxx 会跳出来说没有这个文件或者目录,但是ls看又有这个文件,很是奇怪. 其实原因很 ...

  5. Linux常用 bash

    学会Linux常用 bash命令 目录 基本操作1.1. 文件操作1.2. 文本操作1.3. 目录操作1.4. SSH, 系统信息 & 网络操作 基本 Shell 编程2.1. 变量2.2.  ...

  6. Linux Shell Bash 带有特殊含义的退出码

    linux在执行完一条命令后,使用 echo $? 会显示上一条命令是否执行成功,相关状态码如下 0为成功 表格 D-1. "保留的"退出码 退出码的值 含义 例子 注释 1 通用 ...

  7. Linux中Bash发现重大安全漏洞修改方法

    北京时间9月25日消息,Linux用户今天又得到了一个“惊喜”!Red Hat安全团队在 Linux 中广泛使用的Bash shell中发现了一个隐晦而危险的安全漏洞.该漏洞被称为“Bash Bug” ...

  8. linux出现bash: ./java: cannot execute binary file 问题的解决办法

    问题现象描述: 到orcal官网上下载了两个jdk: (1)jdk-7u9-linux-i586.tar.gz ------------>32位 (2)jdk-7u9-linux-x64.tar ...

  9. 【转】Linux 技巧: Bash 参数和参数扩展

    重点看下清单7 现在,很多 Linux® 和 UNIX® 系统上都有 bash shell,它是 Linux 上常见的默认 shell.通过本文,您将了解到如何在 bash 脚本中处理参数和选项,以及 ...

  10. 10 分钟学会Linux常用 bash命令

    目录 基本操作 1.1. 文件操作 1.2. 文本操作 1.3. 目录操作 1.4. SSH, 系统信息 & 网络操作 基本 Shell 编程 2.1. 变量 2.2. 字符串替换 2.3. ...

随机推荐

  1. DB 注意事项 优化数据库查询

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  2. 改进ban冒泡排序

    设置一标志性变量pos,用于记录每趟排序中最后一次进行交换的位置.由于pos位置之后的记录均已交换到位,故在进行下一趟排序时只要扫描到pos位置即可. //改进后算法如下: function bubb ...

  3. 科普:String hashCode 方法为什么选择数字31作为乘子

    1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法.然后大致看了一下 hashCode 的实现,发现并不是很复杂.但是我从源码中发现了一个奇怪的数字,也就是本文的主 ...

  4. 怎么解决dede首页网址自动加上index.html

    怎样去掉dedecms5.7(织梦)首页url后index.html有三种方法 1.去配置你的空间的默认首页地址.把index.html移到默认文本最前面.(确保你的默认文档里面有index.html ...

  5. 数据库复习总结(6)-SQL语句入门(脚本、命令)

    脚本操作: 脚本操作 注释:--单行注释,/**/多行注释 数据库:创建.删除 (可以通过查看master数据库中的sysdatabase表,来了解当前存在的数据库) 点击“新建查询”,选中哪句执行哪 ...

  6. maven 阿里云仓库配置

    <!-- 设定主仓库,按设定顺序进行查找. --> <repositories> <repository> <id>nexus-aliyun</i ...

  7. Java进阶篇(四)——Java异常处理

    程序中总是存在着各种问题,为了使在程序执行过程中能正常运行,使用Java提供的异常处理机制捕获可能发生的异常,对异常进行处理并使程序能正常运行.这就是Java的异常处理. 一.可捕获的异常 Java中 ...

  8. junit忽略测试方法

    JUnit 提供注解 org.junit.Ignore 用于暂时忽略某个测试方法或者说整个类.因为有时候由于测试环境受限,并不能保证每一个测试方法都能正确运行. 1,方法级别上使用@ignore来注释 ...

  9. robotframework安装及入门指南

    将很久之前自己在本地记录的一些笔记发表到随笔来,希望能够帮到一些童鞋~ robotframework安装及入门指南 本文主要介绍robotframework在windows环境的安装过程! 安装步骤 ...

  10. Java 线程和多线程执行过程分析

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...