系列综述:
💞目的:本系列是个人整理为了学习基本的
shell编程和linux命令
,整理期间苛求每个知识点,平衡理解简易度与深入程度。🥰来源:材料主要源于b站大学------linux运维课程进行的,每个知识点的修正和深入主要参考各平台大佬的文章,其中也可能含有少量的个人实验自证。
🤭结语:如果有帮到你的地方,就点个赞和关注一下呗,谢谢🎈🎄🌷!!!
文章目录
常用命令
命令的基本格式
-
[root@localhost ~] #
的含义[]
:分隔符,无特殊含义root
:当前登录用户名localhost
:当前系统的简写主机名~
:代表用户当前所在的目录#
:命令提示符。超级用户是#,普通用户是$
-
命令的常见格式
[root@localhost ~] # 命令 [选项] [参数]
- 选项:用于调整命令功能
- 参数:命令的操作对象,没有则会使用默认的参数
-
目录命令
ls
的详细信息bash[root@localhost ~] # ls -l -rw------. 1 root root 1207 1月14-18:18 anaconda-ks.cfg
- 权限:文件读写执行的相关权限
- 引用计数:文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。
- 所有者:这个文件属于哪个用户。默认所有者是文件的建立用户
- 所属组:默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
- 文件大小:默认单位是字节。
- 文件最近修改时间:注意这个时间不是文件的创建时间。
- 文件名
-
ls
命令的常用选项-a(all)
:显示所有文件,包含隐藏文件--color=never
:改变ls信息颜色,避免工作场景下的颜色对比模糊问题-l(long)
:长格式显示-d(dirtory)
:显示当前目录信息-h(human)
:人性化显示文件大小,包含单位K、M等-i(inode)
:显示文件的i节点号
目录操作命令
-
ls:目录信息查看
-
cd:打开目录命令,注意路径的使用
- 绝对/相对路径:新手推荐使用
绝对路径
降低出错的概率
bash# 绝对路径:开始的/表示从根目录开始 [root@localhost ~] # cd /usr/ # 相对路径:开始没有/表示从当前目录开始 [root@localhost ~] # cd usr/
- 简化操作
特殊符号 作用 ~ 或 空 用户家目录 - 上次访问目录 . 当前目录 ... 代表上级目录 - 绝对/相对路径:新手推荐使用
-
pwd:显示当前所在目录
-
mkdir:建立目录
- 在同一目录下的,目录和文件不可同名。win下有隐藏扩展名
bash#在当前路径建立目录 mkdir 目录名称 # 删除当前路径的指定目录,作用有限 rmdir 目录名称 # 建立多级目录 mkdir -p 12/23/34 # 删除多级目录,不能后悔的误删除,用前需多思!!! rm -rf 12 # 删除目录下的所有文件 rm -rf /目录/*
- 避免误删:所有服务器都应该先预装
extundelete
,误删除后减少操作导致的文件覆盖,可能全部找回
文件操作命令
-
echo:修改文件
bash# 文件不存在则创建,存在则追加 echo 内容 >> abc
-
touch:创建文件
bash# 文件不存在则创建,存在则修改文件时间戳 touch 文件名
-
stat:文件详细信息
- 没有文件的创建时间
- 没有文件的创建时间
-
cat:查看小文件内容
bash# 显示行号,但不适合查看大文件 cat -n 文件名称 # 列出所有隐藏符号:$为回车,^为Tab cat -A 文件名称
-
more:分屏显示大文件内容
bash# 空格向下翻页,b向上翻页,回车向下一行, # q退出分屏显示,/字符串 后回车会搜索 more 文件名称
-
less:分行显示大文件内容
bash# 上下箭头进行翻找行,q退出显示 less 文件名称
-
head/tail:分行显示大文件内容
bash# 显示文件头或尾的二十行 head/tail -20 文件名称 # 监听文件追加的数据,ctrl+c才能退出 tail -f 文件名称
-
ln:对两个文件进行
硬链接
,标记不清,不建议使用
bashln bcd /tmp/bcd_h
- 特点
- 具有相同的Inode和Block
- 修改任意其一,二者均变
- 删除任意其一,另一个仍可用
- 不能链接目录和跨分区链接
- 原理:两者索引了同一个Inode所代表的Block,即
文件本质相同
只是有两个名称
- 特点
-
ln - s:对两个文件进行
软链接
,类似win下的快捷方式bash# ln -s 绝对路径1 绝对路径2
- 特点
- 具有不相同的Inode和Block
- 修改任意其一,二者均变
- 删除软链接,源文件不受影响,删除源文件,软链接不能使用
- 能够链接目录和跨分区链接
- 原理:软链接通过一个
- 特点
目录和文件操作命令
-
rm -rf 文件名称
用前三思,用后无法删除
- r表示递归删除,f表示强制删除
-
cp:复制文件或目录
-a
:表示-pdr,组合使用可以满足90%的情况
bash# 可以用于复制文件或目录,并且复制后信息完全相同(包含修改时间) cp -a 目录/文件 新目录/文件 # 复制文件:将当前目录的def文件复制到tmp目录下并改名为hjk cp def /tmp/hjk # 复制目录:需要使用-r选项 cp -r 12 /tmp/23
-
== mv== :移动或重命名文件
bash# 在同目录下为重命名 mv 12 23 # 在不同目录下为剪切 mv 12 /tmp/
权限管理
-
ls -l
中文件前面的十位-
的权限含义
- 第一位:
-
表示普通文件,d
表示目录文件,l
表示软链接文件 - 剩下九位,每三个一组,分别表示
user、group、other
的权限,其中表示读r、写w、执行x
- 相同所属组和所有者的权限,所有者权限匹配高于所属组
- 第一位:
-
chmod
:修改权限位bash# 给文件bcd的user增加可执行权限 chmod u+x bcd # 给文件的所属组和其他人都取消写权限 chmod g-w,o-w bcd #数字赋予权限:4表示r,2表示w,1表示x,以下为常见权限 chmod 644 bcd # 小权限:所有者拥有读写权限,而所属组和其他人只有读权限 chmod 755 bcd # 中权限:所有者拥有读写执行权限,而所属组和其他人只有读和执行权限 chmod 777 bcd # 大权限:个人严禁使用,会有隐藏安全问题
-
chown
:修改文件的所有者和所属组- 普通用户不能修改文件的所有者,即使该文件属于这个普通用户,所以超级用户才行
bash# :前面为所有者,后面为所属组 chown root:root bcd
-
权限的注意点
- 权限:本质是Inode权限,表示对其指向的Block的权限
- 删除文件:对文件具有写权限,不能删除文件本身。若想要删除文件,需要对【文件的上级目录具有写权限】,因为文件名称在上级Inode的Block中。
- 执行权限
- 对目录的执行,仅表示可以使用
cd
进入该目录 - 对文件的执行,注意不要轻易赋予!!!
- 对目录的执行,仅表示可以使用
- 目录只能赋的权限
- 0表示无权限
- 5表示基本的目录浏览权限
- 7表示完全权限
- root用户对任何文件都拥有所有权限
-
umask
:查看或临时修改系统的默认权限- 规则:后面三个数值符合421规则,分别表示user、group和other
- 永久修改需要修改环境配置文件
/etc/profile
- 系统默认最大权限
- 对文件:666,执行权限对文件有风险,可以后面手动加执行权限
- 对目录:777,执行权限仅表示可以进入目录
- umsk和权限值得计算方法
帮助命令
-
man 命令:查看命令的信息,info更加详细,help只能查找内部命令
- 描述格式:名称、格式、描述
快捷键 作用 上箭头 向上移动一行 下箭头 向下移动一行 PgUp 向上翻一页 PgDn 向下翻一页 g 移动到首页 G 移动到尾页 / 字符串 从当前页向下搜索 ?字符串 从当前页向上搜索 -
whereis 命令:搜索系统命令的源文件位置、帮助文件位置
-
which 命令:查看系统命令的别名
- 例如:
ll 等价于 ls -l --color=auto
- 例如:
-
locate:按照文件名搜索文件所在位置,推荐使用
- 消耗资源少速度快,因为直接搜索数据库命名文件
/var/lib/mlocate/mlocate.db
- 消耗资源少速度快,因为直接搜索数据库命名文件
-
locate:按照文件名搜索文件所在位置,推荐使用
-
find:搜索系统中符合条件的
文件名
- 完全匹配:本性自足
- 模糊匹配:使用通配符
bash# 基本搜索格式 find . -name abc # 不区分大小写搜索 find . -iname abc # 按i节点号搜索 find . -inum 1055790 # 按文件大小搜索,+表示比28k大,-表示比28k小 find . -size +28k # 按照文件大小搜索,k必须小写,M必须大写 find . -size -28M # 按照文件字节大小搜索 find . -size 15c # 查找6天之前修改的文件 find . -atime +5
- 使用
man find
,然后再用/-size
,即可查询对应的参数详细信息 find . -perm +444
:+表示文件任一权限大于给定权限即可,-表示必须全部包含find . -nouser
查找外来文件- 逻辑运算
find . -size +1k -a -type f
:大小大于1k,并且是文件类型的文件find . -name can -o -name bol
:名字为can或bol的文件find . -not/! -name can
:名字不为can的文件
- 管道处理
find 路径 参数 -exec 其他命令 {} \;
:将find命令的查询结果给到{}中,作为其他命令的参数对象
-
grep:在
文件内容
中搜索符合条件的字符串
- 模糊匹配:本性自足
- 完全匹配:使用正则表达式
bash# 基本使用 grep "123" abc
-
通配符用于
完全
匹配文件名
通配符 作用 ? 匹配任意一个字符 * 匹配任意多个字符(包含空字符) [] 匹配括号中的任意一个字符,[ab]表示a或b [-] 匹配括号范围中的一个字符,[a-z]表示匹配一个小写字母 [^] 范围逻辑非,表示匹配非括号内范围的一个字符,[^0~9]表示匹配一个非数字字符 -
正则表达式用于
模糊
匹配文件内容
egrep
:表示使用标准正则规则,如下所示
正则表达式 作用 ? 匹配0个或1个前一个字符,必须使用 egroup
* 匹配0个或多个前一个字符,注意 a*会匹配空字符
[] 匹配括号中的任意一个字符,[ab]表示a或b [-] 匹配括号范围中的一个字符,[a-z]表示匹配一个小写字母 [^] 范围逻辑非,表示匹配非括号内范围的一个字符,[^0~9]表示匹配一个非数字字符 ^字符 匹配行首含指定字符的行 字符$ 匹配行尾含指定字符的行 bash# 在abc文件中,匹配行首为a,后面b重复0或任意多次(单纯a*会匹配所有行) grep --color=auto "^aa*" abc
网络命令
-
配置网络IP地址
- setup工具:只在redhut、centos等中专用
- 标准:修改配置文件
bash# 1.打开配置文件 vi /etc/sysconfig/net-work-scripts/ifcfg-eth0 # 2.虚拟机需要桥接到有线网卡,并重启网络服务 # 3.重启网络服务 service network restart
-
常见配置IP失败原因
- ip地址冲突:换一个IP地址
- UUID冲突:常见在虚拟机的快照或镜像的克隆
bash# 手动下面文件中的MAC地址行 vi /etc/sysconfig/net-work-scripts/ifcfg-eth0 # 删除MAC地址和UUID的绑定文件,使UUID重新计算 rm -rf /etc/udev/rules.d/70-persistent-net.rules # 重启linux reboot
-
ipconfig:查看IP、MAC、子网掩码等网络配置信息
-
ping:基于ICMP协议进行网络连通性的探测
ping -b -c 3 192.168.103.93
-c
:指定探测次数-b
:询问网段内所有ip主机
-
netstat:查看本机的所有客户端或开启的端口
bash# 查看端口服务:Proto协议,Recv-Q接收数据,Send-Q发送数据 # 接上:Local Address本机IP和端口,Foreign Address远程IP和端口,State状态 netstat -tuln # 查询那个程序PID占用了端口 netstat -tulnp # 查询网络网关地址 netstat -rn
-
write:向目标用户发送信息
bashwrite 用户名 终端号 message only in English Ctrl+D发送信息
-
wall:给所有正在使用服务器的用户发送信息
bashwall "I will be in 5 minutes to restart,please save your data!!!"
-
==mail ==:向用户发送或查看已经接受的邮件
bash# 发送文件 mail -s "邮件标题" 用户名 < 要发送文件的绝对地址
-
wall:给所有正在使用服务器的用户发送信息
bashwall "I will be in 5 minutes to restart,please save your data!!!"
系统操作痕迹命令
-
系统痕迹日志:二进制存储,只能使用专用命令进行更改和查看
/var/log/wtmp
/var/run/utmp
/var/log/btmp
/var/log/lastlog
-
w/who:查看所有的用户登录信息,who更加简略
-
系统死机风险:CPU占有率不能超过70%,内存占有率不能超过90%
-
last:查看系统所有登录过的用户信息
bash# 查看系统中所有用户是否登录过,包含伪用户(用于系统服务的拉起) lastlog # 查询尝试登录但失败的情况 lastb
挂载命令
-
挂载:将文件的
设备名
与空目录
链接的过程 -
mount:将虚拟机和win下目录进行链接,从而实现文件共享通信
bash# 查询系统中已经挂载的文件信息,其中swap文件给内核使用不需要挂载点 mount # 挂载光盘 ## 建立空目录,命名规则为习惯 mkdir /mnt/cdrom ## 挂载 mount -t iso9660 /dev/cdrom /mnt/cdrom/ ## 用完后需要卸载,卸载时需要退出光盘目录 umount /dev/sr0 ## 卸载完成后,原来挂载目录下的文件仍然存在,但是无法清理,所以最好使用空目录 # 挂载U盘 ## 确定win下服务中VMware USB Arbtration Service是打开的 ## 查看插入U盘的设备目录 fdisk -l ## 创建空目录 mkdir /mnt/usb ## 挂载,-t vfat是U盘文件格式,-o iocharset=utf8指定挂载后的字符集编码 mount -t vfat -o iocharset=utf8 设备名/dev/上面查询的 挂载点目录/mnt/usb/ # 使用umount卸载u盘后,才能正确拔出u盘 # 自动挂载:扫描/etc/fstab的内容,若没错则执行,出错则报错。避免系统错误挂载导致的实体服务器崩溃!! mount -a
-
关闭系统服务的优点
- 减少黑客攻击
- 减少系统资源的开销
- 但是可能导致系统软件无法拉起正常的服务
-
Linux正确正常显示中文的条件
- 安装中文编码和字体
- 操作终端支持中文显示,纯字符界面不支持中文显示
-
所有shell命令的换行符号
\
-
linux中的驱动加载方式
- 内核驱动:系统启动必须使用的驱动,数量较少,效率高
/lib/modules目录下放置
- 模块驱动:驱动以模块的形式放在硬盘中,多数驱动
- 非常用驱动:系统一般不常见,需要加载的话需要重新编译内核,如NTFS驱动
- 第三种一般可以使用插件进行处理,如NTFS-3G可以解析NTFS
- 内核驱动:系统启动必须使用的驱动,数量较少,效率高
-
linux文件原理
- i节点中存储文件的时间、权限和保存位置等,文件名称在上个目录节点的block块中
少年,我观你骨骼清奇,颖悟绝伦,必成人中龙凤。 不如点赞·收藏·关注一波