按键 | 作用 |
---|---|
id root | 返回用户信息 |
groupadd develop | 创建用户组 |
useradd -g develop xiaoming | 给develop组织创建小明用户 |
passwd xiaoming | 给小明用户设置密码 |
userdel -r xiaoming | 删除小明用户 |
在Unix和Linux系统中,文件或目录的权限用三个基本权限表示:读(read)、写(write)和执行(execute)。每个权限被赋予一个二进制位,其中:
1. 读(r)权限对应于二进制中的第2位,其值为100(二进制),转换成十进制就是4。
2.写(w)权限对应于二进制中的第1位,其值为010(二进制),转换成十进制就是2。
3. 执行(x)权限对应于二进制中的第0位,其值为001(二进制),转换成十进制就是1。
按键 | 作用 |
---|---|
r | 读 例如:cat less tail ll 等命令 |
w | 写 向文件中写入新内容等 |
x | 执行 将文件作为可执行文件来运行 |
– | 无权限 |
rwx r-x r-x | 7 5 5 |
rw- r-- r– | 6 4 4 |
按键 | 作用 |
---|---|
chmod | 修改权限信息 |
chown | 修改文件或目录的所属主 |
chgrp | 修改文件或目录的所属组 |
按键 | 作用 |
---|---|
chmod 755 example.txt | 权限设置为所有者(User)有读、写、执行权限,组(Group)和其他用户(Other)只有读和执行权限 |
chmod u=rwx,g=rx,o=rx example.txt | 权限设置为所有者(User)有读、写、执行权限,组(Group)和其他用户(Other)只有读和执行权限 |
chmod -R 755 directory/ | 当前目录及其中的所有文件和子目录的权限都设置为所有者可读写执行 |
chown user2 example.txt | 当前所有者是user1,我们想要将其更改为user2 |
chown user3:group2 example.txt | 将example.txt的所有者更改为user3,并且所属组更改为group2 |
chown -R user4:group3 mydir/ | 将整个目录mydir/及其包含的所有文件和子目录的所有者更改为user4,组更改为group3 |
chgrp developers example.txt | 将其所有者组从当前组更改为developers组 |
chgrp developers example.txt | 其所有者组从当前组更改为developers组 |
chgrp -R teamA project_directory/ | 整个目录project_directory/及其包含的所有文件和子目录的组更改为teamA |
按键 | 作用 |
---|---|
service 服务名 start | 启动服务 |
service 服务名 stop | 停止服务 |
service 服务名 restart | 重启服务 |
service 服务名 reload | 重新加载服务 |
service 服务名 status | 查看服务状态 |
按键 | 作用 |
---|---|
chkconfig --list | 启动服务 |
chkconfig 服务名 on | 设置具体服务开机自动启动 |
chkconfig 服务名 off | 取消具体服务开启自动启动 |
service 服务名 reload | 重新加载服务 |
service 服务名 status | 查看服务状态 |
按键 | 作用 |
---|---|
service iptables stop | 停止防火墙 |
service iptables start | 开启防火墙 |
chkconfig iptables off | 取消防火墙开机自动启动 |
按键 | 作用 |
---|---|
systemctl start 服务名 | 启动服务 |
systemctl restart 服务名 | 重启服务 |
systemctl stop 服务名 | 停止服务 |
systemctl reload 服务名 | 重新加载服务 |
systemctl status 服务名 | 查看服务状态 |
systemctl list-unit-files | 查看服务列表 |
systemctl enable 服务名 | 设置具体服务开机自动启动 |
systemctl disable 服务名 | 取消具体服务开启自动启动 |
按键 | 作用 |
---|---|
systemctl stop firewalld | 停止防火墙 |
systemctl disable firewalld | 取消防火墙开机自动启动 |
#Shell 是一个命令行解释器,它接收应用程序或用户的命令,然后调用操作系统内核
#Shell 还是一个功能强大的编程语言,易编写、易调试、灵活性强
[root@hadoop01 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
bash 和 sh 的关系
[root@hadoop01 ~]# ll /usr/bin | grep bash$
\-rwxr-xr-x. 1 root root 964536 4月 1 2020 bash
lrwxrwxrwx. 1 root root 4 12月 15 21:17 sh -> bash
1.创建脚本文件:通常以 .sh 作为扩展名
2.第一行指定当前脚本的解析器
3.实现具体功能
4.Shell 脚本的运行方式(当前进程:source . 子进程:sh bash chmod+x)其中 . 是 source 的另一种写法,在当前进程中发布的全局变量可以在当前进程的其他脚本中继续沿用,也可以在子进程中使用;但是,子进程 export 发布的变量仅限于子进程内部使用
vim demo.sh
#编辑
#!/bin/bash
echo "hello world"
#运行
sh demo.sh
常用的系统变量包括:$USER 、$HOME 、$PWD 、$SHELL 等,可以使用 echo 命令输出它们的值
echo $USER
echo $HOME
echo $PWD
echo $SHELL
按键 | 作用 |
---|---|
set | less | 查看所有变量 |
USER_NAME=tom | 定义变量 |
unset USER_NAME | unset USER_NAME |
readonly SCHOOL=daxue | 声明静态变量(不能修改,不能撤销) |
自定义变量的语法规则
● 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
● 等号两侧不能有空格,衍生规则就是变量声明时必须初始化。
● 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
● 变量的值如果有空格,需要使用双引号或单引号括起来。
● 变量名区分大小写。
USER_NAME=tom
echo $USER_NAME
unset USER_NAME
echo $USER_NAME
readonly SCHOOL=666
echo $SCHOOL
特殊变量 $n n 是数字,$0 表示当前脚本的名称,从 $1 开始代表对应的脚本参数,从 ${10} 开始数字需要使用 {} 括起来。
vim parameter.sh
#编辑脚本内容
#!/bin/bash
echo "$0 $1 $2"
chmod 777 parameter.sh
#运行
./parameter.sh aa bb
#输出 ./parameter.sh aa bb
特殊变量 $# 返回输入参数的个数
vim parameter.sh
#编辑脚本内容
#!/bin/bash
echo "$0 $1 $2"
echo "$#"
chmod 777 parameter.sh
#运行
./parameter.sh aa bb
#输出 ./parameter.sh aa bb 2
特殊变量 $* 和 $@ 都能够返回全部参数,但是只有在循环中且放在引号中能够体现出它们的区别。
vim parameter.sh
#编辑脚本内容
#!/bin/bash
echo "$0 $1 $2"
echo "$#"
echo "$*"
echo $@
chmod 777 parameter.sh
#运行
./parameter.sh aa bb
#输出 ./parameter.sh aa bb 2
特殊变量 $?
● 返回上一条命令的返回结果。
● 条件判断语句:
○ 返回 0 表示 true
○ 返回 1 表示 false
● 普通语句:
○ 返回 0 表示成功
○ 返回非 0 数表示失败
$((表达式)) 或 $[表达式]
[root@hadoop01 ~]# echo $((1+2))
3
[root@hadoop01 ~]# echo $[1+2]
3
类型 | 写法 | 单词 | 含义 |
---|---|---|---|
数值 | -lt | less than | 小于 |
数值 | -le | less equal | 小于等于 |
数值 | -eq | equal | 等于 |
数值 | -gt | greater than | 大于 |
数值 | -ge | greater equal | 大于等于 |
数值 | -ne | not equal | 不等于 |
文件 | -r | read | 判断当前用户是否可以读取该文件 |
文件 | -w | write | 判断当前用户是否可以修改该文件 |
文件 | -x | execute | 判断当前用户对该文件是否有执行权限 |
文件 | -f | file | 判断当前文件是否存在并且是一个常规的文件 |
文件 | -e | existence | 判断文件是否存在 |
文件 | -d | directory | 判断是否存在并且是一个目录 |
vim demo.sh
#!/bin/bash
# 条件判断表达式写法一:test
test 10 -gt 7
# 使用$?获取上一条语句的执行结果
echo $?
# 使用$?获取上一条语句的执行结果
test 10 -lt 7
echo $?
# 条件判断表达式写法二:[ condition ]
# 注意:condition两边要有空格
[ 10 -gt 7 ]
echo $?
[ 10 -lt 7 ]
echo $?
# 专门针对文件进行操作的运算符
[ -e aaa.txt ]
echo $?
[ -r aaa.txt ]
echo $?
[ -w aaa.txt ]
echo $?
#输出 0 1 0 1 1 1 1
#!/bin/bash
if [ 10 -gt 5 ]
then
echo "10 大于 5"
fi
#!/bin/bash
if [ 10 -gt 5 ]
then
echo "10 大于 5"
else
echo "10 小于 5"
fi
#!/bin/bash
if [ 10 -eq 5 ]
then
echo "10 等于 5"
elif [ 10 -gt 5 ]
then
echo "10 大于 5"
else
echo "10 小于 5"
fi
#!/bin/bash
# 如果要使用外部数据,则需要将外部数据赋值给一个变量,不能在for语句中直接使用
len=$1
for (( i=1;i<=len;i++ ))
# 从do关键字开始是循环体开始
do
echo $1
# 到done关键字为止是循环体结束
done
#!/bin/bash
for i in "$*"
do
echo $i
done
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
s=$[$s+$i]
i=$[$i+1]
done
echo $s
Shell 编程中的函数和我们以前熟悉的函数最大的区别是:Shell 编程中的要求函数的返回值只能是整数,且只能通过 $? 的方式获取。可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值,return 后跟数值 n(0 - 255)
#!/bin/bash
function sum() {
# 使用$1、$2引用函数传入的参数
echo $[$1+$2]
}
# 调用函数,传入参数
sum 10 20
# 使用$?获取函数执行结果
echo "sum 10 20执行的结果是$?"
● ① 获取参数:通过 $1 和 $2 等方式获取,从 ${10} 开始需要使用大括号。
● ② 使用 read 读取用户输入,read 命令有两个常用参数:
○ 参数 -t 用于指定输入等待时间,单位是秒。
○ 参数 -p 用于指定提示文字。
#!/bin/bash
read -t 10 -p "please enter:" NAME
echo $NAME
rpm 是 Redhat Package Management 的缩写,实际上,通过 rpm 可以管理 Linux 环境下的安装包,类似于 Windows 里面的 setup.exe 。
按键 | 作用 |
---|---|
-qa | 查询系统中已经安装的程序,通常配合管道,使用 grep 精确匹配想要查询的包 |
-ivh | 执行 rpm 包安装操作 |
-e | 卸载 rpm 包 |
–nodeps | 在卸载过程中忽略依赖关系 |
#rpm 查询命令:
rpm -qa | grep xxx
#rpm 卸载命令:
rpm -e xxx --nodeps
#rpm 安装命令:
rpm -ivh xxx
● yum(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
● yum 类似于 Java 中的 Maven工具。
● yum 的语法: yum [选项] [参数]
● yum 的选项: -y 对所有提问都回答“yes”
按键 | 作用 |
---|---|
install | 安装rpm软件包 |
update | 更新rpm软件包 |
check-update | 检查是否有可用的更新rpm软件包 |
remove | 删除指定的rpm软件包 |
list | 显示软件包信息 |
clean | 清理yum过期的缓存 |
deplist | 显示yum软件包的所有依赖关系 |
yum 镜像源修改
# 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
# CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 清理缓存
yum clean all
# 生成缓存
yum makecache