课堂笔记
2024-07-10 15:28:24 0 举报
AI智能生成
Linux笔记
作者其他创作
大纲/内容
四、目录和文件都能操作的命令
4.1 rm命令
rm 是强大的删除命令,不仅可以删除文件,也可以删除目录<br>— 功能描述:删除文件或目录。<br>-f:强制删除(force)<br>-i:交互删除,在删除之前会询问用户<br>-r:递归删除,可以删除目录(recursive)<br>
[root@localhost ~]# rm a #交互式删除<br>rm: remove regular file ‘a’? y<br>[root@localhost ~]# rm -rf a #无交互式删除
4.2 cp命令
cp 是用于复制的命令<br>— 功能描述:复制文件和目录<br>-a:相当于-dpr 选项的集合,这几个选项我们一一介绍<br>-d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接<br>-i:询问,如果目标文件已经存在,则会询问是否覆盖<br>-p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)<br>-r:递归复制,用于复制目录<br>
[root@localhost ~]# cp a a.bak<br>[root@localhost ~]# cp file file.bak #复制目录必须要加-r<br>cp: omitting directory ‘file’<br>[root@localhost ~]# cp -a file file.bak<br>[root@localhost ~]# cp -a a a.bak2 #保持原文件和目标文件的权限一致
4.3 mv命令
mv 是用来剪切的命令<br>— 功能描述:移动文件或改名<br>-f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖<br>-i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项) <br>-v:显示详细信息<br>
[root@localhost ~]# mv a b ##将a文件改名成b<br>[root@localhost ~]# mv file file1 ##将file改名成file1
五、 压缩和解压缩命令
5.1 “.zip”格式
压缩命令就是 zip<br>-r:压缩目录<br>“.zip”格式的解压缩命令是 unzip<br>-d:指定解压缩位置<br>
[root@localhost ~]# zip ana.zip anaconda-ks.cfg
[root@localhost ~]# unzip -d /tmp/ ana.zip
5.2 “.tar” 和 ".gz"格式
“.tar” 和".gz"格式格式的打包和解打包都使用 tar 命令,区别只是选项不同。<br>选项:<br>-z:表示压缩和解压缩的格式为gz压缩文件(gzip)<br>-x:解打包<br>-f:指定压缩包的文件名<br>-v:显示解打包文件过程<br>-t:测试,就是不解打包,只是查看包中有哪些文件<br>-C(大) 目录: 指定解打包位置<br>
六、编辑文件
6.1 Vi和Vim命令
Vi是一种文本编辑器<br>vim 是一个全屏幕纯文本编辑器,是 vi 编辑器的增强版<br>vim需要安装:yum install -y vim<br>
6.2 vim 的工作模式
vim 是 一个模式编辑器,击键行为是依赖于 vim的 的“模式”<br>操作方式:默认进入命令模式,按i进入插入模式,按esc回到命令模式,按:进入命令行模式<br>wq 保存退出<br> q 退出 (如果有修改,此方式退出会出错)<br> q! 强制退出,不保存<br>
6.3 基本操作
vi/vim 文件路径<br>x 删除一个字符<br>dd 删除一行<br>xdd 删除x行<br>yy 复制一行<br>xyy 复制x行<br>p 粘贴<br>u 撤销<br>r 替换字符<br>向下搜索<br>在命令模式输入 / 要搜索的文字<br>向上搜索<br>输入 ? 要搜的文字<br>
6.4 命令模式操作
6.4.1 退出vim
ZZ 保存退出<br>ZQ 不保存退出
6.4.2 光标跳转
h 光标向左移动<br>3h 光标向左移动3个字符<br>j 光标向下移动<br>3j 光标向下移动3个字符<br>k 光标向上移动<br>3k 光标向上移动3个字符<br>l 光标向右移动<br>3l 光标向右移动3个字符
w 光标跳到下一个单词的词首<br>e 光标跳到当前单词的词尾<br>b 光标跳到当前或前一个单词的词首<br>3w 光标跳到下三个单词的词首<br>3e 光标跳到下三个单词的词尾<br>3b 光标跳到前三个单词的词首
H 光标跳转到屏幕顶端<br>M 光标跳转到屏幕中间<br>L 光标状态到屏幕底端<br>zt 将光标所在当前行移到屏幕顶端<br>zz 将光标所在当前行移到屏幕中间<br>zb 将光标所在当前行移到屏幕底端
^ 光标跳转到行首的第一个非空白字符<br>0 光标跳转到当前行的行首<br>$ 光标跳转到当前行的行尾
gg 光标跳转到文件第一行<br>G 光标跳转到文件最后一行<br>4gg / 4G 光标跳转到文件第几行
Ctrl+f 向文件尾部翻一屏<br>Ctrl+b 向文件首部翻一屏<br>Ctrl+d 向文件尾部翻半屏<br>Ctrl+u 向文件首部翻半屏
6.4.3 字符快速编辑
x 删除光标处的字符<br>nx 删除光标处起始的n个字符<br>xp 交换光标所在处的字符及其后面字符的位置<br>~ 转换字母大小写<br>J 删除当前行后的换行符,把下一行内容追加到当前行尾
n 是数字,如果打算从光标位置删除连续的 10 个字母,可以使用“10x”即可。删除字母并不合使用习惯,我们更习惯在编辑模式中,用“Backspace”键删除字母。
6.4.4 替换字符replace
r 在命令模式下,替换当前光标所在字符<br>R 切换成REPLACE模式, 可以替换多个字符(在末行出现-- REPLACE -- 提示),按ESC回到命令模式
6.4.5 删除命令delete
字母d 删除命令, 可结合光标跳转字符,实现范围删除<br>d$ 删除光标位置到行尾<br>D 从当前光标位置一直删除到行尾,等同于<br>d$d^ 删除光标位置到非空行首<br>d0 删除光标位置到行首<br>dw 删除光标位置到下个单词的词首<br>de 删除光标位置到当前单词的词尾<br>db 删除光标位置前个单词的词首<br>2dw 删除光标位置到下俩个单词的词首<br>2de 删除光标位置到当前单词后两个单词的词尾<br>2db 删除光标位置前俩个单词的词首<br>dd 剪切光标所在的行<br>ndd 多行删除
6.4.6 复制命令yank
字母y 复制命令,行为相似于d命令<br>y$ 复制光标位置到行尾<br>y0 复制光标位置到行首<br>y^ 复制光标位置到非空行首<br>yw 复制光标位置到下个单词的词首<br>ye 复制光标位置到当前单词的词尾<br>yb 复制光标位置前个单词的词首<br>2yw 复制光标位置到下俩个单词的词首<br>2ye 复制光标位置到当前单词后两个单词的词尾<br>2yb 复制光标位置前俩个单词的词首<br>yy 复制整行<br>nyy 复制多行<br>Y 复制整行
6.4.7 粘贴命令paste
p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面<br>P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
6.4.8 改变模式命令change
字母c: 删除光标位置内容后切换成插入模式<br>c$<br>c^<br>c0<br>cb<br>ce<br>cw<br>cc 删除当前行并输入新内容,相当于S<br>2cc<br>C 删除当前光标到行尾,并切换成插入模式,相当于c$
6.4.9 查找字符
/PATTERN 从当前光标所在处向文件尾部查找<br>?PATTERN 从当前光标所在处向文件首部查找<br>按n 与命令同方向查找下一个<br>按N 与命令反方向查找下一个
6.4.10 撤销更改操作
#撤销操作注意点:只要q退出vim,就可以撤销到最初内容<br>u 撤销最近的更改,相当于windows中ctrl+z<br>#u 撤销之前多次更改<br>U 撤消光标落在这行后所有此行的更改<br>Ctrl + r 反“撤消”更改,相当于windows中crtl+y<br>. 重复前一个操作<br>#. 重复前一个操作#次
6.5 命令行模式操作
6.5.1 基础命令
w 保存文件内容<br>wq 保存并退出<br>wq! 强制保存并退出<br>x 同wq,保存并退出<br>X 加密文件,一般不用<br>q 退出<br>q! 不存盘退出,即使更改都将丢失<br>r filename 读文件内容到当前文件中<br>w filename 将当前文件内容写入另一个文件(另存为)<br>!command 执行命令<br>r!command 读入命令的输出
6.5.2 地址定界
# 具体第#行,例如2表示第2行<br>#,# 从左侧#表示起始行,到右侧#表示结尾行 <br>#,+# 从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行<br>. 当前行<br>$ 最后一行<br>.,$-1 当前行到倒数第二行<br>% 全文, 相当于1,$<br>/pattern/ 从当前行向下查找,直到匹配pattern的第一行,即:正则表达式<br>/pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束<br>#,/pat/ 从指定行开始,一直找到第一个匹配patttern的行结束<br>/pat/,$ 向下找到第一个匹配patttern的行到整个文件的结尾的所有行
d #删除<br>y #复制<br>w file #将范围内的行另存至指定文件中<br>r file #在指定位置插入指定文件中的所有内容
6.5.3 快速复制移动内容
:2,4move9 将第2行到第4行的内容移动到第9行的下一行<br>:2,4copy9 将第2行到第4行的内容复制到第9行的下一行
6.5.4 查找替换信息
起始行,结束行s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用基末正则表达式模式<br>替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;<br>还可以使用“&”引用前面查找时查找到的整个内容查找替换中的分隔符/可替换为其它字符,如:#,@
修饰符<br>i 忽略大小写<br>g 全局替换,默认情况下,每一行只替换第一次出现<br>gc 全局替换,每次替换前询问
6.6 定制vim
扩展命令模式的配置只是对当前vim进程有效,可将配置存放在文件中持久保存配置文件
6.6.1 配置文件
/etc/vimrc 全局配置<br>~/.vimrc 单个用户配置
6.6.2 显示行号syntax on
显示行号:set number,简写 set nu<br>取消显示:set nonumber, 简写 set nonu
6.6.3 搜索字符忽略大小写
忽略搜索大小写:set ignorecase,简写 set ic<br>不忽略:set noic
6.6.4 自动缩进
启用:set autoindent,简写 set ai<br>禁用:set noai
6.6.5 粘贴保留格式
当启用字段缩进set ai时,当我们粘贴内容会导致样式混乱,我们可以禁用缩进,也可以set paste 复制粘贴保留格式<br>启用:set paste<br>禁用:set nopaste
6.6.6 显示Tab键^I 和回车$显示
启用:set list<br>禁用:set nolist
6.6.7 搜索高亮
启用:set hlsearch <br>禁用:set nohlsearch , 简写 noh
6.6.8 语法高亮
启用:syntax on禁用:syntax off
6.6.9 文件类型转换
启用windows格式:set fileformat=dos<br>启用unix格式:set fileformat=unix简写 set ff=dos|unix
范例:<br>[root@centos7 /data ]# file f2<br>f2: ASCII text, with CRLF line terminators<br><br>vim f2 打开文件执行 :set ff=unix 即可转换文件格式<br>[root@centos7 /data ]# file f2f2: ASCII text
6.6.10 设置光标所在行的标识线
启用:set cursorline,简写 set cul<br>禁用:set nocursorline, 简写 set nocul
6.7 块选择
批量添加注释<br><br> 步骤1:按ctrl+v,进入块选择<br><br>步骤2:输入大写的i,进入编辑模式,输入#<br><br>步骤3:按ECS退出输入模式,进入命令行模式,按ENTER键即可添加注释<br><br> <br><br>批量取消注释<br><br>步骤1:按ctrl+v,进入块选择<br><br>步骤2:按d进行删除
一、Linux基础命令格式
1.1 Linux基础命令的语法格式
选项:用于启用或关闭命令的某个或某些功能<br>短选项:UNIX 风格选项,-c 例如:-l, -h<br>长选项:GNU风格选项,--word 例如:--all, --human<br>BSD风格选项: 一个字母,例如:a,使用相对较少<br>参数:命令的作用对象,比如: 文件名,用户名等
**注意:多个选项以及多参数和命令之间使用空白字符分隔<br>取消和结束命令执行:Ctrl+c,Ctrl+d<br>多个命令可以用 ";" 符号分开<br>一个命令可以用\分成多行
1.2 文件系统目录结构
1.2.1 文件系统的目录结构
根文件系统(rootfs):root filesystem<br>蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件<br>
1.2.2 常见的文件系统目录功能
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录<br>/etc:配置文件目录<br>/root:管理员的家目录<br>/opt:第三方应用程序的安装位置<br>
1.2.3 应用程序的组成部分
二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin<br>库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64<br>配置文件:/etc, /etc/DIRECTORY, /usr/local/etc<br>帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc
二、目录操作命令
2.1 ll 命令
作用相当于 ls -l , 查看目录详情
l 符号链接文件link<br>d 目录文件directory<br>-普通文件<br>
2.2 cd 命令
cd 是切换所在目录的命令
2.2.1 cd 命令的特殊符号
| ~ | 代表用户的家目录 <br>| - | 代表上次所在目录 <br>| . | 代表当前目录 <br>| .. | 代表上级目录
2.3 绝对路径和相对路径
绝对路径:以跟目录为参照物,从根目录开始,一级一级进入目录<br>相对路径:以当前目录作为参照物,进行目录查找
2.4 pwd命令
pwd 命令是查询所在目录的命令<br>— 功能描述:查询所在的工作目录。<br><br>
[root@localhost ~]# pwd<br>/root
2.5 mkdir命令
mkdir 是创建目录的命令<br>— 功能描述:创建空目录。<br>-p:递归建立所需目录<br>-v: 显示创建过程
2.6 rmdir命令
— 功能描述:删除空目录。<br>-p:递归删除目录<br> -v: 显示详细过程
2.7 tree命令
查看当前目录下目录树结构<br>常见选项:<br> -d: 只显示目录<br> -L level:指定显示的层级数目<br> -P pattern: 只显示由指定wild-card pattern匹配到的路径
[root@localhost ~]# yum -y install tree
三、 文件操作命令
3.1 touch命令
创建空文件或修改文件时间<br>— 功能描述:修改文件的时间戳。
3.2 stat命令
stat 是查看文件详细信息的命令,而且可以看到文件的三个时间<br>功能描述:显示文件或文件系统的详细信息。
#最后一次访问文件(读取或执行)的时间。<br>#最后一次改变文件(内容)或目录(内容)的时间。<br>#最后一次改变文件(属性)或者目录(属性)的时间。<br>
3.3 cat命令
cat 命令用来查看文件内容<br>功能描述:合并文件并打印输出到标准输出<br>选项:<br>-A: 相当于-vET 选项的整合,用于列出所有隐藏符号<br>-E: 列出每行结尾的回车符$<br>-n: 显示行号<br>-T: 把 Tab 键用^I 显示出来<br>-v: 列出特殊字符<br>
3.4 nl命令
nl命令相当于cat -b,对文本费空行编号显示
3.5 tac命令
tac命令和cat命令输出内容相反,头输出信息
3.6 rev命令
rev命令翻译为 reverse 反转,按照文本每行内容进行反转
3.7 more命令
more 是分屏显示文件的命令。<br>— 功能描述:分屏显示文件内容。<br>— 空格键:向下翻页。<br>— b:向上翻页。<br>— 回车键:向下滚动一行。<br>— /字符串:搜索指定的字符串。<br>— q:退出。<br>
3.8 less命令
less 命令和 more 命令类似,只是 more 是分屏显示命令,而 less 是分行显示命令<br>— 功能描述:分行显示文件内容<br>
3.9 head命令
head 是用来显示文件开头的命令<br>— 功能描述:显示文件开头的内容。<br>-n 行数:从文件头开始,显示指定行数<br>-v:显示文件名<br>
[root@localhost ~]# head -n 10 sshd_config #默认显示10行
3.10 tail命令
既然有显示文件开头的命令,就会有显示文件结尾的命令<br>— 功能描述:显示文件结尾的内容。<br>-n 行数:从文件结尾开始,显示指定行数<br>-f:监听文件的新增内容<br>
[root@localhost ~]# tail -n 5 sshd_config
<span style="font-size:inherit;">7.5</span><br><span style="font-size:inherit;">### 本章目标</span><br><br><span style="font-size:inherit;">1、掌握帮助命令使用方法</span><br><br><span style="font-size:inherit;">2、掌握搜索命令的使用(重点:find)</span><br><br><span style="font-size:inherit;">3、掌握字符处理命令(重点:grep、cut、tr、sort)</span><br><br><span style="font-size:inherit;">4、掌握IO重定向和管道符(重点:> >> < << | )</span><br><br><span style="font-size:inherit;">5、掌握系统相关命令(重点:lscpu、free、df、top、date、echo)</span><br>
一、帮助命令
man命令
[root@localhost ~]# man [选项] 命令
-f:查看命令拥有哪个级别的帮助<br>-k:查看和命令相关的所有帮助
info命令:info 命令的帮助信息是一套完整的资料
[root@localhost ~]# info ls
help命令:只能获取Shell内置命令
[root@localhost ~]# help cd
--help选项
[root@localhost ~]# ls --help
二、搜索命令
whereis命令:系统命令
which命令
locate命令
一般需要安装:yum install -y mlocate<br>速度快、消耗小 只能搜索文件名
find命令
按照文件名搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容选项:
-name
-iname
按照文件名搜索,不区分文件名大小写
-inum
按照 inode 号搜索
按照文件大小搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容选项:
-size [+|-]大小:按照指定大小搜索文件<br>+是大于 -是小于
按照修改时间搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容选项:
-atime [+|-]时间:按照文件访问时间搜索
-mtime [+|-]时间:按照文件数据修改时间搜索
-ctime [+|-]时间:按照文件状态修改时间搜索
按照权限搜索
设定实验权限:[root@localhost test]# chmod 755 test1
按权限搜索:[root@localhost test]# find . -perm 755
按照所有者和所属组搜索
-uid 用户 ID:按照用户 ID 查找所有者是指定 ID 的文件
-gid 组 ID:按照用户组 ID 查找所属组是指定 ID 的文件
-user 用户名:按照用户名查找所有者是指定用户的文件
-group 组名:按照组名查找所属组是指定用户组的文件
-nouser:查找没有所有者的文件
按照文件类型搜索
-type d:查找目录
-type f:查找普通文件
-type l:查找软链接文件
逻辑运算符
-a:and 逻辑与
-o:or 逻辑或
-not:not 逻辑非
按照文件深度来查找
-maxdepth 最大深度
向下查找最大深度限制为3的普通文件
[root@localhost ~]# find test -maxdepth 3 -type f
-mindepth 最小深度
其他选项
-exec<br>[root@localhost ~]# find 搜索路径 [选项] 搜索内容 -exec 命令2 {} \;<br>花括号中代表find的查找结果
查找文件名为b,并执行删除:[root@localhost ~]# find . -name b -exec rm -rf {} \;
“-ok”的命令 2 在处理前会先询问用户是否这样处理<br>
[root@localhost ~]# find . -name a.bak -ok rm -rf {} \;
管道符“|”命令
命令1 | 命令2:命令 1 的正确输出作为命令 2 的操作对象
三、字符处理命令
grep命令:在文件中提取和匹配符合条件的字符串行
[root@localhost ~]# grep [选项] "搜索内容" 文件名选项:
-i忽略大小写
-n:输出行号
-v:反向查找
--color=auto:搜索出的关键字用颜色显示
cut字段提取命令
cut 【选项】文件名
子主题
-f 列号:提取第几列,默认的分隔符就是制表符
n | n-m | n,m | n-m ,z
-d 分隔符:按照指定分隔符分割列
-c:按字符分割
tr 命令:转换和删除字符
-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示,即去重
-t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
-c –C --complement:取字符集的补集
把/etc/issue中的小写字符都转换成大写字符:<br>tr 'a-z' 'A-Z' < /etc/issue<br>
sort 排序或者去重
sort [选项] filename
-u :去重<br> -n :以数值来排序<br> -o :将结果写入原文件<br> -r :降序<br> -t :指定分割符<br> -k :指定列<br> -R: 随机排序
uniq 去重
uniq [选项] [filename]
选项与参数:<br>-i :忽略大小写字符的不同;<br>-c :进行计数<br>-u :只显示不重复的行<br>-d : 显示重复的行
diff命令和patch命令
语法格式:diff 【选项】 源文件(夹) 目的文件(夹)
-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。<br>-b 忽略空格数目的不同<br>-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。
patch命令
-b :备份文件<br>
统计数据命令
wc命令
wc命令默认显示格式为: 行数 单词数 字节数<br>wc -l 只统计行数<br>wc -w 只统计单词数<br>wc -c 只统计字节数<br>wc -m 只统计字符数,中文也表示一个字符
四、IO 重定向和管道符命令
标准输入和输出
读入数据:Input
输出数据:Output
- 标准输入(STDIN) -0 默认接受来自终端窗口的输入<br>- 标准输出(STDOUT)-1 默认输出到终端窗口<br>- 标准错误(STDERR) -2 默认输出到终端窗口
I/O重定向:将默认的输入,输出或错误对应的设备改变,指向新的目标
1> 或 > 把STDOUT重定向到文件<br>2> 把STDERR重定向到文件<br>&> 把标准输出和错误都重定向<br>>& 和上面功能一样,建议使用上面方式
set -C 禁止将内容覆盖已有文件,但可追加, 利用 >| 仍可强制覆盖<br>set +C 允许覆盖,默认
>> 追加标准输出重定向至文件<br>2>> 追加标准错误重定向至文件
&> 覆盖重定向<br>&>> 追加重定向
清除大文件:cat /dev/null > /data/file.log<br>原理是使用空文件替换原本的大文件
标准输入重定向
从文件中导入STDIN,代替当前终端的输入设备,使用 < 来重定向标准输入
实现标准输入重定向的符号
COMMAND 0 < FILE<br>COMMAND < FILE
多行重定向
netstat 命令
CentOS 7 中,需要安装 ``net-snmp.x86_64,net-tools.x86_64`` 两个包才有此命令。7.9系统中已经自动安装
-a:列出所有网络状态,包括 Socket 程序<br>-c 秒数:指定每隔几秒刷新一次网络状态<br>-n:使用 IP 地址和端口号显示,不使用域名与服务名<br>-p:显示 PID 和程序名<br>-t:显示使用 TCP 协议端口的连接状况<br>-u:显示使用 UDP 协议端口的连接状况 <br>-l:仅显示监听状态的连接<br>-r:显示路由表
#如果想知道具体的网络连接数量,就可以再使用 wc 命令统计行数<br>[root@localhost ~]# netstat -an | grep "ESTABLISHED" | wc -l
五、系统相关命令
设置主机名
#临时生效<br>hostname NAME
#持久生效,支持CentOS7和Ubuntu18.04以上版本<br>hostnamectl set-hostname NAME
命令提示符
#CentOS默认提示符<br>[root@localhost ~]#<br><br>#Ubuntu默认提示符<br>root@ubuntu1804:~#
# 管理员<br> <br>$ 普通用户
可改颜色
提示符格式说明:<br><br>- \e 控制符\033 <br>- \u 当前用户 <br>- \h 主机名简称<br>- \H 主机名<br>- \w 当前工作目录<br>- \W 当前工作目录基名<br>- \t 24小时时间格式<br><br>- \T 12小时时间格式<br>- ! 命令历史数<br>- #. 开机后命令历史数
查看硬件信息
查看 cpu
lscpu命令可以查看cpu信息
cat /proc/cpuinfo也可看查看到
查看内存大小
[root@centos8 ~]#free
[root@centos8 ~]#cat /proc/meminfo
查看硬盘和分区情况
[root@localhost ~]# lsblk
[root@localhost ~]# cat /proc/partitions
查看系统资源占用情况
[root@localhost ~]# top
查看系统版本信息
查看系统架构
arch
查看内核版本
uname -r
查看操作系统发行版本
cat /etc/redhat-release
yum provides */lsb_release
yum install -y redhat-lsb-core
lsb_release -a
lsb_release -a
Ubuntu:cat /etc/os-release
查看 OS 版本
lsb_release -is
日期和时间
date:日期
clock,hwclock: 显示硬件时钟
时区:/etc/localtime
日历:cal –y
输出信息 echo
echo 高级用法
echo Hello world # 直接输出文本
echo 'Hello world' # 使用单引号将内容括起来
echo "Hello world" # 使用双引号将内容括起来
echo -e "Hello\tworld" # 使用 -e 选项可以识别\t(一个tab键)等特殊字符
将单行文本追加到某个文件中:echo "Hello world" >> hello.txt<br>
7.8本章目标<br><br>1、Linux 的安全模型<br>2、用户和组相关文件<br>3、用户和组管理命令(重点:useradd、usermod、passwd、groupadd、groups)<br>4、理解并设置文件权限(重点:chmod、chown、权限字符和数字)<br>5、默认权限<br>6、特殊权限<br>7、文件访问控制列表
用户和组的配置文件
passwd文件
`/etc/passwd`文件保存Linux系统用户属性配置信息
shadow文件
`/etc/shadow`文件保存Linux系统用户的密码信息
group文件
`/etc/group`文件保存系统用户组的属性信息
gshadow文件
`/etc/gshadow`文件保存Linux系统用户组密码信息
配置文件操作
**vipw / vigr 命令: ** 编辑`/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow`文件
**pwck命令: **用来验证系统认证文件/etc/passwd和/etc/shadow的内容和语法
**getent命令: **直接查看配置文件
用户和组管理命令
创建用户 useradd
useradd -u
指定该用户的UID
useradd -d
指定宿主目录,默认为 /home/用户名
useradd -g
指定用户所属主组(必须已存在)
useradd -G
指定用户所属的附加组(必须已存在)
useradd -r
创建系统用户,但使用shell解释器是/bin/bash
useradd -s
指定用户的登录Shell
useradd -D
查看创建用户的/etc/default/useradd的配置内容
useradd 命令默认值设定由`/etc/default/useradd`文件定义
通过命令修改`/etc/default/useradd`文件属性
修改用户属性 usermod
usermod -u
修改用户UID
usermod -g
修改用户主组
usermod -G
新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
usermod -s SHELL
新的默认SHELL
usermod -l login_name
新的名字
usermod -d HOM
新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
usermod -e YYYY-MM-DD
指明用户账号过期日期
删除用户 userdel<br>
userdel -f
强制删除用户
userdel -r
删除用户家目录和用户邮件服务mail
查看用户相关的ID信息
id -u
显示UID
id -g
显示GID
id -G
显示用户所属的私有组的ID
切换用户su
su [-, -l, --login]
完全切换用户
su -c
指定用户的shell终端传递命令, 返回执行结果给当前用户
设置用户密码passwd chpasswd
passwd -d
删除指定用户密码
passwd -l
锁定指定用户
passwd -u
解锁指定用户
passwd -e
强制用户下次登录修改密码, 设置后shadow文件第三字段为0
passwd -f
强制操作
passwd -x maxdays
指定用户的密码最大使用期限
passwd -n mindays
指定用户的密码最短使用期限
passwd -w warndays
提前多少天开始警告更改密码
passwd --stdin
免交互修改用户密码, 从标准输入接收用户密码,Ubuntu无此选项
echo 123456 | passwd --stdin user1
修改用户密码策略chage
chage -d 0
设置用户几天后必须修改密码,和 "passwd -e" 作用一样
chage -m MIN_DAYS
设置用户几天后可以修改密码
chage -M MAX_DAYS
设置密码后的最大天数(密码使用时长)
chage -W WARN_DAYS
设置过期警告天数
chage -I INACTIVE_DAYS
设置密码过期后的宽限期
chage -E EXPIRE_DATE
设置用户的有效期
chage -l
显示用户密码设置情况
用户相关其他命令
`chfn`命令设置用户说明信息,同`usermod -c`
`chsh`指定用户的shell解释器,同`usermod -s`
yum install -y finger<br>finger user1<br>finger查看永辉最近一次登录信息
创建用户组 groupadd
-g 指定GID 除非-o 否则 ID 必须唯一
-r 创建系统组
修改用户组 groupmod
-n group_name 修改用户组名称
-g GID 新的GID
查看用户的用户组 groups
roups`可以查看用户的所有用户组情况
删除用户组 groupdel
groupdel f, --force #强制删除,即使是用户的主组也强制删除组
更改用户组密码 gpasswd
-a #将user添加至指定组中
-d #移除用户
-A #设置用户组的管理员用户
-r#删除用户组密码
临时切换用户主组
newgrp [-] [group]#如果使用 - 选项,可以初始化用户环境
管理用户组
-g#指定查看的用户组
-a#指定用户加入组
-d#从组中删除用户
-p#从组中清除所有成员
-l#显示组成员列表
文件权限管理
文件所有者和属组属性操作
设置文件的所有者chown
chown OWNER #只修改所有者
chown OWNER:GROUP #同时修改所有者和属组
chown :GROUP #只修改属组,冒号也可用 "." 替换
chown --reference=RFILE #按照指定文件的的属性,来修改目标文件属性
chown -R #递归
设置文件的属组信息chgrp
--reference=RFILE #按照指定文件的的属性,来修改目标文件属性
-R #递归
文件权限控制
rread 读权限 4<br>wwrite写权限 2<br>xexecute 执行权限 1
修改文件权限chmod
u
+/-/= r/w/x
g
o
a
umask默认权限
Linux文件特殊权限
特殊权限 SUID
重要用户对设有SUID的文件有执行权限,那么当用户执行此文件时,会以文件属主的身份去执行此文件,一旦文件执行结束,身份的切换也会随之消失
方法一:chmod u+s 文件<br>方法二:chmod 4644 文件
特殊权限 SGID
设置了sgid的目录,会保证在这个目录下创建的文件、文件夹会自动继承父目录的属组
方法一: chmod g+s 目录<br>方法二: chmod 2644 目录
特殊权限 Sticky
在目录设置`Sticky` 权限位,只有文件的所有者或root可以删除该文件
方法一: chmod o+t 目录<br>方法二: chmod 1644 目录
隐藏权限
`chattr`设置特殊权限
chattr -R递归处理目录下的所有文件<br>chattr -v设置文件或目录版本<br>chattr -V显示指令执行过程<br>chattr +开启文件或目录的该项属性<br>chattr -关闭文件或目录的该项属性<br>chattr =指定文件或目录的该项属性
`lsattr`查看特殊权限
-a 列出目录中的所有文件,包括隐藏文件<br>-d 只显示目录名称<br>-R递归地处理指定目录下的所有文件及子目录<br>-v 显示文件或目录版本<br>-D显示属性的名称、默认值<br>-E显示从用户设备数据库中获得属性的当前值
隐藏权限模式
chattr +i root用户和所有用户不能删除,移动,重命名文件,修改文件内容<br>chatrr +a 只能追加内容, 不能删除,移动,重命名文件
访问控制列表
ACL功能
df -T 确认文件系统
tune2fs -l /dev/sda1 查看是否支持acl权限功能
ACL权限生效顺序: 所有者,自定义用户,所属组,自定义组,其他人
ACL相关操作
setfacl -m
设定 ACL 权限
用户:setfacl -m [u / g]:user:[rwx] 文件
组:setfacl -m g:tgroup:rx /project
setfacl -x
setfacl -x u:st /project
setfacl -b
删除所有的 ACL 权限
setfacl -b /project
setfacl -R
递归设定 ACL 权限
setfacl -m u:st:rx -R /project
setfacl -d
对目录下创建新文件默认 ACL 权限
setfacl -m d:u:st:rx /project
setfacl -k
删除默认 ACL 权限
`getfacl`用于查看ACL权限
-a显示文件的ACL<br>-d显示默认的ACL<br>-c不显示注释标题<br>-e显示所有的有效权限<br>-E显示没有的有效权限<br>-R递归到子目录
7.9<br>## Linux中二进制软件包管理<br><br>本节所讲:<br><br>1、了解Linux中软件包类型<br><br>2、掌握Linux软件包特点<br><br>3、掌握RPM包命名规则<br><br>4、掌握RPM包手工命令管理<br><br>5、掌握RPM包YUM在线管理<br><br>6、实战:通过YUM在线安装nginx<br><br>## Linux的源码管理<br><br>本节所讲:<br><br>1、了解源码包的管理<br><br>2、了解RPM包和源码包的区别<br><br>3、掌握源码包的安装<br><br>4、掌握脚本安装包管理<br>
一、Linux软件包管理
在Linux中安装软包的方式有3种:
1)下载源代码进行安装
2)rpm包安装
3)通过yum安装
什么是软件?
软件是指在计算机系统中运行的程序或指令集合,用于控制计算机的硬件操作
什么是软件包
软件包是指一组相关的软件程序、库文件、配置文件等文件的集合
Linux中的软件包的分类
源码包
需要通过编译生成可执行程序
二进制包
可以直接安装使用
二进制包
RPM 包
程序或服务给少量用户访问,或本机使用,建议RPM包,管理方便。
DPKG包
源码包
源码包就是一大堆源代码程序
如果服务是给大量客户端提供访问的,建议使用源码包,效率更高。如(LAMP)
二、rpm包管理
RPM的依赖性
树形依赖(Tree dependencies)
环形依赖(Circular dependencies)
模块依赖(Module dependencies)
RPM包命令管理
RPM基本命令语法
rpm -ivh 包全名
-i,--install 安装软件包
-h, --hash 软件包安装的时候列出哈希标记
-v, --verbose 提供更多的详细信息输出
-U 升级软件包,不管是否有旧版本
-F 升级软件包,但是必须要有旧版本
--force 强制安装
--test 测试软件能否安装,不真正安装
卸载软件
rpm -e 包名 --nodeps 不验证依赖性
查询已安装的包
rpm -q zsh //查询已经安装的软件包
rpm -qa //查询所有已安装的软件包
rpm -ql zsh //查询软件包安装了哪些文件
rpm -qc zsh //查询软件包安装了哪些配置文件
rpm -qi zsh //列出软件包的详细信息
rpm -qf /etc/zlogin //查询文件由哪个包安装的
查看未安装软件包
rpm -qpl zsh-5.0.2-25.el7.x86_64.rpm //查询软件包将会安装哪些文件
rpm -qpc zsh-5.0.2-25.el7.x86_64.rpm //查询软件包将会安装哪些配置文件
rpm -qpi zsh-5.0.2-25.el7.x86_64.rpm //列出软件包的详细信息
三、RPM包YUM在线管理
查询
yum list all # 查看仓库的所有包
yum list installed
yum list 软件名
yum repolist # 查看仓库列表
yum info
安装
yum install -y 软件名
yum reinstall 包名 # 重新安装软件
yum groupinstall 组名 # 安装软件包组,组名中有空格或中文需要引起来
升级
yum update -y
卸载
yum erase/remove 包名 # 删除已安装的软件,会删除所有的依赖包
查找软件包
yum search 包名的部分
yum provides 文件绝对路径 # 查找文件是由哪个包安装的
配置yum 源
进入yum源文件夹<br>cd /etc/yum.repos.d/
curl -O http://mirrors.aliyun.com/repo/Centos-7.repo
或
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
yum -y update
四、dpkg软件包管理
安装软件包
apt-get install vim
更新软件包
apt-get update
升级软件包
apt-get upgrade
删除软件包
apt-get remove vim
查询软件包信息
apt-cache search text editor
五、实战:通过YUM在线安装nginx
yum update
添加 nginx 软件包的官方存储库
vi /etc/yum.repos.d/nginx.repo
输入:<br>[nginx]<br>name=nginx repo<br>baseurl=http://nginx.org/packages/centos/$releasever/$basearch/<br>gpgcheck=0<br>enabled=1
按 Esc 键退出编辑模式,输入 ":wq" 保存并退出编辑器。
yum install nginx
systemctl start nginx
systemctl status nginx
"Active" 一栏显示 "active (running)"
一、源码包的管理
1)下载源代码包:从软件开发者的官方网站或者其他可靠的来源下载源代码包。<br><br>2)安装编译工具:在编译源代码之前,需要先安装编译工具,包括编译器、make工具和相关的开发库。具体安装方式可能因不同的Linux系统而异,可以使用系统自带的包管理工具进行安装。<br><br>3)解压源代码包:将下载的源代码包解压到合适的目录中。一般来说,解压命令为tar -zxvf filename.tar.gz或者tar -jxvf filename.tar.bz2,其中filename为源代码包的文件名。<br><br>4)进入源代码目录:使用cd命令进入解压后的源代码目录。<br><br>5)配置源代码:在进入源代码目录后,需要运行configure脚本进行配置。configure脚本可以根据系统环境和用户选项生成Makefile文件,以便后续编译过程使用。一般来说,configure脚本的命令为./configure。<br><br>6)编译源代码:运行make命令编译源代码。make命令会根据生成的Makefile文件进行编译,并生成可执行文件和相关的库文件。<br><br>7)安装软件:编译完成后,可以使用make install命令将生成的可执行文件和相关的库文件安装到系统中。注意,在安装软件之前需要以root权限运行此命令。<br><br>8)清理编译文件:在安装完成后,可以使用make clean命令清理编译过程中生成的临时文件和目标文件,以释放磁盘空间。
二、安装软件实战
安装nginx的实战案例
在nginx的官方网站(https://nginx.org/)上下载最新的稳定版nginx源代码包。例如,可以使用以下命令在终端中下载nginx源代码包:
wget https://nginx.org/download/nginx-1.20.1.tar.gz
在编译nginx之前,需要先安装编译工具和依赖库
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev libssl-dev
或yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel
解压nginx源代码包:tar -zxvf nginx-1.20.1.tar.gz
进入nginx源代码目录并配置:cd nginx-1.20.1
运行configure进行配置:./configure
安装到指定的目录./configure --prefix=/usr/local/nginx
编译参数
- --with参数:指定依赖库的路径或版本号;<br>- --without参数:禁用某些依赖库;<br>- --enable参数:开启某些选项;<br>- --disable参数:禁用某些选项;<br>- --prefix参数:指定源码包的安装路径;<br>- --mandir参数:指定源码包的man文档路径;<br>- --bindir参数:指定源码包的可执行文件路径
编译nginx
make
make -j 8(核心数)
安装nginx
sudo make install
启动nginx
/usr/local/nginx/sbin/nginx
可以使用浏览器访问http://localhost来验证nginx是否安装成功。
安装Mysql 5.7实战案例
1、下载MySQL的Linux版本
2、上传到usr/local目录
3、解压
tar -xvf Mysql文件
4、移动到mysq目录中
mv 解压后的MySQL目录名 mysql
5、在mysql目录中创建data目录
cd mysql
mkdir data
6、创建 mysql 用户组和 mysql 用户
groupadd mysql
useradd -g mysql mysql
7、改变 mysql 目录权限
chown -R mysql.mysql /usr/local/mysql/
chown -R mysql.mysql data logs
8、初始化数据库
1)创建mysql_install_db安装文件
mkdir mysql_install_db
chmod 777 ./mysql_install_db
2)初始化
x bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
3)初始化成功后,要记录自己的原始密码:
9、配置MySQL
vi /etc/my.cnf
添加以下内容:
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
character-set-server=utf8
port=3306
[mysql]
socket=/usr/local/mysql/mysql.sock
port=3306
10、建立MySQL服务
1)复制服务文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
2)加执行权限
chmod +x /etc/init.d/mysql
3)添加到系统服务
chkconfig --add mysql
4)检查服务
x chkconfig --list mysql
11、配置全局环境变量
1)打开配置文件
vi /etc/profile
2)在配置文件底部添加:
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
export PATH
3)使文件生效
source /etc/profile
可能出现的问题:找不到/var/log/mariadb/mariadb.log
解决方法:mkdir -p /var/log/mariadb<br>touch /var/log/mariadb/mariadb.log<br>chown -R mysql.mysql /var/log/mariadb
12、启动服务
service mysql start
13、登录MySQL
mysql -u账号 -p密码
输入原始密码
14、修改原始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
或
set password for root@localhost = password('新密码');
安装jdk
1、下载JDK的Linux版本
2、用SSH工具上传到usr/local目录
3、解压jdk
tar -xvf jdk文件名
4、配置环境变量
打开文件进行配置
vim /etc/profile
在文件末尾添加
export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
5、保存并刷新文件, 让环境变量生效
source /etc/profile
6、测试
java -version
安装Tomcat
1、下载Tomcat的Linux版本
2、上传到usr/local目录
3、解压
tar -xvf Tomcat文件
4、cd 进入bin目录
cd /usr/local/tomcat8/bin
5、启动Tomcat
./startup.sh
netstat -lnp | grep 8080
6、关闭防火墙
systemctl stop firewalld
网址:8080查看
1.6 删除软件
rm -rf /usr/local/mysql
7.10 网络通信原理<br><br>本节所讲:<br><br>1、掌握OSI七层模型概念<br><br>2、掌握TCP/IP模型的概念<br><br>3、掌握TCP/IP模型分层协议<br><br>4、掌握对等网络和非对等网络的概念
OSI模型
应 用 层(Application Layer)
应用层决定了向用户提供应用服务时通信的活动。
TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(FileTransfer Protocol,文件传输协议)和 DNS(Domain Name System,域
名系统)服务就是其中两类。
HTTP 协议也处于该层。
表 示 层(Presentation Layer)
数据的表现形式(ASCII、GB2312、jpg)、加密和压缩
会 话 层(Session Layer)
通信双方的会话管理,如建立会话,维持会话,删除会话等
传 输 层(Transport Layer)-段
TCP:传输控制协议 可靠,传送的数据一定不丢
UDP:用户数据报协议 更快,但是可能会丢失数据
port:传输过程中的端口号用于区分不用的应用
四层交换机
网 络 层(Network Layer)-包
提供逻辑地址(ip地址),选路。写入IP地址,源和目的地IP,选择经过哪些路径传输数据。
路由器、三层交换机
数 据 链 路 层(Data Link Layer)-帧
负责保存硬件地址(MAC地址),即在数据包中写入MAC地址,源和目的地的MAC地址,同时负责数据的检测和修正工作。
网卡、以太网交换机
物 理 层(Physical Layer)
负责两台设备之间真正数据传输工作,通过比特流进行传输、物理接口、电气特性等
网卡、网线等属于物理层
双绞线、集线器、中继器
TCP/IP模型
TCP/IP 4层模型 <br>应用层<br>传输层<br>网络层<br>网络接口层(数物)
HTTP FTP TFTP SMTP SNMP DNS
TCP UDP
ICMP IGMP IP ARP RARP
PPP PPPOE
TCP/IP 5层模型<br>应用层<br>传输层<br>网络层<br>数据链路层<br>物理层
计算机<br>防火墙<br>路由器<br>交换机<br>网卡
常见网络命令
ping
ping命令参数的含义
ping www.google.com
-c 请求次数
-i 回显请求的间隔时间(秒)
-s 数据包大小(字节)
-t 数据包的生存时间 (Time To Live,TTL)即数据包能经过的最大路由器数量。默认情况下,TTL为64
netstat
查看网络状态和统计信息
-a显示所有网络连接,包括已建立的连接和正在监听的连接。
-t仅显示TCP连接。
-u仅显示UDP连接。
-n使用IP地址而不是域名显示网络连接。
-p显示与每个网络连接相关的进程信息。
-l显示正在侦听的服务socket
-s显示网络统计信息,例如传输的数据包数量和错误数量。
ifconfig
用于配置和显示Linux操作系统中的网络接口参数
-a显示所有接口,包括未激活的
-s显示摘要信息
up激活接口
down关闭接口
inet addr设置或显示IPv4地址
netmask设置或显示子网掩码
hw ether设置或显示MAC地址
nslookup
yum install -y bind-utils
nslookup [options] [name | -] [server]
用于查询DNS(域名系统)的命令行工具
-query=TYPE指定查询类型,例如A记录、MX记录等
-debug输出调试信息
-timeout=N设置超时时间
-retry=N设置重试次数
-sil[ent]静默输出结果
route
用于查看和管理Linux系统的路由表,可以添加、删除和修改路由表项
`-n`:使用数字形式显示路由表项;
- `-v`:显示详细信息;<br>
`add`:添加路由表项;
`del`:删除路由表项。
dig
用于查询DNS域名解析的命令行工具
dig [选项] [域名] [查询类型]
`+trace`显示DNS域名解析过程中的详细信息
`+short`只显示查询结果的IP地址或者CNAME
`+nocmd`只显示DNS解析结果,不显示查询命令及DNS服务器的应答信息
`+noall`只显示查询结果,不显示任何信息
`只显示DNS解析结果的回答部分,不显示其他部分
`+authority`只显示DNS解析结果的权威部分,不显示其他部分
`+additional`只显示DNS解析结果的附加部分,不显示其他部分
`+noquestion`只显示DNS解析结果的各个部分,不显示查询的域名及查询类型
`+nocomments`不显示注释信息
`@<dns_server>`指定查询的DNS服务器,`<dns_server>`为DNS服务器的IP地址或域名
子主题
子主题
子主题
子主题
子主题
0 条评论
下一页