小白从零开始勇闯人工智能Linux初级篇(Linux的基本功能、基础命令和常用工具)
引言
我们为什么要学习Linux,想象一下,你找到了一个AI开源项目,准备运行它。结果弹出一堆错误,因为它的依赖库在Windows上安装极其困难。而且你将来需要租用云服务器来训练模型,你会发现99%的服务器都运行着Linux系统。Linux是AI世界的通用语言和基石。学会Linux,意味着拿到了开启AI世界大门的钥匙。
一、理解Linux的骨架与规则
1、目录结构- 一切皆文件
Linux不是一个完整的操作系统,而是一个操作系统内核。我们通常所说的"Linux系统"实际上是"Linux发行版",包含了Linux内核加上各种应用软件。Linux没有C盘、D盘的概念,整个系统只有一个根目录/,所有文件和设备都像树枝一样从这里生长出去。
Linux采用树形目录结构,所有内容都以文件形式组织,包括硬件设备。
/ # 根目录,所有目录的起点
| /bin #存放二进制可执行文件(ls,cat,mkdir等)
| /boot #存放用于系统引导时使用的各种文件
| /dev #存放设备文件
| /lib #存放跟文件系统中的程序运行所需要的共享库及内核模块
| /proc #虚拟文件系统,存放当前内存的映射
| /mnt #挂载目录
| /sbin #存储管理级别的二进制执行文件
|__ /home # 用户家目录,存储个人文件和配置
| |__ /home/username # 你的个人工作空间
| /root # 超级管理员root的家目录
|__ /etc # 系统配置文件存放地
│ |__/etc/passwd # 用户账户信息
| |__/etc/group # 用户组信息
|__ /var # 经常变化的文件
│ |__ /var/log # 系统日志文件
|__/opt # 第三方软件安装目录
│ |__/opt/anaconda3 # Anaconda通常安装在这里
|__/usr/bin # 用户命令和应用程序
|__/usr/local/bin # 本地编译安装的程序
|__/tmp # 临时文件
接下来让我们实际操作来探索一下根目录,在XShell(详情见上一篇安装内容)中输入以下代码:
# 查看根目录内容
ls /
# 查看详细目录信息
ls -l /

# 进入家目录的两种方式
cd /home/your_username
cd ~

# 查看当前路径
pwd

2、文件权限机制 - 系统安全的基石
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件的权限做了不同的规定。对应权限划分如下:

读写的权限分别为r (Read):读权限,值为4、w(write):写权限,值为2、x(Execute):执行权限,值为1。
总共有九个权限,可以分组三大组分别是:
1)、user:当前文件所属用户的权限
2)、group:与当前文件所属用户同一组的用户权限
3)、others:其他用户的权限
如需修改权限,可使用chmod命令,chmod命令的格式为:chmod [选项] 模式 文件或目录
例如我们首先创建 cc.py 测试文件并查看初始权限,然后依次给文件所有者添加执行权限、给所属组添加写权限、移除其他用户的读权限,最后为所有用户添加执行权限。
touch cc.py # 创建测试文件
ll cc.py # 查看初始权限
chmod u+x cc.py # 给所有者增加执行权限
chmod g+w cc.py # 给组增加写权限
chmod o-r cc.py # 移除其他人的读权限
chmod a+x cc.py # 给所有用户增加执行权限
ll cc.py # 查看修改后的权限

3、用户及用户组管理
Linux系统采用多用户多任务的分时架构,要使用系统资源必须通过系统管理员创建的个人账户登录。这种账户机制具有双重作用:对管理员而言,能够跟踪用户活动并控制资源访问权限;对用户而言,可以安全地组织个人文件并保护隐私。每个账户都包含唯一的用户名和密码,成功登录后即可访问系统并进入专属的主目录。用户账户管理主要涵盖三个核心环节:
1)、账户的创建、删除与信息维护
2)、登录密码的设置与管理
3)、用户组的配置与权限分配
这样的设计既保证了系统资源的安全管控,又为每个用户提供了独立的工作空间。
使用useradd即可增加一个用户其命令格式为:useradd 选项 用户名。
当某个用户账户不再需要时,可以从系统中彻底移除。删除用户账户的本质是从 /etc/passwd 等系统配置文件中清除该用户的记录信息,必要时还会同步删除用户的专属主目录。在Linux系统中,使用 userdel 命令来删除现有用户账户,其基本语法为:userdel [选项] 用户名。其中最常用的选项是 -r,该选项的作用是在删除用户账户的同时,一并删除该用户对应的主目录及其内部所有文件,实现账户信息的完整清理。
修改已有用户的信息使用usermod命令,其格式是:usermod 选项 用户名。
指定和修改用户口令的Shell命令是passwd,命令的格式为:passwd 选项 用户名。
在Linux系统中,每个用户都至少属于一个用户组,这种机制允许系统管理员以组为单位批量管理用户权限。不同Linux发行版对用户组的实现略有差异,通常创建用户时会自动建立与其同名的用户组作为主组。用户组管理主要包括组的创建、删除和属性修改,这些操作本质上是对 /etc/group 系统文件进行更新。要新增用户组,需使用 groupadd 命令,其基本语法为 :groupadd [选项] 用户组名。通过该命令可以快速在系统中建立新的用户组架构,为后续的用户权限分配奠定基础。
如果要删除一个已有的用户组,可以使用groupdel命令,其格式为:groupdel 用户组
我们也可以通过groupmod命令修改用户组的属性,其使用格式为:groupmod 选项 用户组
我们来一个简单的操作:首先创建名为"ccc"的用户组,然后在该组下建立testuser用户并设置登录密码,接着我们将用户加入wheel附加组以提升权限,之后再修改ccc组的标识ID,最后按创建顺序的逆序去清理资源——删除用户及其主目录,并移除用户组。
# 创建名为ccc的用户组
groupadd ccc
getent group ccc #从系统数据库中获取ccc组的信息,确认组是否创建成功
# 创建新用户testuser并指定属于ccc组
useradd -m -g ccc testuser
id testuser #显示testuser用户的UID、GID以及所属的组
getent group ccc #再次查看ccc组的信息
# 为用户testuser设置登录密码
passwd testuser
# 将用户加入附加组wheel
usermod -aG wheel testuser
id testuser #再次查看testuser的用户和组信息
groups testuser #显示testuser所属的所有组
# 修改用户组属性(更改组GID)
getent group ccc #查看修改前ccc组的信息
groupmod -g 1005 ccc
getent group ccc #再次查看,确认GID已经修改
# 删除前的最终确认查看
id testuser
getent group ccc
ls -ld /home/testuser
lid -g wheel | grep testuser
# 删除用户及其主目录
userdel -r testuser
id testuser 2>/dev/null
ls -ld /home/testuser 2>/dev/null
# 删除用户组
groupdel ccc
getent group ccc 2>/dev/null

二、Linux的基础命令
在Linux中,命令行终端不像图形界面那样直观友好,却以其无可比拟的精准与强大,赋予了我们直接与系统内核对话的权限。我们穿梭于层层目录时不管是创建删除文件,还是操控进程、管理权限,只要掌握这些基础命令,就如同有了打开这座操作系统宝库的第一把钥匙,让我们得以摆脱鼠标的束缚,可以化繁为简,提高自己的工作效率。
1、查看路径及文件
在Linux命令行中,清晰地了解当前所处位置及目录内容是一切操作的前提。pwd命令能直接告诉我们当前的工作目录绝对路径。而查看目录内容则有功能丰富的ls家族:最简单的ls或dir会列出当前目录下的可见文件和目录名;ll(它是ls -l的缩写)则以详细列表形式展示,包括权限、所有者、大小和修改时间等关键信息,若想查看包括以点.开头的隐藏文件在内的所有项目,则需使用ls -a。此外,stat命令能提供关于一个文件的更深入、更详细的元数据信息。在默认的配色方案中,终端会以不同颜色高亮不同类型的文件,从而让你快速识别:蓝色代表目录,绿色代表可执行文件,红色代表压缩包,浅蓝色代表链接文件,灰色则代表其他普通文件。

2、文件及目录操作
在Linux中,管理目录结构离不开基础命令:touch创建空文件;mkdir创建目录,-p参数可递归创建父目录。mv命令用于文件或目录的重命名。导航则依赖cd命令,如cd ..返回上级,cd ~直达家目录,使用路径参数可精准切换。


切换目录操作
cd . # 留在当前目录(无实际变化)
cd .. # 切换到上级目录
cd / # 切换到根目录
cd ~ # 切换到当前用户的家目录
cd project/src # 使用相对路径切换到当前目录下的 project/src 目录

3、删除操作
在Linux中,删除操作需谨慎使用rm命令。rm可直接删除文件,rm -r用于递归删除目录及其内容,系统会要求确认;而rm -f强制删除不提示,rm -rf则是强制递归删除目录的强力组合,使用时一定要确认目标正确。
# 查看当前目录内容
$ ls -l
# 删除单个文件
$ rm ai_script.py
# 删除目录(需要确认)
$ rm -r my_folder
# 强制删除,不提示确认
$ rm -f cccc.txt

4、复制粘贴及剪切
在Linux中,文件操作通过cp和mv命令实现。cp用于复制文件,-r参数可递归复制目录;mv则用于移动(剪切)文件或目录,也可用于重命名。常用选项包括:-f强制覆盖、-i交互确认、-l创建硬链接、-s创建软链接。
# 查看当前目录内容
ls -l
# 1. 复制文件到当前目录
cp new_file.txt new_file_copy.txt
# 2. 复制文件到project目录
cp new_file.txt project/
# 3. 移动(剪切)文件到project目录
mv new_file.txt project/

5 、查看文件内容
在Linux中查看文件内容有多种方式。cat命令用于顺序显示全文,适合小文件,tac则逆向显示。两者结合重定向可实现文件合并。cat -b可为非空行添加行号。对于长文件,more和less提供分屏浏览:空格翻页,回车下行,b回退,q退出 ,其中less功能更丰富,支持前后自由导航。
# 创建示例文件
echo -e "第一\n第二\n第三" > example.txt
# 1. 顺序查看文件内容
cat example.txt
第一
第二
第三
# 2. 逆序查看文件内容
tac example.txt
第三
第二
第一
# 3. 合并多个文件
cat file1.txt file2.txt > merged.txt
# 4. 显示行号(非空行)
cat -b example.txt
1 第一
2 第二
3 第三


6、查看文件大小
在Linux中,du命令用于统计文件和目录的磁盘空间使用情况。常用选项包括:-s显示总大小,-h以人们习惯的形式显示,-c显示总计。du -sh可直接查看目录总大小,du -ah则显示目录下所有文件的详细大小分布。
# 查看当前目录内容
ls -l
# 1. 查看单个文件大小
du -h example.txt
# 2. 查看目录总大小(最常用)
du -sh project
# 3. 查看目录详细大小分布
du -ah project
# 4. 查看当前目录所有文件大小
du -ah --max-depth=1
# 5. 统计并显示总计
du -ch example.txt project


7、编辑文件
在Linux中,vi/vim是强大的文本编辑器,包含三种模式:命令模式(打开文件默认)、插入模式(按i进入,可编辑内容)和末行模式(按:进入,用于保存退出)。按Esc可从插入模式返回命令模式,在末行模式输入wq保存并退出。
# 1. 使用vim打开文件(进入命令模式)
vim new_file_copy.txt
# 2. 按 i 键进入插入模式,此时可编辑文件内容
# 屏幕左下角会显示 -- INSERT -- 标志
# 3. 编辑完成后,按 Esc 键返回命令模式
# 4. 按shift+: 进入末行模式,输入以下命令:
:wq # 保存并退出
:q # 直接退出(未修改时)
:q! # 强制退出不保存
:w # 仅保存不退出
# 5. 在命令模式下的常用操作:
yy # 复制当前行
p # 粘贴
dd # 删除当前行
/文本 # 搜索指定文本

三、Linux常用工具
1、压缩解压工具
在Linux中,tar是核心且功能强大的归档与压缩工具,被誉为“打包专家”。它不仅能将大量文件合并为一个归档包,还支持gzip(.gz)、bzip2(.bz2)等多种压缩算法以减小体积。掌握其-zcvf(创建压缩包)、-xvf(解压)及-tf(查看内容)等关键命令,对于管理和传输庞大的AI数据集、模型文件及日志都能提供很大的帮助。
1)、打包文件和目录
tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg
#将anaconda-ks.cfg文件打包为anaconda-ks.cfg.tar

tar -cvf example.txt.tar project/
#打包目录

tar命令也可以打包多个文件和目录,但要注意用空格分开。
tar -cvf cc.tar anaconda-ks.cfg example.txt/

2)、打包并压缩目录
压缩命令并不能直接压缩目录,要先用 tar 命令将目录打包,然后再用 gzip 命令或 bzip2 命令对打包文件进行压缩。
gzip example.txt.tar
#压缩
上一步我们已经对example.txt打包了,所以这里直接压缩即可。

3)、tar解打包操作
tar -xvf 压缩包
tar -xvf anaconda-ks.cfg.tar
![]()
如果想要指定解压位置,则需要使用 "-C(大写)" 选项。
tar -xvf anaconda-ks.cfg.tar -C/root

4)、tar同时打包和压缩
tar命令可同时完成打包与压缩。使用-z选项处理.tar.gz格式(如tar -zcvf pack.tar.gz dir压缩,tar -zxvf pack.tar.gz解压),-j选项则对应.tar.bz2格式。
tar -zcvf example.txt.tar.gz example.txt

tar -zxvf example.txt.tar.gz

5)、unzip命令
unzip命令可以查看和解压缩 zip 文件。
unzip -l example.zip #查看压缩包内容

unzip example.zip #解压zip文件到当前目录

2、Vim
1、vim操作详解
1)、查找文本
在命令模式下输入英文状态的下的/
/a 从光标所在位置向前查找字符串a
/^a 查找以a为行首的行
/abc$ 查找以a为行尾的行
?a 从光标所在为主向后查找字符串a
n 向同一方向重复上次的查找指令
N 向相反方向重复上次的查找指令
2)、替换文本
r 替换光标所在位置的字
R 从光标所在位置开始替换并覆盖后面的字符,按esc结束命令
:s/a/b/g 将当前光标所在的行中所有的a用b替换
/n1,n2/a/b/g 将文件里n1到n2行中所有的a用b替换
:%s/a/b/g 将文件所有的a用b替换
3)、vim快捷键
h 光标向左移动一位
j 光标向下移动一行
k 光标向上移动一行
l 光标向右移动一位
w或W 光标移动到下个单词的首位
b或B 光标移动到上个单词的首位
e或E 光标移动到下个单词的尾部
nw或nW 光标向右移动n个单词
nb或nB 光标向左移动n个单词
0或^ 光标移动到当前行的首位
$ 光标移动到当前行的尾部
fa或Fa 光标移动到当前行中下一个a字符处
gg 光标移动到文件开头
G 光标移动到文件末尾
nG 光标移动到n行
:n 编辑模式下可以将光标快速定位到指定行的行首
u 撤销最近一次对文本的修改
Ctrl+R 恢复最近一次对文本的修改
U 第一次使用会撤销对当前行的修改,第二次使用则会恢复对当前行的修改
起始行,终止行 s/^/#/g 在指定范围行加"#"注释
起始行,终止行s/^#//g 取消连续行注释
:set nu 显示行号
:set nonu 不显示行号
到这里我们就基本了解了Linux的规则与一些常见的基础命令以及其常用的工具了,这些还需我们牢记并且多加练习,下一篇将详细的了解shell编程。
更多推荐



所有评论(0)