变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
可变的量
## 如何定义变量
变量名=变量值 age=18
age:变量名
=:赋值符号
18:变量值
# 如何调用变量
在变量名前面加上'$'就可以调用变量
'$' + 变量名
echo:打印输出 作用 所见即所得

[root@localhost tmp]# echo $age
18
## name=oldboy
1.echo '$oldboy' 结果是什么?
$oldboy
2.echo '$name' 结果是什么?
$name
3.echo "$name" 结果是什么?
oldboy
4.1.echo "$oldboy' 结果是什么?
空值

old_ip=`ip a s ens33|awk -F '[ /.]+' 'NR==3{print $6}'`
old_ip=$(ip a s ens33|awk -F '[ /.]+' 'NR==3{print $6}')

#Linux中的符号:
'':所见即所得,引用字符串
"":默认情况下和''一样,用来引用字符串
``:反引号,反引号中的内容,会当做命令执行后,结果留下
区别:在于引用变量,双引号引用变量可以输出变量的值
[root@localhost tmp]# echo "$age"
18
[root@localhost tmp]# echo '$age'
$age

echo {1..5..2}每隔2个数在1-5取数

环境变量(系统变量)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 系统安装完成后,系统自带的变量
[root@localhost ~] declare #可以查看系统自带的所有变量
## 系统环境变量配置文件
1.[root@localhost ~]# ll /root/.bashrc
-rw-r--r--. 1 root root 176 Dec 29 2013 /root/.bashrc

2.[root@localhost ~]# ll /etc/bashrc
-rw-r--r--. 1 root root 2853 Oct 31 2018 /etc/bashrc

3.[root@localhost ~]# ll /etc/profile
-rw-r--r--. 1 root root 1819 Oct 31 2018 /etc/profile

4.[root@localhost ~]# ll /etc/profile.d/
256term.csh colorgrep.csh colorls.csh csh.local lang.sh less.sh which2.csh
256term.sh colorgrep.sh colorls.sh lang.csh less.csh sh.local which2.sh

命令提示符变量

1
2
3
4
5
[root@localhost ~]# echo $PS1
[\u@\h \W]\$

在命令行中设置变量,是临时的
将变量写到环境变量文件中,则是永久的、

image-20240327165009589

1
2
3
4
5
6
7
修改家目录下的.bashrc文件  vi ~/.bashrc  vi家目录下的.bashrc文件
[root@lb01 ~]# vi ~/.bashrc /root/.bashrc
[lgj@lb01 root]$ vi ~/.bashrc /home/lgj/.bushrc
若root用户修改
超级用户和普通用户家目录:
超级用户root:/root
普通用户:/home/普通用户名

BASH特性——Tab补全

1
2
3
4
命令 选项 参数
补全命令
补全参数
补全选项:yum install -y bash-completio

BASH特性——快捷键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Ctrl + w # 将光标所在字符前面的内容删除,一直删除到空格
Ctrl + z # 将一个进程放在后台运行
Ctrl + k # 将光标所在字符和后面所有内容,全部删除
Ctrl + u # 将光标所在字符前面的内容全部删除(光标所在字符不会删除)
Ctrl + s # 锁屏
Ctrl + q # 解锁
Ctrl + 左右 # 按照单词跳转光标
###########################################
Ctrl + a # 将光标移动到命令行首
Ctrl + e # 将光标移动到命令行末
Ctrl + c # 将命令终止
Ctrl + l # 清屏
BASH特性——历史命令
BASH特性——命令别名
Ctrl + d # 退出当前一个BASH终端 (注销当前用户)
Ctrl + r # 搜索历史命令
ESC + . # 将上一条命令最后一个空格 后面的内容,补全到当前命令行
'井号' # :在BASH中代表注释,系统不认识,bash也不会翻译

BASH特性——历史命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
## 作用:用来对用户进行审计
## 查看历史命令 -history
[root@localhost ~]# history
1 age=18
2 echo age
3 echo "age"
4 jjjsjsjsjsjsjjsjjsjsjjjsjss
5 history
6 history -d 1
7 hi
8 history
9 ll /tmp
10 cd /tmp0
## 保存历史记录(write) 历史记录保存在 ~/.bash_history 普通用户/home/lgj/.bash_history
history -w
[root@localhost ~]# history -w
## 清除所有历史记录(clear)
history -c
[root@localhost ~]# history -c
## 删除指定的一条历史记录(delete)
history -d 4
[root@localhost ~]# history -d 4

## 执行上一条开头是vi的命令
[root@localhost ~]# !vi
## 执行上一条命令
[root@localhost ~]# !!
## 使用!+编号,重新执行命令
[root@localhost ~]# !10

## 重复执行历史命令的快捷方法
!字符串 !vi 执行上一条vi的命令
!! 执行上一条的命令
!编号 执行指定行号历史记录

BASH特性——命令别名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
## 查看系统中的所有别名(查)    alias
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto
alias ens33='ip address show ens33'
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 net='vi /etc/sysconfig/network-scripts/ifcfg-ens33'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --showtilde'

## 设置别名(增)临时
alias 别名='命令'
[root@localhost ~]# alias ens33='ip address show ens33'
## 删除别名(删)
unalias 别名
[root@localhost ~]# unalias net
## 修改别名(改)
alias 别名='命令'
alias net='vi /etc/sysconfig/network-scripts/ifcfg-ens34
## 别名永久生效
[root@localhost ~]# vi ~/.bashrc
alias net='vi /etc/sysconfig/network-scripts/ifcfg-ens33'

扩展:ip address show enss33 展示ip

BASH特性——获取命令帮助

1
2
3
man 命令
命令 --help
http://linux.51yip.com/

修改ip&主机名

1
2
3
4
5
6
7
脚本
#!/bin/bash
read -p "请输入要修改的IP地址最后一位: " ip
read -p "请输入要修改的主机名: " host_name
sed -i "s#128#$ip#g" /etc/sysconfig/network-scripts/ifcfg-ens33
hostnamectl set-hostname $host_name
systemctl restart network