10.11

8.1 shell介绍
8.2 命令历史
8.3 命令补全和别名
8.4 通配符
8. 5 输入输出重定向

shell介绍

 

Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。

下面是流程示意图:

 

Shell 既然是工作在 Linux 内核之上,那我们也有必要了解下 Linux 相关知识。

Linux 是一套免费试用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

1983 年 9 月 27 日,Richard Stallman(理查德-马修-斯托曼)发起 GNU 计划,它的目标是创建一套完全自由的操作系统。为保证 GNU 软件可以自由的使用、复制、修改和发布,所有的 GNU 软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU 通用公共许可证(GNU General Plubic License,GPL),说白了就是不能做商业用途。

GNU是"GNU is Not Unix"的递归缩写。UNIX 是一种广泛使用的商业操作系统的名称。

1985 年,Richard Stallman 又创立了自由软件基金会(Free Software Foundation,FSF)来为GNU计划提供技术、法律以及财政支持。

1990 年,GNU 计划开发主要项目有 Emacs(文本编辑器)、GCC(GNU Compiler Collection,GNU 编译器集合)、Bash 等,GCC 是一套 GNU 开发的编程语言编译器。还有开发一些 UNIX 系统的程序库和工具。

1991 年,Linuxs Torvalds(林纳斯- 托瓦兹)开发出了与 UNIX 兼容的 Linux 操作系统内核并在GPL条款下发布。

1992 年,Linux 与其他 GUN 软件结合,完全自由的 GUN/Linux 操作系统正式诞生,简称 Linux。

1995 年 1 月,Bob Young 创办 ACC 公司,以 GNU/Linux 为核心,开发出了 RedHat Linux 商业版。

Linux 基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。与 Unix 思想十分相近。

1.2 Shell  基本分两大类

1.2.1 图形界面 Shell(GUI Shell)

GUI为 Unix 或者类 Unix 操作系统构造一个功能完善、操作简单以及界面友好的桌面环境。主流桌面环境有 KDE,Gnome 等。

1.2.2 命令行界面 Shell(CLI Shell)

CLI是在用户提示符下键入可执行指令的界面,用户通过键盘输入指令,完成一系列操作。

在 Linux 系统上主流的 CLI 实现是 Bash,是许多 Linux 发行版默认的 Shell。还有许多 Unix 上Shell,例如 tcsh、csh、ash、bsh、ksh 等。

1.3  第一个 l Shell  脚本

本教程主要讲解在大多 Linux 发行版下默认 Bash Shell。Linux 系统是 RedHat 下的 CentOS 操作系统,完全免费。与其商业版 RHEL(Red Hat Enterprise Linux)出自同样的源代码,不同的是CentOS 并不包含封闭源代码软件和售后支持。

 

1.2 Shell  基本分两大类

1.2.1 图形界面 Shell(GUI Shell)

GUI为 Unix 或者类 Unix 操作系统构造一个功能完善、操作简单以及界面友好的桌面环境。主流桌面环境有 KDE,Gnome 等。

1.2.2 命令行界面 Shell(CLI Shell)

CLI是在用户提示符下键入可执行指令的界面,用户通过键盘输入指令,完成一系列操作。

在 Linux 系统上主流的 CLI 实现是 Bash,是许多 Linux 发行版默认的 Shell。还有许多 Unix 上Shell,例如 tcsh、csh、ash、bsh、ksh 等。

1.3  第一个 l Shell  脚本

本教程主要讲解在大多 Linux 发行版下默认 Bash Shell。Linux 系统是 RedHat 下的 CentOS 操作系统,完全免费。与其商业版 RHEL(Red Hat Enterprise Linux)出自同样的源代码,不同的是CentOS 并不包含封闭源代码软件和售后支持。

1.4.2 普通变量与临时环境变量

普通变量定义:VAR=value

临时环境变量定义:export VAR=value

变量引用:$VAR

下面看下他们之间区别:

Shell 进程的环境变量作用域是 Shell 进程,当 export 导入到系统变量时,则作用域是 Shell 进程及其 Shell 子进程。

 

s axjf 输出的第一列是 PPID(父进程 ID),第二列是 PID(子进程 ID)当SSH 连接 Shell 时,当前终端 PPID(-bash)是 sshd 守护程序的 PID(root@pts/0),因此在当前终端下的所有进程的 PPID 都是-bash 的 PID,比如执行命令、运行脚本。

所以当在-bash 下设置的变量,只在-bash 进程下有效,而-bash 下的子进程 bash 是无效的,当export 后才有效。

进一步说明:再重新连接 SSH,去除上面定义的变量测试下所以在当前 shell 定义的变量一定要 export,否则在写脚本时,会引用不到。

 

还需要注意的是退出终端后,所有用户定义的变量都会清除。

在/etc/profile 下定义的变量就是这个原理,后面有章节会讲解 Linux 常用变量文件。

1.4.3 位置变量

位置变量指的是函数或脚本后跟的第 n 个参数。

【history】查看命令历史history 
可以查看命令历史history -c 
清楚命令历史history -d 500删除第500个命令(第,只删除了一个命令)-d 删除指定命令-c 删除所有历史命令-w 保存缓冲区的命令到历史文件中(.bash_history)
!n 执行命令历史中第n条命令
!-n 执行命令历史中倒数第n条命令
!! 执行上一条命令
!+(命令的首字母) 执行最近一次以该首字母开头的命令
!string 执行最近一次以该字符串开头的命令

!$ 引用上一个命令的最后一个参数(相当于按下esc键后再按下.)(或者Alt+.)
环境变量
PATH:命令搜索路径(命令补全搜索路径)
HISTSIZE:命令历史缓冲区大小(默认是1000)即可保存1000个历史命令
            
                Tab不仅可以补全命令也可以补全文件路径 当遇到开头一样,多个文件的时候,按两下,显示匹配信息供选择。
当遇到单个文件的时候,tab键,按一下,匹配命令和参数。


 

  • 命令语法
    alias [命令别名]=[具体命令] 设置别名、

  • 命令描述
    alias命令用来设置指令的别名

  • 命令选项
    -p:打印已经设置的命令别名。(可加可不加)
    unalias 取消别名

  • 显示所有别名

  • 给重启服务systemctl restart network.service 做别名

  • alias定义别名位置 .bashrc 和 /etc/profile.d/’下

  • 通配符

  • 、在数据库中,
    (1)、 % 包含零个或更多字符的任意字符串。 WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名。
    (2)、 _(下划线) 任何单个字符。 WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。

    (3)、 [ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。 WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。

    (4)、[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。 WHERE au_lname LIKE 'de[^l]%' 将查找以 de 开始且其后的字母不为 l 的所有作者的姓氏。

    2、在计算机中,下面是LINUX中的

    ·“?”可替代单个字符。

    ·“*”可替代任意字符。

    ·方括号“[charset]”可替代charset集中的任何单个字符。

    对最后一条做些解释。[cChH]通配符便可替代c或h字符的大小写形式。
    通配符集还能描述介于字符对之间的所有字符。如“[a-z]”就可以代
    替任意小写字母,而[a-zA-Z]则可替代任意字母。注意可替代的字符
    包括字符包括字符对之间的所有字符。

    其他的也有些软件中也带有通配符了,向WORD中。

  • 输入输出重定向

  • 将ls –l的输出结果保存到/root/my.out这个文件中

  • 将/root/my.out作为cat的输入,读出/root/my.out的内容

  • 输出追加重定向就是将输出追加到一个已存在的文件中,这个命令的作用是找出文件系统中含有bin字符的文件,但是bin前面必须还有一个任意字符,即找出含有四个字符,但是结尾为bin的文件,然后将结果保存到my1.out这个文件中

  • 输入重定向:是指不使用系统提供的标准输入端口,而进行重新的指定。符号<.

    输出重定向>或者>>

    重定向就是通过各种的方法将各种网络请求重新定个方向转到其它位置

     

                         
                    
                    
    


        
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值