1. Linux基本原则
- 由目的单一的小程序组成,组合小程序完成复杂任务;
- 一切皆文件;
- 配置文件保存为纯文本格式。
2. bash特性
2.1 shell
shell(外壳),广义的shell可以理解为是用户的工作环境,在windows看来桌面就是一个shell,在linux看来终端就是shell
常见的shell有两种,一种是图形界面,即GUI,一种是命令行终端,即CLI。
常用的GUI:Graphic User Interface (图形化用户接口)
- Windows
- X-Window
- Gnome
- KDE
- Xface
常用的CLI:Command Line Interface(命令行终端)
- bash
- sh
- csh
- zsh
- ksh
- tcsh
2.2 bash特性
bash支持以下特性:
- 支持命令历史、命令补全
- 支持管道、重定向
- 支持命令别名
- 支持命令行编辑
- 支持命令行展开
- 支持文件名通配
- 支持变量
- 支持编程
2.2.1 bash支持的引号
`` //反引号,键盘左上角Esc下面的键,用于命令替换,即反引号用来包含一个命令字符串的,其中的命令会先执行,得到的结果会返回到层命令再执行,类似与$()。
"" //双引号,弱引用,可以实现变量替换
'' //单引号,强引用,不完成变量替换
双引号与单引号的区别 在于单引号直接输出内部字符串,不解析特殊字符;双引号内则会解析特殊字符 ,包括', ", $, \
,如果要忽略特殊字符,就可以利用\
来转义,忽略特殊字符,作为普通字符输出:
用当天的日期进行备份:以年-月-月(英)-日-小时-周
[root@duanruhui ~]# mkdir ` date '+%Y-%m-%h-%d-%H-%w'`
[root@duanruhui ~]# ls
2022-05-May-24-23-2
2.2.2 bash常用操作
//光标跳转
Ctrl+a //跳到命令行首
Ctrl+e //跳到命令行尾
Ctrl+u //删除光标至命令行首的内容
Ctrl+k //删除光标至命令行尾的内容
Ctrl+<-- //光标定位到离自己最近的一个单词前面
Ctrl+l //清屏
//命令历史
history //查看命令历史
-c //清空命令历史
-d OFFSET [n] //删除指定位置的命令历史
-w //保存命令历史至历史文件~/.bash_history中
//命令历史的使用技巧
!n //执行命令历史中的第n条命令
!-n //执行命令历史中倒数第n条命令
!! //执行上一条命令
!string //执行命令历史中最近一个以指定字符串开头的命令
!$ //引用前一个命令的最后一个参数
esc,. //按下esc松开后按.,引用前一个命令的最后一个参数
//命令补全
搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件, 如果多于一个,两次tab,可以给出列表,否则将直接补全
//路径补全
搜索我们给出的起始路径下的每个文件名,并试图补全
//命令别名:
alias CMDALIAS='COMMAND [options] [arguments]'
在shell中定义的别名仅在当前shell生命周期中有效,别名的有效范围为当前的shell进程。
//命令替换(把命令中某个子命令替换为其执行结果的过程)
$(COMMAND) //推荐方式
或
`COMMAND`
//命令行展开
~ //展开为用户的家目录
~USERNAME //展开为指定用户的家目录
{} //可承载一个以逗号分隔的列表,并将其展开为多个路径
/tmp/{a,b} = /tmp/a, /tmp/b
/tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
//文件名通配 globbing
* //匹配任意长度的任意字符
? //匹配任意单个字符
[] //匹配指定范围内的任意单个字符
[abc],[a-m],[0-9]
[[:space:]] //表示空白字符
[[:punct:]] //表示标点符号
[[:lower:]] //表示小写字母
[[:upper:]] //表示大写字母
[[:alpha:]] //表示大小写字母
[[:digit:]] //表示数字
[[:alnum:]] //表示数字和大小写字母
使用man 7 glob命令可以获得以上字符集合的帮助信息!!!
[^] //匹配指定范围之外的任意单个字符
//环境变量
PATH //命令搜索路径
HISTSIZE //命令历史缓冲区大小
SHELL //当前shell
//bash内置变量
RANDOM //保存着0-32768之间的随机数
//内部命令
help COMMAND
//外部命令
COMMAND --help
//在线文档
info COMMAND
//命令手册 manual
man COMMAND
//文档
/usr/share/doc
whatis COMMAND //用于查看COMMAND出现在man的哪一章节中。
//man是分章节的,以下是每一章节的内容介绍:
1 用户命令(/bin,/usr/bin,/usr/local/bin);
2 系统调用;
3 库调用;
4 特殊文件(设备文件);
5 文件格式(配置文件 的语法);
6 游戏;
7 杂项(Miscellaneous);
8 管理命令(/sbin,/usr/sbin,/usr/local/sbin)
//man手册注意事项:
[] //可选
<> //必选
... //可以出现多次
| //多选一
{} //分组
NAME //命令名称及功能简要说明
SYNOPSIS //用法说明,包括可用的选项
DESCRIPTION //命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS //说明每一个选项的意义
FILES //此命令相关的配置文件
BUGS //报告bug
EXAMPLES //使用示例
SEE ALSO //另外参照
//man翻屏
向后翻一屏 //SPACE
向前翻一屏 //b
向后翻一行 //enter
向前翻一行 //k
//查找
/KEYWORD //向后
?KEYWORD //向前
n //下一个
N //前一个
q //退出