10.1认识shell

一、 什么是 Shell

https://www.jianshu.com/p/02ad4dbd9161

管理整个计算机硬件的其实是操作系统的核心 (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 //隐藏命令的输入

stty echo //恢复

程序化脚本: (shell scripts)

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

命令别名: alias

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

Bash shell 的内建命令 type

用途: 用来测试命令的类型
type [-tpa] name
选项和参数:
:不加任何选项,会显示name是外部命令,还是bash内置命令
-t //会将name以下面这些关键字来表示出他的意义:
file :外部命令
alias :命令别名
builtin :bash内置命令
不显示任何数据时,表示name不是任何命令

-p //后面接外部命令时,才会显示出命令的完整文件名
-a //会由PATH变量定义的路径中,将所以含name的指令都列出来,包括alias

历史命令:history

查看及操作:

history //列出全部历史命令记录
history 10 //显示最近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

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

文件系统及程序限制关系

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

image

最常用的就是 -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 :交换光标处和之前的字符
Alt + t :交换光标处和之前的单词
Ctrl+c 终止目前在进行的命令
Ctrl+d 输入结束(EOF),例如写邮件结束的时候
Ctrl+u 在提示符下,删除光标前面所有的字符
Ctrl+h  在命令提示符下,删除光标前面的单个字符

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

通配符与特殊符号

通配符如下表:

image
[dmtsai@study ~]$ LANG=C              >==由于与编码有关,先设置语系一下

范例一:找出 /etc/ 下面以 cron 为开头的文件名
[dmtsai@study ~]$ ll -d /etc/cron*    >==加上 -d 是为了仅显示目录而已

范例二:找出 /etc/ 下面文件名“刚好是五个字母”的文件名
[dmtsai@study ~]$ ll -d /etc/?????    >==由于 ? 一定有一个,所以五个 ? 就对了

范例三:找出 /etc/ 下面文件名含有数字的文件名
[dmtsai@study ~]$ ll -d /etc/*[0-9]*  >==记得中括号左右两边均需 *

范例四:找出 /etc/ 下面,文件名开头非为小写字母的文件名:
[dmtsai@study ~]$ ll -d /etc/[^a-z]*  >==注意中括号左边没有 *

范例五:将范例四找到的文件复制到 /tmp/upper 中
[dmtsai@study ~]$ mkdir /tmp/upper; cp -a /etc/[^a-z]* /tmp/upper

特殊符如下:

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

数据流重导向

image
image

黑洞文件 /dev/null

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

find /home/ -name .bashrc 2> /dev/null

一些典型案例

image
image
image

管道

image

cut 补充

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

export | cut -c 12-

image

心得:

shell
存放shell在/etc/shells

chsh -l  可以查看系统安装的shell
/bin/sh  临时改变目前使用的shell(进入子shell)
bash功能
stty -echo  隐藏命令的输入
stty echo  取消隐藏命令的输入
alias  显示终端的全部别名
alias ll=‘ls -l’  设置别名
unalias  ll  取消别名设置
\ll  临时取消别名
type  查看命令的类型(不加任何选项,会显示name是外部命令,还是bash内置命令)
type -t 命令  file:外部命令 alias:命令别名 builtin:bash内置命令
不显示任何数据时,表示name不是任何命令
history历史命令

history  列出所有历史命令
history 10  列出最近10条的命令
history -c  清除目前shell中的所有历史命令
history -w  立即写入 .bash_history
注意:.bash_history 存放的是历史命令
!25  执行历史命令编号为25的历史命令
!ca  执行最近以ca开头的命令
!!  执行上一条命令

文件/etc/issue 存放系统未登录前显示的信息如下 各字段意义上有图


image.png

image.png

文件/etc/motd 存放登陆后的一些提示信息


image.png

image.png
ulimit -a  显示所有可用的额度
ulimit -f 10240  限制用户建立10M一下的文件

文件/etc/security/limits.conf 设置资源限制的文件

bash常用的命令
Ctrl + a 移动到命令行首
Ctrl + e 移动到命令行尾
Ctrl + u 删除光标至行首
Ctrl + d 删除光标至行尾
通配符: * 该位置代表0到无穷多个任意字符 例如 ls *.txt

  • ? 该位置一定有一个任意字符
  • [] 中括号里的任意字符 例:[abcd] 可以是 a,b,c,d这四个任意一个
  • [-] 按 - 前后的字符按一定顺序连续 例:[0-9] 表示0到9的任意
  • [^] 反向选择

特殊符 \ 转义字符

| 管道符
$ 取变量的前缀符
; 命令分割符 可以执行多个命令用;隔开
& 将执行的命令放到后台
! 取非
/ 路径分割符
,>> 输入重定向,> 覆盖,>>追加
<,<< 输出重定向
' ' 单引号(强硬),内的字符均视为一般字符
" " 双引号(较弱),
`` 反引号,可以用 $( )取代
() 中间为子shell执行的起始与结束
{} 中间以执行的命令块的组合

数据重定向:
0< 标准输入
1> 标准正确输出
2> 标准错误输出

文件/dev/null是黑洞文件,只进不出

find /home/ -name .bashrc 2> /dev/null  将标准错误输出到/dev/null中

find /home -name .bashrc >list 2>&1

find /home -name .bashrc &>list
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,383评论 0 5
  • 第一节 Shell概述 1.Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送...
    littlexjing阅读 1,940评论 0 1
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,746评论 0 10
  • 1、bash 与 shell 管理整个计算机硬件的其实是操作系统的内核(Kernel),这个内核是需要被保护的,所...
    Zhang21阅读 854评论 0 2
  • 月反思:八大维度精进法则 月度检视.第2个月,2019年3月,光阴似箭 没有反思的人生不值得过 ...
    卷卷_b2b7阅读 99评论 0 0