【魔德科技】【Linux学习笔记】第8章 Linux shell基础知识

本笔记由魔德科技(http://modekeji.cn)提供


8.1shell介绍
shell是一个命令解释器,提供人机交互。
支持特定语法。
每个用户都可以有自己特定的shell(bash)。
CentOS7默认bash(Bourne Agin Shell)。
其他还有zsh、ksh等。


8.2命令历史
命令历史存放于~/.bash_history文件下。
history 查看之前用过的命令,默认保存最近1000条,由变量HISTSIZE设定条数,HISTSIZE可以到配置文件/etc/profile中去配置,配置后需要source才会生效。
history -c 清空当前内存中的命令历史,不能清除~/.bash_history中的命令。
当前的命令,存放于内存中,在退出终端的时候,才会保存到.bash_history文件中。
HISTTIMEFORMAT=”%Y/%m/%d %H:%M:%S” 设定显示时间格式,可在/etc/profile中配置永久生效。配置后,history将显示命令执行的时间。
chattr +a ~/.bashhistory 加a权限,只能追加,不能删除,使命令历史永久保存。
若不正常退出终端,命令历史保存将存在差错。
!! 执行上一条命令。
!n n为数字,执行命令历史中的第n条命令。
!word 执行最近的以word开头的命令。


8.3命令补全和别名
Tab键,敲一下(唯一自动补全),敲两下(多个列出列表)。
CentOS7支持自动补全命令参数。需安装相关包:yum install -y bash-completion,然后reboot重启系统才生效。
命令别名alias command=’comand blablabla’
alias 可查看系统中的命令别名。
~/.bashrc和/etc/profile.d/目录下的文件中,可以配置命令别名。
unalias command 取消自定义的command命令别名。


8.4通配符

  • 匹配任意多个任意字符。
    ? 匹配一个任意字符。
    [0-3]或[0123] 匹配方括号中的任意一个字符。[0-9a-zA-Z]
    {1,2,3,a} 匹配花括号中的任意一个。

8.5输入输出重定向
\> 输出重定向。
command >FILE 将command的正确输出,写到FILE中。
command >>FILE 将command的正确输出,追加到FILE中。
command 2>FILE 将command运行输出的错误信息,写到FILE中。
command 2>>FILE 将command运行输出的错误信息,追加到FILE中。
正确+错误:>+2>用&>表示。
command &>FILE 将command运行输出的正确和错误信息,写到FILE中,同样支持追加command &>>FILE
command >FILE1 2>FILE2 可将正确和错误的信息分开保存,多用于写Shell脚本中。如:
ls 1.txt 2.txt >t.txt 2>e.txt
< 输入重定向(几乎用不到)。
command <FILE 将FILE文件内容,输入到command命令中。如:
wc -l <1.txt 查看1.txt中内容的行数。
wc -l >1.txt 是把wc -l得到的正确输出,写到1.txt中。


8.6管道符和作业控制
| 管道符。
command1 |command2command1输出的内容,交给command2
作业控制:
Ctrl+Z 暂停一个任务。
fg 将后台的任务调到前台。如果后台有多个任务,可用跟编号fg 1,fg 2……来将相应任务调到前台,若多个后台任务,不加编号时,调出最后一个。
bg 将前台任务调到后台。
对于fgbg命令,一个终端查不到另一个终端的任务,但是可以ps aux查到进程,如:ps aux |grep sleep 查看sleep任务的进程。
jobs 列出所有停止的任务,可查看到命令编号。
vmstate t(间隔时间) n(刷新次数) 监控系统状态。
sleep N 系统暂停N秒,什么也不做。
命令后加&符号,直接将命令丢到后台执行。如:sleep 100 &


8.7shell变量(上)
env 查看系统变量。变量名通常为大写。
set 查看变量,包括用户自定义变量。
自定义变量:
变量名=变量值 设置变量。
echo $变量名 显示变量。
变量名规则:字母、数字、下划线,首位不能为数字。
变量值有特殊符号时需要用单引号括起来,单引号可以对特殊符号脱义。双引号不能脱义。


8.8shell变量(下)
全局变量(向下生效,pstree可查看):
export 变量名=变量值 设置全局变量。
unset 变量名 取消变量。


8.9环境变量配置文件
系统层次:/etc/profile、/etc/bashrc 一般不更改其内容。
用户层次:~/.bashrc、~/.bash_profile、~/.bash_history、~/.bash_logout(定义退出系统时的操作)
profile在用户登录时自动加载;bashrc不需要登录,在执行shell的时候自动调用。
变量PS1可设定命令前的显示。PS2设定进入另一个命令中的显示。


8.10shell特殊符_cut命令
* 匹配任意个任意字符。
? 匹配任意一个字符。
# 注释字符。
\ 脱义字符(设置变量时,对特殊字符,可用\取代单引号)。
| 管道符。
cut 分割内容。
-d 指定分割符。
-f 指定段号。
-c 指定第几个字符。
应用示例:cat /etc/passwd |head -5 |cut -d “:” -f 1,2 读取/etc/passwd,显示前5行,以“:”为分割符,截取1,2段。


8.11sort_wc_uniq命令
sort FILENAME 对文件内容排序(按ASCⅡ码)。
-n 以数字排序(字母全都认为是0)。
-r 反序。
-t 分隔符 -kn1/-kn1,n2。
wc 统计。
-l 统计行数。
-m 统计字符数,包括每行后面隐藏的换行符($)。
-w 统计词。
uniq 去重(只会对相邻行去重,所以需要先排序再去重)。
-c 统计行数(每行重复的次数)。


8.12teetrsplit命令
tee与输出重定向>类似,重定向的同时还在屏幕显示,前面需要加管道符|。
>FILENAME 可清空文件内容。
tr 替换字符,
tr ‘a’ ‘b’ 将a替换为b。
tr ‘[ab]’ ‘[AB]’ 小a替换为A,小b替换为B。
tr ‘[a-z]’ ‘[A-Z]’ 大小写替换。
split 切割,
-b 指定大小(默认单位为字节),可加单位:K,M等。
-l 指定行数。


8.13shell特殊符号(下)
$ 变量前缀。
!$ 正则里面表示行尾。
; 多条命令写到一行,用分号;分隔。
~ 用户家目录,正则表达式中表示匹配符。
& 放到命令末尾,将命令丢到后台运行。
\> 输出重定向;
\>> 追加重定向。
2>错误输出重定向;
2>> 错误追加重定向。
&> 正确+错误输出重定向。
&>> 正确+错误追加重定向。
[] 指定字符中的一个,[0-9],[a-z,A-Z],[abc]。
|| 正则中表示或,用于命令之间。
COMMAND1 || COMMNAD2 表示若第一条命令执行不成功,则执行第二条命令;若第一条命令执行成功,则不再执行第二条命令。
&& 正则中表示与,用于命令之间。
COMMAND1 && COMMNAD2 表示只有第一条命令执行成功之后,才执行第二条命令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章