命令和文件自动补齐

[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特性的更多相关文章

  1. Ubuntu下把缺省的dash shell修改为bash shell

    Ubuntu下缺省使用的是shell是dash,而不是bash.从/bin/sh软连接的指向可以看出这点. dash shell 虽然比bash shell更轻便,但是它并不支持所有的语法,运行she ...

  2. Shell入门01

    Shell入门 1.基于硬件的虚拟化 2.基于平台的虚拟化 3.基于服务的虚拟化 4.基于库的虚拟化 5.基于操作系统的虚拟化 管理员使用Shell程序与操作系统进行交互,之前学习的shell脚本都是 ...

  3. Shell - 简明Shell入门01 - 第一个脚本(HelloShell)

    示例脚本及注释 #!/bin/bash echo "hello shell!" # 打印字符串"hello shell!" echo "Date: & ...

  4. Shell入门教程:Shell变量

    变量 是一种很“弱”的变量,默认情况下,一个变量保存一个串,Shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如 let.declare.expr.双括号等. Shell变量可 ...

  5. Shell入门教程:Shell的基本结构

    shell程序的基本组成结构 shell结构大体是由设定变量.内置命令.shell的语法结构.函数组成. 使用实例说明:test.sh #!/bin/bash #说明使用/bin/bash作为这个脚本 ...

  6. Shell入门教程:Shell当中的特殊变量

    Shell当中的特殊变量 一.保留变量 $IFS 这个变量中保存了用于分割输入参数的分割字符,默认识空格. $HOME 这个变量中存储了当前用户的根目录路径. $PATH 这个变量中存储了当前 She ...

  7. Shell入门教程:Shell函数详解

    Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 ...

  8. Shell入门教程:Shell函数的返回值

    shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...

  9. Shell - 简明Shell入门

    本文以示例和注释的方式,对Shell编程的基本知识点进行了总结和回顾,所有脚本均已做了基本的调试和验证. Shell - 简明Shell入门 01 - 第一个脚本 脚本的定义.执行方法以及echo命令 ...

  10. linux杂记(十一)Bash Shell的使用环境

    Bash Shell使用环境 Bash Shell使用环境 1.登录讯息显示数据:/etc/issue,/etc/motd 我们在终端机接口(tty1~tty6)登入的时候,会有几行提示的字符串,那个 ...

随机推荐

  1. jieba分词基础知识

    安装:pip install jieba 导包:import jieba 精确模式:试图将句子最精确地切开,适合文本分析(很像人类一样去分词) jieba.cut(字符串) --> 返回生成器 ...

  2. 国际C语言混乱代码大赛优胜作品详解之“A clock in one line”

    原文链接:https://blog.csdn.net/herorenme/article/details/8864351 摘要:IOCCC,即国际混乱C语言代码大赛是一项著名的国际编程赛事迄今已举办2 ...

  3. web应用安全框架选型:Spring Security与Apache Shiro

    一. SpringSecurity 框架简介 官网:https://projects.spring.io/spring-security/ 源代码: https://github.com/spring ...

  4. Apache Spark 3.0 预览版正式发布,多项重大功能发布

    2019年11月08日 数砖的 Xingbo Jiang 大佬给社区发了一封邮件,宣布 Apache Spark 3.0 预览版正式发布,这个版本主要是为了对即将发布的 Apache Spark 3. ...

  5. Flink入门(一)——Apache Flink介绍

    Apache Flink是什么? ​ 在当代数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题.随着雅虎对hadoop的 ...

  6. MySQL InnoDB MVCC

    MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...

  7. MyBatis:统计数量(查询所有)

    返回值的类型:resultType="java.lang.Integer". <select id="count" resultType="ja ...

  8. B2B市场新的营销思路

    随着互联网+时代的到来,企业与企业之间的联系已经慢慢从传统的服务模式转变为网上服务,企业与企业之间通过网络,进行数据信息的交换.传递,开展交易活动的商业模式我们称之为B2B B2B使企业大大节约了企业 ...

  9. nyoj 208 + poj 1456 Supermarket (贪心)

    Supermarket 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 A supermarket has a set Prod of products on sal ...

  10. linux磁盘分区、格式化、挂载

    新建分区的操作步骤,如下图: 1)RAID卡: 机器有没有RAID卡可以在开机时看有没有出现配置RAID什么的提示(亲测),系统运行时有没有,不知道! 服务器大多有这个新加硬盘后不修改raid,开即f ...