标签:shell
Shell 介绍TAB补全
还有zsh、ksh、等
history -c 清空内存中的记录
echo $HISTSIZE 系统的history环境变量
vi /etc/profile history 配置文件
HISTSIZE=100000 可以改大
source /etc/profile 立即生效
HISTTIMEFORMAT="%Y%m%d - %H:%M:%S"
修改history格式 年月日 时分秒
如若使其永久生效必须写进配置文件中 /etc/profile
和HISTSIZE 放一起
永久保存 chattr +a /.bash_history
如果不正常退出,历史命令就会保存不完整
!! :重复上条命令
!n : 重复执行第n号条命令
!echo : 倒叙(从下往上)找第一个echo 的命令执行一遍
tab 键 补全 敲一下补全命令 敲两下补全目录以及其他命令
CentOS 6以前 不支持参数补全
CentOS 7以后都支持
安装多一个包yum -y install bash-completion
alias 别名给命令重新起名字
各用户都有自己配置别名的文件 /root/.bashrc
ls /etc/profile.d/
自定义的alias 放到 /root/.bashrc 还有 /etc/profile.d 下面
元字符
`*` 前一个字符匹配0次到任意多次(星号前一个字符不起作用)
? 表示一个任意的字符
{ } 表示范围内的 或的关系
. 匹配除了换行符外任意一个字符
^ 匹配行首
$ 匹配行尾
[ ] 匹配中括号指定的任意一个字符,只匹配一个字符
列如[0-9]匹配任意一位数字,[a-z][0-9]匹配小写字母和一位数字构成的两位字符
[^] 匹配除了中括号的字符以外的任意一个字符。取非的结果
列如[^0-9]匹配任意一位非数字字符。
\ 转义符,用于取消特殊符号的含义
\{n\} 表示前面的字符恰好出现n次。
列如:[0-9]\{4\} 匹配4位数字。
[1][3-8][0-9]\{9\}匹配手机号码
\{n,\} 表示前面的字符出现不小于n 次。
列如[0-9]\{2,\} 表示两位及以上的数字
\{n,m\} 表示前面的字符出现至少n次,最多m次。
列如 :[a-z]\{6,8\}匹配6-8位的小写字母
">" 把正确输出的结果 重定向 到定义的文件中 以覆盖的方式
">>" 把输正确出的结果 重定向 到定义的文件中 尾部追加
"2>" 把命令产生的错误信息 输出到文件中去 以覆盖的方式
"2>>" 把命令产生的错误信息 输出到文件中去 追加重定向
"2>&1" 把正确和错误的信息都追加到文件里去
"<" 输入重定向
wc -l < 1.txt 将文件计数
把前面命令的结果传给后面的命令执行
; : 命令1;命令2 多个命令顺序执行,命令之间没有任何的逻辑关系
&& : 命令1 &&命令2 逻辑与
|| : 命令1 || 命令2 逻辑或
* ls && echo yes || echo on
ctrl + z 停止信号放入后台
jobs 列出停止的任务
fg +工作号 将任务放前台
bg +工作号 将任务放后台
sleep 休眠 命令
& 放入后台运行
nohup 用途:不挂断地运行命令。
语法:nohup Command `[ Arg … ] [ & ]`
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。
退出状态:该命令返回下列出口值:
126 可以查找但不能调用 Command 参数指定的命令。?
127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。
PATH 、HOME 、PWD、 LOGNAMNE
系统变量 一般都是大写字母
env 查看环境变量命令
set 查看系统所有变量命令 多了很多变量,并且包括用户自定义的变量
set -u :调用未声明变量是会报错
unset 删除变量
环境变量:全局变量
用户自定义变量: 局部变量、本地变量
自定义变量 a=1
变量名规则:可以是字母、数字下划线,首位不能为数字
变量值有特殊符号时需要用单引号括起来 单引号 ‘ 中间不识别变量’ 双引号“中间可识别变量”
echo $SSH_TTY 显示自己所在的终端、
pstree 进程树
全局变量
export b=2 export 定义全局变量 向下的全局变量
环境变量
环境变量配置文件
系统级别的
/etc/profile 用户环境变量,交互,登录才执行
/etc/bashrc 用户不用登录,执行shell就生效
/etc目录下的文件,会对所有用户起作用,对登录起
/etc/.bashrc
/etc/profile
/etc/.bash_profile.d/*.sh
家目录文件下,只会对当前用户起作用
/root/.bash_profile
/root/.bashrc
/root/.bash_history
/root/.bash_logout 用户退出做的操作
~ 表示用户家目录
PS1=`‘\[\033[01;32m\][\u@\h\[\033[00m\]\[\033[01;36m\] \W\[\033[01;00m\]]\$‘
source <=>.`
`*` 任意个任意字符
? 任意一个字符
`#` 注释字符
\ 脱义字符
| 管道符
cut 分割
-d 分隔符
-f 指定断号
-c 指定第几个字符
sort 排序
-n 以数字排序 (字母和符号默认为0)
-r 反排序
-t 分割符
-kn1/-kn1,n2
wc
-l 统计 行数
-m 统计字符数
-w 统计词 以空格为分隔符
cat -A 查看所有包括隐藏符
uniq 去重复 (先排序再去重复)
-c 统计重复行数
tee 和 > 类似 , 重定向的同时还在屏幕显示
tee -a 追加 相当于 ‘>>‘
tr 替换字符 (针对字符操作)
tr‘a‘ ‘b‘,大小写替换tr ‘[a-z]‘ ‘[A-Z]‘
split 切割
-b 大小(默认单位字节)
-l 行数
1. $ 变量前缀 !$组合 正则里面表示行尾
2. ; 多条命令写到一行去,用分号分割
3. ~用户家目录,后面正则表达式表示匹配符
4. &放到命令后面,会把命令放置后台
5. `>` , >> , (正确重定向)2> , 2>>(错误重定向) , &> 正确错误重定向
6. [ ] 指定字符中的一个,[0-9],[a-zA-Z],[abc]
7. || 和 && 与或 逻辑关系,用于命令之间
-eq -> ‘=‘ 等于
-ne -> ‘≠‘ 不等于
-gt -> ‘>‘ 大于
-lt -> ‘<‘ 小于
-ge -> ‘≥‘ 大于等于
-le -> ‘≤‘ 小于等于
-z 字符串 -> 是否为空
-n 字符串 -> 是否为非空
字符串 == 字符串 -> 字符串是否相同,相等
字符串 !=字符串 -> 字符串是否不相等
条件1 -a 条件2 -> 相与,都成立则为0
条件1 -o 条件2 -> 香或,有一个成立则为0
! 条件 -> 非,与原来相反
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
文件1 -nt 文件2
判断文件1的修改时间是否比文件2的 新 (如果新,则为真。修改时间)
文件1 -ot 文件2
判断文件1的修改时间是否比文件2的 旧 (如果旧,则为真。修改时间)
文件1 -ef 文件2
判断文件1是否和文件2的 iNode号一致,可以理解为两个文件是否为同一文件。
(这个判断作用于判断硬链接是很好的方法)
标签:shell
原文地址:http://blog.51cto.com/13574510/2072662