Linux的学习过程(大二网课)
- 字符页面的管理
在xshell 中新建会话,输入RHEL吧啦吧啦,然后代码操作 - 图形界面的管理
在新建会话,隧道选择转发X11,完成。通过代码打开软件,实现图形界面的管理
例如:gedit & ---->后台打开记事本 【"&" : 后台打开】 Firefox & -----> 后台打开记事本
访问命令行
- Bash:人机交互的接口
人---> Bash -----> 机器 - 介绍提示符
[root【用户名】@node1【主机名hostname】~]# root用户是最高权限用户 #代表权限最高
[zjj@node1~]$ 自创的用户,权限有限 $代表普通用户
指令:
hostnamectl set-hostname xxx(要改的名)-----修改主机名
cat /etc/hostname ------查看主机名
whoami------查看当前用户名
pwd-----查看当前目录
- 介绍命令语法
构造:命令 [参数] [选项](可加可不加)
指令:
ls-----查看当前目录下文件清单
例如
ls /boot -----查看boot文件下清单ls -l /boot -------查看boot文件下long格式清单
- 虚拟控制台
方式:Ctrl + Alt + F(1-6)【F1 F2为图形(就是登陆后的窗口),F3--F6为命令界面】
随便进入一个后的界面
此时输入root,再输入root的密码即可登陆进去
指令:
tty----查询终端
此时是通过F5进入的控制台
w(切记小写)----查看哪些用户登入exit----退出登陆(清空界面,返回登陆)
-
远程访问命令行
使用SSH登陆 -----(科普:ssh作用:为远程登录会话和其他网络服务提供安全性协议)
格式:用户名@IP地址 后面疯狂yes就好了
这里我用了老师的截图
退出输入exit或者Ctrl + d
使用桌面去访问命令行
- 在桌面如何使用命令行
Alt + F2
输入gnome-terminal ------打开终端
关机命令: Ctrl + Alt + Del
使用Bash执行命令
- 基本命令语法
一行多个命令 ------ 在多个命令中间加分号(;)
指令:
ip addr ----- 查看IP地址
例如w;tty 先出现登录记录,后出现终端号 - 基本命令示例
1.date 修改时间 设置时间
查看date的用法指令 date -help
将时间校对为系统时间 hwclock -w
查看系统时间 hwclock -r
查看年月日时间格式 ------ date %F
查看时分格式 ------date %R
查看月日年格式 ------date %x
2.passwd
修改密码
passwd 用户名-----修改
(没有图,没实践)
root可修改所有用户的密码
3.file
查看文件类型
查看文件的内容
1.cat
格式:cat filename(文件名)-------一次显示整个文件
2.more
格式:more filename(文件名)--------会以一页一页的形式显示,而最基本的指令就是按空白键(space)就往下一页显示,按理来说只能向下翻,(这个未确认)按 b 键就会往回(back)一页显示
q退出,输入/
字符并在其后加上你想要查找的文字(小写n下一个)
3.less
格式:less filename(文件名)---------可通过pg up和pg down上下翻页,上下键过行
4.head文件头部/tail文件尾部
格式:head / tail 文件名----------从头部或尾部查看文件
head / tail -行数 文件名---------查看几行文件
5.wc (word count统计文档字数)
格式:wc 文件路径---------查询文档的字数
wc -l 文件路径 ----------查询文档的行数 (line行)
wc -c 文件路径------------查询文档的字符数 (char字符)
wc -w 文件路径----------查询文档的单词数 (word单词) - 使用tab补全命令
1.补全命令 补全命令 补全选项
输入部分,双击tab键自动补全 - 长命令的执行
加入 \ 分割回车 出现 > 后继续输入 - history命令的历史输入
格式:history------查看历史输入
history [#] --------查看#条历史记录
! + 序号 ------执行第(序号)条命令
! + 命令 -------执行最近一次以命令开头的指令
history -c ------清楚历史
Alt + 。-------重新调用前一个命令中最后一个参数 - 编辑命令行
Ctrl+a 移动到当前行的开头
Ctrl+e 移动到当前行的结尾
Ctrl+k 剪切命令行中光标所在处之后的所有字符(包括自身)
Ctrl+u 剪切命令行中光标所在处之前的所有字符(不包括自身
Ctrl-R: 开始增量历史命令搜索,可以按照关键字查查自己用过哪些命令
使用命令行管理文件
- Linux文件层次结构
1.1文件系统层次结构
只有一个根文件系统(所有硬件以文件方式显示)
进入根目录方法------cd /
就是一个树形文件系统
1.2典型目录意义
/usr:Unix System Resource Unix操作系统的软件资源 用户安装软件的目录,我们用的文件和应用程序几乎都放在这个目录下
/etc:整个Linux系统的中心,其中包含所有系统管理和维护方面的配置文件(系统配置文件所在目录)例如账号什么的保存在这
/var:储存各种变化的文件,例如日志文件
/run:存在内存中,记录系统中的log文件,进程相关的id号
/dev:设备目录,Linux在这里创建设备节点,例如逻辑卷硬盘光盘光驱
/home:系统默认用户家目录,用户主目录,Linux在这里创建用户目录(新增用户目录,家目录存在此目录下)
/root:系统管理员家目录,超级用户root的主目录(在Linux系统中,斜杠字符“/”是整个系统的根目录,而非超级用户的主目录
/tmp:临时存放文件的目录,可以在该目录中创建和删除临时工作文件
/boot:启动目录,存放启动文件.目录存放系统核心文件以及启动时必须读取的文件,包括Linux内核的二进制映像。 - 相对路径和绝对路径
绝对路径:从根目录/开始
相对路径:从当前目录开始 - 命令
. :当前目录 ./
.. :上级目录 ../
cd 路径 --------转到对应的路径
pwd -------查看当前路径
ls ---------查看当前目录下文件及目录
mkdir dir-------在当前目录下创建该目录(dir是目录名)
mkdir -p 路径(例:/aaa/bbb/ccc)--------一个个创建,否则会因为目录不存在而创建失败
tree 目录名--------查看目录下的树形文件
cp/copy 要复制的文件名/目录名 要移动到的路径 ----------复制文件到该目录下
cd - ---------返回上一次的目录cd ~ --------前往用户的家目录下
cd ~ 用户名 -------去该用户的家目录下 -
使用命令行工具管理文件
1.mkdir -----创建目录
格式:mkdir 创建目录的位置及相关目录 -p -------------先从父目录开始创建,后创建子目录
例如:mkdir aaa/bbb/ccc -p
2.cp ------复制
格式:cp -f(强制覆盖) 要移动的文件 要移到的位置 -------将文件移动到对应位置(强制)
其中 cp -f:强制 cp -i:交互
3.mv -----移动,剪切目录/文件
格式:mv 要移动的文件 移动到的位置 --------移动文件位置
mv 同目录下原文件 同目录下的改名后文件 -------在同目录下修改文件名
4.rmdir -----删除目录
格式:rmdir 目录路径 ------只删除空目录
rm可以删除非空目录
rm -rf 目录(例如aaa/bbb/ccc)--------一层层删除 -
链接
链接分为硬链接和软链接,硬链接是一个档案可以有多个名称,软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置,硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统
格式:
ln 源文件 硬链接的名字 ------在相同的目录下新建一个硬链接
ln -s 源文件 软链接的文字 ------在相同的目录下新建一个软链接软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建原文件删除后,软链接无法访问,而硬链接还可以继续访问
区别:
1.占用的大小不同
2.
5.2转义字符
\ ---- 将符号转为普通字符
例如 \$(hostname)------输出为hostname
‘’--------将内部所有的符号视为无效
“” ----据说有特殊含义 -
命令行的扩展
1.文件通配符
* ------任意字符
例如 ll /etc/a* ------查找a开头的文件
? ----单个字符
例如 ll /etc/?a* -----查找第二个是a的文件或目录
[ ] -------集合中的单个的字符
例如 ll /etc/[abc]* ------ 查找以a/b/c开头的文件
[^] ------- 不在集合中的单个字符
例如 ll /etc/[^a]* ------查看非a开头的文件
2.大括号扩展
{ },,(分隔),..(连续)
例如创建文件
mkdir f{1..3}.txt ------ 创建f1,f2,f3.txt
mkdir f{5,7}.txt ------创建f5,f7.txt
touch f{a{1,2},b,c}.txt ------创建f(a1,a2,b,c).txt
3.命令替换
$()------调用命令
例如
touch f$(date %F).txt ------建立当前时间名的txt文件
` ` ----在双引号中调用命令
例如“ ········` hostname` ” ------中间可以显示主机名
获取帮助
- 4.1help 与 --help
内置命令用help,外置命令用 --help 都可以
【怎么查看是否是内外置命令】
type 命令 ------查看命令是内外置命令
外置命令
内置命令
-
man手册 (常用)
格式:man 命令 -------打开该命令的man手册
下例 :man passwd
查询关键字
man -k 关键字 ------【如果出现下面的情况,则是没有安装mandb】
此时输入mandb安装后即可
man 序号 关键字 -------选择对应的操作(与上图相关,例如选择5使用对应 )
man 5 passwd/关键字 --------查找对应关键字
q退出 -
info 和man差不多,比man更详细一些(吧)
格式:info 关键字 -
帮助文档
位置:/usr/share/doc
创建查看编辑文本文件
- 重定向
有输入重定向,输出重定向,管道
先说输出重定向
是将得到的结果输出到文件中
格式:ls(当时位于某个目录下) >(这符号代表输出重定向) 文件名.文件类型
例如:ls > ls.txt
命令 >> 文件.文件类型 --------将结果追加到文件中(如果只是用上面的方法,则会覆盖)
【这里有个注意点,这里只保存对的运行结果,错的不执行】
例如
ls -l(长目录格式) ls.txt lsls.txt(假设的不存在文件) > xxx.txt
存储的只有ls.txt的结果
但是面对要存储正确的错误的结果要用不同的方法
1 > -----正确的 2 > ---------错误的 2>&1----全部的
使用上述方法就可以存储错的结果
例如
ls -l ls.txt lsls.txt(不存在的文件) 1 > ok.txt 2 > err.txt ---------将对和错的结果分开存储
【错的结果内容
】
ls -l ls.txt lsls.txt > all.txt 2>&1 -------将对错的结果统一存储
输入重定向
这个不是很清楚......但是是用 <
管道
将上一条命令的输出作为输入
具体不清楚
例如:cat /etc/passwd | wc -l -------统计前一条命令的行数(是后者将前者的输出作为了输入去计算) - vim编辑器
对文件进行修改
命令模式(进来时的初始模式)
当输入
i进入编辑模式(insert键也可以)按esc返回命令模式
v进入可视
u进入撤销
命令模式的操作
#G-------跳转到#行
#dd ------删除/剪切#行 单删一行直接dd
#yy------复制#行 单复制一行yy
p/P -----粘贴,前者贴下面,后者贴上面
u-------撤销
ctrl+z ------恢复
编辑模式的操作(在命令模式下的操作)
i ------光标所在位置开始插入
A ------最后一个开始插入
O -------上插入一个空白行
o --------下插入一个空白行
末行操作(输入一个:后的操作)
w:保存
q:退出
wq:保存退出
q!:强制退出
wq!:强制保存退出
/ :搜索(从上往下)
?:搜索(从下往上)
s:替换
只换一个 (在当前行) s/原来的字/要换的字
换一行 (在要换的行) s/原来的字/要换的字/g
换全部 1,$ s/原来的字/要换的字/g
用户介绍以及提升权限
- 用户与组管理
位置 /etc/passwd
打开文件后节选一段来讲解
例如这个顺序是
用户名,密码,用户ID号(0代表root用户,1--999系统用户,1000+普通用户),组ID号(0代表root用户),全名,家目录
passwd -S 用户名 -------查看用户状态密码位置:/etc/shadow
打开文件后节选一段来讲解顺序:用户:SHA512算法加密后的密码:salt(我也不知道这是干嘛的)
组的位置:/etc/group
打开文件后节选一段来讲解
组名:不知道意思的符号(都是这样的):组ID号
id 用户名 --------查看用户的uid gid 和组
-
如何获得用户权限
su 切换用户
su - 完全登陆(su - root)
sudo 给某一个用户特别权限
针对sudo的用法
相关配置文件目录 /etc/sudoers.d
在目录下vim 用户名(建立相关文件并编辑)
语法:用户名 ALL(全部设备)= 身份【这个意思是在全部的设备上是以什么身份运行】 给予的权限目录(例如/usr/bin/mount,多权限逗号分隔)
设置无密码:用户名 ALL=(root) NOPASSWD:ALL
sudo -l -----查看授权(权限)
sudo -k -------清理缓存 - 管理本地用户
1.useradd 添加用户
语法:useradd -d(指定家目录) 位置(例如/user03)(默认/home/~)-m(创建用户家目录) -g(添加到某一组) 组名 -r(系统用户) -------创建一个可用的用户
2.userdel 删除用户
语法:userdel 用户名 -r(删除用户家目录) ---------删除用户
3.usermod 用户属性的修改
语法:usermod -g(强制改组)用户名 组名------------修改用户的组
4.passwd 改变用户的密码
语法:passwd 用户名--------更改用户的密码(普通用户只能改自己密码) -
管理本地的组
1.groupadd
groups 组名 --------查看组下的成员
2.groupmod修改组的属性
3.groupdel删组
gpasswd -a(向组中添加用户)要添加的用户 组名 -------将一个用户添加进组中
gpasswd -d(删除)要删的用户名 组名 -------将一个用户从组中删除 - 管理用户密码
组成:目录下/etc/shadow 看上面
设置密码【
useradd user03
echo ‘rehat’|passwd --stdin(标准输入) user03 ------以管道的方式设置user03的密码
】
shadow文件的组成
登陆名:加密密码:最后一次更改日期:密码最小年龄:最大年龄:密码警告时间段:密码禁用期
最后一次更改时间:是从1970.01.01开始计算的天数,如果是0,则下次登陆要修改密码
密码最小年龄:最少几天要改密码
密码最大年龄:密码存活时间
密码警告时间段:密码过期警告
密码禁用期:逾期时间(过了几天还能用)
timedatectl set - time “~” -------设置时间
timedatectl----------查看时间
同样的可以用chage来查看
1.在/etc/passwd下修改后面的家目录改成/sbin/nologin ----限制登陆
2.usermod -L 用户名------锁定账号/U是解锁
/etc/default/useradd ====== 保存了用户创建的默认值
/etc/login.defs =====账号信息
文件系统权限
- 权限相关的概念
在目录中使用ll指令去查看权限
前面第一个代表文件属性【-代表普通文件,d代表目录】
设置权限
后面的rwx分别意思为
文件:读取,修改文件(可写),可执行
目录:读取,创建修改改名文件/子目录 ,可进入目录
后面的减号则是分隔用户
后面从2或者1后第一个开始,分别是ugo,分别对应前面的权限
u:user用户
g:group组
o:others其他用户
改变权限
chmod u/g/o +/- 可执行权限(rwx) 文件路径 --------------修改权限
(root用户不受权限限制)
符号法
chmod -R(递归修改) u/g/o/a(所有) +/-/=(可以直接修改) r/w/x filename/directory
数字法
chomod 777(所有权限,r=4,w=2,x=1,分别对应ugo) /aaa
修改拥有者
chown 用户 /filename/directory--------------修改拥有者
同理修改组
chgrp 组名 filename/directory -
三个特殊权限及默认权限
1.u+s(其他用户都可享有文件属主的权限)
任何用户在执行命令时,是以命令所有者的身份执行,例如普通用户重启时,是以root身份执行reboot命令
which 命令名 --------查找命令所在的位置
例:chmod u+s /usr/bin/systemctl -------赋予权限
2.g+s(无论哪个用户在该组下创建目录文件,该文件目录均属于g+s的组)
chmod g+s 目录名
3.o+t
此目录只有root和此目录的拥有者可以删除
防止同组误删文件
4.默认权限umask
root用户默认umask = 022【这个对应ugo】
创建目录时常是777 - umask = 755
创建文件时常是666 - umask = 644
这个umask是从权限中去掉哪些成为最终默认权限
临时修改--------umask 数字
永久修改------在/etc/bashrc 下添加 umask 数字
进程管理
- 工作控制jobs(查看进程)
当程序运行后在系统的表现称为进程
1.暂停 Ctrl + z
前台进程后台运行
例如:控制台打开某软件后处于无法操作的状态,Ctrl + z 后台运行
jobs ------ 查看进程
2.& 后台运行
gedit & -------后台打开笔记本软件
3.bg 让进程在后台运行
bg(background)
bg 进程ID号------使对应的进程后台运行
4.fg 让进程在前台运行
同上
5.Ctrl + c 终止任务
或kill -9 %ID号 杀进程