SHELL 认识Bash

管理整个计算机硬件的其实是操作系统的核心 (kernel),这个核心是需要被保护的! 所以我们一般使用者就只能通过 shell 来跟核心沟通,以让核心达到我们所想要达到的工作。

image

二、Bash

Bash 【Bouren Again SHell】的简称,也是基于GNU的架构下发展出来的

是众多shell中的一个.

Linux系统中的shell保存在/etc/shells这个文件中

可以这样查看:

chsh -l//查看目前系统安装的shell/bin/sh//改变目前的shell

CentOS7 中默认可用 Shell

cat /etc/shells

三、Bash 的功能

命令别名: alias, unalias

藏终端输入:stty

stty -echo//隐藏命令的输入sttyecho//恢复

程序化脚本: (shell scripts)

可以将你平时管理系统常需要的连续命令写成一个文件, 该文件并且可以通过交互式的方式来运行。

命令别名: alias

alias//显示目前终端的全部别名aliasll=“ls -l” // 设置别名unaliasll //取消别名设置

Bash shell 的内建命令 type

用途: 用来测试命令的类型

type [-tpa] name

选项和参数:

:不加任何选项,会显示name是外部命令,还是bash内置命令

-t //会将name以下面这些关键字来表示出他的意义:

file :外部命令

alias :命令别名

builtin :bash内置命令

不显示任何数据时,表示name不是任何命令

-p //后面接外部命令时,才会显示出命令的完整文件名

-a //会由PATH变量定义的路径中,将所有含name的指令都列出来,包括alias

历史命令:history

查看及操作:

history//列出全部历史命令记录history10 //显示最近10条执行过的命令history-c //清除目前 shell 中的所有历史命令history-w //即刻写入 .bash_history

使用执行:

!25//执行第25条历史命令! ser//执行最近一次以 “ser”开头的命令!!//执行上一条命令

注意history的安全问题,历史命令的记录数量上要控制好

注意:同一帐号同时多次在线执行命令时,这样会产生多个bash,那么会以最后一个登出的命令历史记录为准

建议使用一个用户登入bash,再用[Ctrl]+z fg bg 来控制前后台来切换不同的工作

history 无法记录时间

解决方法:可以透过~/.bash_logout来进行history的记录,并加上date来增加时间参数

bash 的登录主机欢迎信息: /etc/issue, /etc/motd

当你登录到系统之前,想了解这个系统的一些简单的硬件及软件版本信息等可以做如下设置:

/etc/issue//修改这个文件的内容即可

image

image.png

/etc/motd//编辑这个文件,会在用户登录之后看到一些欢迎信息

文件系统及程序限制关系

为了放置有人恶意打开多个大容量的档案,是内存耗尽导致系统宕机,bash可以限制用户的某些系统资源。

image

image.png

最常用的就是 -f 了

例如:限制用户仅等建立10MBytes以下容量的文件

ulimit-f 10240

永久生效,编辑/etc/security/limits.conf

格式:

用户 限制的级别 类型 限制的值

比如

shark soft nofile 100

shark hard nofile 100

nofile 限制文件打开数量

nproc 网络连接数

Bash 快捷键

编辑命令

Ctrl + a :移到命令行首

Ctrl + e :移到命令行尾

Ctrl + f :按字符前移(右向)

Ctrl + b :按字符后移(左向)

Alt + f :按单词前移(右向)

Alt + b :按单词后移(左向)

Ctrl + xx:在命令行首和光标之间移动

Ctrl + u :从光标处删除至命令行首

Ctrl + k :从光标处删除至命令行尾

Ctrl + w :从光标处删除至字首

Alt + d :从光标处删除至字尾

Ctrl + d :删除光标处的字符

Ctrl + h :删除光标前的字符

Ctrl + y :粘贴至光标后

Alt + c :从光标处更改为首字母大写的单词

Alt + u :从光标处更改为全部大写的单词

Alt + l :从光标处更改为全部小写的单词

Ctrl + t :交换光标处和之前的字符

Ctrl+c 终止目前在进行的命令

Ctrl+d 输入结束(EOF),例如写邮件结束的时候

Ctrl+u 在提示符下,删除光标前面所有的字符

Ctrl+h 在命令提示符下,删除光标前面的单个字符

Ctrl+k 在命令提示符下,删除光标后面所有的字符

通配符与特殊符号

通配符如下表:

image

image.png

image

image.png

[dmtsai@study ~] ll -d /etc/cron* >==加上 -d 是为了仅显示目录而已范例二:找出 /etc/ 下面文件名“刚好是五个字母”的文件名[dmtsai@study ~]ll -d /etc/????? >==由于 ? 一定有一个,所以五个 ll -d /etc/[0-9] >==记得中括号左右两边均需 范例四:找出 /etc/ 下面,文件名开头非为小写字母的文件名:[dmtsai@study ~] mkdir /tmp/upper; cp -a /etc/[^a-z]/tmp/upper

特殊符如下:

批注符号\ 转移符号,可以将具有特殊意义的符号变为一般字符| 管道符,把前一个命令的结果传递给后一个命令,可以多个,以此类推; 连续下达命令的分隔符取用变量值的前缀符号& 将一个工作置于后台! 逻辑运算意义上的非/ 路径分隔符>,>> 输出重定向,>覆盖, >>追加<,<< 输入重定向''单引号,单引号内的字符均视为一般字符( )取代() 在中间为子shell的起始与结束{} 在中间为命令区块的组合

数据流重导向

image

image.png

image

image.png

黑洞文件/dev/null

可以将一些错误的标准输出,重新输出到/dev/null中

find /home/ -name .bashrc2>/dev/null

一些典型案例

image

image.png

image

image.png

image

image.png

管道

image

cut 补充

把export输出的信息,取出第12个字符以后的所用字符串。

export| cut -c 12-

image

你可能感兴趣的:(SHELL 认识Bash)