Linux bash 基础特性

  • bash基础特性之一:命令历史
  • bash基础特性之二:命令或路径补全
  • bash基础特性之三:命令行展开
  • bash基础特性之四:命令的执行状态结果
  • bash基础特性之五:引用
  • bash基础特性之六:变量
  • bash基础特性之七:快捷键
  • bash基础特性之八:通配符机制
  • bash基础特性之九:IO重定向
  • bash基础特性之十:管道符
  • bash基础特性之十一:hsah
  • bash基础特性之十二:多命令执行
  • bash基础特性之十三:逻辑运算
  • bash基础特性之十四:配置文件
  • bash基础特性之十五:算术运算

bash基础特性之一:命令历史

命令历史是指:shell进程会其会话中保存此前用户提交执行过的命令。

命令:
# historyhistory 功能定制:
# 定制history的功能,可通过如下环境变量实现:1、HISTSIZE:shell进程可保留的命令历史的条数2、HISTFILE:持久保存命令历史的文件.bash_history:存放于 home directory 下3、HISTFILESIZE:命令历史文件的大小
# 可修改环境变量的值(注意只对当前shell有效):NAME='VALUE'
# 修改环境变量示例:~# export HISTSIZE=10000~# echo $HISTSIZE10000
命令用法:history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 history -ps 参数 [参数...]常用选项:-c: 清空命令历史-d offset:删除指定命令历史# history -d  999 6 从history历史中第999条开始,删除6条命令-r: 从文件读取命令历史至历史列表中-w:把历史列表中的命令追加至历史文件中-a:把历史列表中的命令追加至历史文件中history #:显示最近的#条命令
调用命令历史列表中的命令:!#:再一次执行历史列表中的第#条命令!!:再一次执行上一条命令!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令注意:命令的重复执行有时候需要依赖于幂等性(重复执行多次,结果是一样)示例:
# cat 1.txt
1
2
# !!
cat 1.txt
1
2
# history
1  history
2  cat /etc/passwd3  cat /etc/shadow
4  cat 1.txt
5  history
# !4
cat 1.txt
1
2
# !cat
cat 1.txt
1
2
调用上一条命令的最后一个参数:快捷键:ESC, .   # 按一下 ESC 后,然后再按 . ,就会调用上一条命令的最后一个参数(很常用)字符串:!$  示例:
# ls /etc/systemd/
bootchart.conf  journald.conf  logind.conf ...
# ls !$                   # 调用上一条命令的最后一个参数
ls /etc/systemd/
bootchart.conf  journald.conf  logind.conf ...
# ls /etc/systemd/        # 按 “ESC .” 键调用上一条命令的最后一个参数
bootchart.conf  journald.conf  logind.conf ...
控制命令历史记录的方式:环境变量:HISTCONTROLignoredups:忽略重复的命令ignorespace:忽略以空白字符开头的命令ignoreboth:以上两者同时生效示例:
# echo $HISTCONTROL
ignoreboth
# export HISTCONTROL=ignoredups
# echo $HISTCONTROL
ignoredups

bash基础特性之二:命令或路径补全

  • 命令补全
shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当作命令。命令查找机制:1、查找内部命令。2、根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名。TAB键动作如下:1、给定的打头字符串如果能惟一标识某命令程序文件,按TAB键则直接补全。2、不能惟一标识某命令程序文件,再击TAB键一次,会给出列表。PATH环境变量查看:# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • 路径补全
在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件。TAB键动作如下:1、如果能惟一标识,则直接补全。2、否则,再一次TAB,给出列表。

bash基础特性之三:命令行展开

~:自动展开为用户的家目录,或指定的用户的家目录
{ }:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径# 例如:/tmp/{a,b} 相当于 /tmp/a 和 /tmp/b
示例:
# mkdir -pv /tmp/x/{y1/{a,b},y2}
mkdir: created directory '/tmp/x'
mkdir: created directory '/tmp/x/y1'
mkdir: created directory '/tmp/x/y1/a'
mkdir: created directory '/tmp/x/y1/b'
mkdir: created directory '/tmp/x/y2'# mkdir -v {a,b}_{c,d}
mkdir: created directory 'a_c'
mkdir: created directory 'a_d'
mkdir: created directory 'b_c'
mkdir: created directory 'b_d'

tree 命令介绍:

tree:tree [options] [directory]-L level:指定要显示的层级示例:
# tree /tmp/
/tmp/
├── systemd- ...
│   └── tmp
└── x├── y1│   ├── a│   └── b└── y2
7 directories, 0 files

bash基础特性之四:命令的执行状态结果

命令执行的状态结果:bash通过状态返回值来输出此结果。1、成功:02、失败:1-255备注:命令执行完成之后,其状态返回值保存于 bash 的特殊变量 $? 中。示例:
# cat 1.txt           # 命令执行成功
1
2
# echo $?             # 状态返回值为 0,达标执行成功
0
# cat 1.txt.txt       # 命令执行失败
cat: 1.txt.txt: No such file or directory
# echo $?             # 状态返回值非 0 ,代表命令执行失败
1
  • 大家注意区分 “命令的执行结果” 和 “执行命令的状态结果
命令的执行结果引用,有如下两种格式:
1、$(COMMAND)
2、`COMMAND`  (反引号,不是单引号,是 TAB 键上的反引号)示例:
# cat 1.txt                  # 执行命令
1
2
# echo $(cat 1.txt)          # 引用命令执行结果
1 2
# echo `cat 1.txt`           # 引用命令执行结果
1 2
# echo $?                    # 输出执行命令的状态结果
0

bash基础特性之五:引用

引用一般分为以下三种:1、强引用:''2、弱引用:""3、命令引用:``      # 反引号,尽量使用 $(COMMAND)
单引号:强引用,变量引用不执行替换# echo '$SHELL'
双引号:弱引用,变量引用会被替换# echo "$SHELL"
反引号:命令引用,会引用命令执行结果# echo `cat 1.txt`
示例:
# echo $SHELL           # SHELL 变量值是 /bin/bash
/bin/bash
# echo '$SHELL'         # 强引用,变量不会被替换,直接输出字符串
$SHELL
# echo "$SHELL"         # 弱引用,变量会被替换,输出变量结果
/bin/bash
# echo `echo $SHELL`    # 命令引用,输出引用命令执行结果
/bin/bash

bash基础特性之六:变量

变量  说明:变量是指命令的内存空间。变量 作用:1、存储格式2、数据范围3、参与运算程序 = 指令 + 数据1、指令:由程序文件提供2、IO设备、文件、管道、变量变量赋值:name=value变量类型:存储格式、表示数据范围、参与的运算编程语言:1、强类型变量2、弱类型变量bash把所有变量统统视作字符型bash中的变量无需事先声明;相当于,把声明和赋值过程同时实现(声明 时同时要指明 类型 和 变量名)变量替换:把变量名出现的位置替换为其所指向的内存空间中数据
变量引用:${var_name}, $var_name变量名:1、变量名只能包含数字、字母和下划线,而且不能以数字开头2、变量名要见名知义,3、命名机制遵循某种法则,不能够使用程序的保留字,例如if, else, then, while等bash变量类型:1、本地变量:作用域仅为当前shell进程2、环境变量:作用域为当前shell进程及其子进程3、局部变量:作用域仅为某代码片断(函数上下文),常用于脚本可参考博客:https://mp.csdn.net/mdeditor/95778755#2_1784、位置参数变量:当执行脚本的shell进程传递的参数5、特殊变量:shell内置的有特殊功用的变量例如:$?(0 代表 成功;1-255 代表 失败)

1、本地变量:

变量赋值:name=value
变量引用:${name}, $name"":变量名会替换为其值;'':变量名不会替换为其值;
查看变量:set
撤销变量:unset name(注意:此处非变量引用;千万不能带 $ 符号,变量引用时才需要带 $ 符号)

2、环境变量:

变量赋值:1、export name=value2、name=valueexport name         # 使用 export 可以把本地变量变为环境变量3、declare -x name=value4、name=valuedeclare -x name   # 使用 declare -x 可以把本地变量变为环境变量变量引用:${name}, $name注意:bash内嵌了许多环境变量(通常为全大写字符),用于定义bash的工作环境比如:PATH, HISTFILE, HISTSIZE, HISTFILESIZE, HISTCONTROLSHELL, HOME, UID, PWD, OLDPWD查看环境变量:export, declare -x, printenv, env
撤销环境变量:unset name          (备注:千万不能带 $ 符号,变量引用时才需要带 $ 符号)

3、只读变量:
只读变量无法重新赋值,并且不支持撤销;存活时间为当前shell进程的生命周期,随shell进程终止而终止。

无法撤销或者无法重新赋值1、declare -r name2、readonly name
示例:
root@LeeMumu:~# Lee=Mumu      # 定义本地变量
root@LeeMumu:~# echo $Lee
Mumu
root@LeeMumu:~# pstree        # 查看进程树
systemd─┬─accounts-daemon─┬─{gdbus}│                 └─{gmain}├─acpid├─atd├─cgmanager├─cron├─dbus-daemon├─irqbalance├─2*[iscsid]├─libvirtd───15*[{libvirtd}]├─login───bash───sudo───bash├─lvmetad├─lxcfs───7*[{lxcfs}]├─mdadm├─polkitd─┬─{gdbus}│         └─{gmain}├─rsyslogd─┬─{in:imklog}│          ├─{in:imuxsock}│          └─{rs:main Q:Reg}├─sshd───sshd───sshd───bash───sudo───bash───pstree├─systemd───(sd-pam)├─systemd-journal├─systemd-logind├─systemd-timesyn───{sd-resolve}├─systemd-udevd├─uuidd├─virtlockd───{virtlockd}├─virtlogd───{virtlogd}└─xl2tpd
root@LeeMumu:~# bash           # 进入到bash子进程
root@LeeMumu:~# echo $Lee      # 变量失效,无用root@LeeMumu:~# exit
exit
root@LeeMumu:~# echo $Lee
Mumu
root@LeeMumu:~# export Lee      # 本地变量变为环境变量
root@LeeMumu:~# echo $Lee
Mumu
root@LeeMumu:~# bash            # 进入到bash子进程
root@LeeMumu:~# echo $Lee       # 环境变量在bash子进程里依旧有效
Mumu

4、位置参数变量:

位置参数变量 :主要是向脚本传递参数。# myscript.sh  argu1 argu2引用方式:argu1 argu2$1,   $2, ..., ${10},  ${11}, ...轮替:shift  [n]:位置参数轮替示例:
root@LeeMumu:~# cat echo.sh           # 通过此脚本,了解位置参数变量
#!/bin/bashecho $1
echo $2root@LeeMumu:~# ./echo.sh "The line 1." "The line 2."
The line 1.
The line 2.

5、特殊变量

$0:脚本文件路径本身
$#:脚本参数的个数
$*:所有参数
$@:所有参数

bash基础特性之七:快捷键

Ctrl+a:跳转至命令行行首
Ctrl+e:跳转至命令行行尾Ctrl+u:删除行首至光标所在处之间的所有字符
Ctrl+k:删除光标所在处至行尾的所有字符Ctrl+l:清屏,相当于clear
Ctrl+c:终止命令

bash基础特性之八:通配符机制

globbing:文件名通配(整体文件名匹配,而非部分)
匹配模式:元字符*:匹配任意长度的任意字符,【任意长度】的【任意字符】# p*a 可匹配 pa ppa paa ppaa ?:匹配任意单个字符,【任意单个字符】# p?a 可匹配 ppa paa pha[]:匹配指定范围内的任意单个字符, [] 表示 【指定范围内】的【单个字符】有几种特殊格式:[a-z], [A-Z], [0-9], [a-z0-9][[:upper:]]:所有大写字母 [[:lower:]]:所有小写字母  [[:alpha:]]:所有字母,同 [a-Z][[:digit:]]:所有数字,同 [0-9][[:alnum:]]:所有的字母和数字,同 [a-zA-Z0-9][[:space:]]:所有空白字符[[:punct:]]:所有标点符号注意字母的范围区间:[abdc] 代表 a 或者 b 或者 c 或者 d[^]:匹配指定范围外的任意单个字符,托字符[^[:upper:]]:非大写字母的单个字符[^0-9]:非数字[^[:alnum:]]:非字母和数字通过以下示例,了解字母区间范围:
# touch A a Z z X x
# ls [a-z]                  # [a-Z]代表 [aAbB...zZ]
a  A  x  X  z
# ls [A-z]
A  x  X  z
# ls [A-Z]
A  x  X  z  Z
# ls [a-Z]
a  A  x  X  z  Z

备注:创建文件时,尽量不在包含特殊字符,会造成困扰。如果需要使用特殊字符的话,需要加 \ 作为转译符,或者用双引号,强相关 “” 。

# touch p\ a                     # 创建名称为“p a”的文件
# ll
drwxr-xr-x 2 root root 4096 May 30 22:48 ./
drwxr-xr-x 4 root root 4096 May 30 22:47 ../
rw-r--r-- 1 root root    0 May 30 22:48 p a
# touch p a                      # 创建名称为 p 和 a 的文件
# ll
drwxr-xr-x 2 root root 4096 May 30 22:48 ./
drwxr-xr-x 4 root root 4096 May 30 22:47 ../
-rw-r--r-- 1 root root    0 May 30 22:48 a
-rw-r--r-- 1 root root    0 May 30 22:48 p
-rw-r--r-- 1 root root    0 May 30 22:48 p a
# touch "p p"                    # 创建名称为“p p”的文件,“” 强引用
# ll
drwxr-xr-x 2 root root 4096 May 30 22:49 ./
drwxr-xr-x 4 root root 4096 May 30 22:47 ../
-rw-r--r-- 1 root root    0 May 30 22:48 a
-rw-r--r-- 1 root root    0 May 30 22:48 p
-rw-r--r-- 1 root root    0 May 30 22:48 p a
-rw-r--r-- 1 root root    0 May 30 22:49 p p
# ll ?[[:space:]]?               # 匹配文件名称中间有空格的文件
-rw-r--r-- 1 root root 0 May 30 22:48 p a
-rw-r--r-- 1 root root 0 May 30 22:49 p p
通配符 示例:
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录# ls -d /var/l?[[:lower:]]
2、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录# ls -d /etc/[0-9]*[^0-9]
3、显示/etc目录下,以非字母开头,后面跟一个字母及其它任意长度任意字符的文件或目录# ls -d /etc/[^a-z][a-z]*
4、复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/magedu.com目录# cp -r /etc/m*[^0-9] /tmp/magedu.com/
5、复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下# cp -r /usr/share/man/man[0-9] /tmp/man/
6、复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d/目录下# cp -r /etc/[mnrp]*.conf /tmp/conf.d/

bash基础特性之九:IO重定向

  • 名词解释:
IO设备一般有:1、可用于输入的设备:文件例如:键盘设备、文件系统上的常规文件、网卡等2、可用于输出的设备:文件例如:显示器、文件系统上的常规文件、网卡等程序的数据流有三种:1、输入的数据流 <-- 标准输入(stdin),键盘2、输出的数据流 --> 标准输出(stdout),显示器3、错误的输出流 --> 错误输出(stderr),显示器fd: file descriptor,文件描述符1、标准输入:02、标准输出:13、错误输出:2
  • IO重定向之 输出重定向
输出重定向:>    特性:覆盖输出备注:正确输出默认是1,其实应该是 1>,只能输出正确输出流输出重定向:>>特性:追加输出 示例 1:
# ll > /dev/pts/1  可以输出到其它伪终端,但是比较危险,容易覆盖掉硬盘备注:此命令非常危险,覆盖内容不会提示示例 2:
root@LeeMumu:~# cat 1.txt
1
2
root@LeeMumu:~# echo 3 >> 1.txt      # 追加输出
root@LeeMumu:~# cat 1.txt
1
2
3
root@LeeMumu:~# echo 4 > 1.txt       # 覆盖输出,不会提示,慎用此命令
root@LeeMumu:~# cat 1.txt
4
# set -C1、禁止覆盖输出重定向至已存在的文件2、此时可使用强制覆盖输出:>|3、只对当前shell进程有效
# set +C1、关闭上述特性示例:
root@LeeMumu:~# cat 1.txt
1
root@LeeMumu:~# set -C                       # 开启此命令后,禁止覆盖输出
root@LeeMumu:~# echo 2 > 1.txt
bash: 1.txt: cannot overwrite existing file
root@LeeMumu:~# echo 2 >| 1.txt
root@LeeMumu:~# cat 1.txt
2
root@LeeMumu:~# set +C                        # 关闭上述特性后,可以覆盖输出
root@LeeMumu:~# echo 3 > 1.txt
root@LeeMumu:~# cat 1.txt
3

在IO输出重定向中,1 代表正确输出,2 代表错误输出,如下:

错误输出流重定向:1、2>2、2>>
正确输出流重定向(数字 1 可以不写,默认是 1):1、> 或者 1>2、>> 或者 1>>

合并正常输出流和错误输出流:

1、所有输出流覆盖输出:&>
2、所有输出流追加输出:&>>
3、所有输出流覆盖输出至某文件:COMMAND > /path/to/somefile 2>&1
4、所有输出流追加输出至某文件:COMMAND >> /path/to/somefile 2>&1
备注:上述命令,常用于脚本中示例:
root@LeeMumu:~# cat 1.txt
1
root@LeeMumu:~# ls txt >> 1.txt        # 错误的输出无法追加至 1.txt 中
ls: cannot access 'txt': No such file or directory
root@LeeMumu:~# cat 1.txt
1
root@LeeMumu:~# ls txt &>> 1.txt       # 错误的输出可以追加至 1.txt 中
root@LeeMumu:~# cat 1.txt
1
ls: cannot access 'txt': No such file or directory

特殊说明:

特殊设备:/dev/null 把送入的信息悄无声息的丢弃,不产生一点涟漪需要获取执行状态返回值的时候,很有用,常用于脚本示例:
root@LeeMumu:~# ls txt
ls: cannot access 'txt': No such file or directory
root@LeeMumu:~# ls txt &>> /dev/null
root@LeeMumu:~# echo $?          # 通过状态返回值,判断命令是否执行成功
2
root@LeeMumu:~# cat 1.txt
1
root@LeeMumu:~# cat 1.txt &>> /dev/null
root@LeeMumu:~# echo $?          # 通过状态返回值,判断命令是否执行成功
0
  • IO重定向之 输入重定向
tr命令:tr [OPTION]... SET1 [SET2]# 把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符# 注意:此命令不会修改原文件用法1: 把 SET1 对位换为 SET2# tr SET1 SET2 < /PATH/FROM/SOMEFILE
用法2: 移除 SET1# tr -d SET1 < /PATH/FROM/SOMEFILE  示例:
root@LeeMumu:~# cat a.txt
a b c d e
A B C D E
# 把 a.txt 文件中的小写字母都换成大写字母输出在屏幕上,不修改原文件
root@LeeMumu:~# tr [a-z] [A-Z] < a.txt
A B C D E
A B C D E# 把 a.txt 文件中的大写字母移除,然后输出在屏幕上,不修改源文件
root@LeeMumu:~# tr -d [A-Z] < a.txt
a b c d e
Here Document:<<输出内容为EOF(结束符)时,结束输入动作:# cat << EOF SOMEFILE不存在时,会自动创建:# cat > /PATH/TO/SOMEFILE << EOF 示例:
root@LeeMumu:~# cat > A.txt <<EOF
> 1
> 2
> 3
> EOF
root@LeeMumu:~# cat A.txt
1
2
3

bash基础特性之十:管道符

  • 管道:连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流。
命令格式:# COMMAND1 | COMMAND2 | COMMAND3 | ...示例:
root@LeeMumu:~# cat A.txt
1
2
3
root@LeeMumu:~# cat A.txt | tr 1 a | tr a A
A
2
3
root@LeeMumu:~# cat A.txt | tr 1 a | tr a A | tr A 1
1
2
3
tee 命令:同一个数据源,即保存在SOMEFILE,又能作为COMMAND1的输入# COMMAND | tee /PATH/TO/SOMEFILE | COMMAND1命令组合:# 既能在屏幕输出,又能保存再相应的文件中# cat 5.txt | tee A.txt4示例:
root@LeeMumu:~# cat A.txt
1
2
3
root@LeeMumu:~# cat A.txt | tee A.txt.bak | tr 1 A
A
2
3
root@LeeMumu:~# cat A.txt.bak
1
2
3

bash基础特性之十一:hsah

hash命令:(对内部命令的记录无效)在PATH路径中保存已经执行过命令的完整路径,下次再执行此命令时就直接使用此处路径而不用查找PATH全部路径。

缓存此前命令的查找结果:key-value1、key:搜索键2、value:值hash命令:1、hash:列出2、hash -d COMMAND:删除3、hash -r:清空示例:
root@LeeMumu:~# hash
hits    command0    /bin/cat1   /usr/bin/vi1    /usr/bin/man2   /usr/bin/tr7    /bin/ls

bash基础特性之十二:多命令执行

命令格式:
]# COMMAND1; COMMAND2; COMMAND3; ...示例:
root@LeeMumu:~# echo 1 ; echo 3 ; touch 5.txt ; echo 4 > 5.txt
1
3
root@LeeMumu:~# cat 5.txt
4

bash基础特性之十三:逻辑运算

运算数:1、真(true, yes, on, 1)2、假(false, no, off, 0)与运算:1 && 1 = 11 && 0 = 00 && 1 = 00 && 0 = 0或运算:1 || 1 = 11 || 0 = 10 || 1 = 10 || 0 = 0非运算:! 1 = 0! 0 = 1
短路法则:
# COMMAND1 && COMMAND2COMMAND1为“假”,则COMMAND2不会再执行。否则,COMMAND1为“真”,则COMMAND2必须执行。# COMMAND1 || COMMAND2COMMAND1为“真”,则COMMAND2不会再执行;否则,COMMAND1为“假”,则COMMAND2必须执行;示例:
用户不存在,就进行创建;如果用户存在,后面就不执行,适用于或运算,如下:
# id $username || useradd $username

bash基础特性之十四:配置文件

配置文件分为两类:1、profile类:为交互式登录的shell进程提供配置2、bashrc类:为非交互式登录的shell进程提供配置         登录类型:1、交互式登录shell进程:直接通过某终端输入账号和密码后登录打开的shell进程使用su命令:su - USERNAME, 或者使用 su -l USERNAME执行的登录切换2、非交互式登录shell进程:su USERNAME执行的登录切换图形界面下打开的终端运行脚本profile类:1、全局:对所有用户都生效;/etc/profile /etc/profile.d/*.sh             2、用户个人:仅对当前用户有效;~/.bash_profile           3、功用:用于定义环境变量运行命令或脚本bashrc类:1、全局:/etc/bashrc 2、用户个人:~/.bashrc3、功用:定义本地变量定义命令别名注意:仅管理员可修改全局配置文件。
交互式登录shell进程:/etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc非交互式登录shell进程:~/.bashrc --> /etc/bashrc --> /etc/profile.d/*命令行中定义的特性,例如变量和别名作用域为当前shell进程的生命周期
配置文件定义的特性,只对随后新启动的shell进程有效让通过配置文件定义的特性立即生效:1、通过命令行重复定义一次;2、让shell进程重读配置文件;# source /PATH/FROM/CONF_FILE# .  /PATH/FROM/CONF_FILE

配置命名别名,对系统所有登陆用户都有效。通过修改配置文件可生效。
按如下配置:

[root@LeeMumu ~]# alias               # 查看系统存在的命令别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'[test@LeeMumu root]$ alias            # 查看 test 用户的命令别名
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'[root@LeeMumu ~]# vi ~/.bashrc
alias vi='vim'                       # 在~/.bashrc 文件中增加别名 vi
[root@LeeMumu ~]# source ~/.bashrc   # 重读配置文件让其生效
[root@LeeMumu ~]# alias              # 新增的命令别名已经生效
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'[test@LeeMumu root]$ alias           # test 用户的命令别名也增加了 vi 的命令别名
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'

bash基础特性之十五:算术运算

常用的算术运算符号:1、+   加2、-   减3、*   乘4、/   除5、**  次方6、%  取模,a%p,表示a除以p的余数。算术运算格式:1、let  VAR=算术运算表达式2、VAR=$[算术运算表达式]3、VAR=$((算术运算表达式))4、VAR=$(expr $ARG1 $OP $ARG2)注意:乘法符号在有些场景中需要使用转义符。
示例:
root@LeeMumu:~# let aAa=3**3
root@LeeMumu:~# echo $aAa
27
root@LeeMumu:~# aAa=$((2+3-5))
root@LeeMumu:~# echo $aAa
0
root@LeeMumu:~# aAa=$[3+3-5]
root@LeeMumu:~# echo $aAa
1

Linux bash 的基础特性相关推荐

  1. Linux基础知识--2.Linux的文件系统和bash的基础特性(1)

    Linux基础知识--linux的文件系统和bash的基础特性 一.Linux文件系统: Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux ...

  2. Linux基础(2)-基础命令和bash的基础特性(1)

    基础命令 命令历史 命令历史的管理 登陆 shell 时,会读取命令历史文件中记录下的命令: ~/.bash_history . 登陆进 shell 后,新执行的命令只会记录在缓存中,这些命令会在用户 ...

  3. linux bash gt,linux之bash的基础特性(一)--gt;命令历史(history命令),命令补全,路径补全...

    关于命令历史-->history 1.与之相关的环境变量:HISTSIZE,HISTFILE-->~/.bash_history,HISTFILESIZE,HISTCONTROL,HIST ...

  4. linux bash 局部变量赋值,linux之bash的基础特性(四)变量,配置文件及env,printenv,export,declare,set,unset,readonly简单命令...

    变量 主要有本地变量,环境变量,局部变量,位置变量,只读变量,特殊变量 1.本地变量:该类变量的作用范围仅限于当前shell进程,在其他shell进程包括其子或父进程均无效 该类变量赋值方式: 1)直 ...

  5. Linux bash shell基础语法

    转自:http://blog.sina.com.cn/s/blog_46177c3401014fty.html 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时 ...

  6. bash的基础特性(一)

    1.历史命令 环境变量:HISTSIZE是命令历史记录的条数 HISTFILE是历史命令文件夹.~/.bash_histroy HISTFILESIZE是历史命令文件记录的条数 常用的选项: a:手动 ...

  7. linux文件系统及bash基础特性

    linux文件系统 一.根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上.根文件系统至关重 ...

  8. 每个程序员都应该知道的Linux基础知识!全文4900字,没有耐心的不建议看 ——( Linux文件系统 + 系统管理类命令 + bash基础特性)

    文章目录 - Linux的文件系统 - LSB - FHS - 根文件系统 - 对根文件系统下目录的概述: /boot /bin /sbin /lib /lib64 /etc /home /root ...

  9. Linux6-bash基础特性(2)

    bash shell基础特性-命令补全 命令补全的工作前提: shell程序在接收到用户执行命令的请求时执行命令的请求,分析完成之后,最左侧的字符串会被当作命令 命令处理机制:首先查找内部命令,如果没 ...

最新文章

  1. 今晚直播 | 基于知识图谱的人机对话系统方法与实践
  2. 用友BIP平台ISV伙伴快速壮大,32款融合产品与联合解决方案隆重发布
  3. day-17 包与模块
  4. 一进庙会freeeim
  5. kafka 的安装部署
  6. 【Vue案例二】实现对表单数据的添加、删除以及关键字查询操作
  7. mybatis分页插件_MyBatis 分页插件 5.2.0 发布
  8. Hive合并小文件参数总结
  9. 准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC、AUC
  10. Origin画甘特图-II
  11. 微信小程序仿支付宝滑动图标
  12. 2018年广发证券信息技术部面试总结
  13. win10/win11添加本地普通账户/管理员账户/win10修改/禁用pin码
  14. 深度学习图像处理(一)
  15. scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法
  16. 【Vue3 第十四章】父子组件通信
  17. 2019人工智能行业的25大趋势预测
  18. 【Python】不同目录下的.py文件调用问题
  19. 微信抢红包小练习 Python实现
  20. 科罗拉多矿业大学计算机科学专业,科罗拉多矿业大学专业设置情况_有哪些专业...

热门文章

  1. 牛逼哄哄的 BitMap,强在哪里?
  2. 苹果6严重卡顿_这样优化手机才能保持流畅,苹果安卓手机都适用
  3. Mybatis-Plus 的条件参数
  4. [转载]100条关于猪的短信
  5. 基于SSM体育器材管理系统的实现与开发
  6. 动漫人物五官画法教程
  7. 微型计算机课程总结,《微机原理与接口技术》课程总结
  8. NewBing国内申请指导攻略
  9. 【英语】最清晰最快速最大声之丹田发声
  10. 使用高德地图自定义创建图层(svg)