Bash 基础特性
命令别名
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 基础特性的更多相关文章
- linux文件系统及bash基础特性
linux文件系统 一.根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上.根文件系统至关重 ...
- Linux bash基础特性二
shell脚本的组成部分 shebang 各种命令组合 编程变量种类 本地变量: 仅仅在当前的shell生效 环境变量: 在当前和子shell生效 局部变量: shell进程某代码片段 位置变量: $ ...
- Linux bash基础特性一
命令别名 alias cdnet=”cd /etc/sysconfig/network-scripts” 针对用户的别名: “~/.bashrc” 针对系统的别名:”/etc/bashrc” 重读配置 ...
- bash基础特性3(shell编程)
Linux上文本处理三剑客: grep:文本过滤工具 sed:stream editor,文本编辑工具 awk:文本报告生成器 grep -v:显示不能够被pattern匹配到的行 -i:忽略字符大小 ...
- bash基础特性2
命令别名(alias) ()alias 显示当前shell进程所有可用的命令别名: ()alias NAME='VALUE' 定义别名NAME,相当于执行命令value ()unlias 撤销别名 注 ...
- bash基础特性1
shell俗称壳(用来区别于内核),是指“提供使用者使用界面”的软件,就是一个命令行解释器. BASH是SHELL的一种,是大多数LINUX发行版默认的SHELL,除BASH SHELL外还有C SH ...
- linux bash基础特性
使用history命令,取得命令历史,当bash进程结束后,会把命令历史存放到文件中,下次开机还能看到命令历史. 定制history:通过设置环境变量,来定制history 环境变量$HISTSIZE ...
- linux bash基本特性
一.bash 基础特性 (1)命令历史的功能 history: 环境变量 HISTSIZE:命令历史记录的条数 HISTFILE: ~/.bash_history 每个用户都有自己独立的命令历史文件 ...
- cmd 与 bash 基础命令入门
身为一个程序员会用命令行来进行一些简单的操作,不是显得很装逼嘛!?嘿嘿~ ヾ(>∀<) cmd 与 bash 基础命令入门 简介 CMD 基础命令 ...
随机推荐
- Ubuntu16.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...
- Java7里try-with-resources分析--转
原文地址:http://blog.csdn.net/hengyunabc/article/details/18459463 这个所谓的try-with-resources,是个语法糖.实际上就是自动调 ...
- FPGA之阻塞赋值与非阻塞赋值
Verilog语言中讲的阻塞赋值与非阻塞赋值,但从字面意思来看,阻塞就是执行的时候在某个地方卡住了,等这个操作执行完在继续执行下面的语句,而非阻塞就是不管执行完没有,我不管执行的结果是什么,反正我继续 ...
- Gram矩阵 迁移学习 one-shot 之类
格拉姆矩阵是由内积空间中的向量两两内积而得.格拉姆矩阵在向量为随机的情况下也是协方差矩阵.每个数字都来自于一个特定滤波器在特定位置的卷积,因此每个数字代表一个特征的强度,而Gram计算的实际上是两两特 ...
- Android 开发环境安装配置手册
本文指导,如何一步步搭建Android开发平台. 1 下载软件 n JDK 1.5+ 到 http://java.sun.com/javase/downloads/index.jsp 下载 n ...
- PIC18F26K20
Clock Four Crystal modes, Two External clock modes, Two RC Oscillator, Internal oscillator, PLL
- 优动漫PAINT-绘制透明布料教程
原是一篇日语教程,觉得挺不错的,就劳烦会日语的朋友帮忙翻译了,特此分享!希望可以帮助到大家在绘画上的学习!原教程转载优动漫官网. 作者:JaneMere 相关资讯还可以关注www.dongmansof ...
- (转载)比较web ui 框架
以下是几个精致的web UI框架 1.Aliceui Aliceui是支付宝的样式解决方案,是一套精选的基于 spm 生态圈的样式模块集合,是 Arale 的子集,也是一套模块化的样式命名和组织规范, ...
- UVA-12083 Guardian of Decency 二分图 最大独立集
题目链接:https://cn.vjudge.net/problem/UVA-12083 题意 学校组织去郊游,选择最多人数,使得任意两个人之间不能谈恋爱 不恋爱条件是高差大于40.同性.喜欢的音乐风 ...
- 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 ...