运维学习第四弹

运维学习第四弹之shell(bash):

一、

hell可以翻译成壳,大多指能够对内部核心起到保护作用的一种装置或结构。在计算机科学中shell的实际意义为操作者提供的、能够通过系统调用或库调用使用整个计算机资源的访问接口。

它既是一种命令解析器又是一种程序设计语言。作为命令解析器,它可以解释和执行用户输入的命令,也可以自动地解释和执行预先编写好并保存在某个文本文件中的一系列的命令;作为程序设计语言,shell特别定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和条件分支,让我们可以像使用高级语言那样去使用shell,使之能够胜任复杂逻辑环境的应用,提高其执行效率,更容易发挥其自动化的特性

shell分为交互式shell和非交互式shell:

1)交互式shell:在这种模式下,shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、注销登录。当你注销登录后,shell将终止运行。

2)非交互式shell;在这种模式下,shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、注销登录。当你注销登录后,shell将终止运行。

这里我们可以使用cat /etc/shells来查看shell的类型。

这里我们终点学习基本的shell ——bash

bash:bash是大多数Linux系统以及Mac OS X默认的shell,它能运行于大多数Unix类操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现Windows的POSIX虚拟接口。

二、bash命令:

1)、alias命令:命令的别名,用于自定义命令

例、alias mp=‘mkdir -pv’

撤销别名:unalias unaliasNAME

注意:

1.alias命令的效郭仅限于当前shell的生命周期

2.如果修改.bashrc配置文件,其中保存的别名并不会立即生效,只有重新加载该文件的内容之后, 才会生效,且永久生效。

3.为了能够保证我们设置的别名有效,通常两种操作都要做

另外,对于每一个用户来说,都有一个私有的bash配置文件,用于保存别名 ~/.bashrc

2)历史命令:

BASH进程会帮助用户保存曾经执行的命令,以方便用户重复执行某个命令;

通过bash提供的历史命令文件来保持此前执行过的命令,每个用户都有其自己私有的历史文件

登录shell的时候,BASH会自动读取~/.bash_history文件中的所记录的所有命令;

history命令:

-c 清空历史缓冲区中的历史命令

-d 偏移量 从指定位置删除历史列表。

-a 将当前绘画的历史行追加到历史文件中

-n 从历史文件中读取所有未被读取的行

-r 读取历史文件并将内容追加到历史列表中

-w 将当前历史写入到历史文件中,并追加到历史列表中

-p 对每一个 ARG 参数展开历史并显示结guo而不存储到历史列表中

-s 以单条记录追加 ARG 到历史列表中

重复执行前一个命令的方法:

1使用箭头

2.ctrl+p

3.!-1

4.!!

重复执行历史缓冲区中的命令:

! #:重复执行编号为#的命令

! 字符串:查找第一个以字符串开头的并重复执行

!?+字符串:从历史缓冲区中查找最近一次包含字符的命令并重复执行

!-#:执行历史缓冲区中倒数第#条命令

ctrl+r:在历史缓冲区中实施搜素,回车执行即可

重复使用历史命令中的一部分;

!$:表示最后一个命令中的最后一个参数;

esc, .

Alt+.:

!^:上一个命令中的第一个位置的参数

!:2:上一个命令中的第2个未位置的参数

!SEQUENCE;#:表示

与历史相关的bash变量:

HISTSIze: 2

HISTSIESIZE:

HISTTIMEFORMAT

HISTCONTROL:什么命令记录什么不记录

清空历史命令:

ignoredups:忽略连续且相同的命令的历史缓存:

ignorespace:忽略以空白字符开头的命令;

ignoreboth:以上两个功能都启用;

history 命令在bash中是一项很重要的命令,对于初学者来说,对于命令的基本操作还不是很容易,这个命令可以很好的帮助我们查看并重复以前的操作。

三、快捷键:键盘映射

c-->ctrl

M-->Alt

E-->ESC

DEL-->Backspace

c-l:clear,清屏

C-a:将光标移至命令的行首

c-e:将光标跳转至命令的行尾

c-k:删除光标所在位置到行尾的命令行信息

c-u:删除光标所在位置到行首的命令行信息

C-c:取消当前命令的进程

四、命令补全机制:

命令本身字符串的补全

参数的补全

shell命令的执行过程:

1.shell会根据用户输入的“ENTER”来判断用户的输入结束

2.shell会将收集的命令信息,根据空白字符来分段,第一个分段被理解为命令字段

3.判断第一个字段是内部命令还是外部命令,如果是内部,则直接运行;如果是外部,通过PATH标量所指示的路径信息吗,去查找相关的位置以确定是否存在同名文件,如果有执行;否则报错

4.判断选项是否正确,判断参数是否正确;

使用TAB键完成命令补全:

荣国给出的字符串不能作为唯一标识,则bash不予补全;再次敲击tab键,bash会给出参数列表。;如果参数列表中的内容过多,bash会查询是否显示该列表

根据提供的参数来进行补全,如果参数没有任何提示信息则默认从工作目录进行查找

五、命令行的展开:

~:bash会自动将其展开为当前登录用户的家目录:

~STRING:bash会自动将其展开为“STRING”为用户名的用户的家目录;

~+:调用shell变量“PWD”的值

~+:调用shell变量“OLDPWD"的值;

{}:在花括号中可以填充一个以”,“分隔的路径列表,bash会将其展开为多个独立的路径;类似于乘法结合律

例如:mkdir -pv /tmp/{a,b}_{c,d}

wc命令:wc命令用来打印文件的文本行数、单词数、字节数等

-c:只显示字节数

-l:只显示行数

-w:只显示字数

六、命令的执行结果

任何一个linux命令都有两个执行结果:

其一:命令的正常输出结果;

根用户需求相关的返回内容

``:反向单引号,反引号echo "I am `whoami`"

I am root

$():标准的命令引用格式

其二:命令的执行状态返回值:

跟命令执行成功与否相关的返回内容

保存在bash的一个特殊变量中;$?

0:表示命令执行成功

1,2,127:表示内置状态返回值

1:表示小问题

2:严重问题

127:命令本身出问题

3-126,128-255:用户自定义状态信息;

引用功能:

‘’:强引用

凡是被单引号引用的内容,bash一律将其视为普通字符,即使其本身有特殊功能和作用也是如此,但单引号本身是个例外。

"":弱引用

被双引号引用的内容中,有些特殊字符仍然会保留其特殊含义,参数本身需要空格,最好加引号

例如:

[[email protected] ~]# echo "I am `whoami`"

I am root

[[email protected] ~]# echo ‘$PATH‘

$PATH

[[email protected] ~]# echo "$PATH"

usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[[email protected] ~]# date

2017年 03月 19日 星期日 10:59:48 CST

[[email protected] ~]# date +%F %T

date: 额外的操作数 "%T"

Try ‘date --help‘ for more information.

[[email protected] ~]# date +"%F %T"

2017-03-19 11:00:21

转义功能:

\:bash中定义的转义字符;只能使其其后的一个字符有作用,使其后的字符失去作用,或者实现本身的意义

九、Globbing,文件名统配,简称为glob;

元字符:通配符

*:匹配任意长度的任意字符,某些特殊位置的“.”不能被匹配

?:匹配任意单个字符,

[]:匹配指定范围内的任意单个字符,必须且只有一个字符被匹配;

字符集:

[:lower:]:所有的小写字母

[:lower:]]:所有小写的单个字符

[:upper:]:所有的大写字母

[[:alpha:]]:所有的字母字符

[:digit:]:表示所有的十进制数字

[:alnum:]:表示所有的大小写字母以及十进制数字

[:space:]:表示所有的空白字符

[:punct:]:所有的标点符号

^:取反匹配

例:ls -d /etc/[^[:alpha:]][[:alpha:]]*

目录下,以非字母开头,且其后跟了 一个字母以及其他任意字符的文件名

十、输入输出重定向

在使用计算机时实现某种x功能的主题是:程序:指令+数据

数据:文件,IO

可以用于输出的设备:文件

键盘设备,文件系统中的常规文件,网卡设备,声卡设备;

可以用于输出的设备:文件

显示器,文件系统中的常规文件,网卡设备、声卡设备;

每一种程序都有三种数据流:

输入数据流:为程序 获取数据的数据流;默认的输入数据流来源就是键盘;

输出数据流:将程序所处理的数据结果展示给用户的数据流;默认的终点是显示器

误数据流;将程序无法处理或处理过程中出现问题的结果展示给用户的数据流;

默认的错误数据流的终点是显示器;

从键盘实现的输入数据流称为标准输入

从显示器上的输出数据流称为标准输出

到显示器上的错误数据流称为标准错误输出,简称标准错误

文件描述符:File Descriptor,FD

十六位二进制

0:标准输入,stdin

1:标准输出,stdout

2:标准错误,stderr

IO重定向:采用非标准设备文件实现的IO操作;

输出重定向:

>:覆盖(替换)输出重定向

~]# set -C //开启防误覆盖开关

在开启次开关后,可以使用“>|”符号继续覆盖重定向

~]# set +C //关闭防误覆盖开关

>>:追加输出重定向

错误重定向:

2>:覆盖错误重定向

2>>:追加错误重定向

合并标准输入和标准输出的重定向

1)  &>:覆盖

&>>追加

2)COMMAND >|>> /PATH/TO/SOMEFILE 2>&1

****/dev/null:BlackHole, BitBucket(位桶)

ls /tmp/a.txt &> /dev/null:只用于判断命令是否正确

ls /tmp/a.txt > /dev/null 2>&1

输入重定向tr:

tr ‘abc‘ ‘ABC‘

begian

BegiAn

^C

[[email protected] ~]# tr ‘abc‘ ‘ABC‘ < /root/qin

tr: 读取错误: 是一个目录

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]#

[[email protected] ~]# tr ‘abc‘ ‘ABC‘ < /etc/issue

\S

Kernel \r on An \m

[[email protected] ~]# tr ‘a-z‘ ‘A-Z‘ < /etc/issue

\S

KERNEL \R ON AN \M

<<:Here Doucoment:此处文档

[[email protected] ~]# wc -l /etc/inittab

17 /etc/inittab

[[email protected] ~]# wc << /etc/inittab

> hello

>

> my baby

> /etc/inittab

3  3 15

<<<:此处字符串eof

十一、管道:都是有标准输出的命令

1:

COMMAND1|COMMAND2|COMMAND3|....

head -n 9 /etc/passwd | tail -n 1  (取出第九行)

注意:所有的用于管道连接的命令,都应该是能够有标准输出数据流的命令;

tee: T

[[email protected] ~]# echo hahaha

hahaha

[[email protected] ~]# echo hahaha | tee /etc/passwd

hahaha

[[email protected] ~]# cat /etc/passwd

学好管道的运用,可以大大的提高我们早工作时的效率和效果。

时间: 2024-10-24 03:47:01

运维学习第四弹的相关文章

运维学习第三弹

运维学习--命令 cd: cd[-L|-P][dir] pwd  查看目录  oldpwd cd DIR 将工作目录切换到DIR所代表的目录 cd:将工作目录切换至当前用户的家目录 cd -:将工作目录切换至上一次的工作目录:在两个目录之间互相切换 cd ~:将工作目录切换至家目录 cd~USERNAME : 将工作目录切换至指定用户"username'的家目录,仅限于root用户使用 pwd[-LP] pwd  type pwd  (查看内部命令) pwd -p 切换根本路径 ls ls:查看

Linux运维学习第四周记

古木阴中系短篷 杖藜扶我过桥东 沾衣欲湿杏花雨 吹面不寒杨柳风 *不要辜负绵绵春意 第四周学记 第四周主要学习了文件查找和打包压缩的相关工具,以及软件包管理工具 文件查找相关命令 1.locate 在索引中查找 2.find 在磁盘中查找,功能强大 文件压缩工具 1.compress和uncompress 2.gzip和gunzip 最常用 3.bzip2和bunzip2 压缩比较高,较常用 4.xz和unxz 压缩比最高,耗费资源 5.zip和unzip 通用性高 *压缩比xz>bz2>gz

运维学习

运维学习第二弹: 一.centOS虚拟机的基本指令: 二.三大开源协定: 三.软件的一般四类文件: 二进制文件:可执行文件 windows=.exe(execute) /msi linux:ELF 头文件/库文件(用于应用程序和内核的链接): windows:dll(dynamic linked Library) linux:so(shared object): ko(lernel object): a 帮助文件:整个程序的使用说明书 配置文件:变量  就是这个文件自己的名字 任何文件的路径都由

运维学习之加密和解密

运维学习之加密与解密: 众所周知,在网络的世界里不存在绝对的安全性.各种钓鱼网站,病毒等等危害着我们的网 络环境.所以,作为一个运维人员,在我们利用网络进行通信时,保证通信的机密性.完整性.可用性是必要的. 我们的日常生活中有以下三点威胁网络安全的行为: 1.威胁机密性的攻击行为,它的途径是窃听.嗅探.扫描和通信量分析 2.威胁完整性的攻击行为,它的途径是更改.伪装.重放.否认 3.威胁可用性的攻击行为,它的途径是拒绝服务 为应对以上问题,我们在技术和服务两方面提出了解决方案: 从技术上我们使用

Linux运维学习-4——2016年7月26日

格式说明: 操作 概念 命令 说明及举例 四 du -sh /sys 查看文件.文件夹大小 /sys/class/scsi_host/host2/scan 在线扫盘(新加硬盘执行这个命令后才能发现) stat /etc/issue 更详细的看数据 蓝色:目录绿色:可执行文件浅蓝色:链接文件红色:压缩文件 创建-h文件名的文件,删除?访问?绝对路径 -:常规文件d:目录l:链接文件b:块设备(比如硬盘,有缓存)c:字符设备(不真实存在,没缓存) p:管道文件 例: 命令1 | 命令2 命令1的输出

Linux运维 第四阶段 (五) MySQL用户和权限管理

Linux运维 第四阶段 (四)MySQL用户和权限管理 1.相关概念: >mysql用户: 类似VSFTPD虚拟用户: 密码,自己独有的加密机制,PASSWORD函数: 用户名@主机: 用户名16字符以内,主机(主机名.IP.网络地址.通配符(%,_): --skip-name-resolve(跳过名称解析,可提高用户连接速度) 账号是用来认证的: >RENAME USER  'old_name'@'host'  TO  'new_name'@'host;  (重命名用户) >权限,授

Linux运维 第四阶段 (六)MySQL备份&&还原(mysqldump、LV’s snapshot、xtrabackup)

Linux运维 第四阶段 (六)MySQL备份&&还原(mysqldump.LV's snapshot.xtrabackup) 一.相关概念 备份:副本,mysql-database备份不同于RAID(RAID是保证硬件损坏而不会业务终止) 备份内容:数据.配置文件.二进制日志.事务日志 1.备份类型: >热备份.温备份.冷备份 热备份:读写不受影响,复杂度高,InnoDB(xtrabackup,mysqldump),lvm快照功能可实现几乎热备: 温备份:仅可执行读操作,MyISA

运维学习路线2

运维学习需要分为四个阶段: Linux初级入门 > Linux中级进阶 > Linux高级提升 > 资深细分方向进阶 第一阶段:初级入门 初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线,个人建议学习的路线如下: Linux基础知识.基本命令(起源.组成.常用命令如cp.ls.file.mkdir等常见操作命令) Linux用户及权限基础 Linux系统进程管理进阶 Linux高效文本.文件处理命令(vim.grep.sed.awk.f

Linux运维 第二阶段 (四)用户管理

Linux运维第二阶段(四)用户管理 一.相关文件 >/etc/passwd                  用户信息文件 root:x:0:0:root:/root:bin/bash(以下依次为第1到第7字段) 1.用户名 2.密码标记 3.uid:超级用户root的uid为0,普通用户要升级为管理员,uid改为0即可(不建议建立多个管理员账号:1-499系统用户uid(伪用户),不能登录系统,用来运行系统或服务的,其中1-99是系统保留的账号,自动创建,100-499是预留给用户创建系统账