Linux的shell基础知识

Linux的shell基础知识

一、shell 基础知识

1. 什么是shell

shell时系统跟计算机硬件交互时使用的中间介质,知识系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西–系统内核。用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell在传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。

1、记录命令历史

!是与命令历史有关的一个特殊字符,该字符常用的应用有以下3个。

  • !!:连续两个!表示执行上一条指令。示例命令如下:

在这里插入图片描述

  • !n:这里的n是数字,表示执行命令历史中的第n条指令。例如,!1002表示执行命令历史中的第1002个命令,如下所示:

在这里插入图片描述

  • !字符串(字符串大于等于1):例如!pw表示执行命令历史中最近一次以pw开头的命令。示例代码如下:

在这里插入图片描述

2.命令和文件名补全

Tab键:可以补全一个指令、一个路径或者一个文件名。连续按两次该键的话系统会把所有的命令和文件都列出来。

3.别名

alias:把一个常用的并且很长的指令另取为一个简单易记的指令。

直接执行alias命令,会看到目前系统预设的别名,如下所示:

在这里插入图片描述
你也可以自定义命令的别名,其格式为 alias [命令别名]=[‘具体的命令’],示例命令如下:
在这里插入图片描述

4.通配符

在bash下,可以使用*来匹配零个或多个字符,用?匹配一个字符。示例命令如下:

在这里插入图片描述

5.输入\输出重定向

输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。输入重定向的命令是<,输出重定向的命令是>。
  • 另外,还有错误重定向命令 2> 以及追加重定向命令>>,示例命令如下:
    在这里插入图片描述

6.管道符

管道符 | ,它用于将前一个指令的输出作为后一个指令的输入,如下所示: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200319095259769.png)

7.作业控制

使用vi命令编辑1.txt,随便输入一些内容,按Esc键后,使用Ctrl+Z组合键暂停任务,如下所示:

在这里插入图片描述
此时提示vi 1.txt已经停止了,然后使用fg命令恢复它,此时又进入刚才的vi窗口了。再次使其暂停,然后输入jobs,可以看到被暂停或者在后台运行的任务,如下所示:
②当运行进程时,如何暂停进程?使用(Ctrl+Z)键暂停:
如果想把暂停的任务放在后台重新运行,就使用bg命令,如下所示:
在这里插入图片描述

二、变量

通常shell预设的变量都是大写的。变量就是使用一个比较简单的字符串来替代某些具有特殊意义的设定以及数据。就拿以前讲的PATH变量,它就替代了所有常用命令的绝对路径的设定。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200319100756702.png)

1.命令env

使用env命令,可列出系统预设的全部系统变量,如下所示:

在这里插入图片描述
登录不同的用户,这些环境变量的值也不同。当前显示的是root账户的环境变量。下面简单介绍一下常见的环境变量。

  • HOSTNAME:表示主机的名称。
  • SHELL:表示当前用户的shell类型。
  • HISTSIZE:表示历史记录数。
  • MAIL:表示当前用户的邮件存放目录。
  • PATH:该变址决定了shell将到哪些目录中寻找命令或程序。
  • PWD:表示当前目录。
  • LANG:这是与语言相关的环境变量,多语存环境可以修改此环境变量。
  • HOME:表示当前用户的家目录。
  • LOGNAME:表示当前用户的登录名。

2.命令set

与env命令相似,也可以输出环境变量:

在这里插入图片描述
set 命令不仅可以显示系统预设的变量,也可以显示用户自定义的变量,例如:
在这里插入图片描述
虽然可以自定义变量,但该变量只能在当前shell中生效,如下所示:

执行bash命令,会进入一个子shell环境中
在这里插入图片描述

可用pstree指令查看bash结构

没有该指令的话就安装:yum install -y psmisc
在这里插入图片描述

如果想让这个变量在子shell中生效,则可以用export指令:
在这里插入图片描述
如果想让设置的环境变量一直生效:
①允许系统内所有用户登录后都能使用该变量:
在/etc/profile文件的最后一行加入export myname=zl,然后运行source /etc/profile就可以生效了。此时再运行bash命令或者切换到其他账户就可以看到效果。
在这里插入图片描述
②仅允许当前用户使用该变量
在用户主目录下的.bashrc文件的最后一行加入exprofile myname=DS,然后运行source .bashrc就可以生效了。这时在登陆test账户myname变量则不会生效了。

Linux下设置自定义变量,规则如下:

  • ①设定变量的格式为a=b,a为变量名,b为变量的内容,等号两边不能有空格。
  • ②变量名只能由字母、数字以及下划线组成,且不能以数字开头。
  • ③变量内容带有特殊字符(如空格)时,需要加上单引号。
    在这里插入图片描述
  • ④变量内容需要用到其他命令,运行结果则可以使用反引号。
    在这里插入图片描述
  • ⑤变量内容可以累加其他变量的内容,但需要加双引号。
    在这里插入图片描述
  • ⑥取消某个变量,只需要输入unset 变量名即可。
    在这里插入图片描述

三、系统环境变量与个人环境变量的配置文件

  • /etc/profile:这个文件预设了儿个重要的变量,例如PATH、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME. HISTSIZE, umask等。

  • /etc4/bashrc:这个文件主要预设mask以及PS1。这个PS1就是我们在输入命令时前面的那串字符。
    不妨看一下PS1的值,如下所示:
    在这里插入图片描述

其中,\u指用户,\h指主机名,\W指当前目录,KaTeX parse error: Expected 'EOF', got '#' at position 4: 指字符#̲ (如果是普通用户.则显示为)。

除了以上两个系统级别的配置文件外,每个用户的主目录下还有以下几个隐藏文件。

  • .bash_profile:该文件定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专属于自己的shell信息,当用户登录时,该文件仅仅执行一次。
  • -bashrc:该文件包含专属于自己的shell的bash信息,当登录或每次打开新的shell时,该文件会被读取。例如,你可以将用户自定义的別名或者自定义变量写到这个文件中。
  • .bash_history:该文件用于记录命令历史。
  • .bash_logout:当退出shell时,会执行该文件。你可以将一些淸理的工作放到这个文件中。

四、Linux shell中的特殊符号

1.代表零个或多个任意字符

在这里插入图片描述
2.?只代表一个任意的字符
在这里插入图片描述
3.注释符号#
在这里插入图片描述
4.脱义字符
在这里插入图片描述
5.管道符|
将前面命令的输出作为后面命令的输入。 这里提到的后面的命令并不是所有命令都可以用的,一般针对文档操作的命令比较常用。例如 cat、less、head、tail、grep、cut、sort、wc、uniq、tee、tr、split、sed、awk等。
在这里插入图片描述
6.命令cut

cut命令用来截取摸一个字段,格式:cut -d ‘分隔字符’ 【-cf】n,n是指数字。

  • -d:后面跟分隔字符,分隔字符要用单引号括起来;
  • -c:后面接的是第几个字符;
  • -f:后面接的是第几个区块。

cut 命令的用法如下:
在这里插入图片描述
-d选项后面加冒号作为分隔字符,-f1表示截取第一段,-f 和 1之间的空格可有可无。示例命令如上。

-c 选项后面可以是1个数字n,也可以是一个区间n1-n2,还可以是多个数字n1、n2和n3。示例命令如下:
在这里插入图片描述
7.命令sort
sort命令用做排序,其格式为 sort [-t 分隔符] [-kn1,n2] [-nru],这里n1和n2指的是数字,其他选项的含义如下。

  • -t:后面跟分隔字符,作用跟cut的-d选项一样。
  • -n:表示使用纯数字排序。
  • -r:表示反向排序。
  • -u:表示去重复。
  • -kn1,n2:表示由n1区间排序到n2区间,可以只写-kn1,即对nm字段排序。

如果sort不加任何选项,则从首字符向后依次按ASCII码值进行比较,最后将它们按升序输出。示例命令如下:
在这里插入图片描述
-t 选项后面跟分隔符,-k 选项后面跟单个数字表示对第几个区域的字符串排序,-n 选项则表示使用纯数字排序。示例命令如下:
在这里插入图片描述
-k 选项后面跟数字 n1和 n2表示对第 n1和n2区域内的字符串排序,-r 选项则表示反向排序。示例命令如下:
在这里插入图片描述
8.命令wc
wc命令用于统计文档的行数、字符数或词数。该命令的常用选项有 -l(统计行数)、-m(统计字符数)和-w(统计词数)。示例命令如下:

在这里插入图片描述
如果wc不跟任何选项,直接跟文档,则会把行数、词数和字符数依次输出。
9 命令 uniq
uniq命令用来删除重复的行,该命令只有-c选项比较常用,它表示统计重复的行数,并把行数写在前面。
我们先来编写一个文件,示例命令如下:
使用uniq前,必须先给文件排序,否则不管用,如下:

在这里插入图片描述

10 命令 tee
tee命令后面跟文件名,其作用类似于重定向 >,但它比重定向多一个功能,即把文件写入后面所跟的文件时,还显示在屏幕上。该命令常用于管道符|后。示例命令如下:
在这里插入图片描述
这里我依然采取与上个命令同一文件1.txt,使用tee命令重定向后原有的内容不会再存在!(即重定向的意思)

11 命令 tr
tr命令用于替换字符,常用来处理文档中出现的特殊符号,如DOS文档中出现的符号M。该命令常用的选项有以下两个。

  • -d:表示删除某个字符,后面跟要删除的字符。
  • -s:表示删除重复的字符。 tr命令常用于把小写字母变成大写字母,如tr ‘[a-z]’ ‘[A-Z]’。示例命令如下:
    在这里插入图片描述
    tr命令还可以替换一个字符,示例命令如下:
    在这里插入图片描述

12 命令 split

split命令用于切割文档,常用的选项为-b和-1。

  • -b:表示依据大小来分割文档,单位为byte,示例命令如下:
    在这里插入图片描述
    也可以指定目标文件名,如下:
    在这里插入图片描述
    -l:表示依据行数来分割文档,示例命令如下:
    在这里插入图片描述

13 特殊符号$
符号可以用作变量前面的标识符,还可以和!结合起来使用。示例命令如下:
在这里插入图片描述

14 特殊符号;
通常,我们都是在一行中输入一个命令,然后回车就运行了。如果想在一行中运行两个或两个以上的命令,需要在命令之间加符号;。示例命令如下:
在这里插入图片描述

15 特殊符号 ~
符号表示用户的家目录,root用户的家目录是/root,普通用户则是/home/usermame。示例命令如下:
在这里插入图片描述
16 特殊符号 &
如果想把一条命令放到后台执行,则需要加上符号&,它通常用于命令运行时间较长的情况。比如,可以用在 sleep后,如下所示:
在这里插入图片描述
经测试:sleep 30的意思是睡眠30秒,不加&选项就是在这30秒不可执行其他操作,除非你使用CTRL + C退出,加了&就是在后台进行,可以进行操作!

17 重定向符号 >、>>、2>和2>>
当我们运行一个命令报错时,报错信息会输出到当前屏幕。如果想重定向到一个文本,则要用重定向符号2>或者2>>,它们分别表示错误重定向和错误追加重定向。示例命令如下:
在这里插入图片描述

18 中括号 [ ]
中括号内为字符组合,代表字符组合中的任意一个,可以是一个范围(1-3,a-z),用法如下:
在这里插入图片描述
19 特殊符号&&和||
前面提到了分号可作为多条命令间的分隔符,其实还有两个可以用于多条命令中间的特殊符号,那就是&&和 ||。下面列出以下几种情况:

  • command1 ;command2
  • command1 && command2
  • command1 || command2
    使用;时,不管command1是否执行成功,都会执行command2。
    使用&时,只有command1执行成功后,command2才会执行,否则command2不执行。 使用|
    |时,command1执行成功后则command2不执行,否则执行command2,即command1和command2中
    总有一条命令会执行。接下来,通过做试验来说明 &&与 | |这两个特殊符号的作用:
    在这里插入图片描述
    本例中,只有当ls test2成功执行后,才会执行touch test2。因为test2不存在,ls test2没有执行成功,所以&&后面的touch test2并没有执行。

在这里插入图片描述
本例中,若ls test2执行不成功,则会执行touch test2。因为test2不存在,所以ls test2没有执行成功,转而执行| |后面的touch test2,所以增加了test2这个文件。

本章END!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值