Shell的简单介绍(一)
shell 的分类
| Shell 类别 | 易学性 | 可移植性 | 编辑性 | 快捷性 |
| Bourne Shell (sh) | 容易 | 好 | 较差 | 较差 |
| Korn Shell (ksh) | 较难 | 较好 | 好 | 较好 |
| Bourne Again (Bash) | 难 | 较好 | 好 | 好 |
| POSIX Shell (psh) | 较难 | 好 | 好 | 较好 |
| C Shell (csh) | 较难 | 差 | 较好 | 较好 |
| TC Shell (tcsh) | 难 | 差 | 好 | 好 |
Shell 的两种主要语法类型有 Bourne 和 C,这两种语法彼此不兼容。 Bourne 家族主要包括 sh、
ksh、 Bash、 psh、 zsh; C 家族主要包括: csh、 tcsh (Bash 和 zsh 在不同程度上支持 csh 的语法)。
我们可以通过/etc/shells 文件来查询 Linux 支持的 Shell。命令如下
[root@topcheer ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
[root@topcheer ~]#
Shell echo命令
在 echo 命令中如果使用了“-e”选项,则可以支持控制字符,如表 所示:
| 控制字符 | 作 用 |
| \\ | 输出\本身 |
| \a | 输出警告音 |
| \b | 退格键,也就是向左删除键 |
| \c | 取消输出行末的换行符。和“-n”选项一致 |
| \e | ESCAPE 键 |
| \f | 换页符 |
| \n | 换行符 |
| \r | 回车键 |
| \t | 制表符,也就是 Tab 键 |
| \v | 垂直制表符 |
| \0nnn | 按照八进制 ASCII 码表输出字符。其中 0 为数字零, nnn 是三位八进制数 |
| \xhh | 按照十六进制 ASCII 码表输出字符。其中 hh 是两位十六进制数 |
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:
echo string
您可以使用echo实现更复杂的输出格式控制。
1.显示普通字符串:
[root@topcheer ~]# echo "hello shell"
hello shell
[root@topcheer ~]# echo hello shell
hello shell
[root@topcheer ~]#
这里的双引号完全可以省略
[root@topcheer ~]# echo -n hello shell
hello shell[root@topcheer ~]#
#如果加入了“-n”选项,输出内容结束后,不会换行直接显示新行的提示符
2.显示转义字符
[root@topcheer ~]# echo "\"It is a test\""
"It is a test"
[root@topcheer ~]#
同样,双引号也可以省略
3.显示变量
[root@topcheer ~]# sh echo2.sh
hello
hello It is a test
[root@topcheer ~]# cat echo2.sh
#!/bin/sh
read name
echo "$name It is a test"
[root@topcheer ~]#
4.显示换行
[root@topcheer ~]# echo -e "a\tb\tc\nd\te\tf"
a b c
d e f
[root@topcheer ~]#
#我们加入了制表符“\t”和换行符“\n”,所以会按照格式输出
[root@topcheer ~]# echo -e "\0141\t\0142\t\0143\n\0144\t\0145\t\0146"
a b c
d e f
[root@topcheer ~]#
[root@topcheer ~]# echo -e "\\ \a"
\
[root@topcheer ~]# echo -e "ab\bc"
ac
[root@topcheer ~]#
这个输出会输出\,同时会在系统音响中输出一声提示音 #这个输出中,在 b 键左侧有“\b”,所以输出时只有 ac
5.显示不换行
[root@topcheer ~]# sh echo1.sh
OK! OJBK
[root@topcheer ~]# cat echo1.sh
#!bin/bash
echo -e "OK! \c"
echo OJBK
[root@topcheer ~]#
6.显示结果定向至文件
[root@topcheer ~]# echo "It is a test" > myfile
[root@topcheer ~]# ll
总用量 12
-rw-------. 1 root root 1560 8月 31 18:27 anaconda-ks.cfg
drwxr-xr-x 2 root root 42 10月 28 14:48 docker
-rw-r--r--. 1 root root 1608 8月 31 18:29 initial-setup-ks.cfg
drwxr-xr-x 3 root root 19 11月 15 13:57 logs
-rw-r--r-- 1 root root 13 11月 18 23:36 myfile
7.原样输出字符串,不进行转义或取变量(用单引号)
[root@topcheer ~]# echo '$name\"'
$name\"
[root@topcheer ~]#
8.显示命令执行结果
[root@topcheer ~]# echo `date`
2019年 11月 18日 星期一 23:37:32 CST
[root@topcheer ~]#
注意: 这里使用的是反引号 `, 而不是单引号 '。
结果将显示当前日期
9.显示颜色
[root@topcheer ~]# echo -e "\e[1;31m abcd \e[0m"
abcd
[root@topcheer ~]# echo -e "\e[1;42m abcd \e[0m"
abcd
[root@topcheer ~]#

第一条命令会把 abcd 按照红色输出。解释下这个命令\e[1 是标准格式,代表颜色输出开始, \e[0m
代表颜色输出结束, 31m 定义字体颜色是红色。 echo 能够识别的颜色如下: 30m=黑色, 31m=红色, 32m=
绿色, 33m=黄色, 34m=蓝色, 35m=洋红, 36m=青色, 37m=白色
第二条命令会给 abcd 加入一个绿色的背景。 echo 可以使用的背景颜色如下: 40m=黑色, 41m=红色,
42m=绿色, 43m=黄色, 44m=蓝色, 45m=洋红, 46m=青色, 47m=白色
Shell脚本的运行
[root@localhost sh]# chmod 755 hello.sh
#赋予执行权限
[root@localhost sh]# /root/sh/hello.sh
Mr. Shen Chao is the most honest man.
#使用绝对路径运行
[root@localhost sh]# ./hello.sh
Mr. Shen Chao is the most honest man.
#因为我们已经在/root/sh 目录当中,所以也可以使用相对路径运行
通过 Bash 调用执行脚本
这种方法也非常简单,命令如下:
[root@localhost sh]# bash hello.sh
Mr. Shen Chao is the most honest man.
Shell的简单介绍(一)的更多相关文章
- shell语法简单介绍
一.基本的语法 1.1.shell文件开头 shell文件必须以以下的行開始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的參数是用来运行该文件的程序.在这个样例中我们 ...
- shell的简单介绍
一 什么叫shell,shell 是什么 如果考虑到操作系统其实是一组软件,我们可以发现应用程序其实是在最外层,就如同鸡蛋的外壳一样,因此这个也就被称为shell. 其实shell的功能只是提供用户操 ...
- Linux常用命令及Shell的简单介绍
一.linux命令 1.查看指令的参数搭配: man 指令名称 2.基础指令 ls 列出当前目录下的所有文档的名称(文档指的是文件和文件夹) 常用参数搭配: ls -l 列出文档详细信息 l ...
- HDFS简单介绍及用C语言訪问HDFS接口操作实践
一.概述 近年来,大数据技术如火如荼,怎样存储海量数据也成了当今的热点和难点问题,而HDFS分布式文件系统作为Hadoop项目的分布式存储基础,也为HBASE提供数据持久化功能,它在大数据项目中有很广 ...
- 第四章 Bash Shell 的简单应用
一.Bash Shell 的简单介绍 1.什么是bash shell? 是一个命令解释器 它在操作系统的最外面 负责用户与内核进行交互的一种接口 将用户输入的命令翻译给操作系统,并将处理后的结果输出到 ...
- SharePoint 2010 网站备份还原简单介绍
今天尝试了SharePoint2010网站的备份和还原,从网上搜一些文档看看,然后自己试试,感觉和2007的操作没什么太大的区别,跟大家分享下自己尝试的命令行方式和数据库的方式,2007自己常用的也是 ...
- 【转载】JMeter学习(一)工具简单介绍
JMeter学习(一)工具简单介绍 一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静 ...
- Tcl 简单介绍及特性
[简单介绍|特性] l 简单介绍 Tcl是一门产生于80年代末的语言,和Python一样,她是用c开发出来的.假设说C/Java/C++/C#为编译型语言的话,那么Python.Perl和Tcl就是 ...
- Docker简单介绍
Docker简单介绍 Docker是一个能够把开发的应用程序非常方便地部署到容器的开源引擎.由Docker公司团队编写,基于Apache 2.0开源授权协议发行.Docker的主要目的例如以下: 提供 ...
随机推荐
- Excel区域复制粘贴
这段工作做的是利用JAVA实现Excel的一块区域的复制并粘贴. 就本身对于 Excel跟 鼠标来说,这也是一个非常简单的操作. 但是 用 java的poi来做,还是 有点儿吃力的. 下面是之前做的一 ...
- <class 'blog.admin.CategoryAdmin'>: (admin.E108) The value of 'list_display[0]' refers to 'mame', which is not a callable, an attribute of 'CategoryAdmin', or an attribute or method on 'blog.Category'
系统反馈此类错误是因为行列映射时无法对应: 引起无法对应的原因有: 定义是缺少某列,定义时缩进导致,映射关系时缺少某列,(通俗讲列名对应不上). 这种错误多是python中的 因为其中对于空格的要求是 ...
- mysql下载与安装过程
1:下载MySql 官网下载地址:https://dev.mysql.com/downloads/mysql/ 选择对应的下载文件.(我电脑是64位,所以这下载的是64位的下载文件) 2:解压mysq ...
- python gevent(协程模块)
Python通过yield提供了对协程的基本支持,但是不完全.而第三方的gevent为Python提供了比较完善的协程支持. gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一 ...
- P1219八皇后
这个题是一道USACO的经典dfs,与我见面的时间起码七个月了. 放置n个皇后于n*n棋盘,他们不能互相吃(行,列,对角线),问有几种摆法?于是想到了dfs(自我认为有图的就不用DP).首先确定好了要 ...
- 背包问题: HDU1114Piggy-Bank
Piggy-Bank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- angularJS(一):表达式、指令
简介 以 JavaScript 编写的库,是一个 JavaScript 框架 一.表达式 AngularJS 使用 表达式 把数据绑定到 HTML. 表达式写在双大括号内:{{ expression ...
- 为什么要用消息队列 及 自己如何设计一个mq架构
1. 解耦:如左图, 系统a因为业务需求需要调用系统b,后续因为业务需求可能需要改代码调用系统c,甚至还要考虑被调用的系统挂了访问超时的问题.耦合性太高! 如右图, 系统a产生一条数据发送到消息队列里 ...
- vue解决开发时候跨域问题
vue项目/config/index.js 找到dev对象,增加如下代码 proxyTable: { '/api': { target: 'http://192.168.1.208:8888', ch ...
- Dva框架从初识到上手
引言 最近工作需要用dva框架,同事帮我培训了一下,有一点点认识,在此总结. 当然,以后对dva可能会了解更透彻,文章会不断更新的. 初识 开始看架构代码,没有看文档的时候,不知道里面的几个关键字 ...