Linux之shell基础
Shell基础
一、shell概述
1) shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
我们输入的abc、、、24个字符是通过shell对照ASCII码翻译成二进制来让计算机识别的。我们从操作界面上输入命令,这个命令回车之后把此命令对照ASCII码翻译成指定的二进制,通过shell翻译成计算机内核能识别的二进制,然后内核调用硬件来处理,处理完之后再通过shell反馈给用户。
2) shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在shell中可以直接调用Linux系统命令。
二、脚本执行方式
1) echo输出命令
1、echo [选项] [输出内容]
例如:[root@locahost ~]# echo “hello world”这样就会打印来。如果你输出的内容之间有空格,则需要加双引号。
注:选项:
-e:支持反斜线控制的字符转换
|
控制字符 |
作用 |
|
\a |
输出警告音 |
|
\b |
退格键,也就是向左删除键 |
|
\n |
换行符 |
|
\r |
回车键 |
|
\t |
制表符,也就是Tab键 |
|
\v |
垂直制表符 |
|
\0nnn |
按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数 |
|
\xhh |
按照十六进制ASCII码表输出字符,其中hh是两位十六进制数 |
例如:[root@locahost ~]# echo “hello\b world”输出的结果是:hell world
2、 echo颜色输出
例如:[root@locahost ~]# echo –e”\e[1;31m hello world \e[0m”输出的结果是:hello world
#30m=黑色,31m=红色,32m=绿色,33m=黄色
#34m=蓝色,35m=洋红,36m=青色,37m=白色
2)第一个脚本
[root@locahost ~]# vim hello.sh
#!/bin/bash(必不可少,不可省略)
#这是第一个shell脚本
echo –e “\e[1;34m天上掉下个林妹妹\e[0m”
这样写完就先按ESC 退到全局模式下,然后按 :wq 保存退出
3)执行脚本
1、赋予执行权限,直接运行
Chmod 755 hello.sh(赋予权限)
./hello.sh(相对路径调用)或
/root/hello.sh(绝对路径调用)
2、通过Bash调用执行脚本
Bash hello.sh
三、Bash的基本功能
1) 命令别名与快捷键
1、 alias(查看系统中所有的命令别名)
例如:[root@locahost ~]# ls
其实就是ls=‘ls --color=auto’
2、 alias 设定的名=‘原命令即别名’(设定命令别名)
3、 别名永久生效与删除别名
vi ~/.bashrc(写入环境变量配置文件之后重新登录即生效或者执行source .bashrc即可生效)
unalias 别名(删除别名)
4、 命令生效顺序
第一顺位执行用绝对路径或相对路径执行的命令
第二顺位执行别名
第三顺位执行Bash的内部命令
第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一命令
5、 常用快捷键
Ctrl+c 强制终止当前命令 Ctrl+l 清屏
Ctrl+a 光标移动到命令行首 Ctrl+e 光标移动到命令行尾
Ctrl+u 从光标所在位置删除到行首 Ctrl+z 把命令放入后台
Ctrl+r 在历史命令中搜索
2) 历史命令
history [选项] [历史命令保存文件]
选项:-c:清空历史命令
-w:把缓存中的历史命令写入历史命令保存文件~/.bash_history
1、历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
2、历史命令的调用
使用上、下箭头调用以前的历史命令
使用“!n”重复执行第n条历史命令
使用“!!”重复执行上一条命令
使用“!字串”重复执行最后一条以该字符串开头的命令
3、 命令与文件补全
在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按Tab键就会自动进行补全
3) 输出重定向
1、标准输入输出
|
设备 |
设备文件名 |
文件描述符 |
类型 |
|
键盘 |
/dev/stdin |
0 |
标准输入 |
|
显示器 |
/dev/sdtout |
1 |
标准输出 |
|
显示器 |
/dev/sdterr |
2 |
标准错误输出 |
Linux中一切皆文件
定义:原本输入命令想要在屏幕上显示的信息通过>,>>输出到文件当中
2、输出重定向
|
类型 |
符号 |
作用 |
|
标准输出重定向 |
命令>文件 |
以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中 |
|
命令>>文件 |
以追加的方式,把命令的正确输出,输出到指定的文件或设备当中 |
|
|
标准错误输出重定向 |
错误命令2>文件 |
以覆盖的方式,把命令的错误输出,输出到指定的文件或设备当中 |
|
错误命令2>>文件 |
以追加的方式,把命令的错误输出,输出到指定的文件或设备当中 |
注:标准输出重定向命令>、>>后可空格或着不空格也行。
2和重定向符号(>、>>)之间没有空格即可
|
正确输出和错误输出同时保存(2、4、5比较常用,2、4功能一样) |
命令>文件2>&1 |
以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 |
|
命令>>文件2>&1 |
以追加的方式,把正确输出和错误输出都保存到同一个文件当中 |
|
|
命令&>文件 |
以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 |
|
|
命令&>>文件 |
以追加的方式,把正确输出和错误输出都保存到同一个文件当中 |
|
|
命令>>文件1 2>>文件2 |
把正确输出追加到文件1中,把错误的输出追加到文件2中 |
注:命令 &>/dev/null(linux中的黑洞,只要扔进去就不会出现了直接抛弃)
[root@localhost ~]# wc [选项][文件名]
选项:
-c统计字节数
-w统计单词数
-l统计行数
命令<文件(把文件作为命令的输入)
命令<<标识符
……
标识符(把标识符之间内容作为命令的输入)
4) 多命令顺序执行
|
多命令执行符 |
格式 |
作用 |
|
; |
命令1;命令2 |
多个命令顺序执行,命令之间没有任何逻辑联系 |
|
&& |
命令1&&命令2 |
逻辑与 当命令1正确执行,则命令2才会执行; 当命令1执行不正确,则命令2不会执行 |
|
|| |
命令1||命令2 |
逻辑或 当命令1执行不正确,则命令2才会执行; 当命令1正确执行,则命令2不会执行 |
例如:[root@localhost ~]# pwd;touch abc;ls;date
[root@localhost ~]# ls anaconda-ks.cfg&& echo yes
[root@localhost ~]# ls anaconda-ks.cfg&& echo no
[root@localhost ~]# 命令 && echo yes || echo no
5) 管道符
命令格式:[root@localhost ~]# 命令1 | 命令2
(命令1的正确输出结果作为命令2的操作对象)
例如:
[root@localhost ~]# ll –a /etc/ | more
[root@localhost ~]# netstat –an | grep ”ESTABLISHED”
6) Bash中其他特殊符号
|
符号 |
作用 |
|
‘’ |
单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义。 |
|
“” |
双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。 |
|
`` |
反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。 |
|
$() |
和反引号作用一样,用来引用系统命令。 |
|
# |
在Shell脚本中,#开头的行代表注释 |
|
$ |
用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值 |
|
\ |
转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用 |
7)通配符
|
通配符 |
作用 |
|
? |
匹配一个任意字符 |
|
* |
匹配0个或任意多个任意字符,也就是可以匹配任何内容 |
|
[] |
匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a或者是b,或者是c |
|
[-] |
匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母 |
|
[^] |
逻辑非,表示匹配不是中括号内的一个字符。例如[^0-9]代表匹配一个不是数字的字符 |
Linux之shell基础的更多相关文章
- linux base shell 基础语法
转载 本文主要是基础的基础,希望对大家有所帮助 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这 ...
- Linux中shell基础、重定向、管道符、环境变量
1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核去执行.起着协调用户与系统的一致性和在用户与系统之间进行交互的 ...
- Linux学习 -- Shell基础 -- 概述
Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串 双引号 ...
- Linux学习——Shell基础
1 shell概述 Shell 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至编写一些程序. Shell 还是一 ...
- linux系统shell基础知识入门
什么是shell shell就是我们常说的命令行程序,它是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入要执行的命令.在Linux中安装多个shell是可行的,一般系统有默认的sh ...
- Linux学习 -- Shell基础 -- Bash变量
变量 默认是字符串型,数值型需要显示指定 等号两侧都不能有空格 单引号:原始字符串 双引号:保留转义 命令结果作为值:反引号 或 $() 环境变量一般用大写 自定义变量 变量定义 name=& ...
- linux base shell 基础语法2
转载 http://blog.csdn.net/aggrelxf/article/details/8263110 单引 双引 反引用[] [[]] 将命令的输出读入一个变量中,可以将它放入双引号中,即 ...
- Linux学习 -- Shell基础 -- Bash基本功能
历史命令 history -c clear -w 写入 ~/.bash_history 默认保存1000条, 可在/etc/profile中修改 调用 Tab补全 命令.目录.文件 命令别名 ...
- linux系统shell基础知识入门二
条件判断语句 test或[],这两是等价的.但用[]这种可能看起来更简洁 必须在[符号和检查条件之间留出空格,而test命令之后也总是应该有一个空格 如果要把test 和then 放一行上,那么必须在 ...
随机推荐
- 4.cache每个参数的意义和作用以及工作原理?
在程序开发过程中,适当使用 Cache 缓存能有效提高程序执行效率.比如一些常常调用的系统公共变量,把它们缓存到 Cache 中,当需要使用它们时,直接从 Cache 中读取,不必每次都从数据库或文件 ...
- 生产环境:ansible自动化部署kubernetes-1.14
概述: 本文提供ansible-playbooks用来帮助读者用ansible构建二进制kubernetes1.14, 集群包含calico.nginx-ingress.HA 提供资源有kuberne ...
- CentOS7 使用tree命令不显示中文
1.你如果使用tree命令看见的情况是这样 [lk@localhost ~]$ tree . ├── perl5 ├── Python-.tgz ├── \\\\\\ ├── \\\\\\ ├── \ ...
- CentOS安装TeamViewer
在https://www.teamviewer.com/en/download/linux/ 选择合适的host版本. wget https://download.teamviewer.com/dow ...
- spring中ehcache的配置和使用方法
继续上篇,这篇介绍服务层缓存,ehcache一般的配置和用法 一.添加jar包引用 修改pom.xml文件,加入: <dependency> <groupId>org.spri ...
- ASP.NET Core 3.0 : 二十五. TagHelper
什么是TagHelper?这是ASP.NET Core 中新出现的一个名词,它的作用是使服务器端代码可以在Razor 文件中参与创建和呈现HTML 元素.(ASP.NET Core 系列目录) 一.概 ...
- [Leetcode] 第307题 区域和检索-数组可修改
参考博客:(LeetCode 307) Range Sum Query - Mutable(Segment Tree) 一.题目描述 给定一个整数数组 nums,求出数组从索引 i 到 j (i ...
- 删除linux自带jdk
提示:error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Permission denied):代表权限不够 执行:su r ...
- PMP全真模拟题真题試題含答案解析 2019年下半年PMP考試适用 PMP中文文对照试题 【香港台灣地區PMP考試也可用】
PMP全真模拟题真题试题 含答案解析 2019年下半年PMP考试适用 PMP中文文对照试题 [香港台灣地區PMP考試也可用]PMP全真模擬題真題試題 含答案解析 2019年下半年PMP考試适用 PMP ...
- Tomcat 报错 The APR based Apache Tomcat Native library which allows optimal performance in production environmen
这个问题在我一次重新装了tomcat和myeclipse时出现 说实话 出现这个问题头大 但是好在解决了 美滋滋 最开始到处寻找各种解决方案 最后直接注释了server.xml中的一行 直接解决这个报 ...