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)登入的时候,会有几行提示的字符串,那个 ...
随机推荐
- jieba分词基础知识
安装:pip install jieba 导包:import jieba 精确模式:试图将句子最精确地切开,适合文本分析(很像人类一样去分词) jieba.cut(字符串) --> 返回生成器 ...
- 国际C语言混乱代码大赛优胜作品详解之“A clock in one line”
原文链接:https://blog.csdn.net/herorenme/article/details/8864351 摘要:IOCCC,即国际混乱C语言代码大赛是一项著名的国际编程赛事迄今已举办2 ...
- web应用安全框架选型:Spring Security与Apache Shiro
一. SpringSecurity 框架简介 官网:https://projects.spring.io/spring-security/ 源代码: https://github.com/spring ...
- Apache Spark 3.0 预览版正式发布,多项重大功能发布
2019年11月08日 数砖的 Xingbo Jiang 大佬给社区发了一封邮件,宣布 Apache Spark 3.0 预览版正式发布,这个版本主要是为了对即将发布的 Apache Spark 3. ...
- Flink入门(一)——Apache Flink介绍
Apache Flink是什么? 在当代数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题.随着雅虎对hadoop的 ...
- MySQL InnoDB MVCC
MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...
- MyBatis:统计数量(查询所有)
返回值的类型:resultType="java.lang.Integer". <select id="count" resultType="ja ...
- B2B市场新的营销思路
随着互联网+时代的到来,企业与企业之间的联系已经慢慢从传统的服务模式转变为网上服务,企业与企业之间通过网络,进行数据信息的交换.传递,开展交易活动的商业模式我们称之为B2B B2B使企业大大节约了企业 ...
- nyoj 208 + poj 1456 Supermarket (贪心)
Supermarket 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 A supermarket has a set Prod of products on sal ...
- linux磁盘分区、格式化、挂载
新建分区的操作步骤,如下图: 1)RAID卡: 机器有没有RAID卡可以在开机时看有没有出现配置RAID什么的提示(亲测),系统运行时有没有,不知道! 服务器大多有这个新加硬盘后不修改raid,开即f ...