下载原文档(原文档格式更清晰):
链接:https://pan.baidu.com/s/1Dq7DCmFzumo1JXEw7Wao5g
提取码:fgay
linux中一切皆文件
linux语法格式:命令名 选项 参数 选项和参数可以有多个
参数:文件的路径(绝对路径,相对路径)
whoami 查看当前登录用户的用户名
echo 参数“字符串”:(参数:-n 回显指定字符串后不能换行) //用于字符串的输出
who 查看用户 //
date 显示系统时间
cal 显示日历
uname 显示系统信息
一个计算机只有一个console
ctrl + alt +f(1-6) 切换到纯字符界面 --> 图形界面:startx
终端打开方式:右键"在终端中打开"
介绍:【root0@locahost 桌面】\ #
1:Root该位置表示当前登录终端的用户名
2:@表示在
3:locahost:表示主机名
4:#代表超级用户,$表示普通用户
shutdown -h 分钟数具体数字(10 后面可以跟文本发送给本服务器的用户显示)/时间点(00.00)/Now
shutdown -r 重启(格式如上)
【如下指令不建议使用因为他可能导致数据丢失】:
Ctrl+c 取消命名 或 shutdown -c
reboot = shutdown -r now
halt = shutdown -h now
poweroff = halt+切断电源指令
创建普通用户:useradd 用户名
为用户创建密码:passwd 用户名
删除普通用户:userdel
帮助文档:man 命令名
命令名 --help (–长选项)
查看历史命令:history //!编号 eg:!232
打开历史命令收索:ctrl + r
清屏:clear
清屏快捷键:ctrl + L
终止命令执行:Ctrl + C
退出终端:ctrl + d
linux的根目录: /
当前用户的家目录:~ //cd ~进入当前用户的根目录
进入根目录:cd 或者 cd /
管理文件目录(dir)的命令:
ls: 列出当前工作的目录,可见文件
常用选项
-a 将所有文件显示出来(包括隐藏文件 .开头)
-l 将更详细的信息列出,(包括属性,长格式显示)
** ls -l = ll (作用一样)
-h
pwd:以绝对路径打印出当前工作目录 (print work dir )
cd:切换目录(change dir)
./ 当前目录 …/上一级目录
终端放大或缩小:ctrl + +/-
退出终端:exit
查看ip地址:ifconfig 或者 ip addr
查看内核版本:uname -r
查看发行版本(查看):cat /etc/redhat-release
关于目录的操作:
//蓝色:文件夹 黑色:文件 绿色:其权限为拥有所有权限
创建:mkdir 路径1 路径2 路径3… //命名规则,区分大小写,不可重名
-p 可以连级创建目录(树状目录)
-v 每次创建新目录都显示信息
删除:rm //技能删除目录也能删除文件
-f 强制删除,不提醒是否确定操作
-r 将目录及以下文件一并删除
删除空目录:rmdir
//删除文件或文件夹是可以配合通配符使用 *
复制:cp 源路径 目标路径 //可以达到重命名的效果
-r 可以将整个目录复制到目标目录中(递归复制)
-p 将原文件的时间信息等属性都复制到目标路径
移动:mv 原路径 目标路径 //可以达到重命名的效果
切换:cd 路径
重命名:rename 或者 mv
创建文件:touch 文件路径1 … //可以是直接的文件名也可以是路径
查看文件内容:cat -n 文件 //-n表示显示行号
显示文件后面的内容:tail -3 文件 //若不加选项则是显示后十行内容,-3表示后三行内容
显示文件开始的内容:head -5 文件 //若不加选项则是显示前十行内容,-5表示前五行内容
显示文件重定向:显示文件命令 文件路径 > 文件显示位置
探测文件类型:file 文件或目录名
例如:
1)查看当前目录下file1的文件类型
file file1
2)查看当前目录下所有文件的类型
file *
安装tree:yum -y install tree //-y表示yes
vim使用:
vi 标准编辑器 升级–> vim 编辑器(写代码:高亮显示)
vim三种模式:
1:命令模式(一般模式:默认):可移动光标、删除、复制、粘贴等
2:插入模式( 输入模式、编辑模式):输入字符
3:尾行模式 (末行模式、行尾模式):打开、保存、查找、替换等
模式切换:
以命令模式为基础进行切换
【注】–>表示进入,<–表示退出
-->编辑模式: i 、a 、I、A 、0、S
<--编辑模式:esc(一次或两次) //一次--延迟,两次--立刻执行
/
命令模式:
\
<--末行模式:esc(一次或两次) 或者 删除底行模式中的命令
-->末行模式: :(冒号) 或者 /关键词(表示查找)//N查找上一个,n查找哦下一个,:nohl 取消高亮显示
vim打开文件方式:
1:vim 文件路径
2:vim +数字 文件路径 //打开指定文件并将光标定位到指定行
3:vim +/关键词 文件路径 //打开指定文件并高亮显示关键词
4:vim 文件路径1 文件路径2
命令:vim --version //–version表示查看vim的版本
vim基本操作:
1、命令模式:
移动光标:
上下左右:h左 j下 k上 l右 //方向键也可以实现
移动到文件首行:gg
移动到文件末行:G
向上翻屏:ctrl + b 或 page up //before
向下翻屏:ctrl + f 或 page down //after
移动到当前行首:^ 或者0(零)
移动到当前行尾:$ //正则表达式 * ^(以…开始) $(以…结尾)
跳到屏幕顶部:H
跳到屏幕中间:M
跳到屏幕底部:L
快速移动光标:
快速移动到指定行:数字 G
以当前光标为准,向(上下左右)移动:数字 方向键
末行模式中,移动到指定的行::数字 //英文冒号+数字
复制:
复制光标所在行:yy
一光标坐在行为准向下复制指定的行数:数字 yy //包含当前行
可视化复制:chtrl + v,方向键(上下箭头),yy
粘贴:p
删除/剪切:
删除/剪切文字:x //大写x表示删除光标前一个字符,小写表示删除光标当前字符
删除/剪切当前行:dd
删除/剪切以当前行为准,向下删除/剪切指定的行数:数字 dd
删除换行符:j
撤回:u
恢复:ctrl + r
2、底行模式:
退出:q
保存:w
保存退出:wq
退出不保存:q! //!表示强制修饰符 或者 调用外部命令
另存为:w 路径
显示行号:set nu
**永久显示行号需要对vim进行配置: //创建文件 ~/.vimrc
1、查看文件: cat ~/.vimrc
2、添加内容:set nu
3、保存退出,然后打开一个vim文件
取消显示行号:set nonu
搜索:/关键词 //高亮显示
取消高亮:nohl //N查找上一个,n查找哦下一个
替换:
😒/关键词/新的内容 //替换光标所在行的第一处符合条件的内容
😒/关键词/新的内容/g //替换光标所在行的全部符合条件的内容
:%s/关键词/新的内容 //替换整个文档每行第一个符合条件的内容
:%s/关键词/新的内容/g //替换整个文档符合条件的内容
复制::"开始行号,结束行号y" eg: :"1,10y" //表示复制1到10行的内容
剪切/删除:“:开始行号,结束行号d” eg: :"1,10d" //表示删除/剪切1到10行的内容
//复制、剪切/删除、粘贴(co)一步到位
复制::"开始行号,结束行号y co 粘贴的行号”
剪切/删除::"开始行号,结束行号d co 粘贴的行号"
异常退出/异常问题:
//删除交换文件
1、D
2、rm -f 文件名.swp //.表示隐藏文件
3、ps -aus | grep root
linux根目录下各目录的作用:
//根目录下一般只保存目录
linux采用树状结构管理文件 Linux发行版本众多但是目录结构都遵循Linux基金会发布的标准文件系统架构 FHS规定了Linux的根目录必须包含如 12 下个目录
/bin 放置二进制可执行命令文件
/boot 放置系统核心文件和所需文件
/dev 放置系统硬件设备相关文件
/etc 放置系统主要配置文件
/home 放置除跟用户外的其他用户失的家目录
/lib 放置系统和程序运行所要调用的库函数文件
/root 是root用户的家目录
/sbin 放置根用户才能够执行的命令 文件
/srv 放置服务器启动后需要访问的数据
/tmp 程序临时存放文件的目录
/opt 第三方软件建议安装目录 ,即非版本所提供的软件
/mnt 挂载目录
查看文件后十行:tail 文件
查看文件前十行:head 文件
用户与用户组的管理:
用户名唯一,密码可重复。
三个文件:
1、/etc/passwd //存储用户的关键信息
2、/etc/group //存储用户组的关键信息
3、/etc/shadow //存储用户的密码信息//影子文件
用户的添加,删除,修改以及用户密码的管理的命令:
【添加】:useradd
-d: 指定用户的主目录,若主目录不存在,则自动生成该目录
-g:指定用户的用户 主组,选项的值可以是用户的id,也可以是组名
-G:指定用户的用户 附加组,选项的值可以是用户的id,也可以是组名
-l: 锁定用户
-u:【解除锁定】uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配id,若不想使用系统分配的,可以通过此选项自定义
-c:添加注释
验证是否创建成功:
1、cat /etc/passwd的最后一行
2、验证是否存在对应的家目录
//查看主组/etc/passwd 查看附加组/etc/group
【删除】:userdel
-r:把用户的主目录一起删除。
【修改】:usermod
常用的选项包括-c, -d, -g, -G, -s, -u,-l等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
passwd 的选项:
-l 锁定口令,即禁用账号
-u 口令锁定
-d 使账号无口令
–stdin 可以将统过管道符输出的数据作为用户的密码
用户组(group):
//每个用户都有至少属于一个用户组,这个组成为初始组,每个用户可以没有附属组,但必须只有一个初始组
//文件路径:/etc/group
// groupadd groupdel gpasswd newgrp root
创建用户组:groupadd 组名
删除用户组:groupdel 组名 //若该组中是某用户的主组,则需先删除该用户或更改该用户的主组,若是某用户的附加组则无影响
将用户添加进组或从组中删除:gpasswd 组名 //附加组G
-a 用户名:把用户加入组(附加组)
-d 用户名:把用户从组中删除
:newgrp root
//newgrp指令类似login指令,当它是以相同的帐号,另一个群组名称,再次登入系统。欲使用newgrp指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。单一用户要同时隶属多个群组,需利用交替用户的设置。若不指定群组名称,则newgrp指令会登入该用户名称的预设群组。
/etc/group:
用户名:口令:用户标识号uid:组标识号gid:注释性描述:家目录:登录Shell
eg:
lrzq:x:1000:1000:linux rzq:/home/lrzq:/bin/bash
//:表示分隔符/占位符(X),root的id为0
/etc/shadow
用户名:加密口令(空,不需要口令即可登录;*,该用户禁止登陆):距离上次修改口令的天数:口令不能在多少天内修改(空,随时可更改):口令在多少台你内必须修改:口令过期多少天后不能被修改:……
/etc/group
用户名:id
权限:
兄弟操作:文件,用户,身份
查看权限:ll 或者 ls
三种身份:
1、文件的创造者:所属主 ower U
2、属组 组 成员 G -
3、其他人 others O -
三种权限(9种关系):
1、r 读
2、w 写
3、x 执行
文件和目录:
七部分:具体权限,属主,属组,文件大小,创建日期,文件名
权限的表示以及数字形式:
- 无权限 0
r 读权限 4
w 写权限 2
x 可执行 1
l 软连接
c 字符设备文件
b 块设备文件
默认权限:
命令:umask
//显示默认权限的掩码值,以八进制表示
//使用umask命令设置umask值后,只对当前shell有效,重新登录shell时,所做设置失效
EG:umask //0022
//第一个0没有实际意义,从第二位开始表示ugo,2表示写,0表示无权限
//文件:644 【u666- -umask = 644】
//目录:755 【777 - umask = 755】
更改默认权限:
命令:umask ugo数字权限
EG:umask 744
权限的修改:
命令:chmod
格式: chmod u g o 文件对象
//+表示添加权限,-表示取消权限,a表示全部,=直接赋予权限
EG:chmod u + x ,g + r,o -r a.txt
根目录:
root:普通用户(home 用户名 passwd)
所属主的修改:
命令:chown
格式:chown 【-R U:G:O】用户 文件对象
*:当对象是目录时,可以用参数:-R,可以顺带更改目录中内容的所属主 【R:递归】
EG:chown rzq 1
//将1这个文件的所属主更改为rzq
EG:chown rzq:rzq:rzq 1
//将1这个文件的所属组和所属主都改为rzq
所属组的修改:
命令:chgrp
格式:chgrp 用户 文件对象
*:当对象是目录时,可以用参数:-R,可以顺带更改目录中内容的所属组
linux中的磁盘:
磁盘结构:磁盘 磁道 扇区(512字节,磁盘的最小单位)
MBR(主引导记录):告诉硬盘如何分区
特点:
1:支持四个主分区
2:使用扩展分区和逻辑分区支持15个分区
3:允许最大分区和磁盘大小为2T
接口类型不同所对应磁盘文件:
SCSI:/dev/sd[a-z]
IDE:/dev/dh[a-z]
查看磁盘:fdisk df du lsblk
//fdisk 和 du 只针对root用户有权限
查看磁盘:
命令1:df 查看当前磁盘的使用情况呢
-h 可读性更高
命令2:fdisk 磁盘文件目录
-l 查看磁盘分区容量
//eg:fdisk -l
命令3:lsblk //树状结构显示
eg:lsblk
添加磁盘:
热添加:运行时添加
添加后重新加载dev目录//目录: /sys/class
EG:
cd /sys/class/scsi_host/
ll
echo “- - -” > /sys/class/scsi_host/host0/scan
echo “- - -” > /sys/class/scsi_host/host1/scan
echo “- - -” > /sys/class/scsi_host/host2/scan
lsblk
冷添加:系统不运行时添加
硬盘接口:ide、scsi、sata
添加磁盘 – 分区 – 格式化磁盘 – 挂载
1、磁盘分区:
命令:fdisk 磁盘文件目录
m 帮助
n 创建分区
w 保存分区并推出
d 删除分区
p 查看当前磁盘列表
-l 查看磁盘分区容量
//p 主分区(4个,默认主分区) 分区号,起始扇区,last扇区
//e 扩展分区
//fdisk 命令只针对root 用户有权限
2、内核重新读取硬盘分区:
partprobe /dev/sdb //跟硬盘
3、创建文件系统(格式化硬盘):
系统类型:ext4 、xfs //系统默认文件系统 xfs
命令:mkfs.文件系统类型 文件目录
-t 文件类型 //mkfs -t ext4 等同 mkfs.ext4
EG:
mkfs.ext4 /dev/sdb1 //跟分区
4、挂载磁盘
两种形式:永久挂载、临时挂载(重启失效)
命令:mount
默认挂载点:mnt目录
(1)、临时挂:
EG :
cd /mnt
mkdir /sd1
mount /dev/sdb1 /sd1
(2)、永久挂载:
将设备添加到 /etc/fstab 中去
命令:blkid 查看硬盘的UUID号、文件系统类型
步骤:
vim /etc/fstab
要挂载的磁盘目录 挂载点 文件系统 自定义(默认是defaults) 是否备份(0否或1) 检察顺序(0-不检查或1)
mount -a //检查配置文件是否正确
reboot //重启虚拟机
df -h //查看挂载点是否存在
EG:
vim /etc/fstab
/dev/sdb1 /mnt/sb1 default 0 0
mount -a
reboot
df -h
卸载:
命令:umount 挂载点或者挂载的设备名或者UUID
光盘的挂载格式:
ISO 9660
配置文件:/dev/cdrom
网卡配置文件
EG:cat /etc/sysconfig/network-scripts/ifcfg-ens33
别名
1、查看别名:
alias
2、设置别名:
(1)、临时设置:
语法:alias 别名 = ‘命令’
EG:
alias show=‘ls -al’
alias ens33=‘vim /etc/sysconfig/network-scripts/ifcfg-ens33’
(2)、永久生效:
修改配置文件:
/家目录/.bashrc
/etc/bashrc
EG:
/root/.bashrc
[注]:
1、不同的用户需要在相对应的家目录中的/.bashrc中修改
2、修改了/.bashrc文件后,要用source /root/.bashrc 命令重新载入配置文件,然后配置文件才会生效
EG:
vim /root/.bashrc
alias show=‘ls -al’ //添加内容,然后保存退出
sourse /root/.bashrc //重新加在配置文件
3、删除别名:
unalias 别名
EG:
unalias show
链接文件
l 表示链接文件
分类:
硬链接:统过文件系统的inode连接产生新文件名,而不是产生新文件。//将多个文件指向同一个inode
符号链接(软链接):类似快捷方式 //源文件删除则软链接文件也将失效
·不论是软连接还是硬链接都能同步更新
·硬链接和原文件的 i 节点是相同的,而软链接与源文件 i 节点是不同的(内核识别i节点)
eg: ll -i /home/text1
命令:
ln 原文件 目标文件[可改名]
-s 创建软链接
-f 强制创建链接文件
通配符
·符号:* ? [] [^]
* 匹配任意长度的任意字符,可以是0个
? 匹配任意单个字符,必须是1个
[ ] 匹配指定字符范围内的任意单个字符
[a-z,A-Z,0-9] 匹配所有数字字母,可以不加逗号
[a-z] 表示a-z,A-Y,不包含Z
[A-Z] 表示A,b,B.....z,Z。不包含a
[a-Z] 表示所有大小写字母
[^] 匹配指定字符范围外的任意单个字符
[^0-9] 相当于[^[:digit:]]
[^a-z] 表示Z + 其他
[^A-Z] 表示a + 其他
[:upper:] 所有大写字母
[:lower:] 所有小写字母
[:alpha:] 所有字母,大小写
[:digit:] 所有数字
[:alnum:] 所有数字+字母
[:blank:] 水平空白字符
[:space:] 水平或垂直空白字符
[:punct:] 标点符号
[:print:] 可打印字符
[:cntrl:] 控制(非打印)字符
[:graph:] 图形字符
[:xdigit:] 十六进制字符
EG:
ls -d /home/[^h??d]*
重定向
改变原来系统命令的默认执行方式
1、重定向符号:
> 标准输出(覆盖)
>> 追加内容到文件
>! 输出重定向到一个文件或设备 强制覆盖
< 输入重定向到一个程序
2>&1 将标准错误输出重定向到标准输出
&> 将标准错误输出都覆盖到同一个文件
&>> 将标准错误输出都追加到同一个文件
2、标准输入、输出,错误:
(1. 标准输入;代码为 0 ;或 stdin ;符号: <
(2. 标准输出:代码为 1 ;或 stdout;符号: 1>
(3. 错误输出:代码为 2 ;或 stderr;符号: 2>
远程工具-乱码:
会话选项–外观–字符编码–UTF-8–确定
设置主机名: hostnamectl set-hostname 名字
退出终端:exit 或者 login
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33
echo命令:
用于文本的输出
·用法1:
显示结果定向至文件
格式:echo ‘内容’ > 路径
//路径要用绝对路径
EG:
echo zhangsan is a pig > /home/rzq/text2
//在/home/rzq/下创建一个text2,并设置text2的容为zhangsan is a pig
·用法2:
echo 参数“字符串 转义字符”
-n 回显指定字符串后不能换行
\c 不换行
\n 换行,光标移至行首
\r 光标移至行首,但不换行
\f 换行但光标仍旧停留在原来的位置
\t 键入tab
\ 键入
\a 发出警告
\b 删除前一个字符
·用法3:
显示命令执行结果
格式: echo 执行内容
EG:echo `date` //结果将显示当前日期
软件开发:linux --> docker