主学shell基础的知识
站在用户的角度:shell的类型
登录式shell:正常通常是某些终端登录
su - USERNAME
su -l USERNAME
非登录式shell
su USERNMAE
图形终端下打开命令窗口
自动执行的shell脚本
kash的配置文件:
全局配置:/etc/profile /etc/profile.d/*.sh
/etc/bashrc
个人配置:~/.bash_profile, ~/.bashrc
功能:
profile类的文件
设定环境变量
运行命令或脚本
bashrc类的文件
设定环境变量
定义命令别名
登录式shell如果读取配置文件:
/etc/profile -->/etc/profile.d/*.sh-->~/.bash_profile-->/.bashrc-->/etc/bashrc
非登录式shell如果配置文件:
~/.bashrc -->/etc/bashrc-->/etc/profile.d/*.sh
我们都知道电脑包括控制器(指令)、运算器、存储器
总线包括:地址总线(内存寻址)、数据总线(传输数据)、控制总线(控制命令)
寄存器:cpu暂时存储器
I/O设备:硬盘等输入输出设备
input设备
output设备:
系统设定:默认输出设备,标准输出STDOUT,1
默认输入设备:标准输入 STOIN,0
标准错误输出:STDERP,2
I/O重定向:
> :覆盖输出
>>:追加输出
例:ls var >> /tmp/var.out
set -c 禁止对已经存在文件使用覆盖重定向,强制覆盖重定向
set +c关闭上述功能
标准输出与错误输出不是同一种数据流
2>:重定向错误输出
2>>:追加方式
如:ls /var > /tmp/var3.out 2>/tmp/err.out
ls /var > /tmp/var4.out 2>/tmp/var4.out
&>:重定向标准输出或错误输出至同一个文件
&>>
<:输入重定向
<<:here Document
EOF:end of file =end
cat >> /tmp/myfile.txt<<EOF 在脚本中生成文件
管道:前一个命令的输出作为后一个命令的输入
命令1|命令2|命令3|.......
例:echo "hello world" |tr 'a-z''A-Z'
echo "redhat" |passwd --stdin hive
cut -d: -f3 /etc/passwd |sort -n
tee: 保存并显示
echo "hello,world" |tee/tmp/hello.out
wc -l /etc/passwd |cut -d'' -f1
ls -l /usr/bin /head -1
cut -d: -f1 /etc/passwd /sort -n
head -6 /etc/inittab |tail -1
tail -9 /etc/ passwd |head -1|cut -d: -f1,7|tee /tmp/users
ls -d /etc/pa*|wc -l
echo "alias cls=clear">>~/.bashrc
文件查找的需要:grep、egrep、fgrep
grep:根据模式搜索文本,并符合模式的文本显示出来
pattern:(模式)文本字符和正则表达式的元字符组合而成匹配条件
i:忽略大小写
v:显示没有被模式匹配到的行
--color 显示颜色
-o:只显示被模式匹配到的字符串
alias grep='grep --color' 取别名
grep -o'root' /etc/passswd
正则表达式:REGULAR,EXPRESSION,REGEXP
元字符:
. :
* :
.* :
\?:
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{1,\},匹配其前面的字符至少1次,至多0次
\{0,3\}:匹配其前面的字符至少0次,至多3次
grep ‘a \{1,3\}b' text.txt
位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
grep '^r..root' /etc/passwd
$:锚定行尾,此字符钱的任意内容必须出现在行尾
^$:空白符
[ ]:匹配指定范围内的任意字符
[^ ]:匹配指定范围外任意字符
[:digit:] [:lower:] [:upper:] [:punct:] [:space:][:alpha:] [:alnum:]
grep '[[:digit:]]$' /etc/inittab
\< 或\b:锚定词首,其后面的任意字符必须作为词首部出现
\> \b :锚定词尾,其前面的任意字符必须作为词尾部出现
分组:
\(\)
\(ab\) *:ab可以出现0次或任意次
\1:引用第一个左括号以及与之对应的右括号包括的所有内容
\2: \3:
正则表达式:包括基本正则表达式(BASIC REGEXP) 扩展正则表达式(EXTENDED REGEXP)
基本正则表达式:
. :
[ ]:
[^ ]:
次数匹配:
*:
\?:
\{m,n\}:
.*:
锚定:
^:
$:
\< \b:
\> \b:
\(\):
\1,\2,\3......
grep :使用基本正则表达式定义的模式来过滤文本命令
i:
-v:
-o:
--color:
-E:使用扩展正则表达式
-A#:显示匹配的行和这行后面的行
-B#:显示匹配的行和这行前面的行
-C#:显示匹配的行和这行前后的行
grep -A 2 '^core id' /proc/cpuinfo
扩展正则表达式:
字符匹配:
. [ ] [^ ] 跟基本表达式相同
次数匹配:
* ?
+:匹配其前字符至少一次
{m,n}
位置锚定:
^ $ \< \>
分组:
():分组
\1,\2,\3...
或者
|:or
如:C|cat :是Cat或cat呢还是C或cat呢
grep -E 'C| cat' test6.txt
gerp --color -E'C|cat' test6.txt
grep --color -E'(C|c)at' test6.txt
grep --color -E '^[[:space:]]+' /boot/grub/grub.conf
grep -E=egrep(支持扩展正则表达式使用命令)
如显示1到255之间的数字
egrep --color‘\<([1-9][1-9][0-9]|[0-9]2[0-4][0-9]25[0-5]>\>' /boot/grub/grub.conf
显示ip地址:
ifconfig |egrep -o '上面的.\>.\
\>1. |{3}
ip地址:
5类:A B C D E
A:1-127
B:128-191
C:192-223