CentOS 基础知识 Shell基础1-21-1

笔记:

一.概述
1.shell是什么?
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell也是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

2.Shell的分类:
Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh。
C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名。
区别:
Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。
Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh。
Bash: Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell。

3.linux默认支持的Shell

centos7
[root@localhost ~]# cat /etc/shells 
/bin/sh 
/bin/bash
/sbin/nologin #内置用户、不能登录的用户使用
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

二、Shell脚本的执行方式
1.echo 命令直接输出
[root@localhost ~]# echo [选项] [输出内容]
选项:
-e: 支持反斜线控制的字符转换

\\ 输出\本身
\a 输出警告音
\b 退格键,也就是向左删除键
\c 取消输出行末的换行符。和“-n”选项一致
\e ESCAPE键 \f 换页符
\n 换行符
\r 回车键
\t 制表符,也就是Tab键 \v 垂直制表符
#不常用
\0nnn 按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数
\xhh 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数
[root@localhost ~]# echo -e "a\tb\tc\nd\te\tf"
a	b	c
d	e	f
[root@localhost ~]# echo -e "ab\bc"
ac

2.sh脚本

编写脚本:
[root@localhost sh]# vim hello.sh
#!/bin/bash
#the first bash
echo -e "hello world!"
提权:
[roo@localhost sh]# chmod 755 hello.sh
执行
[root@localhost sh]# ./hello.sh 
或者
[root@localhost sh]# bash hello.sh

三、bash的基本功能
1.历史命令和命令补全

[root@localhost ~]# history [选项] [历史命令保存文件]
选项:
-c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件
~/.bash_history#历史命令保存的路径

历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
[root@localhost ~]# vim /etc/profile
修改HISTSIZE=1000即可

历史命令的调用:使用上、下箭头调用以前的历史命令、使用“!n”重复执行第n条历史命令、使用“!!”重复执行上一条命令、使用“!字串”重复执行最后一条以该字串开头的命令。
命令的补全:按“Tab”键就会自动进行补全。

2.别名与快捷键
别名:

#设定命令别名
[root@localhost ~]# alias 别名='原命令' 
#查询命令别名
[root@localhost ~]# alias
#别名永久生效(只对当前用户有效):
[root@localhost ~]# vi /root/.bashrc
#删除别名
[root@localhost ~]# unalias 别名

查询
[root@localhost ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias mv='mv -i'
alias rm='rm -i'
设定
[root@localhost ~]# alias ll='ls -l --color=auto'
删除
[root@localhost ~]# unalias ll

常用操作快捷键:

快捷键 作 用
ctrl+A 把光标移动到命令行开头。
ctrl+E 把光标移动到命令行结尾。
ctrl+C 强制终止当前的命令。
ctrl+L 清屏,相当于clear命令。
ctrl+U 删除或剪切光标之前的命令。
ctrl+K 删除或剪切光标之后的内容。
ctrl+Y 粘贴ctrl+U或ctrl+K剪切的内容。
ctrl+R 在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。
ctrl+D 退出当前终端。
ctrl+Z 暂停,并放入后台。
ctrl+S 暂停屏幕输出。
ctrl+Q 恢复屏幕输出。

四、输入输出重定向
标注输入和输出:

设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出

输出重定向:

标准输出重定向
命令 > 文件  以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中。
命令 >> 文件 以追加的方式,把命令的正确输出输出到指定的文件或设备当中。

标准错误输出重定向
错误命令 2>文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中。
错误命令 2>>文件 以追加的方式,把命令的错误输出输出到指定的文件或设备当中。

正确输出和错误输出同时保存
命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 &>文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 &>>文件 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
命令>>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中。

输入重定向:

命令<文件 把文件作为命令的输入
命令<< 标识符
 …
标识符 
把标识符之间内容作为命令的输入

字符统计命令:
[root@localhost ~]# wc [选项] [文件名]
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数

五、多命令顺序执行与管道符
多命令执行:

;   命令1 ;命令2    多个命令顺序执行,命令之间没有任何逻辑联系
&&   命令1 && 命令2   逻辑与    当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行
||   命令1 || 命令2   逻辑或   当命令1 执行不正确,则命令2才会执行;当命令1正确执行,则命令2不会执行

管道符号:

命令格式:
[root@localhost ~]# 命令1 | 命令2 #命令1的正确输出作为命令2的操作对象

[root@localhost ~]# netstat -an | grep "ESTABLISHED"
tcp        0     36 192.168.65.130:22       192.168.65.1:14790      ESTABLISHED

[root@localhost ~]# grep [选项] "搜索内容" 
文件名
选项:
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
--color=auto 搜索出的关键字用颜色显示

六、通配符
通配符:

?    匹配一个任意字符
*    匹配0个或任意多个任意字符,也就是可以匹配任何内容
[]   匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c。 
[-]  匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母。
[^]  逻辑非,表示匹配不是中括号内的一个字符。例如:[^0- 9]代表匹配一个不是数字的字符。

其他特殊符号:

''    单引号。在单引号中所有的特殊符号,如“$”和“`(反引号)都没有特殊含义。
""    双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`” 和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。
``    反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。 和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。
$()   和反引号作用一样,用来引用系统命令。 #在Shell脚本中,#开头的行代表注释。 $用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。
\     转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。 如\$将输出“$”符号,而不当做是变量引用。

反引号与$():

[root@localhost ~]# echo `pwd`
/root
[root@localhost ~]# echo $(pwd)
/root
输出结果相同

单引号与双引号:

[root@localhost ~]# name=test
[root@localhost ~]# echo '$name'
$name
[root@localhost ~]# echo "$name"
test
[root@localhost ~]# echo '$(pwd)'
$(pwd)
[root@localhost ~]# echo "$(pwd)"
/root
单引号输出引号本身内容,双引号输出变量本身
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值