Linux的shell基础

目录:

  1. shell简介
  2. 命令历史
  3. 命令补全及别名
  4. Linux的特殊符号
  5. 通配符、输入输出重定向
  6. 作业控制
  7. 变量
  8. 管道

1. shell简介

shell是用户与linux内核进行通信的桥梁
shell是一个命令解释器,提供用户和机器之间的交互

支持特定语法,比如逻辑判断、循环

每个用户都可以有自己特定的shell,在/etc/passwd内查看

CentOS7默认shell为bash(Bourne Agin Shell)

还有zsh、ksh、tsh、csh等

2.命令历史

命令:history,可以显示出最近1000条使用的命令,调用的是/root/.bash_history文件
Linux的shell基础_第1张图片
小郭因为还没有到达1000条命令以上所以只有779条呜呜呜

更改history记录长度

那如果要是想更改这个限制,例如小郭想看历史的5000条命令,只需要改HISTSIZE的变量
更改变量命令:export HISTSIZE=5000
此时看大小的命令:echo $HISTSIZE,因为小郭没到1000看的就没有区别,所以小郭的history的命令显示就不截啦嘻嘻
在这里插入图片描述
还有一个问题,我只能看我们的命令,并不知道命令是什么时候使用的,这个也有修改的办法,方法就是修改/etc/profile在文件后面再加一个export HISTTIMEFORMAT='%Y/%m/%d %H:%M:%S'再刷新一下文件
在这里插入图片描述
此时我们使用history看一下
Linux的shell基础_第2张图片

history 快捷方式:

!!   ---快速编辑文件 ~/.bash_history
!n   ---n代表是行号 ,!1008 去调用第1008行的命令执行
!word ---从历史命令中调用命令执行

3. 命令补全及别名

Linux系统中有一个很好用的功能:命令补全功能
tab键是自动补全功能,按一下是自动补全指定的文件或目录,按两下是列出当前目录下与命令中的指定文件或目录开头一样的的文件或目录,
类似有一长串的文件名或目录名或者很长的命令,只需要输几个字母按tab键就可以自动补全了
Linux有命令补全,当然也有参数补全,这个需要安装bash-completion才可行,但是需要更换yum源,小郭遇到了个问题,显示bash-completion的安装包找不到,但是经过了很久在下面的博客中得到了解决
CentOS7 mini安装Linux命令补全 yum install bash-completion
Linux的shell基础_第3张图片
此时随意输入需要加入参数的命令加入–,敲击两次tab键就可以看到参数了

4.Linux的特殊符号

* :任意的任意个字符

? :任意的一个字符

# :注释字符

\ :脱义字符

| :管道符:前面命令的输出,作为后面命令的输入

$ :变量前缀,!$组合,正则里面表示行尾

;:多条命令写到一行,用分号分割

~ :用户家目录,后面正则表达式表示匹配符

& :放到命令后面,会把命令丢到后台

> >> :正确重定向、追加重定向

2> 2>> :错误重定向、追加重定向

&> :正确和错误都重定向到一个文件里

[ ]:指定字符中的一个,[0-9],[a-zA-Z],[abc]

||&& ,用于命令之间
|| :前面的命令执行成功,后面的命令就不再执行,前面的命令失败,就执行后面的命令;
&& :只有前面的命令执行成功了,才会执行后面的命令;

5.通配符、输入输出重定向

*.txt:所有的txt文件

?.txt:单个字符的txt文件,例如a.txt

[0-9].txt:0.txt、1.txt…(0-9所有的.txt文件)

{1,2}.txt:(1.txt或2.txt)

>:输出重定向(覆盖)、>>:输出重定向(追加)

<:输入重定向

6.作业控制

ctrl c:取消任务

ctrl z :暂停一个任务

jobs:查看后台的任务

bg[id]:把任务调到后台

fg[id]:把任务调到前台

命令后面加&:直接在到后台运行命令

7.变量

Linux 的变量可分为两类:环境变量和本地变量

环境变量,或者称为全局变量,存在与所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了。Linux 的环境变量具有继承性,即子shell 会继承父shell 的环境变量。

本地变量,当前shell 中的变量,很显然本地变量中肯定包含环境变量。Linux 的本地变量的非环境变量不具备继承性。

使用 envexport 查看环境变量与常见环境变量说明;

使用 set 观察所有的变量 环境变量与自定义的变量;

8.管道

管道符同样也是一个非常好用的命令,他可以把多个命令连接起来,将前一个命令作为后一个命令的输入,中间用|隔离。
语法:命令1|命令2|命令3
之前取出ip地址时附带了很多无用信息,我们可以利用管道符将无用信息剔除。然后输出到一个文件中。
管道命令例子:
cut 分割,-d 分隔符 -f 指定段号 -c 指定第几个字符
sort 排序, -n 以数字排序 -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行数,可以指定文件名的前缀
[ -d gzx] || mkdir gzx: 如果目录不存在,就创建目录
[ -d gzx] && rm –rf gzx: 如果目录存在,就删除目录

你可能感兴趣的:(linux,shell)