RHCE第三周(bash shell)

一:初始bash shell

shell:就是一个解释器,将命令翻译成内核看的懂的语言

shell的种类:bash shell ,csh,ksh等

会了rhel其他的也回了,因为其他的版本的shell默认都是bash shell所以他们的命令万变不离其宗

二:bash shell提供的功能

1:快捷键

 

ctrl+A 移动的命令的最前面
ctrl+E 移动到命令的最后面
ctrl+c 终止当前的命令
ctrl+d 退出当前终端
ctrl+u 将光标前面的内容剪切
ctrl+k 将光标后面的内容剪切
ctrl+y 将剪切的内容复制
ctrl+r 在历史命令中搜索
ctrl+z 暂停,并且放入到后台
ctrl+s 暂停屏幕输出
ctrl+q 恢复屏幕输出
ctrl+shift+t 在开一个终端
ctrl+alt+fn 切换终端
ctrl+l

清屏

 

2:history历史记录

history:显示历史命令

每个用户都有存放历史命令的文件

选项:

-c:删除历史命令

-w:将历史记录写入到保存历史记录的文件里面去/root/.bash_history这个文件里面去

清空历史记录的文件的操作:

[root@server ~]# history -w
[root@server ~]# echo > /root/.bash_history 
[root@server ~]# history -c
[root@server ~]# cat .bash_history 

 

还有一个方法就是

[root@server ~]# history -c
[root@server ~]# history -w
[root@server ~]# cat .bash_history 
history -w
[root@server ~]# 

就是退出终端后,系统会将历史命令保存到这个文件里面去,如果删除这个文件的话,下次登录时,会自动的生成

 

3:通配符  

通配符就是为了快速的匹配文件的

常见的通配符

* 匹配所有的文件
? 匹配单个字符
[abc] 匹配里面的任意单个字符
[^abc] 不匹配里面的任意单个字符
[0-9] 匹配0到9的数字
[[:alpha:]] 匹配任意的字母(不区分大小写)
[[:lower:]] 匹配小写的字母
[[:upper:]] 匹配大小的字母
[[:digit:]] 匹配数字
[[:alnum:]] 匹配数字和字母

 

案例:

[[:alpha:]]的2个括号和一个括号的区别:

后面的跟这个一样

#单个的话,就只匹配到里面有的字符
[root@server tmp]# ls [:alpha:].txt
a.txt
[root@server tmp]# 

#2个的话,当成一个整体,匹配所有的字母
[root@server tmp]# ls [[:alpha:]].txt
a.txt  A.txt  b.txt  B.txt  c.txt  C.txt  m.txt
[root@server tmp]# 

[^abc]和[0-9]:  

[root@server tmp]# ls [^abc].txt 
A.txt  B.txt  C.txt  m.txt
[root@server tmp]# 

[root@server tmp]# ls [0-9].txt
1.txt  2.txt  3.txt
[root@server tmp]# ls [0-9][0-9].txt
10.txt  11.txt  12.txt  13.txt
[root@server tmp]# 

 

4:命令扩展符  

~:表示当前用户登录的家目录

·命令·:反引号,表示将命令的结果保存,可以执行这个命令

$():也是保存命令的结果的

{1..3}:这个就是匹配多个1,2,3,里面必须是有顺序的(连续的),否则当成一个整体

案列:

1){1..3}

[root@server tmp]# touch {1..3}.txt
[root@server tmp]# ls
1.txt  2.txt  3.txt
[root@server tmp]# 

2)步长的{1..10..2}

[root@server tmp]# touch {1..10..2}.txt
[root@server tmp]# ls
1.txt 3.txt  5.txt  7.txt  9.txt
[root@server tmp]# 

3){}里面不是连续的话,用逗号隔开

[root@server tmp]# touch {rhel,centos,qqq}.txt
[root@server tmp]# ls
1.txt  2.txt  3.txt  5.txt  7.txt  9.txt  centos.txt  qqq.txt  rhel.txt
[root@server tmp]# 

 

5:shell命令的提示符

[root@server ~]#   

root:表示登录的用户

server:表示登录的主机名

~:表示当前工作目录

#:表示root

$:表示普通用户

\:当命令太长的话,可以使用这个命令来操作

 

三:变量    

 一:变量的基础知识

 1:变量的定义

变量的概述:存储变化数据的内存空间地址,变化的是数据,不变的是内存的空间地址

ip_address=ifconfig | grep netmask | awk '{print $2}' 这个是获取ip地址的,在不同的虚拟机上面,有不同的地址,变化的是ip地址,不变的是内存的空间地址(ip_address)

变量命名的规则:由数字,下划线,字母组成,不能以数字开头,严格区分大小写

 2:变量的类型

本地变量:用户自定义的变量

环境变量:存放了系统中的变量

3:变量的一些操作

1)定义变量名

自定义变量:os=100

定义环境变量:export os

2)引用变量名

$变量名

${变量名}

3)查看变量名

set:查看所有的变量名(本地变量和环境变量)

env:查看所有的环境变量名

4)取消变量

unset 变量名

4:区分(环境变量和本地变量)

本地变量是在当前shell下能够执行的,在子shell和新开的一个终端下无法使用

环境变量是在当前shell和子shell下都能执行的

 5:常见的系统变量(特殊的环境变量)

PWD 显示当前的路径
HOME 显示当前用户的家目录
PS1 命令提示符
PATH 显示存放命令的目录
USER 显示当前登录的用户

 重点的介绍:PS1和PATH这2个

PS1的改变:

[root@server opt]# echo $PS1
[\u@\h \W]\$
[root@server opt]# qcyexport PS1='[\u@\h \W]\$ qcy '
[root@server opt]# qcy ls
[root@server opt]# qcy export PS1='[\u@\h \W]\$ '
[root@server opt]# ls
ftp.sh  ip.sh  passwd  test  useradd.sh  user.txt
[root@server opt]# 

PATH的改变:

就是写了一个命令的脚本,然后添加在这个路径下,就能当成命令一样的执行了

[root@server command]# ls
get_user
[root@server command]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
[root@server command]# export PATH='/root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/opt/command'
[root@server command]# get_user 
用户id=0(root) 组id=0(root) 组=0(root)
[root@server command]# export PATH='/root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin'
[root@server command]# get_user
bash: get_user: command not found...
Failed to search for file: /media/AppStream was not found
[root@server command]# 

 

二:引号和反斜杠和别名

单引号:就是强引用,无论里面有什么特殊的含义都没有用

双引号:不会去掉特殊含义的 $,\,!,`` 都不会去掉

\:就是换行的,如果一行没有输完的话,可以使用这个命令

别名:就是命令的快捷方式,简化了命令的执行方式

查看别名:alias

设置别名:alias   qq='cp /etc/passwd /opt/passwd'

取消别名:unalias qq

这些别名的设置都只是临时生效的,如果要是永久生效的话,就要写入到文件里面去

三:登陆shell  

理解:用户通过不同的登录方式可以获取不同的shell操作环境,使用图形化登录或者是命令行登录,或者是su - 用户 切换用户都会获取到不同的shell操作环境

1:登陆shell类型:

登陆shell:(一般输入账户和密码,用户登录到的系统)

图形化登录和su - 切换用户,字符页面登录和ssh登录

非登录shell:(用户没有登录到这个系统,只是获取了shell操作的环境)

su 切换用户和伪终端和执行脚本

 

二者的区别:

登陆shell:就是用户登录到了这个系统

非登录shell:就是用户获得了这个shell的操作环境

还有就是触发的变量的文件不同(在登录时)

 

2:触发的shell文件

登陆shell触发的文件:

/etc/profile/    /etc/bashrc   ~username/.bashrc   ~username/.bash_profile

 非登录shell触发的环境:

 /etc/bashrc   ~username/.bashrc 这2个文件

 

有优先级的区分:

先加载 /etc/bashrc ----->>> /etc/profile-------->>>/etc/bashrc------>>>>~username/.bashrc------>>>~username/.bash_profile的顺序

 就是/etc/profile里面还要在加载/etc/bashrc这个文件

题目:所有的用户 a的值都为100 只有q7用户a的值为1000

 

 3:用户的登出shell

用户退出shell时,会触发的文件~username/.bash_logout

 

 总结:

关于登录shell的

无论是登录shell还是非登录shell,切换到用户想要变量名和别名生效的话,就写入到~username/.bashrc

想要所有的用户的变量名和别名都生效的话,写入带/etc/bashrc这个文件里面去

 

执行的优先级:

/etc/bashrc ---->>>/etc/profile----->>>/etc/bashrc----->>>~username/.bashrc----->>>~username/.bash_profile

 

 

 

 

 

 

posted @ 2024-01-16 21:20  q_7  阅读(12)  评论(0)    收藏  举报