shell基础知识(3.16)

拜拜、爱过 提交于 2020-04-06 03:21:03

shell
记录历史记录
!! :表示执行上一条命令
!n(n为数字):表示执行第n条命令
!字符串(字符串大于1):如!pw,表示执行命令历史中最近一次以pw开头的命令
tab键:补全命令和文件名,2下则会把所有的命令或者文件名都列出来
别名
alias:把常用并且很长的指令领取名为一个简单易记的指令
unalias:解除别名
自定义别名:alias (命令别名)=('具体的命令')
#alias aming=‘pwd’
#awing
/root
#unalias aming
#aming
bash:aming:未找到命令…

通配符
“*”:匹配0个或多个字符
“?”:匹配1个字符
#ls -d /tmp/4_6/test*
/tmp/4_6/test1 /tmp/4_6/test4 /tmp/4_6/test5
#touch /tmp/4_6/test111
#ls -d /tmp/4_6/test?
/tmp/4_6/test1 /tmp/4_6/test4 /tmp/4_6/test5

输入/输出重定向
“<”(输入重定向):用于改变命令的输入
“>”(输出重定向):用于将命令的结果输入到文件中,而不是屏幕上
#mkdir /tmp/10
#cd /tmp/10
#echo "123" > 1.txt
#echo "123" >> 1.txt
#cat 1.txt
123
123

|:管道符
作业控制
Ctrl+Z:暂停运行进程
fg:恢复进程
bg:后台进行
Ctrl+C:终止进程
变量
env:列出系统预设的全部系统环境变量。登录不同的用户,环境变量的值也不同(只能显示环境变量)
root账户的环境变量
HOSTNAME:主机的名称
SHELL:当前用户的shell类型
HISTSIZE:历史记录数
MAIL:当前用户的邮件存放目录
PATH:该变量决定了shell将到哪些目录中寻找命令或程序
PWD:当前目录
LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量
HOME:当前用户的家目录
LOGNAME:当前用户的登录名
set:把系统预设的全部变量都显示出来,也可以显示用户自定义的变量,自定义变量只能在党前shell中生效
允许系统内所有用户登录后都能使用该变量,方法如下:
#echo "export myname=Aming" >> /etc/profile//把echo "export myname=Aming加入到 /etc/profile中
#source /etc/profile//使之生效
#su - test//查看效果

仅允许当前用户使用该变量,方法如下:
#echo "export myname=Aming" >> .bashrc//把echo "export myname=Aming加入到 .bashrc中
#source .bashrc//使之生效

自定义变量
规定:
(1)格式:a=b,a为变量名,b为变量内容,等号两边不能有空格
(2)变量名:只能由字母、数字以及下划线组成,而且不能以数字开头
(3)当变量内容带有特殊字符(如空格)时,需加上单引号
(4)若变量内容本身带有单引号,则需双引号
(5)若变量内容中需要用到其他命令,运行结果则可以使用反引号
#myname='pwd'
echo $myname
/root
(6)变量内容可以累加其他变量的内容,但需要加双引号

pstree:把Linux系统中所有进程以树状结构显示出来
若没有pstree这个命令,yum install psmisc安装
系统环境变量与个人环境变量的配置文件
/ect/profile:这个文件预设了几个重要的变量,如PATH、USER、MAIL等
/ect/bashre:主要预设umask以及PS1(PS1的值:\u指用户、\h指主机名、\w指当前目录、$指字符)
.bash_profile:定义了用户的个人化路径与环境变量的文件名称
.bashre:该文件包含专属于自己的shell的bash信息
.bash_history:用于记录历史记录
.bash_logout:当退出shell时,会执行该文件。可将一些清理工作放进去
shell中的特殊符号
通配符:上面有介绍(shell的第4点)
#:此为注释符,即#好后面的内容都会被忽略
\:脱义字符,会将后面的特殊符号还原为普通字符
cut:用来截取某个字段,格式为cut -d ‘分隔字符’ (-cf) n//n为数字,用法:
#cat /etc/passwd|cut -d ':' -f 1 |head -5//:为分隔符;-f 1表示截取第一段
root
bin
daemon
adm
lp

-d:后+分隔字符,分隔字符 要用单括号括起来
-c:后+第几个字符
#head -n2 /etc/passwd|cut -c1,3,10//c后可以是1个数字n,也可以区间n1-n2,还可以n1,n2,n3
ro0
bn

-f:后+第几个区块
sort:用作排序,格式为sore (-t 分隔符) (-kn1,n2) (-nru),n1和n2为数字
-t:后+分隔符,作用跟cut -d一样
-n:表示使用纯数字排序
-r:表示反向排序
-u:表示去重复
-kn1,n2:表示由n1区间排序到n2区间,可以只写-kn1,鸡对n1字段排序

wc:用于统计文档行数、字符数、词数,选项-l(统计行数)、-m(统计字符数)、-w(统计词数),格式为wc (-lmw)
uniq:用来删除重复的行,-c比较常用,表示统计重复的行
使用uniq前,必须先给文件排序
#vi xxx。txt
111
222
111
333
#sort xxx.txt |uniq
111
222
333
#sort xxx.txt |uniq -c
2 111
1 222
1 333

tee:类似于重定向“>”,比重定向多一个功能,即把文件写入后面所跟的文件时,还显示在屏幕上。用于“|”后
#echo “aaaaaa” |tee xxx.txt
aaaaaa
#cat xxx.txt
aaaaaa

tr:替换字符,常用于处理文档中出现的特殊符号,如DOS文档中出现^M。
-d:表示删除某个字符,后+删除字符
-s :表示删除重复字符
(1)常用于把小写字母变成大写字母:

#head -n2 /etc/passwd |tr '[a-z]' '[A-Z]'

(2)替换一个字符:

郑州不孕不育医院哪家好:http://www.zzchbb.com/

#grep 'root' /etc/passwd |tr 'r' 'R'

split:用于切割文档,常用-b和-l
-b:表示依据大小来分割文档,单位为byte
#mkdir split_dir
#cd !$
cd split_dir
#cp /etc/passwd ./
#split -b 500 passwd
#ls
passwd xaa xab xac xad xae //若不指定目标文件名,就会这么命名

指定目标文件名

#rm -f xa*
#split -b 500 passwd 123
#ls
123aa 123ab 123ac 123ad 123ae passwd

-l:表示依据行数来分割文档
#rm -f 123a
#split -l 10 passwd
#wc -l *
45 passwd
10 xaa
10 xab
10 xac
10 xad
5 xae
90 总用量

11.“ $”:用作变量前的标识符,还可以结合!来用:

!$:表示上一条命令中的最后一个变量
“;”:若想在一行内运行两个或两个以上的命令,需要在命令之间加“;”
“~”:表示用户的家目录
“&”:若想把一条命令放到后台执行,则需加上“&”,他通常用于命令运行时间较长的情况,可用在sleep后
重定向>、>>、2>、2>>
“>、>>”:表示取代和追加
“2>、2>>”表示错误重定向和错误追加重定向
"[]":括号内为字符组合,代表字符组合中的任意一个,可以是一个范围(1-3,a-z)
“&&”和“||”:命令分隔符
command1 ; command2:不管 command1是否成功, command2都会执行
command1 && command2:只有 command1执行成功后, command2才会执行
command1 || command2: command1执行成功后则 command2不执行,否则执行 command2,即 command1和 command2中总有一条命令会执行

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!