ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux - SHELL基础

2021-03-15 21:29:07  阅读:109  来源: 互联网

标签:输出 SHELL ctrl 基础 echo 命令 文件 Linux 执行


文章目录

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的方式得到变量的值。
\转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。 如$将输出“$”符号,而不当做是变量引用。

标签:输出,SHELL,ctrl,基础,echo,命令,文件,Linux,执行
来源: https://blog.csdn.net/tbluhongxuan/article/details/114770795

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有