命令别名
  alias 显示当前shell中定义的所有别名
  alias 别名='原始命令'
  unalias 别名 取消定义的别名
在命令前加\使用命令本身,而不是别名(或者使用绝对路径执行命令使用命令本身)
 仅对当前用户生效:~/.bashrc
 对所有用户生效:/etc/bashrc
 配置文件配置后不会立即生效需要重新运行配置文件
   source /etc/bashrc
  . /etc/bashrc

文件名通配(globbing)
  * 匹配任意长度的任意字符
  ? 匹配任意单个字符
 [^] 匹配指定字符范围外的任意单个字符
  [ ] 匹配指定字符范围内的任意单个字符,不区分大小写
  [[:upper:]] 大写字母[A-Z]
  [[:lower:]] 小写字母[a-z]
  [[:alpha:]] 所有字母[A-Za-z]
  [[:digit:]] 所有数字[0-9]
  [[:alnum:]] 字母+数字[0-9A-Za-z]
  [[:space:]] 空格
  [[:punct:]] 标点符号 特殊字符

命令历史
  bash默认会保持此前执行过的命令列表,当前shell进程的保存在缓冲区中,缓冲区中的命令会在shell退出时保存在文件.bash_history;使用上下箭头键可以翻看此前执行过的命令:
  history命令用法
  选项:
  -c  清空命令历史
  -d 删除历史中指定的命令 history -d 3
  #  显示最近的#条历史命令 history 5
  -a 追加本次会话新执行的命令历史列表至历史文件
  -n 读取所有在会话列表中的,但是不在当前会话列表中的
  -r 读历史文件附加到历史列表
  -w 保存历史列表到指定的历史文件
  -p 展开历史参数成多个行,但不存在历史列表中
  -s 展开历史参数成一行,附加在历史列表后 (伪造命令)

命令历史相关的环境变量
  HISTSIZE 历史命令中可以保存的个数
  HISTFILE 历史命令保存的文件
  HISTFILESIZE 历史文件中可以保存的命令个数
  HISTTIMEFORMAT="%F %T" 显示时间格式
  HISTCONTROL 控制命令历史的生成机制
      ignoredups  忽略记录重复的命令,连续的相同命令
      ignorespace 以空格开头的命令不会被记录
      ignoreboth 同时具有上面两种特性
    erasedups  删除重复命令

!#    执行history中第#条的命令
 !!    上一条命令
 !-#    表示执行命令列表中的倒数第#条命令
 !$     执行上个命令中的最后一个参数:ESC,.
 !string 执行命令列表中的最近一次以string开头的命令

命令及路径补全
  内部命令:bash程序本身提供的命令
 外部命令:在系统某路经下有一个可执行程序
 命令补全:是通过在PATH环境变量定义的路径中从左往右搜索补全
 路径补全:在给出的打头路径下补全,如果没有打头路径,则为当前目录

Bash快捷键
  Ctrl+A 把光标移动到命令行开头
 Ctrl+E 把光标移动到命令行结尾
 Ctrl+C 非正常中断—终止前台进程
 Ctrl+D 输入完成的正常信号(退出当前终端)
 Ctrl+G 终端声效
 Ctrl+J 换行—与Enter键功能相同
 Ctrl+L 换页—使bash清屏,也可以用来刷新屏幕,对于许多基于屏幕的语言程序而言,如vi,如果意外的信息弄乱了显示,使用Ctrl+L可以让程序刷新屏幕,正确的重绘屏幕
 Ctrl+S 锁住终端显示
 Ctrl+Q 解锁终端显示
 Ctrl+H 后退一格—删除前一个字符
 Ctrl+W 删除或剪切光标前的单词
 Ctrl+K 删除或剪切光标之后的内容
 Ctrl+U 删除光标前的所有内容(如果密码输入错误了,可以用Ctrl+U清除)
 Ctrl+Y 粘贴ctrl+U或ctrl+K剪切的内容
 Ctrl+Z 挂起前台进程,转入后台运行(fg调回命令)
 Ctrl+R 在历史命令中搜索
 Ctrl+P 重复上一条命令
 ESC+T  调换光标前的两个单词
 Ctrl+向右箭头  光标移动到下一个词首
 ESC+F     光标移动到下一个词首
 Ctrl+向左箭头 光标移动到上一个词首 
 ESC+B     光标移动到上一个词首
 ESC+.     调用上一条命令的参数

命令行展开
 ~ 展开为当前用户的家目录
  ~USERNAME 展开为指定用户的家目录
  { } 里面是一个以逗号分割的列表,并将其展开为多个路径
  例如:/tmp/{a,b} 相当于 /tmp/a、/tmp/b

多命令执行
  复合式: 命令会一个接一个的执行
    COMMAND1;COMMAND2;COMMAND3;...
  date; who | wc -l

 子shell:所有的输出看做一个整体,都被发送给单个STDOUT和STDERR
  (date; who | wc -l ) >>/tmp/trace
演示:
[root@centos7 ~]# date;who
2017年 02月 19日 星期日 11:51:24 CST
root tty1 2017-02-19 11:50
root pts/0 2017-02-19 11:02 (192.168.1.100)

# 按顺序执行
[root@centos7 ~]# date;who |wc -l
2017年 02月 19日 星期日 11:50:21 CST
2

# 为子shell,括号中的执行结束后,再管道
[root@centos7 ~]# (date;who) |wc -l
3

Bash特性引用
 '' 强引用,不会进行变量替换
 "" 弱引用,会进行变量替换
 `` 命令替换,引用命令的执行回显结果,另外一种方式$()
 ${变量名} 变量替换,或者直接"$变量名"

I/O重定向及管道
  I/O设备在系统起来的时候注册IO端口(这些端口其实就是寄存器),注册IO端口就是给这些寄存器一个地址,CPU通过这些寄存器地址跟IO设备交互

 Linux系统中标识用户用UID,标识组用GID,标识进程用PID;都是通过名称解析将名字转换成ID;同样的系统在运行的时候,会打开很多文件,这些打开的文件也有ID,通常叫文件描述符(windows中叫文件句柄):file descriptor简写为FD,是内核用来追踪当前打开的文件属性;文件描述符是内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符;读写文件也需要使用文件描述符来指定待读写的文件

 INPUT:标准输入/dev/stdin  文件描述符为0  标准默认输入是键盘
 OUTPUT:标准输出/dev/stdout  文件描述符为1 标准默认输出是显示器
  标准错误输出:/dev/stderr  文件描述符为2 标准默认错误输出是显示器

I/O重定向:改变标准的输入和输出位置就是I/O重定向
 输入重定向 <、<<
   <  输入重定向
  << 此处创建文件,常用于在脚本中创建文件或生成菜单
  创建文件例子:将输出信息保存到/tmp/filename文件
    cat > /tmp/filename << EOF
    a:show user info
    b:show disk info
    c:show cpu info
    EOF      
   生成菜单例子:EOF为起始结束符,可以用任意字符,但是起始结束符要一样
    cat << EOF
    a:show user info
    b:show disk info
    c:show cpu info
    EOF
   
  输出重定向 >、>>
  >  以覆盖的方式,把命令的正确输出重定向到指定的文件或设备
  >> 以追加的方式,把命令的正确输出重定向到指定的文件或设备

set命令作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号"+"和"-"的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。
  set -C 禁止覆盖重定向至已经存在的文件
  set +C 关闭上述特性
  >|    在-C 特性下,强制使用覆盖重定向

/dev/null:bit bucket 位桶,所有输入到该设备的信息都会被丢弃,在编写脚本不需要命令指定的返回结果就可以重定向到该设备

错误重定向:2>、2>>,会输出正确信息
   2>  以覆盖的方式,把命令的错误输出重定向到指定的文件或设备
  2>> 以追加的方式,把命令的错误输出重定向到指定的文件或设备

同时重定向正确输出和错误输出:
  &>  以覆盖的方式,把命令的正确和错误输出重定向到指定的文件或设备
  &>> 以追加的方式,把命令的正确和错误输出重定向到指定的文件或设备
   command &> /path/to/somefile
   command > /path/to/somefile 2>&1

  正确输出到outfile,错误输出errfile
    command > /path/to/outfile 2>/path/to/errfile

合并多个程序的标准输出
  (ls;who) > /tmp/test.txt

  管道:把前一个命令的输出当下一个命令的输入
    组合目的单一的小程序完成复杂的任务
   command1 | commadn2 | command3 | ......
    command1、commadn2是在当前shell执行的,command3(最后一个命令)第三个命令后是在子shell中运行
tee 分叉输出,命令不会处理,会送到下一个管道
 将输出信息分叉,/etc/passwd的文件内容输出到/tmp/filename;同时给管道的下一个命令wc命令作为输入统计行数
  cat /etc/passwd | tee /tmp/filename | wc -l 

tr命令
  转换或删除字符,tr '集合1' '集合2',必须使用管道输出作为该命令参数
 转换字符:会把第一个字符集的对应转换为第二个字符集中的对应转换
  [root@localhost ~]# echo "hello word" | tr [a-z] [A-Z]
  HELLO WORD
 -d 删除字符集中出现的字符
   [root@localhost ~]# echo "hello word" | tr -d r
   hello wod
 -s 压缩输入中重复的字符
   [root@localhost ~]# echo "GNU is     not    UNIX. Recursive right ?" | tr -s ' ' (去除连续重复的空白字符)
   GNU is not UNIX. Recursive right ? 
 -c 取字符集的补集 

演示:
tr 加选项 -t 和不加的区别,如下:
# 对位替换
[root@centos7 ~]# echo abcde |tr 'a-c' 'A-Z'
ABCde
[root@centos7 ~]# echo abcde |tr 'abc' 'A-Z'
ABCde
[root@centos7 ~]# echo abcde |tr 'abc' 'D-Z'
DEFde
[root@centos7 ~]# echo abcde |tr 'a-c' 'xyz'
xyzde

# 如果SET2对应的位数不及SET1时,会用SET2对应SET1对应的最后一位补全SET1替换位
[root@centos7 ~]# echo abcde |tr 'abcde' 'xyz'
xyzzz
[root@centos7 ~]# echo abcde |tr 'abcd' 'xyz'
xyzze

# 将第一字符集对应的字符转化为第二字符集对应的字符。
[root@centos7 ~]# echo abcde |tr -t 'abcd' 'xyz'
xyzde

# 用空格替换回车换行符\n
[root@centos7 ~]# ls /root/ |tr '\n' ' '

#处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格
[root@centos7 ~]# echo "xt.,l 1 jr#'[:digit:]'mn2 c*/fe3 uz4" |tr -cd '[:digit:] \n'
1 2 3 4

#将PATH变量显示在独立的一行
[root@centos7 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@centos7 ~]# echo $PATH |tr ':' '\n'
/usr/lib64/qt-3.3/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/bin

Bash 基础特性的更多相关文章

  1. linux文件系统及bash基础特性

    linux文件系统 一.根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上.根文件系统至关重 ...

  2. Linux bash基础特性二

    shell脚本的组成部分 shebang 各种命令组合 编程变量种类 本地变量: 仅仅在当前的shell生效 环境变量: 在当前和子shell生效 局部变量: shell进程某代码片段 位置变量: $ ...

  3. Linux bash基础特性一

    命令别名 alias cdnet=”cd /etc/sysconfig/network-scripts” 针对用户的别名: “~/.bashrc” 针对系统的别名:”/etc/bashrc” 重读配置 ...

  4. bash基础特性3(shell编程)

    Linux上文本处理三剑客: grep:文本过滤工具 sed:stream editor,文本编辑工具 awk:文本报告生成器 grep -v:显示不能够被pattern匹配到的行 -i:忽略字符大小 ...

  5. bash基础特性2

    命令别名(alias) ()alias 显示当前shell进程所有可用的命令别名: ()alias NAME='VALUE' 定义别名NAME,相当于执行命令value ()unlias 撤销别名 注 ...

  6. bash基础特性1

    shell俗称壳(用来区别于内核),是指“提供使用者使用界面”的软件,就是一个命令行解释器. BASH是SHELL的一种,是大多数LINUX发行版默认的SHELL,除BASH SHELL外还有C SH ...

  7. linux bash基础特性

    使用history命令,取得命令历史,当bash进程结束后,会把命令历史存放到文件中,下次开机还能看到命令历史. 定制history:通过设置环境变量,来定制history 环境变量$HISTSIZE ...

  8. linux bash基本特性

    一.bash 基础特性 (1)命令历史的功能 history: 环境变量 HISTSIZE:命令历史记录的条数 HISTFILE: ~/.bash_history 每个用户都有自己独立的命令历史文件 ...

  9. cmd 与 bash 基础命令入门

    身为一个程序员会用命令行来进行一些简单的操作,不是显得很装逼嘛!?嘿嘿~ ヾ(>∀<) cmd 与 bash 基础命令入门       简介       CMD 基础命令          ...

随机推荐

  1. Ubuntu16.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...

  2. Java7里try-with-resources分析--转

    原文地址:http://blog.csdn.net/hengyunabc/article/details/18459463 这个所谓的try-with-resources,是个语法糖.实际上就是自动调 ...

  3. FPGA之阻塞赋值与非阻塞赋值

    Verilog语言中讲的阻塞赋值与非阻塞赋值,但从字面意思来看,阻塞就是执行的时候在某个地方卡住了,等这个操作执行完在继续执行下面的语句,而非阻塞就是不管执行完没有,我不管执行的结果是什么,反正我继续 ...

  4. Gram矩阵 迁移学习 one-shot 之类

    格拉姆矩阵是由内积空间中的向量两两内积而得.格拉姆矩阵在向量为随机的情况下也是协方差矩阵.每个数字都来自于一个特定滤波器在特定位置的卷积,因此每个数字代表一个特征的强度,而Gram计算的实际上是两两特 ...

  5. Android 开发环境安装配置手册

    本文指导,如何一步步搭建Android开发平台. 1  下载软件 n JDK 1.5+   到  http://java.sun.com/javase/downloads/index.jsp 下载 n ...

  6. PIC18F26K20

    Clock Four Crystal modes, Two External clock modes,  Two RC Oscillator, Internal oscillator, PLL

  7. 优动漫PAINT-绘制透明布料教程

    原是一篇日语教程,觉得挺不错的,就劳烦会日语的朋友帮忙翻译了,特此分享!希望可以帮助到大家在绘画上的学习!原教程转载优动漫官网. 作者:JaneMere 相关资讯还可以关注www.dongmansof ...

  8. (转载)比较web ui 框架

    以下是几个精致的web UI框架 1.Aliceui Aliceui是支付宝的样式解决方案,是一套精选的基于 spm 生态圈的样式模块集合,是 Arale 的子集,也是一套模块化的样式命名和组织规范, ...

  9. UVA-12083 Guardian of Decency 二分图 最大独立集

    题目链接:https://cn.vjudge.net/problem/UVA-12083 题意 学校组织去郊游,选择最多人数,使得任意两个人之间不能谈恋爱 不恋爱条件是高差大于40.同性.喜欢的音乐风 ...

  10. nginx index.html

    [root@web03 nginx]# ls -l|grep -v temptotal 36drwxr-xr-x 2 root root 4096 Jun 7 15:36 confdrwxr-xr-x ...