bash及其特性:
shell:外壳。用户直接接入计算机的时候所使用的外壳程序
linux允许一个用户账户登录多次,而这多次登录的每一个打开的shell都是独立的互不相干的shell,它们是三个进程,每一个进程只认为当前系统所运行的程序支持它自己,也就是意味着每一个进程是不知道别的进程存在的。
进程:在每个进程看来,当前主机上只存在内核和当前进程
进程是程序的副本,进程是程序执行的实例

用户工作环境:
bash:工作环境可以是不一样的
shell,子shell,shell里可以打开shell,exit可以退出当前shell,最后一层shell退出时退出系统
shell还可以交互打开,bash下可以打开csh,csh里也可以打开ksh。

bash:
  1.命令历史、命令补全
  2.管道、重定向
  3.命令别名
  4.命令行编辑
  5.命令行展开
  6.文件名通配
  7.支持使用变量
  8.支持编程

----特性----

命令行编辑:
光标跳转:
  ctrl+a:跳到命令行首
  ctrl+e:跳到命令行尾
  ctrl+u:删除光标至命令行首的内容
  ctrl+k:删除光标至命令行尾的内容
  ctrl+左右箭头可以跳跃一个单词
  ctrl+l:清屏

命令历史:
  bash会自动记录过去曾经执行过的命令,它会把命令保存在内存的一块缓冲区内,使用上下箭头就可以翻出来
  history:查看命令历史 //重要
    -c:清空整个命令历史
    -d OFFSET [n]:删除指定位置的命令。-d 跟参数 删除参数那一行。-d 跟参数 跟10 删除参数那一行起10个命令
    -w:保存命令历史至历史文件中 //家目录下的 .bash_history

环境变量:
PATH:命令搜索路径
HISTSIZE:命令历史缓冲区大小
  [root@localhost ~]# echo $HISTSIZE
  1000

命令历史的使用技巧:
  !n:执行命令历史中的第n条命令
  !-n:执行命令历史中的倒数第n条命令
  !!:执行上一条命令
  !string:执行命令历史中最近一个指定字符串的命令
  !$:引用前一个命令的最后一个参数
  Esc,.:引用前一个命令的最后一个参数
  Alt+.:引用前一个命令的最后一个参数

命令补全:
tab:命令补全-在命令搜索路径下查找
  路径补全-在给的打头路径下查找
tab tab显示与已输入字符的所有相关

命令别名:
alias CMDALISA='COMMAND [options] [arguments]'
  [root@localhost ~]# cls //windows下cls是清屏,linux下clear是清屏
  bash: cls: 未找到命令...
  [root@localhost ~]# alias cls=clear
  再次输入cls就是清屏 //这些定义跟变量的定义一样,它是shell的特性,因此,如果shell关闭了,再启动,这个命令别名就没有了,所以我们定义的别名,只在当前shell的生命进程周期有效
alias
  不带任何参数和选项的alias命令,可以显示当前系统上定义的所有的别名
unalias
  unalias CMDALIAS
  撤销命令别名
  [root@localhost ~]# unalias cls
  [root@localhost ~]# cls
  bash: cls: 未找到命令...

命令替换:
  把命令中某个子命令替换为其执行结果的过程
  $(COMMAND) //第一种
  `COMMAND` //第二种,这里是反引号,反引号是波浪线下那一个对应的键

bash支持的引号:
  ``:命令替换
  "":弱引用,可以实现变量替换
  '':强引用,不完成变量替换

文件名通配,globbing
  *:匹配任意长度的任意字符
  ?:匹配任意单个字符
  []:匹配指定范围内的任意单个字符 //特别注意的是[a-zA-Z],大小写字母都取应这样表达
  [^]:匹配指定范围外的任意 单个字符
补充:
  [:space:]:空白字符
  [[:space:]]:所有的空白字符。里面是取值范围
  [:punct:]:标点符号
  [:lower:]:小写字母
  [:upper:]:大写字母
  [:alpha:]:大小写字母
  [:digit:]:数字
  [:alnum:]:数字和大小写字母
  # man 7 glob:忘记的话,查看说明
  [[:alpha:]]*[[:space:]]*[[:alpha:]]:找 字母开头+空白字符+字母结尾 的通配名
  [[:alpha:]]*[[:space:]]*[^[:alpha:]]:找 字母开头+空白字符+非字母结尾 的通配名
    [yanhan@localhost ~]$ ls
    公共 模板 视频 图片 文档 下载 音乐 桌面
    [yanhan@localhost ~]$ touch abc xyz abc123 xyz123 123abc 123xyz 'a b' 'a 3'
    [yanhan@localhost ~]$ ls
    123abc a 3 abc xyz 公共 视频 文档 音乐
    123xyz a b abc123 xyz123 模板 图片 下载 桌面
    [yanhan@localhost ~]$ ls [[:alpha:]]*[[:space:]]*[[:alpha:]]
    a b
    [yanhan@localhost ~]$ ls [[:alpha:]]*[[:space:]]*[^[:alpha:]]
    a 3

5_bash的更多相关文章

随机推荐

  1. python使用matplotlib绘制折线图教程

    Matplotlib是一个Python工具箱,用于科学计算的数据可视化.借助它,Python可以绘制如Matlab和Octave多种多样的数据图形.下面这篇文章主要介绍了python使用matplot ...

  2. Python学习之旅(二十五)

    Python基础知识(24):正则表达式 正则表达式:检查一个字符串是否与某个模式匹配 \d :匹配数字 \w :匹配字母或数字 . :匹配任意字符 {n} :匹配n个字符 {m,n} :匹配m到n个 ...

  3. python全栈开发 * 35 知识点汇总 * 180720

    35 socket 一些常用方法 验证客户端信息 添加随机字符串 socketserver模块 一.socket模块中一些常用方法1.send和sendall的区别2.conn.getpeername ...

  4. Luogu 1042 - 乒乓球 - [简单模拟]

    题目链接:https://www.luogu.org/problemnew/show/P1042 题目背景国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中 ...

  5. dataTransfer对象

    HTML5拖拽的数据传输 虽然通过dragstart.drag和dragend事件实现了原生拖拽.但是这仅仅是拖拽,在IE6和IE7中还是有些拖拽问题,并且也没有实现数据的交换.为了实现数据的交换,I ...

  6. [httpd] httpd server 在低负载的情况下对SYN无响应

    如题: 两台client通过load balance访问httpd server.两个client交互访问.load balance处于fullnat模式. server在低负载情况下,常常对某一个c ...

  7. QSS独门秘籍:subcontrol

    QSS是C++ Qt中的界面美化神器,其语法和CSS区别不大,但是QSS有一个独有的功能——subcontrol,这是CSS所没有的,一个widget往往由多个子部件构成,利用subcontrol可以 ...

  8. NuGet Install-Package报错解决Package Manager Console error - PowerShell version 2.0 is not supported. Please upgrade PowerShell to 3.0 or greater and restart Visual Studio.

    问题: Package Manager Console error - PowerShell version 2.0 is not supported. Please upgrade PowerShe ...

  9. 算数运算符: + - * / //(地板除) %(取余) **(幂运算) / 比较运算符 > < >= <= == !=

    # ### python运算符 #(1) 算数运算符: + - * / //(地板除) %(取余) **(幂运算) var1 = 5 var2 = 8 # +res = var1 + var2 pri ...

  10. CSS样式中文字的换行

    在我们做输出时可能会遇到这样一个问题,就是汉字和英文字母相遇,然后自动换行的问题.例如,当我在输出产品标题时,由于产品名称比较长,包括汉字和英文字母,FF下浏览是正常的,而IE下面 英文会出现换行.当 ...