Linux - SHELL基础

shell基础

输出命令 - echo

语法

echo [选项] [输出内容]

选项:

-e: 支持转义字符

转义字符
控制字符作 用
\输出\本身
\a输出警告音
\b退格键,也就是向左删除键
\c取消输出行末的换行符。和“-n”选项一致
\eESCAPE键 \f 换页符
\n换行符
\r回车键
\t制表符,也就是Tab键 \v 垂直制表符
\0nnn按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数
\xhh按照十六进制ASCII码表输出字符。其中hh是两位十六进制数

范例

# \b退格符
(base) [root@localhost sbin]#  echo -e "ab\bc"
ac

(base) [root@localhost sbin]# echo -e "a\tb\tc\nd\te\tf"
a	b	c
d	e	f

使用技巧

1. 带颜色输出
代码颜色
30m黑色
31m 红色
32m 绿色
33m 黄色
34m 蓝色
35m 洋红
36m 青色
37m 白色

(base) [root@localhost sbin]# echo -e "\e[1;31m abcd \e[0m"
abcd

接收键盘输入命令 - read

语法

read [选项] [变量名]

选项介绍
  • -p “提示信息” : 在等待read输入时,输出提示信息
  • -t 秒数: read命令会等待用户输入,使用此选项可以指定等待时间
  • -n 字符数: read命令只接受指定的字符数,到达指定字符数,自动执行。
  • -s :隐藏输入的数据,适用于机密信息的输入

范例

#!/bin/bash

read -t 30 -p "Please input your name: " name
#提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中
echo "Name is $name "
read -s -t 30 -p "Please enter your age: " age
#年龄是隐私,所以我们用“-s”选项隐藏输入
echo -e "\n"
echo "Age is $age "
read -n 1 -t 30 -p "Please select your gender[M/F]: " gender
#使用“-n 1”选项只接收一个输入字符就会执行(都不用输入回车)
echo -e "\n"
echo "Sex is $gender"

第一个脚本

[root@localhost sh]# vi hello.sh
#!/bin/Bash
#The first program
# Author: lhx (E-mail: luhongxuan@uinnova.com)
echo -e "hello shell"

脚本执行方式

方式一:赋予执行权限,直接运行(推荐)
chmod 755 hello.sh  
/hello.sh   
方式二:通过Bash调用执行脚本(不需要执行权限)
bash hello.sh  

使用技巧

由于Windows与Linux的换行符不一样,在windows下编辑的shell脚本,直接拷贝过来无法执行,我们应该如何转换呢?

答:使用doc2unix命令即可,需要yum提前安装。

  • doc2unix命令: windows编辑shell转化为Linuxshell。
  • unix2doc命令: Linuxshell脚本 转化为windows下shell脚本。

cat加-A命令可以看到文件中的隐藏符号:
cat -A '/etc/xxx.conf'

  • linux 换行:$
  • windows 换行:^M$

历史命令以及命令补全

历史命令

语法

history [选项][历史命令保存文件]

选项
  • -c : 清空历史命令(黑客入侵,可能会做此操作)
  • -w : 把缓存的历史命令写入历史命令报错文件~/.bash_history
历史命令调用
  • 使用上,下箭头调用(常用)
  • 使用"!n"重复执行第n条历史命令
  • 使用"!!"重复执行上一条命令
  • 使用"!子串"重复执行最后一条以该子串开头的命令

命令补全:tab

命令别名与常用快捷键

临时设置别名:alias

  • 临时设置别名:alias 别名=‘元命令’
  • 查询命令别名:alias

永久别名

(base) [root@localhost sbin]# vim /root/.bashrc 

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

删除别名

unalias 别名

命令执行顺序

  1. 命令绝对路径或相对路劲
  2. 别名
  3. Bash内部命令
  4. $PATH环境变量定义的命令

Bash常用快捷键

快捷键作 用
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/stdin0标准输入
显示器/dev/sdtout1标准输出
显示器/dev/sdterr2标准错误输出

输出重定向 >> >

将标准输出改为输出到文件

类 型符 号作用
标准输出重定向命令 > 文件覆盖的方式,把命令的正确输出输出到指定的文件或设备当中。
命令 >> 文件追加的方式,把命令的正确输出输出到指定的文件或设备当中。
标准错误输出重定向错误命令 2> 文件以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中。
错误命令 2>> 文件以追加的方式,把命令的错误输出输出到指定的文件或设备当中。
同时保存正确与错误输出命令 > 文件 2>&1以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 >> 文件 2>&1以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 &>文件以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 &>>文件以追加的方式,把正确输出和错误输出都保存到同一个文件当中(建议使用)
同时保存正确与错误输出命令>>文件1 2>>文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中。

输入重定向 << <

其他方式取代键盘输入

使用方法作用
命令<文件把文件作为命令的输入
命令<< 标识符 … 标识符把标识符之间内容作为命令的输入
举例

wc < /etc/supervisorctl.conf

多命令顺序执行 ; && ||

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

范例

mkdir test; cd test

使用技巧

shell中判断命令是否正确:命令 && echo yes || echo no

管道符 |

语法

命令1 | 命令2 :命令1的正确输出作为命令2的操作对象

范例

ps -ef|grep uwsgi

通配符

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

范例

[root@localhost tmp]# ls ?abc
[root@localhost tmp]# ls [0-9]*
[root@localhost tmp]# mkdir test[0-3]

shell中的特殊符号

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值