运维基础--Linux中bash的基础特性

bash 的基础特性如下:

一、命令的别名--alias 命令

用来定义和显示命令的别名,unalias撤销定义的别名;但是要注意以下几点:

1.alias的效果仅限于当前shell的生命期;

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

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

二、命令历史

shell进程会其会话中保存此前用户提交执行过的命令,history是shell的内置命令

  1.命令语法格式:

history [-c] [-d OFFSET] [n]

history -anrw [FILENAME]

history -ps VALUE [VALUE...]

-c: 清空命令历史;

-d offset(偏移量):删除指定命令历史,offset为history显示出来的命令数字

-r: 从文件读取命令历史至历史列表中;

-w:把历史列表中的命令追加至历史文件中;

history #:显示最近的#条命令;

重复使用命令缓冲区中的命令

●!#:再一次执行历史列表中的第#条命令;

●!-#:执行倒数第几条命令;

●!!:再一次执行上一条命令;

●!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;

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

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

●ESC,.  最后一次命令中最后一个参数;

●Alt+.  真正终端上才可以使用此用法;

●!^: 第一个位置的参数

●!:NUM  表示最后一次命令中的第NUM个位置的参数;

●!SEQUENCE:NUM  表示第SE条命令的第NUM个参数;

●!STRING:^|$|*|NUM;

2.与历史相关的bash变量

HISTSIZE:shell进程可保留的命令历史的条数;

HISTFILE:持久保存命令历史的文件,默认为.bash_history

HISTFILESIZE:命令历史文件的存储历史命令数量条数;

HISTCONTROL:控制命令历史记录的方式

ignoredups:忽略重复的命令;

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

ignoreboth:以上两者同时生效;

三、快捷键:

按键组合映射成bash可以识别的命令;

Ctrl+a:跳转至命令行行首

Ctrl+e:跳转至命令行行尾

Ctrl+u:删除行首至光标所在处之间的所有字符;

Ctrl+k:删除光标所在处至行尾的所有字符;

Ctrl+l:清屏,相当于clear

四、命令补全机制:

% SHELL命令的执行过程:

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

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

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

4.判断选项以及参数是否正确;%

两个方面的理解:

命令本身的字符串补全&&参数的补全;

使用TAB键可以完成命令或者路径的补全:

注意:如果给出的字符串不是唯一标识,则bash不予不全,再次TAB键,bash给出参考列表;如果参考列表中的内容过多,bash会询问是否显示该列表;

还可以根据提供的参数路径进行补全,如果参数没有任何提示字符串信息,则默认从工作目录查找;

五、shell 的命令行展开(用简单的字符实现bash能够识别的复杂信息)

~:

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

~STR :bash会自动将其展开为以STR为用户名的家目录;

~+ :调用SHELL变量”PWD”的值;

~- : 调用SHELL变量”OLDPWD”

{}:在其中可以填充一个以”,”分隔的路径列表,bash会将其展开为多个独立的路径;

例如:mkdir /{a,b}_{c,d} 创建了四个目录:a_c,a_d, b_c, b_d。

六、命令的执行结果

1.bash通过状态返回值来输出结果:成功:0  失败:1-255

0:命令执行成功;1,2,127: bash内置的状态返回值;1表示小问题,2表示严重问题,127表示命令本身出现问题;3-126以及128-255:用户自定义的状态信息;

2.状态返回值保存于bash的特殊变量:$?

3.引用命令的执行结果:$(COMMAND)或`COMMAND`

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

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

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

引用方法:

``:反向单引号—反引号;

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

补充命令:

wc:统计一个文件的行数,字数以及字节数;

-c:只显示字节数

-l:只显示行数

-w:只显示字数;

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

与命令执行成功与否相关的返回内容,保存在bash的一个特殊变量中:$?;

七、引用特性

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

“ ” :弱引用,被双引号引用的内容,有些特殊的字符仍会保留其特殊含义,比如: $、\、”

八、转义功能:

\:bash定义的转义字符,只能使其后一个字符失去特殊含义;

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

匹配模式:元字符(一组代替一个或多个字符的字符)

具有特殊意义的专用字符,可以用来规定其前导字符在目标对象的出现模式

*:匹配任意长度的任意字符,包括空字符

?:匹配任意单个字符

[]:匹配指定范围内的任意单个字符

例如[abc]、[a-z]、[A-Z]、[a-zA-Z]、[A-Z]、[0-9]、[a-z0-9]

特殊格式:

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

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

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

[[:digit:]]:所有数字

[[:alnum:]]:所有的字母和数字

[[:space:]]:所有空白字符

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

[^]:  匹配指定范围外的任意单个字符

十、输入输出重定向;

在使用计算机时 实现某种功能的主体是:程序 (= 指令 + 数据;)

数据是指令操作的对象,在Linux体现就是文件;

可以用于输入的设备也是一种文件;

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

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

显示器,文件系统的常规文件,网卡声卡…

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

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

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

c).错误数据流:将程序无法处理或处理过程中出现的问题的结果展示给用户的数据流;默认错误数据流的终点是显示器;

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

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

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

文件描述符:File Descriptor,FD。

0:标准输入,stdin

1:标准输出,stdout

2:标准错误,stderr

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

简单来说,

不是从键盘设备完成的数据流输入,就可以称为输入重定向或者叫做重定向输入;

不是到显示器设备正确输出数据流就被称为输出重定向,或叫重定向输出

输出重定向:

>:覆盖输出重定向

set –C //开启防误覆盖开关,此开关启后,可以用“>|”符号继续覆盖重定向;

set +C//关闭防误覆盖

>>:追加输出重定向

错误重定向:

2>:覆盖错误重定向

2>> :追加错误重定向

时间: 2024-07-30 23:28:32

运维基础--Linux中bash的基础特性的相关文章

Linux运维 第二阶段 (八)shell基础

Linux运维第二阶段(八)shell基础 一.shell的两种主要语法:Bourne家族(sh/ksh/bash/psh/zsh);C家族(csh/tcsh). 注:bash和zsh在不同程度上支持csh的语法. #vi  /etc/shells                 (可查询linux支持的shell) 二.1.#echo  -e|-n  输出内容 -e      可支持反斜线\控制的字符转换(\\,\a,\b,\c,\e,\f\,\n,\r,\t,\v,\0mmm,\xhh) -

老男孩26期运维班linux基础知识大比拼即将开始

老男孩26期运维班linux基础知识大比拼 1 比赛说明 比赛时间:2015年11月12日下午15点 比赛地点:老男孩教育教室二 比赛人员:老男孩教育26期全体同学 奖项:团体奖(按组奖励共1-9组): 一等奖奖励300元人民币或每人老男孩老师新书一本和老师合影签名. 二等奖奖励200元人民币 三等奖奖励100元人民币 个人奖:3名,赠老男孩新书一本 惩罚:没有得奖的组,或者组内无人得奖的组,罚100元或派选代表表演一个节目(唱歌或其它) 比赛规则当场宣布: 主评委:老男孩老师,张导 辅助评委:

自动化运维系列之Ansible命令应用基础(模块的应用)【持续更新中···】

自动化运维系列之Ansible命令应用基础(模块的应用) 模块简介 Ansible可以使用命令行方式进行自动化管理,基本语法如下: ansible <host-pattern> [-m module_name] [-a args] <host-pattern> 对哪些主机生效 [-m module_name] 需要使用的模块 [-a args] 模块特有的参数,这里在使用时需加单引号哦! Ansible的命令行管理工具都是由一系列模块.参数所支持的,可以在命令行后加上-h或--he

【安全运维】linux系统加固(第二部分),经测试可行

前言 接续系统加固第一部分未完的内容,第二部分主要涉及关闭多余的服务,用户账户的安全策略,以及内核网络参数的优化等等. <修改系统默认的账户密码策略> 这是通过编辑  /etc/login.defs  文件相关内容实现的.和前面一样的道理,修改前需要备份,然后把"鸡蛋"放在多个"篮子"里: [[email protected] 桌面]# cp -p  /etc/login.defs /etc/login.defs_backup 使用 vim 文本编辑器编

LINUX的bash的一些特性

1.bash的特性 在LINUX进行SHELL编程是很常见的一项任务,熟悉BASH的特性,是十分必要的. 昨天花了一天时间,对BASH的特性进行了学习总结,发现过去的自己,对LINUX的BASH特性认识的很少,收获很多. 2.BASH支持命令行编辑 一直以来,和LINUX的COMMAND LINE打交道,只知道clear清屏,用退格键进行删除.其实,BASH支持命令行进行高效,快速的编辑.一些常用的,总结如下: 序号 命令快捷键 说明 1 ctrl+a 表示跳到命令行首 2 ctrl+e 表示跳

Linux中bash中的几种基础特性汇总!

首先需要知道什么是shell?如果将Linux内核当作一个地球的核心,那么shell就是地壳.shell本身也是一个应用程序,为我们提供了使用系统的接口.shell程序有很多种,目前主流发行版大多数默认使用bash,其次还有sh,tcsh,csh,fish等,其程序存储在/etc/shells目录下. 由于目前最常用的bash,所以就以bash为例来说一说bash的基础特性,偷偷说一句,其实我也是个新手,其他的shell并未接触,不敢轻易去说,当然本文中难免有错误,还请各位不吝赐教,让大家共同进

运维与自动化系列③自动化部署基础与shell脚本实现

自动化部署基础与shell脚本实现 关于自动化的基础知识: 1.1:当前代码部署的实现方式: 运维纯手工scp到web服务器纯手工登录git服务器执行git pull或svn服务器执行svn update更新代码通过xftp上传代码开发打压缩包上传到服务器然后解压 缺点:1.需要运维全程参与,占用大量的工作时间2.上线时间比较慢3.人为造成的失误较多,管理比较混乱4.回滚复杂而且慢,还不及时 1.2:运行环境规划:开发环境:开发者本地有自己的环境,然后运维需要设置开发环境的公用服务,例如开发数据

自动化运维之ansible-安装部署与基础命令篇

一.Ansible简介 Ansible基于Python语言开发,集合了众多优秀运维工具的优点,实现了批量运行命令.部署程序.配置系统等功能. 二.安装部署Ansible服务 Ansible自动化运维环境由控制主机与被管理主机组成,由于Ansible是基于SSH协议进行通信的,所以控制主机安装Ansible软件后不需要重启或允许任何程序,被管理主机也不需要安装和运行任何应用程序. Ansible案例环境 角色 ip地址 组名 控制主机 192.168.174.209 被管理主机1 192.168.

运维、linux运维是什么?

从不知道运维是什么 到后来接触了linux运维 后来玩遍了运维常用的各种开源软件发现原来运维是这么回事 又到了后来,运维真的是我理解的这些吗?会软件,会配置,会部署.会调优,会处理故障...但是总觉得差了什么. 再后来感觉运维多没入门了,噢!我的天啊,运维到低是什么啊!!!!! 运维到底是什么啊! 运维到底是什么啊啊!! 是啥呢!!探索吧!骚年!