Bash 【Bouren Again SHell】的简称,也是基于GNU的架构下发展出来的
是众多shell中的一个
命令删名别定: alias, unalias
Linux系统中的shell保存在 /etc/shells 这个文件中
可以这样查看:
chsh -l //查看目前系统安装的shell
/bin/sh //改变目前的shell
通配符与特殊符号
通配符与特殊符号
\ 转义符,让元字符回归本意
{} 集合 touch file{1..9}
() 在子shell中执行(cd /boot;ls) (umask 077; touch file1000)
[dmtsai@study ~]$ LANG=C <==由于与编码有关,先设置语系一下
范例一:找出 /etc/ 下面以 cron 为开头的文件名
[dmtsai@study ~]$ ll -d /etc/cron* <==加上 -d 是为了仅显示目录而已
范例二:找出 /etc/ 下面文件名“刚好是五个字母”的文件名
[dmtsai@study ~]$ ll -d /etc/????? <==由于 ? 一定有一个,所以五个 ? 就对了
范例三:找出 /etc/ 下面文件名含有数字的文件名
[dmtsai@study ~]$ ll -d /etc/*[0-9]* <==记得中括号左右两边均需 *
范例四:找出 /etc/ 下面,文件名开头非为小写字母的文件名:
[dmtsai@study ~]$ ll -d /etc/[^a-z]* <==注意中括号左边没有 *
范例五:将范例四找到的文件复制到 /tmp/upper 中
[dmtsai@study ~]$ mkdir /tmp/upper; cp -a /etc/[^a-z]* /tmp/upper
特殊符如下:
批注符号
\ 转移符号,可以将具有特殊意义的符号变为一般字符
| 管道符,把前一个命令的结果传递给后一个命令,可以多个,以此类推
; 连续下达命令的分隔符
~ 用家目录
$ 取用变量的前导符
& 将一个工作置于后台
! 逻辑运算意义上的非
/ 路径分隔符
,>> 输出重定向,>取代,>>追加
<,<< 输入重定向
'' 单引号,单引号内的字符均视为一般字符
"" 双引号,其内的字符具有特殊意义,具有变量置换功能
`` 其内的命令可以先执行,建议用$( )取代
( ) 在中间为子shell的起始与结束
{ } 在中间为命令区块的组合
数据流重导向
黑洞文件
/dev/null
可以将一些错误的标准输出,重新输出到/dev/null中
文本摘取
cut
可以将一段信息以某个已存在于信息中的符号为分隔符来段显示
不建议用在以空格为分割符的情况下,可以用awk
cut -d '分隔符' -f n
cut -c 字符区间
把export输出的信息,取出第12个字符以后的所用字符串。
export | cut -c 12-
grep
以行为单位进行字符串的搜索,可以对多文件同时操作
grep [-acinv] [--color=auto] '要搜索的字符串' filename
选项:
-a 将binary文件以text文件的方式搜索
-c 计算找到搜索字符串的次数
-n 顺便输出行号
-v 取反,搜索不包含某些字符串的行
排序命令
sort
可以依据不同的数据形态来排序,例如数字和文字的排序就不一样,排序时建议使用语系LANG=C
sort [-fbMnrtuk ] [file or stdin]
选项:
-f 忽略大小写
-b 忽略前面的空格符部分
-M 以月份的名字排序
-n 使用数字排序(默认是以文字形态排序)
-r 反向排序
-u 去掉重复的行(uniq)
-t ':' -k 3 以冒号为分割符后的第三栏排序
sort uniq
sort : 按首位数字大小排序,0在前
uniq -c : 统计
sort -nr:按大小排序,大在前
sort -n :按大小排序,小在前
sort -r: 按首位数字大小排序,9在前
uniq
排序完成后将重复的内容仅列出一个显示
uniq [-ic]
选项
-i 忽略大小写
-c 对重复的内容进行计数
last |cut -d ' ' -f1 | sort | uniq -c
1
12 reboot
41 root
wc
统计行号,单词数,字符数
wc [-lwm]
选项
-l 仅列出行
-w (word)单词
-m 字符数
tee
双重数据流导向
tee [-a] file
选项
-a 以累加(append)的方式,将数据加入到file中
将ls 的数据存一份到~/homefile ,同时屏幕也要显示
ls -l / | tee -a ~/homefile | more