Skip to content

Linux

1 Linux命令的入门

1.1 Linux命令基础

Linux命令的基础格式

无论什么命令,在Linux中都有通用的格式:commard [-options] -parameter

  • commard:命令本身
  • -options:[可选,非必填],命令的一些选项,可以通过控制命令的行为细节
  • -parameter:[可选,非必填],命令的参数,多数用于命令的志向目标等

比如说:

bash
ls -l /home/itheima,ls是命令本身,-l是选项,/home/itheima是参数

1.2 ls命令

ls 是 Linux 中最常用的文件列表命令,用于显示目录内容。

bash
ls [选项] [目录路径]

若不指定目录,默认显示当前目录内容。

bash
ls
显示: Desktop  Documents  Downloads  itheima  Music  Pictures  Public  Templates  Videos

常用选项

选项作用示例
-l长格式显示(包含权限、大小、时间等)ls -l /dir
-a显示隐藏文件(以 . 开头的文件)ls -a ~
-h人性化显示文件大小(如 1K 而非 1024ls -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

对于常用选项,一般可以混用:

bash
[bai@bogon ~]$ ls -al
total 32

在 Linux 中,/home 目录是用户存储个人文件和配置的核心区域。/home 目录的作用

  • 用户专属空间:每个用户(包括 root)都有独立的目录(如 /home/username),存放个人文件、配置、桌面环境等。
  • 持久化数据:重启后数据依然存在,与临时目录(如 /tmp)区分开。
  • 配置文件仓库:用户的 shell 配置(.bashrc)、桌面环境设置(如 KDE Plasma 的 .config)等均存储在此。

1.3 cd和pwd命令

cd 是 Linux 中最基础的目录切换命令,用于在文件系统中导航。

基本语法

bash
cd [选项] [目录路径]

默认行为:无参数时,切换到当前用户的主目录(如 ~)。

示例

bash
cd              # 进入用户主目录
cd /home/user   # 切换到绝对路径 /home/user
cd Documents    # 进入当前目录下的 relative/path/Documents

以下是 cd 命令的常用选项整理表格:

选项作用示例
-切换到上一次所在的目录(相当于 cd !$OLDPWDcd /var/logcd -(返回 /var/log
-P不跟随符号链接,显示物理路径(直接切换到符号链接指向的实际目录)cd -P /path/to/symlink
-L跟随符号链接(默认行为),切换到符号链接指向的目录cd -L /path/to/symlink
~进入当前用户的主目录(等价于 $HOMEcd ~/home/username
~username进入指定用户 username 的主目录cd ~root/root
/切换到根目录(绝对路径起点)cd //
..进入上级目录(等同于 cd parent_dircd ../../(上两级目录)
--help显示帮助文档(所有命令的通用选项)cd --help

pwdPrint Working Directory)是 Linux 中用于显示当前工作目录的绝对路径的命令。简单来说,它告诉你“你现在在哪里”。

基本语法

bash
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 匹配 abcaacfind . -name "file?.log"精确匹配文件名模式
{}扩展选项:用于批量展开多个路径(需结合 -o 或 `` 使用)cp file{1,2,3}.txt /backup/
~user其他用户的主目录(需权限)cd ~root(进入 root 用户的主目录)切换到其他用户空间(如管理员)
**递归匹配:匹配所有子目录及其内容(需 globstar 选项启用)find . **/*.txt(递归查找所有 .txt深度优先搜索文件
-上一次所在的目录(cd - 切换回去)cd /var/logcd -(返回 /var/log快速跳转至最近访问的目录

1.5 mkdir命令

在 Linux 中,mkdir(Make Directory)命令用于创建目录。以下是其核心用法:

bash
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 命令用于 创建空文件修改文件的访问/修改时间戳

创建空文件(若文件不存在):

bash
touch filename.txt     # 在当前目录创建空文件

更新时间戳(若文件已存在):

bash
touch filename.txt     # 将访问/修改时间同步为当前时间

cat 命令用于查看文件内容(小文件适用)。

bash
# 查看文件内容(显示行号)
cat -n log.txt

more 命令用于分页查看文件内容(大文件更高效)。支持交互式操作(如翻页、搜索、跳转)。

常用操作

  • 空格键:翻页。
  • 回车键:逐行查看。
  • /关键词:搜索指定字符串。
  • q:退出。
  • -c:显示总行数。
  • -f:不换行显示(滚动模式)。

示例:

bash
# 分页查看大文件
more large_log.txt

# 查看文件时统计行数
more -c configuration.conf

# 搜索关键词 "ERROR"
more -c /ERROR system.log

1.7 cp、mv、rm

cp命令可以用于复制文件,文件夹,cp命令来自英文单词:copy

语法: cp [-r] 参数1 参数2

  • -r选项 可选,用于复制文件夹使用,表示敌对
  • 参数1 Linux路径,表示被复制的文件或文件夹
  • 参数2 Linux路径,表示复制到的位置
bash
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=allcp -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同样可以用来改名字

shell
mv test2.txt test3.txt

rm命令可用于删除文件、文件夹。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),从而实现命令之间的数据流串联。

  • 数据传递:将前一个命令的输出作为后一个命令的输入,无需中间文件。

  • 链式处理:通过多个管道符串联命令,实现复杂的数据处理流程。

语法:

bash
command1 | command2 | command3 ...
  • command1 的输出 → command2 的输入 → command3 的输入,依此类推。

比如说:

sh
[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命令,可以查看文件尾部内容,跟踪文件的最新更改,语法如下:

sh
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
:wqZZ保存并退出
: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权限

  1. 切换到root用户,执行visudo命令,会自动通过vim打开:/etc/sudoers

  2. 在文件最后添加上:

    tex
    bai ALL=(ALL) NOPASSWD: ALL
  3. 最后通过wq保存

2.2 用户,用户组管理

linux中可以有多个用户,以及多个用户组,其中用户组可以看成一个可以批量管理权限的小组,一个用户可以参加到多个用户组中。

用户组

创建用户组

sh
groupadd test

删除用户组

sh
groupdel test

用户

sh
# 创建用户
useradd test
# 删除用户
userdel test
# 查看用户所属组
id bai
# 查看用户所属的用户组
groups test
# 修改用户所属组(itcast:用户组,test4:用户名)
usermod -aG itcast test4

getent

用来查看当前系统数据库(如用户,用户组,主机等)中的条目

sh
# 用来查看当前系统的所有用户
getent passwd
# 用来查看当前系统的所有用户组
getent group

2.3 查看权限控制

权限控制,是linux中非常中要的功能,一般情况下,我们可以通过命令来查看文件的相关权限。

sh
[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

其中,第一列是文件 文件夹的控制权限,第二列是文件大小,第三列是文件 文件夹所属用户,第四列是文件 文件夹所属用户组。

image-20250522102729547

image-20250522102801897