1 历史别名与常用快捷键

1.2 命令别名

 alias 别名=‘原命令’#设定命令别名
 alias#查询命令别名S

命令执行时顺序

  1. 第一顺位执行用绝对路径或相对路径执行的命令

  2. 第二顺位执行别名

  3. 第三顺位执行BASH的内部命令

  4. 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

让别名永久生效

 vi /root/.bashrc

1.2 Bash常用快捷键

 ctrl+A 把光标移到命令行开头ctrl+E 把光标移到命令行末尾ctrl+C 强制中止当前的命令ctrl+L 清屏,相当于clear命令ctrl+U 删除或剪切光标之前的命令,我输入了一行很长的命令,不用使用退格键一个一个字符的删除,使用这个快捷键会更加方便ctrl+K 删除或剪切光标之后的内容ctrl+Y 粘贴ctrl+U或ctrl+K剪切的内容ctrl+R 在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索ctrl+D 退出当前终端ctrl+Z 暂停,并放入后台,这个快捷键牵扯工作管理的内容ctrl+S 暂停屏幕输出ctrl+Q 恢复屏幕输出

2 输入输出重定向

2.1 标准输入输出

设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出

2.2 输出重定向

类型 符号 作用
标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中
命令 >> 文件 以追加的方式,把命令的正确输出,输出到指定的文件或设备当中
标准错误输出重定向 错误命令 2> 文件 以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中
错误命令 2>> 文件 以追加的方式,把命令的正确输出,输出到指定的文件或设备当中
命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件当中
正确输出和错误输出同时保存 命令 &> 文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
命令 &>> 文件 以追加的方式,把正确输出和错误输出都保存到同一个文件当中
命令 >> 文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中

2.3 输入重定向

wc [选项] [文件名] 选项

-c 统计字节数

-w 统计单词数

-l 统计行数

命令<文件 把文件作为命令的输入

3 多命令顺序执行与管道符

3.1 多命令顺序执行

多命令执行符 格式 作用
命令1 ; 命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1 && 命令2 逻辑与 当命令1正确执行,则命令2 才会执行;当命令1执行不正确,则命令2不会执行
|| 命令1 || 命令2 逻辑或 当命令1执行不正确,则命令2才会执行;当命令1正确执行,则命令2不会执行

dd if=输入文件 of=输出文件 bs=字节数 count=个数 (主要用于磁盘复制)

选项:

if=输入文件 制定源文件或源设备

of=输出文件 制定目标文件或目标设备

bs=字节数 制定一次输入/输出多少字节,即把这些字节看做一个数据块

count=个数 制定输入/输出多少个数据块

例子:

[root@localhost~]# date ; dd if=/dev/zero of=/root/testfile bs=1k count=1000 ; date

&&例子:

./configure && make && make install 自动安装

||例子:

ls /root/test || echo no

&& ||组合例子:

命令 && echo yes || echo no

3.2管道符

命令格式:

[root@localhost~]#命令1 | 命令2

#命令1的正确输出作为命令2的操作对象

颜色显示

[root@localhost~]# grep [选项] "搜索内容" 文件名

选项

-i 忽略大小写

-n 输出行号

-v 反向查找

--color=auto 搜索出的关键字用颜色查找

 root@ubuntu:/home/mlz/Desktop# grep -n --color=auto "root" /etc/passwd1:root:x:0:0:root:/root:/bin/bash37:nm-openvpn:x:118:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin

4 通配符和其他特殊符号

4.1 通配符

通配符 作用
? 匹配一个任意字符
* 匹配0个或任意多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c
[-] 匹配中括号中任意一个字符,-代表一个范围。例子:[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如:[ ^0-9 ]代表匹配一个不是数字的字符
 cd /tmp/rm -rf * 删除当前目录下所有文件touch abctouch abcdtouch 012touch 0abcls ?abcls *abcls [0-9]*ls [^0-9]*

4.2 Bash中其他特殊符号

符号 作 用
' ' 单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义
" " 双引号。在双引号中特殊符号都没有特殊含义,但是"$"、"`"和"\"是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义
`` 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$()
$() 和反引号作用一样,用来引用系统命令
# 在Shell脚本中,#开头的代表注释
| 用于调用变量的值,如需要调用变量name时,需要用name的方式得到变量的值
\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如$将输出"$"符号,而不当作是变量引用

5 Bash变量

5.1 用户自定义变量

5.1.1 变量设置规则

  • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的

  • 在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型

  • 变量用等号连接值,等号左右两侧不能有空格

  • 变量的值如果有空格,需要使用单引号或双引号包括

  • 在变量的值中,可以使用“\”转义符

  • 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“$变量名”或用${变量名}包含

  • 如果是把命令的结果i作为变量值赋予变量,则需要使用反引号或$()包含命令

  • 环境变量名建议大写,便于区分

5.1.2 变量分类

  • 用户自定义变量

  • 环境变量:这种变量主要保存的是和系统操作环境相关的数据

  • 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的

  • 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

5.1.3 本地变量

变量定义

[root@localhost~]# name="mlz"

变量叠加

[root@localhost~]# aa=123

[root@localhost~]# aa="$aa"456

[root@localhost~]# aa= ${aa}789

变量调用

  • [root@localhost~]# echo $name

变量查看

  • [root@localhost~]# set

变量删除

  • [root@localhost~]# unset name

5.2 环境变量

5.2.1 设置环境变量

 export 变量名=变量值#申明变量
 env#查询变量
unset 变量名
#删除变量

pstree 查看bash

系统常见环境变量

root@ubuntu:/home/mlz/Desktop# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
vi hello.sh
#!/bin/bashecho "hello world!"
chmod 755 hello.sh
./hello.sh
echo $PATH
cp hello.sh /bin/
hello.sh
PATH="$PATH":/root  #临时添加,重启后会失效
hello.sh
echo $PATH
------:/root/bin:/root

5.2.2 PS1:定义系统提示符的变量

\d 显示日期,格式为“星期 月 日”
\h 显示默认主机名。如默认主机名“localhost”
\t 显示24小时制时间,格式为“HH:MM:SS”
\T 显示12小时制时间,格式为“HH:MM:SS”
\A 显示24小时制时间,格式为“HH:MM”
\u 显示当前用户名
\w 显示当前所在目录的完整名称
\W 显示当前所在目录的最后一个目录
\# 执行的第几个命令
\$ 提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”
root@ubuntu:/home/mlz/Desktop# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

5.3 位置参数变量

5.3.1 位置参数变量

位置参数变量 作 用
n | n位数字,\$0代表命令本身,\$1-9代表第一个到第九个参数,十以上的参数需要用大括号包含,如${10}
* | 这个变量代表命令行中所有的参数,*把所有的参数看成一个整体
@ | 这个变量也代表命令行中所有的参数,不过@把每个参数区分对待
$# 这个变量代表命令行中所有参数的个数
mlz@ubuntu:~/Desktop$vi canshu1.sh
mlz@ubuntu:~/Desktop$chmod 755 canshu1.sh
mlz@ubuntu:~/Desktop$./canshu1.sh
./canshu1.shmlz@ubuntu:~/Desktop$./canshu1.sh 11 22 33
./canshu1.sh
11
22
33
mlz@ubuntu:~/Desktop$cat canshu1.sh
#!/bin/bashecho $0
echo $1
echo $2
echo $3

例子:

#!bin/bash
num1=$1
num2=$2
sum=$(($num1 + $num2))
#变量sum的和是num1加num2
echo $sum
#打印变量sum的值
./canshu2.sh 2 3
5

例子:

#!/bin/bashecho $#
echo $*
echo $@
mlz@ubuntu:~/Desktop$chmod 755 canshu3.sh
mlz@ubuntu:~/Desktop$./canshu3.sh 22 3 44 55 112
5
22 3 44 55 112
22 3 44 55 112
#!/bin/bash
for i in "$*"
#$中的所有参数看成是一个整体,所以在个for循环只会循环一次doecho "The parameters is: $i"done
x=1
for y in "$@"
#$中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次doecho "The paramaters$x is $y"x=$(($x+1))done
mlz@ubuntu:~/Desktop/bash_canshu$./canshu4.sh 233 112
The parameters is: 233 112
The paramaters1 is 233
The paramaters2 is 112

5.4 预定义变量

5.4.1 预定义变量

预定义变量 作 用
$? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一条命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一条命令执行不正确了。
$$ 当前进程的进程号(PID)
$! 后台运行的最后一个进程的进程号
#!/bin/bash
#Author:mlzecho "The current process is $$"
#输出当前进程的PID
#这个PID就是canshu5.sh这个脚本执行时,生成的进程的PIDfind /home/mlz/Desktop/bash_canshu -name hello.sh &
#使用find命令在bash_test目录下查找hello.sh文件
#符号&的意思是把命令放在后台执行echo "The last one Daemon process is $!"
mlz@ubuntu:~/Desktop/bash_canshu$ ./canshu5.sh
The current process is 17904
The last one Daemon process is 17905

5.4.2 接收键盘输入

[root@localhost ~]# read[选项][变量名]

选项:

-p "提示信息“ 在等待read输入时,输出提示信息
-t 秒数 read命令会一直等待用户输入,使用此选项可以制定等待时间
-n 字符数 read命令值接受指定的字符数,就会执行
-s 隐藏输入的数据,适用于机密信息的输入
#!/bin/bash
#Author: mlzread -t 30 -p "Please input your name:" name
#提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中echo "Name is $name"read -s -t 30 -p "Please enter your ege: " age
#年龄是隐私,所以我们用“-s”选项隐藏输入echo "Age is $age"
echo -e "\n"read -n 1 -t 30 -p "Please select your gender[M/F]: " gender
#使用“-n l”选项只接收一个输入字符就会执行(都不用输入回车)echo -e "\n"
echo "Sex is $gender"

6 数值运算与运算符

6.1 declare声明变量类型

[root@localhost ~]# declare[+/-][选项] 变量名

选项 含义
- 给变量设定类型属性
+ 取消变量的类型属性
-i 将变量声明为整数型(integer)
-x 将变量声明为环境变量
-p 显示制定变量的被声明的类型
root@ubuntu:/home/mlz/Downloads/lab4_code# aa=11
root@ubuntu:/home/mlz/Downloads/lab4_code# bb=22
root@ubuntu:/home/mlz/Downloads/lab4_code# declare -i cc=$aa+$bb
root@ubuntu:/home/mlz/Downloads/lab4_code# echo $cc
33

方法2:expr或let数值运算工具

[root@localhost ~]# aa=11[root@localhost ~]# bb=22#给变量aa和变量bb赋值[root@localhost ~]# dd=$(expr \$aa + \$bb)#dd的值是aa和bb的和。注意“+”左右两侧必须有空格

方法3:"$((运算式))"或"$[运算式]"

[root@localhost ~]# aa=11[root@localhost ~]# bb=22[root@localhost ~]# ff=$(($aa+$bb))[root@localhost ~]# gg=$[$aa+$bb]

6.2 运算符

7 变量测试与内容替换

测试x=${y-新值}

[root@localhost ~]# unset y

#删除变量y

[root@localhost ~]# x=$({y-new}

#继续测试

[root@localhost ~]# echo $x

new

#因为变量y不存在,所以x=new

8 环境变量配置文件

8.1 环境变量文件配置

8.1.1 source命令

[root@localhost ~]# source 配置文件

[root@localhost ~]# . 配置文件

作用是让配置文件直接生效,(.+空格)是source的缩写,否则配置文件需要重新打开才能生效

8.1.2 环境变量配置文件简介

环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH,HISTSIZE,PSI,HOSTNAME

  • 保存在/etc目录下对所有登陆linux系统的用户都生效,每个用户登录都会读取配置文件中环境变量的值,且会生效

  • ~是家目录的意思,在~/下的环境变量配置文件只会对当前用户生效,比如root用户的家目录下修改bashrc文件,那么对mlz用户是不起作用的

8.1.3 环境变量配置文件的作用

/etc/profile的作用:

  • USER变量

  • LOCALNAME变量

  • MAIL变量

  • PATH变量

  • HOSTNAME变量

  • HISTSIZE变量

  • umask:

  • 调用/etc/profile.d/*.sh文件

8.1.4 其他配置文件和登陆信息

  1. 注销时生效的环境变量配置文件

    • ~/.bash_logout

  2. 历史命令的保存文件

    • ~/bash_history

  1. 登陆后欢迎信息:/etc/motd

  2. 不管是本地登陆,还是远程登陆,都可以显示次此欢迎信息

常用Bash命令整理相关推荐

  1. linux常用基础命令整理

    linux常用基础命令整理 su - 用户名 ->切换到指定用户下 ls ------>查看当前目录下的目录及文件 clear ------>清理屏幕 cd 路径 -----> ...

  2. Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理

    Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 目录 Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 一.简单介绍 二.常用命令 1. 打开终端 :Ctrl ...

  3. 在linux系统环境中 常用的关机命令,Linux常用基础命令整理:关机命令、查看目录下文件命令等...

    整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能 Ctrl+c按键---停掉正在运行的程序 Ctrl+d按键---相当于exit ...

  4. Linux常用bash命令

    - bash命令 - [基础操作](#10) [export](#101) | [whereis](#102) | [which](#103) | [clear](#104) - [文件操作](#11 ...

  5. EC20 不常用AT 命令 整理

    EC20 不常用AT 命令 OTA更新中用到了EC20的HTTP和FILE操作AT命令,网上资料比较少,看手册又耗时,所以整理了下,方便以后查看使用,避免遗忘. HTTP 操作 GET 请求 1.设置 ...

  6. sle linux lftp禁止匿名登陆_软件测试常用linux命令整理

    作为一个名软件测试工程师,掌握Linux的基本操作是必须的.下面罗列下linux的常用命令,方便大家今后操作linux时查找,然后通过[帮助命令]进行具体的使用. 1.帮助命令man  --  man ...

  7. 开发必备的常用 Linux 命令整理

    在前面的文章中,截止到 微服务系列:分布式日志 ELK 搭建指南 这篇,我们终于算是将微服务系列给基本学完了,一时间难以决定接下来要写些什么东西. 想了想还是决定写几篇 Linux 相关命令的文章,毕 ...

  8. Linux常用 bash命令

    文章目录 1. Basic Operations a. `export` b. `whereis` c. `which` d. clear 1.1. File Operations a. ls b. ...

  9. 常用GIT命令整理 - WIP

    目录 简介 GIT设置系列命令 GIT路径系列命令 GIT仓库系列命令 子模块 (Submodule) GIT Attributes GIT常见故障排除 Errno 10054 Permission ...

最新文章

  1. 核心板焊接之连接器与邮票孔
  2. Pytorch离线安装的纯净版
  3. windows nginx c++读取请求数据_震撼!全网第一张源码分析全景图揭秘Nginx
  4. PowerDesigner 16安装注意事项
  5. c语言数据结构插入算法说明,C语言数据结构插入算法
  6. Python_51job爬虫
  7. Ai Challenger Caption图像中文描述(2017)
  8. android电视接跳舞毯,跳舞毯怎么连接电视 跳舞毯怎么玩
  9. java 判断浏览器_Java怎么判断访问者使用的是360浏览器
  10. 一张图教你清理IE浏览器缓存
  11. Linux 下搭建web压力测试工具web polygraph
  12. 异地多活(异地双活)实践经验
  13. K8S章节2 — k8s集群中通过rook方式部署ceph
  14. 陪伴难道是最长情的告白吗
  15. [黑马程序员课程记录]C++基础部分4
  16. 冬奥明星现身OSIM傲胜新品“智能沙发”精致生活分享会
  17. oca认证_OCA第2部分中的Java难题
  18. 用Python下载一个网页保存为本地的 HTML文件
  19. 多个dwg文件批量转换成jpg格式
  20. 期望风险, 经验风险和结构风险

热门文章

  1. 我所经历的Android面试
  2. 儿童上网时间管控软件_GreenSurfOnline V0.1 使用说明 (以Windows后台服务形式存在,安装需要有一定电脑操作基础)...
  3. dell服务器开机蓝屏无限重启,戴尔笔记本电脑一开机就蓝屏,然后就一直重启,怎么处理...
  4. Springboot+MybatisPlus+layui简易账单管理项目
  5. 计算机系统结构的前沿发展,计算机系统结构现状与发展.ppt
  6. 免费空间主机屋试用体验
  7. 如何制作绿盾终端静默安装包
  8. 记一次比尔盖茨僵尸网络病毒处理过程
  9. 饲料配方软件最新修改方案
  10. 【新版】系统架构设计师 - 软件可靠性分析与设计