Shell入门01-bash Shell特性
命令和文件自动补齐
[root@hadoop04 ~]# yum -y install bash-completion
命令历史记忆功能
1.上下键
查看历史命令
2.!number
执行history中第number个记录
3.!string
执行history最近的一个以某个字符串开头的命令
4.!$
上一条命令的最后一个参数
5.!!
上一条命令(完整的一条命令)
6.^R
搜索历史命令
别名功能
1.alias
查看当前shell中的别名
2.unalias
取消当前shell中的别名
(1)在命令前面加上\可以跳过别名,比如 alias cp='cp -i',\cp 就是执行真正的'cp',而不会执行别名'cp -i'
(2)定义永久生效的别名,需要在用户家目录下的.bashrc文件中( ~username/.bashrc)
快捷键
Ctrl + 具体某个字母键
1.^R
搜索历史命令
2.^D
相当于 exit/logout,退出Shell
3.^A
光标移到到首部
4.^E
光标移到到尾部
5.^L
相当于clear,清屏
6.^U
剪切光标之前的所有
7.^K
剪切光标以及光标之后的所有
8.^Y
在光标处粘贴(由^U、^K剪切的命令可以通过这个方式粘贴)
9.^S
锁屏
10.^Q
解锁
前后台作业控制
1.&
后台运行,但是终端退出就结束了
2.nohup
后台运行,即使终端退出依旧不会结束
3.^C
结束前台进程
4.^Z
将前台进程切换到后台,并且暂停运行
[root@hadoop04 ~]# sleep 800
^Z
[1]+ Stopped sleep 800
5.bg %1
将一个在后台暂停的命令,变成继续执行
[root@hadoop04 ~]# fg %1
sleep 800
^Z
[1]+ Stopped sleep 800
[root@hadoop04 ~]# bg %1
[1]+ sleep 800 &
6.fg %1
将后台运行的编号为1的job切换到前台继续运行
7.kill %3
向当前终端中job号为3的进程发送信号
如果是 kill 3,意味着向当前终端中pid为3的进程发送信号
8.screen(推荐)
# 创建会话,名称为test_screen,如果不命名的话,就直接使用screen;之后在screen会话中操作
[root@hadoop04 ~]# screen -S test_screen
# 查看当前有哪些screen会话
[root@hadoop04 ~]# screen -list
There are screens on:
4585.test_Screen2 (Attached)
4553.test_screen (Detached)
2 Sockets in /var/run/screen/S-root.
# 进入到某一个screen会话
[root@hadoop04 ~]# screen -r 4553
# 在具体screen会话中结束screen会话
[root@hadoop04 ~]# exit
exit
[screen is terminating]
输入输出重定向
1. 0 标准输入(键盘)
2. 1 标注输出(屏幕)
3. 2 错误输出 (屏幕)
4. > 输出重定向(覆盖)
5. >> 输出重定向(追加)
6. 2> 错误输出重定向
7. 2>>错误输出重定向
8. 2>&1 错误输出重定向到标准输出
9. &> 混合输出
10. cat < /etc/hosts 将/etc/hosts输入给cat,标准输出到屏幕
11. cat < /etc/hosts > /etc/hosts1 将/etc/hosts输入给cat,再重定向输出到/etc/hosts1,相当于cp命令
12. cat <<EOF
[root@hadoop04 ~]# cat <<-EOF
> 111
> 222
> 333
> EOF
111
222
333
13. cat >file1 <<EOF
标准输入(以EOF为结束),输出重定向到文件file1
[root@hadoop04 ~]# cat <<-EOF > test.txt
> 111
> 222
> 333
> EOF
[root@hadoop04 ~]# cat test.txt
111
222
333
管道 | tee
| 前一个命令的输出,作为后一个命令的输出
tee 从标准输入中复制到每一个文件,并输出到标准输出
ip addr |grep 'inet ' |grep eth0
# 将ip addr的输出作为grep的输入,grep 在输入中匹配出存在'inet '的行
[root@hadoop04 ~]# ip addr |grep 'inet '
inet 127.0.0.1/8 scope host lo
inet 172.22.34.20/24 brd 172.22.34.255 scope global noprefixroute eth0
# 将ip addr的输出作为grep的输入,grep 在输入中匹配出存在'inet '的行,再次作为输入给后一个grep 去匹配
[root@hadoop04 ~]# ip addr |grep 'inet ' |grep eth0
inet 172.22.34.20/24 brd 172.22.34.255 scope global noprefixroute eth0
ip addr |grep 'inet ' |tee test.txt |grep eth0 (覆盖test.txt的内容)
ip addr |grep 'inet ' |tee -a test.txt |grep eth0 (-a 追加到test.txt)
# 将ip addr的输出作为grep的输入,grep 在输入中匹配出存在'inet '的行
[root@hadoop04 ~]# ip addr |grep 'inet '
inet 127.0.0.1/8 scope host lo
inet 172.22.34.20/24 brd 172.22.34.255 scope global noprefixroute eth0
# 将ip addr的输出作为grep的输入,grep 在输入中匹配出存在'inet '的行,再次作为输入传给tee,tee将内容保存到test.txt中,并且标准输出到屏幕
[root@hadoop04 ~]# ip addr |grep 'inet '| tee test.txt
inet 127.0.0.1/8 scope host lo
inet 172.22.34.20/24 brd 172.22.34.255 scope global noprefixroute eth0
[root@hadoop04 ~]# cat test.txt
inet 127.0.0.1/8 scope host lo
inet 172.22.34.20/24 brd 172.22.34.255 scope global noprefixroute eth0
[root@hadoop04 ~]# date &> date.txt
[root@hadoop04 ~]# date| tee date.txt
Sat Dec 7 16:15:47 CST 2019
[root@hadoop04 ~]# cat date.txt
Sat Dec 7 16:15:47 CST 2019
命令排序
1.;
不具备逻辑判断
# 即使;前面的命令执行失败,;后面的命令依旧会执行,所以;不具备逻辑判断的功能
[root@hadoop04 ~]# cd /home/444444;ls
-bash: cd: /home/444444: No such file or directory
anaconda-ks.cfg date.txt test.txt
2. && ||
具备逻辑判断
# && 前面的命令执行失败,&& 后面的命令不会执行;反之,&& 前面的命令执行成功,&& 后面的命令才会执行
[root@hadoop04 ~]# cd /home/444444 && ls
-bash: cd: /home/444444: No such file or directory
[root@hadoop04 ~]# cd /home/sysadmin && ls
test.txt
# || 前面的命令执行失败,|| 后面的命令才会执行;反之,|| 前面的命令执行成功,|| 后面的命令就不会执行
[root@hadoop04 ~]# cd /home/444444 || ls
-bash: cd: /home/444444: No such file or directory
anaconda-ks.cfg date.txt test.txt
[root@hadoop04 ~]# cd /home/sysadmin || ls
[root@hadoop04 sysadmin]#
注意
:
command & 后台执行
command &>/dev/null 混合重定向(标准输出 1,错误输出 2)
command1 && command2 命令排序,逻辑判断
shell 通配符
shell 通配符(元字符),表示的不是本意
* 星号
*匹配任意多个字符
ls in*
rm -rf *
rm -rf *.pdf
find / -iname "*-eth0"
? 问号
? 匹配任意一个字符
touch love loove live l7ve;
ll l?ve
[] 中括号
[] 匹配括号中任意一个字符
[abc] [a-z] [0-9] [a-zA-Z0-9]
ll l[io]ve
ll l[^a-z]ve
ll /dev/sd[a-z]
() 小括号
() 在子 shell 中执行
(cd /boot;ls)
(umask 077; touch file1000)
在子shell(subshell)中执行命令
(命令)
在子shell中执行脚本
./xxxx/xxxx/xxxx.sh
bash /xxxx/xxxx/xxxx.sh
在当前shell中执行脚本
source /xxxx/xxxx/xxxx.sh
. /xxxx/xxxx/xxxx.sh(脚本与.之间有空格)
{} 大括号
{} 集合
touch file{1..9}
mkdir /home/{111,222}
mkdir -pv /home/{333/{aaa,bbb},444}
# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.old
# cp -rv /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth0.old}
# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0{,.old}
在子shell(subshell)中执行命令
(命令)
在子shell中执行脚本
/xxxx/xxxx/xxxx.sh
bash /xxxx/xxxx/xxxx.sh
在当前shell中执行脚本
source /xxxx/xxxx/xxxx.sh
. /xxxx/xxxx/xxxx.sh
\转义符
\转义符,让元字符回归本意
# echo *
# echo \*
# touch yang\ sheng
[root@hadoop04 ~]# echo \\
\
[root@hadoop04 ~]# echo -e "atb"
atb
[root@hadoop04 ~]# echo -e "a\tb"
a b
[root@hadoop04 ~]# echo -e "anb"
anb
[root@hadoop04 ~]# echo -e "a\nb"
a
b
Shell入门01-bash Shell特性的更多相关文章
- Ubuntu下把缺省的dash shell修改为bash shell
Ubuntu下缺省使用的是shell是dash,而不是bash.从/bin/sh软连接的指向可以看出这点. dash shell 虽然比bash shell更轻便,但是它并不支持所有的语法,运行she ...
- Shell入门01
Shell入门 1.基于硬件的虚拟化 2.基于平台的虚拟化 3.基于服务的虚拟化 4.基于库的虚拟化 5.基于操作系统的虚拟化 管理员使用Shell程序与操作系统进行交互,之前学习的shell脚本都是 ...
- Shell - 简明Shell入门01 - 第一个脚本(HelloShell)
示例脚本及注释 #!/bin/bash echo "hello shell!" # 打印字符串"hello shell!" echo "Date: & ...
- Shell入门教程:Shell变量
变量 是一种很“弱”的变量,默认情况下,一个变量保存一个串,Shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如 let.declare.expr.双括号等. Shell变量可 ...
- Shell入门教程:Shell的基本结构
shell程序的基本组成结构 shell结构大体是由设定变量.内置命令.shell的语法结构.函数组成. 使用实例说明:test.sh #!/bin/bash #说明使用/bin/bash作为这个脚本 ...
- Shell入门教程:Shell当中的特殊变量
Shell当中的特殊变量 一.保留变量 $IFS 这个变量中保存了用于分割输入参数的分割字符,默认识空格. $HOME 这个变量中存储了当前用户的根目录路径. $PATH 这个变量中存储了当前 She ...
- Shell入门教程:Shell函数详解
Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 ...
- Shell入门教程:Shell函数的返回值
shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...
- Shell - 简明Shell入门
本文以示例和注释的方式,对Shell编程的基本知识点进行了总结和回顾,所有脚本均已做了基本的调试和验证. Shell - 简明Shell入门 01 - 第一个脚本 脚本的定义.执行方法以及echo命令 ...
- linux杂记(十一)Bash Shell的使用环境
Bash Shell使用环境 Bash Shell使用环境 1.登录讯息显示数据:/etc/issue,/etc/motd 我们在终端机接口(tty1~tty6)登入的时候,会有几行提示的字符串,那个 ...
随机推荐
- Java基础语法03-数组
四数组 数组概念: 数组就是用于存储数据的长度固定的容器,多个数据的数据类型要一致. 百科:数组(array),就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,以 ...
- OTA升级详解(三)
君子知夫不全不粹之不足以为美也, 故诵数以贯之, 思索以通之, 为其人以处之, 除其害者以持养之: 出自荀子<劝学篇> 终于OTA的升级过程的详解来了,之前的两篇文章OTA升级详解(一)与 ...
- Python 面向对象之一 类与属性
Python 面向对象之 类与属性 今天接触了一下面向对象,发现面向对象和之前理解的简直就是天壤之别,在学Linux的时候,一切皆文件,现在学面向对象了,so,一切皆对象. 之前不是一直在学的用面向函 ...
- python机器学习——逻辑回归
我们知道感知器算法对于不能完全线性分割的数据是无能为力的,在这一篇将会介绍另一种非常有效的二分类模型--逻辑回归.在分类任务中,它被广泛使用 逻辑回归是一个分类模型,在实现之前我们先介绍几个概念: 几 ...
- Nginx使用反向代理实现负载均衡
Nginx使用反向代理实现负载均衡 yls 2019-9-20 简介 基于docker容器以及docker-compose,所以需要自学docker在linux环境的基本使用 使用两个tomcat作为 ...
- 【前端知识体系-CSS相关】CSS预处理器
1.常见的CSS预处理器有哪些? [!NOTE] css预处理器:用一种专门的编程语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,然后开发者就只要使用这种语言进行编码工作,可以让你的CS ...
- list,tuple,dict,set 思维导图整理
- scikit-learn_cookbook1: 高性能机器学习-NumPy
源码下载 在本章主要内容: NumPy基础知识 加载iris数据集 查看iris数据集 用pandas查看iris数据集 用NumPy和matplotlib绘图 最小机器学习配方 - SVM分类 介绍 ...
- Java工作流系统-CCBPM如何自动升级?
关键词:工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 bpm工作流系统 java工作流主流框架 自定义工作流引擎驰骋工作流引擎ccflow和jflow的升级 ...
- linux系统资源查看常用命令
1.vmstat vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.IO读写.CPU活动等进行监视.它是对系统的整体情况进行统计, ...