Linux笔记--基础入门
文章目录
- Linux基础知识点
- 文件目录
- *磁盘分区*
- *基础命令*
- Linux运行级别
- 关机
- 重启
- 手册
- alias别名
- ntsysv系统服务管理程序
- Linux常用命令
- 命令分类
- 命令行格式
- 选项
- 参数
- 命令行辅助操作
- 真·常用命令()
- help命令:帮助指令
- man手册页manual page
- 绝对路径与相对路径
- 绝对路径:
- 相对路径:
- 列表显示目录内容ls(list)
- 统计指定目录(文件)占用磁盘空间大小
- 创建目录和文件
- 创建空文件
- 创建链接文件
- 复制文件或目录
- 删除文件或目录
- 移动文件或目录(重命名)
- 查找命令/文件存放目录
- 查询可执行文件which
- 查找普通文件(十分牛逼👍)
- 文件管理
- cat命令:显示文件内容
- more:分屏显示
- head命令
- tail命令
- sed命令
- 统计文件内容wc命令
- grep命令查找文件中某字段CTF常用🌟
- **file命令** 🌟
- 压缩gzip、bzip
- 解压gunzip、 bunzip2
- tar命令
- **vi/vim**
- 末行模式的使用
- 帮助
- 程序安装及管理
- 将光盘挂载到目录
- rpm
- 软件下载
- 账号权限及管理
- 对用户账号的管理
- 添加账户
- 修改账户属性usermode
- 删除用户账户userdel
- 用户账户配置文件
- 用户组
- 查询账户信息
- 文件访问权限和归属
- 访问权限
- 归属(没写完)
- 查看文件权限
- 改变权限
- 变更文件或目录的拥有者或所属群组
- 磁盘管理
Linux基础知识点
文件目录
dev设备文件
etc系统配置文件
root管理员宿主目录
boot启动,电脑引导启动相关的文件
systemd 是linux中操作系统的一种init软件
磁盘分区
/boot分区:负责系统启动的检测
/根分区:系统目录
/swap:系统做的虚拟内存
基础命令
pwd 显示当前所在的目录
systemctl set-default multi-user.target 设置电脑开机自动进入无图形化界面
systemctl 控制类型 服务名称 例:systemctl stop network.services
history 查看历史命令,!+数字(n) 表示调用第n条命令
Linux运行级别
runlevel 查看当前运行级别
init 3 切换运行级别(1~5)
关机
shutdown -h now 立刻关机,-h指关闭系统同时关闭电源
shutdown -h +5 5分钟之后关机
shutdown -h 12:20 12:20关机,如果今天已经过了关机时间,则明天12:20关机
shutdown -h 3:00 tomorrow 明天这时关机
重启
shutdown -r now == reboot 现在重启
shutdown -r +5 5分钟之后重启
shutdown -r 12:20 12:20关机,如果今天已经过重启时间,则明天12:20重启
shutdown -r 3:00 tomorrow 明天这时重启
手册
man + 查询的命令 (manual缩写)
例如 man shutdown
alias别名
alias 别名=原指令
alias guanji='systemctl poweroff'
此时运行guanji命令,系统自动替换成systemctl poweroff执行关机命令,
注意:原指令用单引号引起来,防止出错;有些关键字不要使用,会引起冲突,发生冲突时,系统自动执行别名,而不是系统命令
ntsysv系统服务管理程序
ntsysv --level 级别列表
ntsysv 当前级别下调试
Linux常用命令
linux命令也被称为shell命令
shell是一个普通程序
/bin/csh
/bin/sh
/bin/bash(常用)
/bin/zsh
命令分类
内部命令:输入help,输出结果都是内部命令
外部命令
linux操作系统默认会将存放外部命令程序的目录(/bin,/usr/bin/usr/local/bin等)添加到用户的搜索路径中,使用这些命令时用户不需要指定具体的位置
Bin->binary:二进制
bin:可执行的二进制文件
/bin:普通用户权限可以执行的命令
/sbin:需要root权限可以执行的命令
/usr/bin:系统预装的可以执行程序,随着系统升级,也进行变化
/usr/八ocal/bin:用户放置自己的可执行程序,系统升级,不进行变化
命令行格式
通用格式:
命令字 [选项] [参数] #[]内均可有可无
选项
用来调节命令的具体功能,多个选项可以一起使用,并且使用空格
分开。如果不添加选项,那么系统会执行命令字默认的功能
a、单字符:-a -b -s -f 都是单字符选项,对于单字符选项可以一起
使用,-sf,或者-s -f
b、多字符:在使用多字符选项时,-help
参数
命令处理的对象,命令作用于谁。通常情况下命令参数可以是文件
名、目录、路径、用户名
命令行辅助操作
Tab键:代码补全
Tab两次:输出列表
反斜杠"":转义字符,用于换行等
Ctrl+U快捷键:删除光标前内容
Ctl+K快捷键:删除光标后内容(所有内容)
Ctrl+L快捷键:清屏等同clear,将命令行跳转到下面,使其形成一个新的页面,此时向上翻仍然可以看到之前的命令
Ctl+C快捷键:取消当前编辑,代码运行时该快捷键可以直接停止运行
Ctrl + A :移动光标到行首
Ctrl + E:移动光标到行尾
Ctrl + F:向右移动一个字符
Ctrl + B:向左移动一个字符
Ctrl+ W:删除左边一个单词
Ctrl + D:删除右边一个单词
Ctrl + P:输入上一条命令,等同于 ↑ 键
Ctrl + N:输入下一条命令
Ctrl + R :在历史命令中向上查找
ALT + F:向右移动一个单词
ALT + B:向左移动一个单词
ALT + . :输入上一条命令的最后一个单词
所有快捷键都可以用
真·常用命令()
help命令:帮助指令
help+命令:显示该命令使用方法 e.g.:help pwd
也可以将help作为选项使用, e.g:ls --help
man手册页manual page
例如:man file 打开file命令有关的所有操作内容
man ls | col -b > lshelp.txt 将ls命令输出成为一个名为lshelp的txt文档
col:一个命令程序,用于过滤文件中的特殊控制符号
|:表示管道,用于将前面命令的输出结果作为后面命令的操作对象
> :重新定向传输,前面命令执行成功后,其屏幕输出结果并保存到>指定的 文件中,而不是显示在屏幕上
pwd命令:打印当前所在的目录
cd:切换目录 ,如果不指定目录,则跳到宿主目录~," ~ "指的是当前宿主目录,当普通用户输入cd时,则跳转到/home/用户名/中,如果为root用户则指的是/root目录
cd … 表示返回上一级
cd - 切换到上一次cd所在的位置
[root@bogon ~]# cd /etc
[root@bogon etc]# cd /root
[root@bogon ~]# cd -
/etc
[root@bogon etc]#
绝对路径与相对路径
绝对路径:
以" / "开头的都是绝对路径
相对路径:
列表显示目录内容ls(list)
ls [选项] [文件/目录]
-l:以长格式显示(long)文件和目录的列表,包括权限、大小,最新的更新时间,不是用-选项是,ls命令默认以短格式显示目录和文件
-a:显示所有(all)子目录和文件的信息,包括以"." ,"…"开头的隐藏目录和文件
-A:与-a一样,除了两个特殊的隐藏目录不显示,其他都显示
-d:显示目录(directory)本身属性,而不是显示目录中的内容
-h:以更加人性化(human)的方式显示目录文件大小,单位byte,通常这个选项需
要与-l 一起使用
-R:以递归的(recursive)的方式显示指定目录及子目录中的所有内容
–color:在字符界面中,以颜色区分不同的文件,如果使用“–color=tty”,表示使
用终端预定义的颜色方案
ls -lS 根据文件大小降序排列,默认根据文件名升序
ls -lrS 根据文件大小升序
ls -lt 根据文件时间升序,最新的在最上面。加上-r选项,会由旧到新
ls file[0-9] 匹配file**文件,此时表示查找file1,file2.....中括号表示其中任意字符,匹配成功全部显示
ls *b " * "表示n个任意字符,此时表示以b结尾的任意文件,查找出来的结果为xxxxb,例如abb,adb....
ls file? "?"表示单个字符
统计指定目录(文件)占用磁盘空间大小
du [选项] [文件或目录...]
例:
du -sh /var/log/ #统计目录所占用空间的大小
du -a /boot/ #统计所有目录占用的空间
创建目录和文件
mkdir [选项] 目录位置及名称
创建多层文件目录
mkdir -p x/y/z #创建z时,如果其父目录不存在时一并创建
创建空文件
touch 文件 #创建单个文件
touch 文件 文件 文件 #创建多个文件
touch命令本来是用于更新文件的时间标记的,但是在时间使用中经常用于创建新的测试文件,命令使用文件名作为参数,可以创建多个文件,如果创建的文件以及存在,那么更新该文件的时间标记
创建链接文件
ln [-s] 源文件/目录 链接文件/目录位置
#e.g:
ln -s /bin/zcat /root/
#与c语言指针相似
#指针 zcat (*p)指向 /root/ (&p)
复制文件或目录
cp [选项] 源文件/目录 目标文件/目录
#当复制目录时要加上-r属性,表示复制改目录树的所有分支
cp /etc/inttab/ ./init
#↑此处的.指的是当前目录
#上一条指的是复制/etc/inttab/到当前目录并更名为init
#-p命令需要管理员权限使用
注意:复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在w(゚Д゚)w
删除文件或目录
rm [选项] 要删除的文件和目录
常用选项(与cp命令相同,这俩图一样,没弄错哈)
[!WARNING]
没事别吃饱了撑的删文件___*(  ̄皿 ̄)/#____
移动文件或目录(重命名)
mv [选项] 源文件目录 目标文件目录
Linux中没有重命名命令,可以通过移动到当前目录来修改名称
查找命令/文件存放目录
查询可执行文件which
只在**$PATH**中查找
which 文件名
查找普通文件(十分牛逼👍)
使用递归查找,根据名称、类型、大小等条件查找
find [查找范围] [查找条件表达式]
上方查找范围是文件夹,表示在当前文件夹的子目录当中查找
常用条件表达式
文件管理
cat命令:显示文件内容
cat [选项] 文件名
显示文件全部内容,即使文件内容多时也是全部显示,不便于阅读
解决办法:分屏显示
more:分屏显示
more [选项] 文件名
此时按回车显示下一行,按空格显示下一页,按q退出,使用PageUP和PageDown上下翻屏(有的无法翻屏)
head命令
用途:查看文件开头内容(默认10行)
head -n 文件名 #n代表行数
head -20 index.html
tail命令
用途:查看文件结尾内容(默认10行)
tali -f 文件名 #-f代表显示内容时会动态更新ctrl+c结束
sed命令
用途:查看中间行数
sed -n '起始行,结束行'
统计文件内容wc命令
用途:统计文件中单词数量(word count)等信息
wc [选项] 目标文件
常用命令选项
-l:统计行数
-w:统计单词个数
-c:统计字节数
无选项的话上方三项依次输出
grep命令查找文件中某字段CTF常用🌟
用途:在文件中查找显示包含指定字符的行
grep [选项] 查找条件(内容) 目标文件
常用命令选项
-i:查找时忽略大小写
-v:反转查找,输出与查找不相符的行
-n:查看查找内容所在行数
查找条件设置
要查找到字符串用双引号括起来
"^…"以…开头
“…$” 以…结尾
"^…$"表示…独占一行时
"^$"表示空行
file命令 🌟
用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。
查看文件类型
语法:
file (选项) (参数)
-b:列出辨识结果时,不显示文件名称;
-c:详细显示指令执行过程,便于排错或分析程序执行的情形;
-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;
-L:直接显示符号连接所指向的文件类别;
-m<魔法数字文件>:指定魔法数字文件;
-v:显示版本信息;
-z:尝试去解读压缩文件的内容。
linux中没有扩展名的概念,扩展名只是为了用户方便辨别,使用file 123.zip 可显示文件源文件,如果扫描出来为png文件,则可以通过修改文件扩展名获得flag
压缩gzip、bzip
压缩单个文件
gzip [-9] 文件名
bzip2 [-9] 文件名
gzip -d .gz格式的压缩文件
bzip2 -d .bz2格式的压缩文件
解压gunzip、 bunzip2
gunzip等价于gzip -d
gzip -d mkfile.gz 等于 gunzip mkfile.gz
bunzip2命令用法与gunzip用法一致
zip2压缩文件格式为.gz,bzip2压缩文件格式为.bz2
tar命令
用途:制作归档文件、释放归档文件
用tar制作归档文件,然后用gzip压缩
tar [选项] 归档文件名 源文件或目录
tar [选项] 归档文件名 [-C目标目录]
tar cvfz exam.tar.gz exam #打包文件为.tar
tar tvf exam.tar.gz exam #打包为tar.gz
tar xvf exam.tar.gz #解压文件
-c:创建(creat).tar格式文件
-C:压缩时指定释放文件
-f:表示使用归档文件
-j:调用bzip2程序进行压缩或解压
-p:打包时保留文件及目录的权限
-t:列表查看包内的文件
-v:输出向下信息(verbose)
-x:解开.tar格式的文件
-z:调用gzp程序进行压缩或解压
vi/vim
命令模式:
a:在当前光标位置之后插入内容 按home键或者^键光标快速到本行的行首
A:在光标所在的行之后插入内容 按End键或者$将光标快速到本行的行尾
i:在当前光标位置之前插入内容 按1G或者gg跳转到第一行
I:在当前光标行之前插入内容 按G跳转到最后一行
0:在当前光标所在行后插入一行 按#G跳转到指定行数,#数字
O:在当前光标所在行前插入一行 切换到末行模式下,执行set nu.显示行号,执行set nonu关闭行号
移动光标:
h:向左移动一个光标
j:向下移动一个光标
k:向上移动一个光标
l:向右移动一个光标
0:移动到行首
$:到行尾
w:向前移动一个单词
b:向后移动一个单词
fx:行内向后搜索 x表示要搜索的字符
Fx:向前搜索 x还是表示要搜索的字符
按屏移动:
Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
按行移动:
nG表示移动到第n行
lG表示移动到第l行,也可以使用gg命令
G表示移动到最后一行
屏内移动:
H移动到本屏第一行
M移动到屏幕中间一行
L移动到屏幕最后一行
2.粘贴
p表示粘贴,它会把内容粘贴到当前位置的右侧或当前行的下方
P表示粘贴,它会把内容粘贴到当前位置的左侧或当前行的上方
3.删除
d表示删除,往往结合移动光标的命令一起使用
D表示删除一整行,也可以使用dd完成
X表示删除光标所在位置的一个字符
X表示删除光标左侧的一个字符
4.撤消和重做
1撒消最近的一次改变文件的操作
U撤消最近修改过的一行的所有修改
. 表示重复最近的一次操作
5.改变
c往往结合移动光标的命令使用,如Cw表示删除单词并进人输入模式
C删除当前行,并进入输入模式
s删除当前的字符并进入输入模式
S和C相同
6.查找
/表示向文件尾部方向查找。使用表示同方向继续查找,N表示反方向查找
?表示向文件头部方向查找,和N仍然是原来的意思。事实上还支持使用正则表达式,实现复杂的查找。
7.保存退出
ZZ表示保存退出
8.大小写转换:~
9.查找内容并替换 :%s/查找的内容/替换的内容
末行模式的使用
注意:本小节笔记的命令都要在冒号提示符下使用。
w表示保存但不要退出
q表示退出,如果没有修改,直接退出。如果有修改,会提示是否保存
q!放弃修改,直接退出,即不保存退出
q!如果同时编辑多个文件,表示所有文件都不保存直接退出
wq保存退出
x未修改直接退出,已修改,保存退出
w filename把正在编辑的文件使用filename进行保存,相当于另存为。也可以使用saveas filename命令
e!放弃所有修改,直接回到刚打开时的状态
e filename关闭当前正在编辑的文件,打开名为filename的文件事实上,可以同时打开多个文件,使用previous和next在它们之间切换
r filename读取名为filename的文件,把它的所有内容放在当前行的下面
sh不退出vi临时返回shell,可以使用exit再次返回vi
s默认情况下,只对当前行进行替换。如果当前行有多个要替换的文本,默认只替换第一个。
帮助
:help
程序安装及管理
将光盘挂载到目录
mount /dev/cdrom(光盘目录) /media/(挂在到media目录中)
rpm
rpm -ivh [lftp...rpm]:安装软件,i表示install
rpm -e [lftp]:卸载软件
rpm -Uvh [lftp...rpm]:升级软件,U表示update
rpm -q [lftp]:查询软件
rpm -qa [lftp]:查询电脑已安装的软件包名称
rpm -qi [lftp]:查询已经安装好的软件包的相关信息
rpm -qpi [lftp...rpm]:查询未经安装好的软件包的相关信息
rpm -ql lftp:查询所有磁盘上安装的文件
rpm -qc lftp:查询配置文件
rmp -e [lftp] -nodeps:排除依赖强行卸载
rmp -e [lftp] -force:强行安装软件,覆盖原来的文件
软件下载
yum search [] 搜索软件
yum info [] 查询详细信息
yum install [] 安装软件及其依赖
yum remove [] 卸载软件及其依赖
yum update [] 更新软件及其依赖
上述命令的yum都可以用dnf-3代替,现在的yum都是dnf-3的软连接
源码包安装(一般情况下,软件解压后会有readme文件,里面一般有详细信息)
tar xvfz xx.xx.tar.gz -C /usr/src #-C指定目录
./config
make #开始编译
make install #执行安装
安装时会报错:缺少依赖,缺啥装啥就好
账号权限及管理
用户账号:
超级账号
普通账户
程序用户
组账号:
基本组(私有组)
附加组(公共组)
UID和GID:
UID(User IDentity,用户标识号)
GID(Group Identify,组标识号)
对用户账号的管理
添加账户
[root@localhost ~]# useradd lisi #添加普通用户lisi,此时账户无法使用,需要设置密码才可用
[root@localhost ~]# passwd lisi #为用户lisi添加密码
[root@localhost ~]# cat /etc/passwd 所有用户信息都保存在该目录
得到最后一条信息:lisi:x:1001:1001::/home/lisi:/bin/bash
^ ^ ^ ^ ^
这是用户名 UID GID 宿主目录 登录地址
[root@localhost ~]# tail -1 /etc/shadow
lisi:$6$wBW5fdIRT.1KORGt$rDcLSMyuHjVRMm3mNQWSap9VAH1qKsXvDKIbFJZd9hbGcISyqwSjxkIhqKkQ6ORxHu1./K.gwp71cRANszj/M1:20020:0:99999:7:::
第一个字段:用户账户名称
第二个字段:sha加密的字符串,如果为*或!!表示不能登录,需要设置密码
第三个字段:上一次修改密码时间,从1970年1月1日(unix元年)起,修改密码所隔天数
第四个字段:则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是 0 的话,则没有限制
第五个字段:密码最长有效使用天数,默认99999,表示不限制
第六个字段:提前多少天警告密码要过期,默认7天
第七个字段:在密码过期后,不是立即失效,则在此字段规定的宽限天数内,用户还是可以登录系统的
第八个字段:账号失效时间,时间从1970年1月1日起算,默认为空,表示永久
第九个字段:没有用途,保留使用
[root@localhost ~]# useradd -u 2000 -g 2000 -c zhangsanyonghu -d /etc/zhangsan zhangsan
-u 表示自定义uid
-g 表示自定义gid
-d 表示自定义宿主目录
但学这个都多余,日常使用只需知道如何创建用户即可
[root@localhost ~]# passwd -l lisi #锁定账户
锁定用户 lisi 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -u lisi #解锁账户
解锁用户 lisi 的密码。
passwd: 操作成功
[root@localhost ~]# passwd -S lisi #查看账户信息
lisi LK 2024-10-24 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]#
[root@localhost ~]# passwd lisi #修改密码
修改账户属性usermode
usermode [属性] [参数] [username]
方便,但可以直接用vim修改/etc/passwd文件
各项参数与上方一致
删除用户账户userdel
[root@localhost ~]# userdel lisihua
删除账户时不删除用户宿主目录,稳妥做法:
[root@localhost ~]# userdel -r lee #删除用户同时删除其宿主目录
用户账户配置文件
配置文件位置/etc/skel 用户被创建时该目录同时被复制到宿主目录
bash_logout:用户每次退出系统时运行
bash_profile:用户每次登录时被执行
bashrc:文件中的命令会每次加载/bin/bash程序时执行
用户组
[root@localhost ~]# groupadd [group] #创建用户组
[root@localhost ~]# tail /etc/group #查看组信息
large:x:1000:
apache:x:48:
lisi:x:1001:
xi:x:1003:
market:x:1004:
[root@localhost ~]# gpasswd -a [user] [group] #将用户分配到组
[root@localhost ~]# groupdel [group] #删除用户组
查询账户信息
[root@localhost ~]# id [username] #查询用户信息
用户id=1000(user) 组id=1000(user) 组=1000(user)
[root@localhost ~]# groups large #查询用户所属组
[root@localhost ~]# who #
large seat0 2024-10-24 08:56 (login screen)
large tty2 2024-10-24 08:56 (tty2)
large pts/1 2024-10-24 08:58 (192.168.187.1)
[root@localhost ~]finger(选项)(参数)
-l:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容;
-m:排除查找用户的真实姓名;
-s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话;
-p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。
文件访问权限和归属
访问权限
读取r:允许查看文件内容、显示目录列表
写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行x:允许运行程序、切换目录
归属(没写完)
属主:拥有该文件所属的账户
查看文件权限
[root@localhost large]# ls -l
总用量 0
drwxr-xr-x. 2 large large 6 9月 5 19:59 公共
drwxr-xr-x. 2 large large 6 9月 5 19:59 模板
drwxr-xr-x. 2 large large 6 9月 5 19:59 视频
drwxr-xr-x. 2 large large 34 9月 12 09:47 图片
drwxr-xr-x. 2 large large 6 9月 5 19:59 文档
drwxr-xr-x. 3 large large 16 9月 26 15:51 下载
drwxr-xr-x. 2 large large 6 9月 5 19:59 音乐
drwxr-xr-x. 2 large large 6 9月 5 19:59 桌面
drwxr-xr-x. 2 large large 19 10月 17 09:30 exam
^ ^ ^
文件类型权限 属主 属组
改变权限
[root@localhost large]# chmod +x exam #为文件添加执行权限,'+'为添加权限,'-'为删除权限
chmod [ugoa] [+-=] [rwx] filename #ugoa表示所有者(u),所属组(g),其他(o),所有用户(a)
[root@localhost ~]# chmod 600 exam #600三个数字分别表示文件用户权限,即文件所有者、文件所属用户、 其他用户,数字表示权限数字总和,即6=4+2可读可写
常用-R:递归修改指定目录所有子项
变更文件或目录的拥有者或所属群组
chown (选项) (参数)
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。
磁盘管理
/devhd:并口硬盘
/dev/sd:串口硬盘 SCSI硬盘
/dev/nvme:固态硬盘