Linux视频学习笔记(十三)--Shell基础

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011099093/article/details/86620226

声明:本系列文章是博主根据 “兄弟连新版Linux视频教程”做的笔记和视频截图,只为学习和教学使用,不适用任何商业用途。

PS:文章基于Linux版本CentOS6.9,如果对Linux感兴趣,建议去看《细说Linux》,沈超老师和李明老师的教学风格我很喜欢:)

第十章 Shell基础

视频10.1 Shell概述

1.Shell是什么

 

Shell的工作过程:简单来说,我们在Linux中写的命令都是能看懂的ls等命令,但是Linux内核智能识别0101机器语言,所以需要Shell命令解释器把命令编译为机器语言,然后让硬件去执行;执行返回的结果交由内核,Shell命令解释器再把内核的机器语言反编译成我们能看懂的命令。

 

Shell也是一种编程语言,是解释执行的脚本语言,所见即所得,而且在Shell中可以直接调用Linux系统命令

Java是编译执行的编程语言,但先编译成字节码,再由jvm解释成二进制代码,编译执行与解释执行区别,传送门:https://www.cnblogs.com/Downtime/p/7928579.html

 

综上所述,Shell是一个命令解释器,同时Shell也是一个功能强大的编程语言。

 

2.Shell分类

主要分Bourne Shell与C Shell:

 

主流用到的还是Bash:

 

3.Linux支持的Shell

进入/etc/shells文件可以查看当前Linux系统支持的Shell语法:

 

切换shell语法:

  1.  sh

sh也称Bsh,不同于Bash,单用户、系统修复模式用的就是sh,界面也会改变:

 

在sh下,输入exit命令即可退回到Bash模式:

2) csh

        csh界面与Bash模式相同,但语法不同,同样的exit可以退出此模式:

        我安装的Linux版本没有此模式,视频中的Linux版本有:

       

 

  1. /sbin/nologin

在/etc/passwd文件中,第七个位置上除了bash表示当前登录用户的登陆模式,以及/bin/sync、/sbin/shutdown等表示一个命令外,还有一种是/sbin/nologin表示当前用户不允许登录,当然表示一条命令的用户也不能用来登录:

 

视频10.2 脚本执行方式

  1. echo输出命令

 

echo其实是一个直接输出的命令,如果输出的内容中包含空格,需要加双引号,如果内容中包含!等特殊字符,需要将双引号变为单引号

 

如果使用-e选项,就可以输出更复杂的内容:

 

 

根据ASCII码输出,可以根据AScii码表,输出相应字符:

 

输出abcdef:

 

输出颜色,注意:\e[1;表示开启颜色输出,\e[0m表示结束颜色输出,固定格式:

 

2.第一个脚本

注意:

        在Linux文件中,一般#开头的行代表注释,但是,#!/bin/bash这一行不是注释,而是标识,表示这是一个Shell脚本,必须要加上

 

3.脚本执行

 

两种执行方式:

  1. 赋予权限并执行:

  1. 通过bash调用脚本执行,甚至不用给脚本赋予权限

没有x执行权限一样可以通过bash执行:

 

使用cat 文件名可以查看文件中的内容,使用cat –A 文件名可以查看包括隐藏字符在内的文件内容

$ 代表换行符;

 

有时候在Windows中写好一个shell脚本,传入到Linux中执行报错:

 

使用cat –A 文件名查看文件内容:

发现换行符$都变成了^M$,这是由于Windows中编辑的原因。

 

使用命令dos2unix将$转换为^M$格式(同样的unix2dos也可将^M$转换为$),再使用cat –A 文件名查看文件内容:

 

我的Linux系统没有安装dos2unix命令,需要yum –y install dos2unix安装

 

10.3 Bash基本功能

视频10.3.1 历史命令与补全

1.历史命令

每个用户的保存历史命令的文件路径不同,普通用户user的保存历史命令文件在/home/user/.bash_history文件中,

root用户的在/root/.bash_history文件中保存着上次退出系统之前的历史命令:

 

但是如果使用history –w就会将缓存中的历史命令保存到/root/.bash_history文件中。

 

如果修改了/etc/profile文件,需要重启系统才能生效;

 

 

2.命令与文件补全

 

视频10.3.2 别名与快捷键

1.命令别名

 

 

使用echo $PATH的方式查看环境变量,注意:要想调用变量的值,需要在变量前加$符:

 

同样的alias 别名=‘命令’只是暂时生效,要想永久生效,就需要修改/家目录/.bashrc文件:(普通用户为/home/用户名/.bashrc)

 

 

貌似unalias 别名不能删除 /家目录/.bashrc 文件中的内容:

 

2.Bash常用快捷键

 

视频10.3.3 输入输出重定向

1.标准输入输出

注意:

        上面的标准输出(/dev/stdout)和标准错误输出(/dev/stderr)设备文件名写错了

 

2.输出重定向

 

注意:

        错误命令只有通过2>或2>>才能重定向输出到文件中,而且2和>(>>)之间不能有空格

 

但是,在打印日志时不知道输出的到底是错误命令还是正确命令,这时就需要进行判断:

 

命令 >>文件 2>&1 指先将错误输出(2)保存到正确输出(1)中(>&),再将错误输出和正确输出保存到文件中,效果与命令 &>>文件相同;

>(>>) 与 文件 之间有无空格都可以

 

注意:

      有时不管命令执行结果如何都不想看到,可以使用命令 >>/dev/null 2>&1,表示不保存命令执行时的输出,/dev/null是一个特殊的文件,可以看作一个垃圾箱;

 

3.输入重定向

 

wc是一个统计命令,统计输入的行数、单词数(空格隔开的也标识为一个单词)与字节数(包括回车符、空格符):

表示2行3个单词9个字节

 

wc <文件统计文件中的行数、单词数、字节数:

 

如果是wc <<hello就是统计输入时的行、单词、字节直至下一个hello:

 

视频10.3.4 多命令顺序执行与管道符

1.多命令顺序执行

 

dd是Linux中执行磁盘复制或数据复制的命令,不仅可以复制文件,也可以复制命令,也可以复制磁盘(包括文件系统类型)

 

上面的例子是将设备文件zero复制到/root/testfile文件,前后两个date命令可以查出复制用了多长时间:

 

&&与||的用法:

 

使用 命令 && echo yes || echo no可以判断命令是否正确执行;

 

2.管道符

 

 

注意:

        more可以分屏展示,但是只能分屏展示文件的内容,而不能分屏展示命令的结果。而使用命令| more就可以分屏展示命令的结果

 

netstat -an命令是查询所有的网络连接:

8.显示网络相关信息命令 netstat

 

 

grep “内容” 文件名 命令在文件中搜索包含“内容”的部分:

 

视频10.3.5 通配符和其他特殊符号

1.通配符

 

例子:

 

2.Bash中其他特殊符号

注意:

        ‘’单引号引用没有特殊含义,””双引号应用中的$、`、\都有特殊含义:

$可以引用变量,``或者$()包含的是命令,\是转义符

 

例子:

 

猜你喜欢

转载自blog.csdn.net/u011099093/article/details/86620226
今日推荐