本周主要学习Linux的基本命令,包括docker的部署和操作(下一期)
首先是Linux基础命令
1,cd命令,进入文件夹命令
# 进入网卡配置文件所在目录
cd /etc/sysconfig/network-scripts/
2,ls查看当前目录下的文件
ls有许多参数,比如:
-a all, 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-A 同-a ,但不列出 “.” (目前目录) 及 “…” (父目录)
-l 以长格式显示目录下的内容列表,包括文件的权限、链接数、所有者名称和组所有者、文件大小、最后修改日期时间和文件/目录名称
-r reverse,将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小
-R –recursive,连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
-S sort by file size。根据文件大小排序,而不是文件名
-t sort by modification time,以文件修改时间排序(从最新开始排)
-d 仅列出目录本身,而不是列出目录内的文件数据(常用)
-f 直接列出结果,而不进行排序 (ls 默认以文件名排序)
-F 根据文件、目录等信息,给予附加数据结构,例如:*:代表可可执行文件; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件
-g 像-l,但是不列出所有者
-G, no-group, 不列出任何有关于组的信息
–author 打印出每一个文件的作者
-n 类似-l,用数字UID和GID代替名称
-h 将文件大小以人类较易读的方式(例如 GB KB 等等)列
-c 输出文件的ctime(文件状态最后更改的时间),并根据ctime排序
-C 由上至下的列出项目
--full-time 显示完整时间格式
--time 输出 access 时间或改变权限属性时间 (ctime)而非内容变更时间 (modification time)
--color=never 不要依据文件特性给予颜色显示
--color=always 显示颜色
这是一些常用的参数,有更多可以使用ls --help自行查看
3,mkdir目录创建命令
示例:在root目录下创建一个名为mhy的文件夹,使用ls命令查看
ps:使用mkdir命令时一定要注意文件路径,否则后续寻找时容易丢失
4,touch 创建文件命令
示例:在上述mhy目录内创建yuanshen文件,使用ls命令查看
ps:一般要创建文件并进行编写时可以直接使用vi/vim [文件名],使用vi/vim编辑器的详细命令会在下文讲解
5,chmod 用户权限设置命令
了解chmod首先要了解linux文件权限构成
在 Linux 中,文件和目录的权限用数字表示,通常是三位数字。每一位数字都代表一组权限,分别是文件所有者 (user)、文件所属组(group)、其他用户(others)的权限。 这三位数字是由 7 个权限位组成的,分别是读取 (r)、写入(w)、执行(x),他们的值分别是
chown -R root /root/mhy
7,cat命令,查看文件内容
示例:查询上文yuanshen文件的内容
8,echo命令,打印后续内容
#格式
kill [进程id号]
#强制清除某个进程
kill -9 [id]
10,mv 移动文件命令
示例:把root目录下的benghuan3文件移动到mhy目录下
11,cp命令,复制命令
ps:复制命令在复制时可以改名
示例:把benghuai3复制一份并改名zzz
12,rm 命令,删除文件命令
参数:
-f 直接删除,不需要确认。
-r 递归删除(用来删除目录)
-i 删除前逐一询问。
-v 显示步骤
-d 只删除空目录
示例:强制删除mhy下zzz文件
13,yum命令
#下载yum 包,并自动同意安装需求
yum -install -y [package_name]
#更新源
yum update
#清除yum缓存
yum clean all
#列出所有源
yum repo list
#删除下载的包
yum remove [package_name]
ps:yum命令还有很多,博主只列出了一些常用命令,具体可以使用yum --help查看具体命令
14,systemctl命令
#启动服务
systemctl start [package_name]
#重启服务
systemctl restart [package_name]
#停止服务
systemctl stop [package_name]
#永久停止命令
systemctl disable [package_name]
#开机自启动命令
systemctl enable [package_name]
#查看服务状态
systemctl status [package_name]
15,vi/vim编辑器命令
#使用编辑器进入文件名
vi/vim [file_name]
cat /etc/passwd ---全部
tail -n 数字 /etc/passwd ---查看文件最后数字行信息
head -n 数字 /etc/passwd ---查看文件开头数字行信息
user1:x:1001:1009::/home/user1:/bin/bash
#1.用户名 (username): 用户在系统中的登录名。
#2.密码占位符 (x):占位符。
#3.用户ID (1000): 用户的唯一标识符,也称为用户ID(UID)。
#4.组ID (1000): 用户的主要组的标识符,也称为组ID(GID)。
#5.用户信息 (): 一些关于用户的额外信息,通常是用户的全名等。
#6.家目录 (/home/username): 用户登录后所在的初始目录。
#7.登录 shell (/bin/bash): 用户登录后启动的默认shell
(2)新建用户
useradd 用户名
useradd -g 用户组 -c "注释" 用户名
(3)删除用户
userdel 用户名
usermod -l 新用户名 旧用户名
usermod 参数 用户名
cat /etc/shadow
passwd 用户名
su 用户名 ---如果是root用户不用写用户名
17,用户组相关命令
(1)添加用户组
groupadd 参数 用户组名
(2)用户组修改
groupmod 参数 用户组名
(3)用户组删除
groupdel 用户组名
ps:如果该用户组被用户使用了,此时就不允许删除
第二部分是基础shell编程
1,shell脚本的概念:
#!/bin/bash
echo "woaiwanyuanshen"
#第一行:必须是指定一个解释器,来解释脚本中的命令,如果需要使用其他解释器,对应修改
#1:除了第一行的#之外,其他的#代表的都是注释所谓注释就是一段标记文字,这段文字不会被当作代码执
行
#2: shell脚本文件会有权限问题需要使用chmod赋予"运行权限【x】"
#3:执行时只有写明这个shell脚本路径即可执行,例如 ./hello.sh 就可以执行它
#4:也可以执行时来定义解释器, 格式为: 解释器 shell脚本 ---> sh hello.sh 以sh解释器运行
shell.脚本
#5. shell的文件后缀必须是.sh
示例:编写ruozhi.sh
运行他
可以看到项目被输出
3,shell变量
解释:
变量规范:
#!/bin/bash
wanyuanshen=op
echo $wanyuanshen
echo "wodeyuanshen uid:" $$
echo "woshidi" $1 "gewanyuanshenderuozhi"
echo "nishidijige" $2
echo "nirukengyuanshendeshijian:" `date`
echo "nideyuanshen mingcheng" $0
运行结果:
4,shell数组
概念:数组也是一个容器,可以存储一组数组,数组存储的数据称为元素,每个元素会分配一个唯一标识称为 下标,下标都是从0开始依次+1
规范:
1、数组定义: 数组名【自定义】=(元素 元素 元素 元素.....)
array1=('1' '2' '3' '4' '5' '6')
echo ${array1[2]}
获取全部元素
echo ${数组名[*]}
案例:查询数组array1所有元素
echo ${array1[*]}
设置元素:数组名[下标]=值
案例:给数组array1的第2个元素赋值999
array1[1]=999
echo ${array1[*]}
5,for循环
案例:把数组arr全部以niyaowanshenmoyouxi :值的结构打印出来
#!/bin/bash
arr=(yuanshen bengtie benghuai3)
for names in ${arr[*]}
do
echo "niyaowanshenmoyouxi:"$names
done
运行结果:
#!/bin/bash
i=0
for ((j=1 ; j<=114514 ; j++))
do
i=$(( i+1))
done
echo "niwanle $i ciyuanshen"
运行结果:
6,if分支语句
概念:if语句称为条件分支,满足对应条件去执行对应的流程
#!/bin/bash
if(($1 >= 0 && $2 >= 4)); then
echo "好"
fi
复杂案例:
#!/bin/bash
if(($1 >= 0 && $2 <= 4)); then
echo "好"
elif(($1 <= 10 && $2 >=5)); then
echo "你好"
else
echo "大家好"
fi
7,case语句
概念:case分支只能用于判断是否等于某个值, 只有符合了才会执行后面代码
格式规范:
#!/bin/bash
case $1 in
a)
echo "第一个选项"
;;
b)
echo "第二个选项"
;;
c)
echo "第三个选项"
;;
esac
8,while循环
概念:可以使用while循环来重复执行一段代码块,直到指定的条件不再满足为止
案例:初始化了一个变量count
为1,然后使用while循环来检查count
是否小于等于5。如果是,就打印出count
的值,并将count
加1。当count
大于5时,循环结束
#!/bin/bash
count=1
while [ $count -le 5 ]
do
echo $count
count=$((count + 1))
done
for循环和while循环的区别:
- for循环通常用于遍历一个序列(如列表、元组、字符串等),而while循环没有明确的迭代次数或序列。
- while循环的条件是在每次循环开始时检查,只要条件为真,就会一直执行循环体。而for循环则是在循环开始前确定迭代的次数。
- 使用for循环时,通常需要事先知道循环的次数或者要遍历的对象的长度;而while循环更适用于不确定循环次数的情况。