Shell基础
一、Shell概述
- 什么是shell?
1) Shell的使用对象人数用对象人数是有限的,仅供自己或是自己的团队,也就是说可以不考虑效率的问题,即不需要进行优化。追求的是实现功能,逻辑简单。
2) 命令解释器,终端输入的内容内核无法识别,这个时候shell用来翻译这些指令为二进制然后内核将返回信息交给shell进行翻译显示在终端。脚本是命令的集合。
常见的Shell种类有:
Bourne Shell(/usr/bin/sh或/bin/sh)----古老,接近淘汰
Bourne Again Shell (/bin/bash)-----Linux标准shell
C Shell (/usr/bin/csh)
K Shell (/usr/bin/ksh)
Shell for Root (/sbin/sh)
- Shell脚本的执行方式:
1) Echo命令:输出,带有空格的内容需要放在“”中。
Echo -n:输出内容不换行(默认是自动换行的)
Echo -e:支持反斜杠控制的字符转换(即可支持控制字符)
转义符的作用: 取消后面字符的特殊含义
- shell脚本的执行:
编写脚本一定要加#!/bin/bash 告诉计算机是什么类型的脚本
书写脚本需要注意 书写内容中有! 一定要在!后面加空格
执行三种方法:1) 赋予执行权限chmod 755 hello.sh 然后绝对路径执行/root/hello.sh 2)也要赋予执行权限,采用相对路径执行./hello.sh 注意:使用相对路径执行时应与脚本文件在同一目录下。 3)不需要赋予执行权限,直接用bash调用bash hello.sh
二、Bash的基本功能
- 历史命令
(1) 历史命令的查看:history 会被一直保存下去即使重启也不会消失(存储位置:.bash_history)当前查看.bash_history中命令会少于history所显示的命令,原因就是当前的命令还没有存储到.bash_history。如果想强制直接保存到.bash_history中使用命令history -w 。这个在用户注销时会自动写入。历史命令默认存放1000条(在/etc/profile下有一个HISTSIZE)
History -c :清空历史命令
(2) 历史命令的调用
使用原来的历史命令有以下的方法:
- 使用上下箭头来调用历史命令
- 使用“!n”重复执行第n条历史命令
- 使用“!!”重复执行上一条命令
- 使用“!字符串”重复执行最后一条以该字符串开头的命令
- 使用“!$”重复上一条命令的最后一个参数
- 命令的补全是Shell的功能:
. 有三个含义: 单独的一个. 代表source命令
文件名前面加 . 是隐藏文件
目录前面加 . 是当前目录
- 别名的优先级比命令要高,命令执行时的具体顺序如下:
① 第一顺位执行用绝对路径或者相对路径执行的命令
② 第二顺位执行别名
③ 第三顺位执行bash的内部命令
④ 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。
为了让这个别名永久生效,可以把别名写入环境变量的配置文件“~/.bashrc”中。
命令: vi /root/.bashrc
- 快捷键 :
Ctrl A: 光标移动到命令行开始的位置
Ctrl D: 光标移动到命令行末尾的位置
Ctrl U: 剪切光标之前命令行(也可作为删除整行来使用)
Ctrl Y: 与Ctrl U一同使用,用来粘贴剪切内容
Ctrl C: 强行终止当前命令
Ctrl L: 清屏
Ctrl D: 退出当前终端
Ctrl Z: 挂起,放入后台。(注意在:不是中止)
- 输入输出重定向
1) Bash的标准输入与输出
Linux下的一切皆为文件,键盘名字为:/dev/stdin 作为标准输入 显示器名字为: /dev/stdout 作为标准输出 错误输出为: /dev/stderr 作为标准错误输出。由于不好记录文件描述符设置为0是标准输入,1是标准输出,2是标准错误输出。
2) 输出重定向:命令的输出本来应该输出给标准输出设备的,重定向的作用就是不让命令输出到显示器上而是输出到文件中,改变其输出方向。(最终的结果就是把命令保存到文件中)可以作为记录系统的日志。