Linux
1 Linux命令的入门
1.1 Linux命令基础
Linux命令的基础格式
无论什么命令,在Linux中都有通用的格式:commard [-options] -parameter
commard:命令本身-options:[可选,非必填],命令的一些选项,可以通过控制命令的行为细节-parameter:[可选,非必填],命令的参数,多数用于命令的志向目标等
比如说:
ls -l /home/itheima,ls是命令本身,-l是选项,/home/itheima是参数1.2 ls命令
ls 是 Linux 中最常用的文件列表命令,用于显示目录内容。
ls [选项] [目录路径]若不指定目录,默认显示当前目录内容。
ls
显示: Desktop Documents Downloads itheima Music Pictures Public Templates Videos常用选项:
| 选项 | 作用 | 示例 |
|---|---|---|
-l | 长格式显示(包含权限、大小、时间等) | ls -l /dir |
-a | 显示隐藏文件(以 . 开头的文件) | ls -a ~ |
-h | 人性化显示文件大小(如 1K 而非 1024) | ls -lh /Downloads |
-d | 显示目录本身(而非目录内容) | ls -d /path/to/dir |
-r | 反序显示(按修改时间从新到旧) | ls -tr |
-t | 按修改时间排序(最新在前) | ls -t /Documents |
-s | 显示文件大小(以块为单位) | ls -s /var/log |
-c | 按文件状态(如是否更改)排序 | ls -c /tmp |
-l --color=auto | 自动颜色区分文件类型(如蓝色为目录) | ls --color=auto |
对于常用选项,一般可以混用:
[bai@bogon ~]$ ls -al
total 32在 Linux 中,/home 目录是用户存储个人文件和配置的核心区域。/home 目录的作用
- 用户专属空间:每个用户(包括 root)都有独立的目录(如
/home/username),存放个人文件、配置、桌面环境等。 - 持久化数据:重启后数据依然存在,与临时目录(如
/tmp)区分开。 - 配置文件仓库:用户的 shell 配置(
.bashrc)、桌面环境设置(如 KDE Plasma 的.config)等均存储在此。
1.3 cd和pwd命令
cd 是 Linux 中最基础的目录切换命令,用于在文件系统中导航。
基本语法
cd [选项] [目录路径]默认行为:无参数时,切换到当前用户的主目录(如 ~)。
示例
cd # 进入用户主目录
cd /home/user # 切换到绝对路径 /home/user
cd Documents # 进入当前目录下的 relative/path/Documents以下是 cd 命令的常用选项整理表格:
| 选项 | 作用 | 示例 |
|---|---|---|
- | 切换到上一次所在的目录(相当于 cd !$OLDPWD) | cd /var/log → cd -(返回 /var/log) |
-P | 不跟随符号链接,显示物理路径(直接切换到符号链接指向的实际目录) | cd -P /path/to/symlink |
-L | 跟随符号链接(默认行为),切换到符号链接指向的目录 | cd -L /path/to/symlink |
~ | 进入当前用户的主目录(等价于 $HOME) | cd ~ → /home/username |
~username | 进入指定用户 username 的主目录 | cd ~root → /root |
/ | 切换到根目录(绝对路径起点) | cd / → / |
.. | 进入上级目录(等同于 cd parent_dir) | cd ../../(上两级目录) |
--help | 显示帮助文档(所有命令的通用选项) | cd --help |
pwd(Print Working Directory)是 Linux 中用于显示当前工作目录的绝对路径的命令。简单来说,它告诉你“你现在在哪里”。
基本语法
pwd [选项]相对路径与绝对路径的区别:
- 绝对路径:以
/开头,明确指向文件系统中的唯一位置(如/var/log)。 - 相对路径:以当前目录为基准(如
./Documents表示当前目录下的Documents)。
以下是 pwd 命令的常用选项的表格:
| 选项 | 作用 | 示例 |
|---|---|---|
| -l | 显示详细路径 | pwd -l |
| -P | 不跟随符号链接,显示链接指向的实际路径(与默认行为相反) | pwd -P /var/www/html |
| --help | 显示帮助文档 | pwd --help |
1.4 特殊路径符号
以下是 Linux 中常用的特殊路径符号及其含义,整理成表格形式:
特殊路径符号表
| 符号 | 含义 | 示例 | 常见用途 |
|---|---|---|---|
~ | 当前用户的主目录(等价于 $HOME 变量) | cd ~ → /home/username | 快速进入用户主目录 |
. | 当前目录(自身目录) | ./script.sh(执行当前目录下的脚本) | 明确操作当前目录的文件 |
.. | 上级目录(父目录) | cd ../../(返回两级上级目录) | 向上导航目录树 |
/ | 根目录(文件系统的顶层目录) | /etc/passwd(绝对路径从根开始) | 绝对路径的起点 |
* | 通配符:匹配当前目录下所有文件/子目录(非递归) | ls *.txt(列出所有 .txt 文件) | 批量操作文件(如删除、复制) |
? | 通配符:匹配单个任意字符(如 a?c 匹配 abc、aac) | find . -name "file?.log" | 精确匹配文件名模式 |
{} | 扩展选项:用于批量展开多个路径(需结合 -o 或 ` | ` 使用) | cp file{1,2,3}.txt /backup/ |
~user | 其他用户的主目录(需权限) | cd ~root(进入 root 用户的主目录) | 切换到其他用户空间(如管理员) |
** | 递归匹配:匹配所有子目录及其内容(需 globstar 选项启用) | find . **/*.txt(递归查找所有 .txt) | 深度优先搜索文件 |
- | 上一次所在的目录(cd - 切换回去) | cd /var/log → cd -(返回 /var/log) | 快速跳转至最近访问的目录 |
1.5 mkdir命令
在 Linux 中,mkdir(Make Directory)命令用于创建目录。以下是其核心用法:
mkdir [选项] 目录名- 默认行为:在当前目录下创建指定名称的单层目录。若目录已存在,命令会报错。
以下是 mkdir 命令常见选项的表格整理:
| 符号 | 含义 | 示例 | 常见用途 |
|---|---|---|---|
-r 或 --recursive | 递归创建多级目录 | mkdir -r parent/child/grandchild | 需要一次性创建嵌套多层目录时。 |
-p 或 --parents | 创建父目录 | mkdir -p logs/archive | 确保目录路径存在,避免因中间目录缺失导致错误。 |
-m 或 --mode | 指定目录权限 | mkdir -m 700 private_dir | 需要自定义目录权限时。 |
-v 或 --verbose | 显示详细输出 | mkdir -v output | 调试或确认目录是否成功创建时 |
1.6 touch、cat、more
touch 命令用于 创建空文件 或 修改文件的访问/修改时间戳。
创建空文件(若文件不存在):
touch filename.txt # 在当前目录创建空文件更新时间戳(若文件已存在):
touch filename.txt # 将访问/修改时间同步为当前时间cat 命令用于查看文件内容(小文件适用)。
# 查看文件内容(显示行号)
cat -n log.txtmore 命令用于分页查看文件内容(大文件更高效)。支持交互式操作(如翻页、搜索、跳转)。
常用操作
- 空格键:翻页。
- 回车键:逐行查看。
- /关键词:搜索指定字符串。
- q:退出。
-c:显示总行数。-f:不换行显示(滚动模式)。
示例:
# 分页查看大文件
more large_log.txt
# 查看文件时统计行数
more -c configuration.conf
# 搜索关键词 "ERROR"
more -c /ERROR system.log1.7 cp、mv、rm
cp命令可以用于复制文件,文件夹,cp命令来自英文单词:copy
语法: cp [-r] 参数1 参数2
- -r选项 可选,用于复制文件夹使用,表示敌对
- 参数1 Linux路径,表示被复制的文件或文件夹
- 参数2 Linux路径,表示复制到的位置
cp file.txt /home/user/Documents # 复制文件到指定目录
cp -r folder /backup # 递归复制目录(含子文件)以下是 cp 命令常用选项的表格整理,涵盖核心功能与使用场景:
| 符号 | 含义 | 示例 | 常见用途 |
|---|---|---|---|
-r | 递归复制目录及内部文件(必须用于目录) | cp -r src/ dest/ | 复制整个目录树 |
-f | 强制覆盖目标文件(无需确认) | cp -f file.txt backup.txt | 覆盖文件时不需交互 |
-i | 覆盖前提示用户确认(输入 y 才执行) | cp -i config.conf config.conf.bak | 避免误删重要文件 |
-v | 显示详细执行过程( verbose) | cp -rv folder /backup/ | 调试或观察复制流程 |
-a | 彻底保留文件属性(等价于 -dR --preserve=all) | cp -a /data /backup/ | 备份时保留权限、时间戳、链接等 |
-d | 保留符号链接(不复制链接指向的实际文件) | cp -d symlink.txt dest/ | 复制符号链接本身 |
-h | 将符号链接视为普通文件处理(配合 -l 使用) | cp -hl /link/file.txt ./ | 显示链接的真实路径(非复制) |
-l | 创建硬链接(替代复制,节省空间) | cp -l large.log linked.log | 需频繁访问大文件时替代复制 |
--preserve | 保留所有权、时间戳等元数据(需搭配其他选项) | cp --preserve=all file.txt /backup/ | 特殊权限文件备份 |
-s | 对备份文件添加 ~ 后缀(默认行为) | cp -s file.txt file.txt~ | 生成备份文件(可自定义后缀) |
mv命令可以用于移动文件\文件夹,mv命令来自英文单词:move
语法:mv 参数 参数
- 参数1,Linux路径,表示被移动的文件或文件夹
- 参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
mv同样可以用来改名字
mv test2.txt test3.txtrm命令可用于删除文件、文件夹。rm命令来自英文单词:remove
语法:rm [-r-f] 参数1 参数2 参数N
同cp命令一样,-r选项用于删除文件夹
-f表示force,强制删除(不会弹出提示确认信息)
TIP
普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示所以一般普通用户用不到-f选项
参数1、参数2、.、参数N表示要删除的文件或文件夹路径,按照空格隔开
rm命令支持通配符*,用来做模糊匹配, *符号表示通配符,即匹配任意内容(包含空),示例:
- test*,表示匹配任何以test开头的内容
- *test,表示匹配任何以test结尾的内容
*test*,表示匹配任何包含test的内容
进入临时root用户 su - root,然后用完记得退出。
1.8 which、find
which 我们在前面学习的Linux命令,其实它们的本体就是一个个的二进制可执行程序,和windows系统中的.exe文件,是一个意思。
我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里
语法:which 要查找的命令
find命令搜索指定的文件。
-按文件名查找文件
语法:find 起始路径 -name "被查找文件名"
-按文件大小查找文件
语法:find 起始路径 -size +|-n[kMG]
- +、-表示大于和小于
- n表示大小数字
- kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
1.9 grep、wc和管道符
可以通过grep命令,从文件中通过关键字过滤文件行。
语法:grep [-n] 关键字 文件路径
- 选项-n,可选,表示在结果中显示匹配的行的行号。
- 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用“”将关键字包围起来。
- 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
wc命令做数量统计
可以通过wc命令统计文件的行数、单词数量等
语法:wc [-c-m-1-w] 文件路径
- 选项,-c,统计bytes数量
- 选项,-m,统计字符数量
- 选项,-l,统计行数
- 选项,-W,统计单词数量
- 参数,文件路径,被统计的文件,可作为内容输入端口
Linux 中的管道符(|)是一种强大的工具,用于将一个命令的**标准输出(stdout)**直接传递给另一个命令的标准输入(stdin),从而实现命令之间的数据流串联。
数据传递:将前一个命令的输出作为后一个命令的输入,无需中间文件。
链式处理:通过多个管道符串联命令,实现复杂的数据处理流程。
语法:
command1 | command2 | command3 ...command1的输出 →command2的输入 →command3的输入,依此类推。
比如说:
[bai@localhost ~]$ cat text.txt | grep "itcast"
itheima is a brand of itcast.
itcast stock code is 003032.1.10 echo、tail和重定向符
echo
可以使用echo命令在命令行内输出指定内容
- 语法:echo 输出的内容
- 无需选项,只有一个参数,表示要输出的内容,复杂内容可以用””包围
反引号
反引号的内部会被当成命令进行执行,然后可以用echo输出反引号内部执行的结果。
重定向
我们再来学习两个特殊符号,重定向符:>和>>
> 将左侧命令的结果,覆盖写入到符号右侧指定的文件中
>> 将左侧命令的结果,追加写入到符号右侧指定的文件中
tail命令
使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改,语法如下:
tail[-f-num] Linux路径参数,Linux路径,表示被跟踪的文件路径
选项,-f,表示持续跟踪
选项,-num,表示,查看尾部多少行,不填默认10行
1.11 vim编辑器
vim具有三种模式:普通,插入,命令。在使用vim进行编辑的时候,文件路径不存在,则会自动的创建文件
常用命令
| 模式 | 命令 | 描述 |
|---|---|---|
| 普通模式 | h, j, k, l | 左、下、上、右移动光标 |
w | 移动到下一个单词的开头 | |
b | 移动到上一个单词的开头 | |
0 | 移动到行首 | |
$ | 移动到行尾 | |
gg | 移动到文件开头 | |
G | 移动到文件末尾 | |
dd | 删除当前行 | |
yy | 复制当前行 | |
p | 在光标下方粘贴复制或剪切的内容 | |
u | 撤销上一步操作 | |
Ctrl + r | 重做被撤销的操作 | |
/ | 进入搜索模式 | |
n | 向下继续搜索 | |
N | 向上继续搜索 | |
| 插入模式 | i | 在当前光标位置前进入插入模式 |
a | 在当前光标位置后进入插入模式 | |
I | 移动到行首并进入插入模式 | |
A | 移动到行尾并进入插入模式 | |
| 可视模式 | v | 进入字符选择模式,允许逐字符选择 |
V | 进入行选择模式,允许逐行选择 | |
Ctrl + v | 进入块选择模式,允许按矩形区域选择 | |
| 命令模式 | :w | 保存文件 |
:q | 退出Vim | |
:wq 或 ZZ | 保存并退出 | |
:q! 或 ZQ | 不保存强制退出 |
2 linux用户和权限
2.1 linux的root用户
无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。
在Linux系统中,拥有最大权限的账户名为:root(超级管理员),而在前期,我们一直使用的账户是普通的用户:bai。root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。
su命令
在linux中,一般使用su - root切换成root权限,在完成root权限操作之后,在使用exit回到上一个用户,也可以使用快捷键ctrl d
sudo命令
我们可以在运行的命令前面加上sudo,让这个命令临时获得root权限,以root身份去执行。当然不是所有的普通用户都有权限去执行sudo这个命令,需要为普通用户配置sudo权限
为普通用户配置sudo权限
切换到root用户,执行
visudo命令,会自动通过vim打开:/etc/sudoers在文件最后添加上:
texbai ALL=(ALL) NOPASSWD: ALL最后通过
wq保存
2.2 用户,用户组管理
linux中可以有多个用户,以及多个用户组,其中用户组可以看成一个可以批量管理权限的小组,一个用户可以参加到多个用户组中。
用户组
创建用户组
groupadd test删除用户组
groupdel test用户
# 创建用户
useradd test
# 删除用户
userdel test
# 查看用户所属组
id bai
# 查看用户所属的用户组
groups test
# 修改用户所属组(itcast:用户组,test4:用户名)
usermod -aG itcast test4getent
用来查看当前系统数据库(如用户,用户组,主机等)中的条目
# 用来查看当前系统的所有用户
getent passwd
# 用来查看当前系统的所有用户组
getent group2.3 查看权限控制
权限控制,是linux中非常中要的功能,一般情况下,我们可以通过命令来查看文件的相关权限。
[bai@localhost ~]$ ll
total 12
drwxr-xr-x. 3 bai bai 35 Apr 28 17:19 Desktop
drwxr-xr-x. 2 bai bai 6 Mar 15 20:04 Documents
drwxr-xr-x. 2 bai bai 6 Mar 15 20:04 Downloads
-rw-rw-r--. 1 bai bai 25 May 12 18:25 hello2.txt
-rw-rw-r--. 1 bai bai 20 May 12 18:22 hello.txt
drwxr-xr-x. 2 bai bai 6 Mar 15 20:04 Music
drwxr-xr-x. 2 bai bai 6 Mar 15 20:04 Pictures
drwxr-xr-x. 2 bai bai 6 Mar 15 20:04 Public
drwxr-xr-x. 2 bai bai 26 Apr 13 04:01 study
drwxr-xr-x. 2 bai bai 6 Mar 15 20:04 Templates
-rw-rw-r--. 1 bai bai 325 May 12 19:31 text.txt
drwxr-xr-x. 2 bai bai 6 Mar 15 20:04 Videos其中,第一列是文件 文件夹的控制权限,第二列是文件大小,第三列是文件 文件夹所属用户,第四列是文件 文件夹所属用户组。


