Linux基础指令实战指南:从入门到精通

1. 为什么你需要学习Linux基础指令?

如果你刚接触Linux,看到黑乎乎的终端窗口和闪烁的光标,可能会有点发怵。我刚开始用Linux的时候也是这种感觉,觉得这玩意儿是给“黑客”或者“大神”用的,离我这个普通开发者很远。但后来我发现,无论是想搭建一个自己的网站,还是想管理云服务器,甚至是日常处理一些批量文件,都绕不开Linux命令行。它就像一把万能钥匙,能打开服务器世界的大门。

简单来说,Linux指令就是你和计算机“内核”对话的语言。内核是操作系统的核心,负责管理硬件、内存、进程这些底层的东西,但它太高冷了,不直接和用户交流。Shell(壳)就是这个翻译官,它把你想做的事情(比如“看看这个文件夹里有什么”)翻译成内核能懂的命令去执行,再把结果(比如“文件夹里有三个文件”)翻译成你能看懂的文字显示出来。我们常说的“敲命令”,其实就是在和Shell对话。

所以,掌握基础指令,你就能直接指挥计算机干活,效率比用鼠标点来点去高得多。比如,你想找出服务器上所有昨天修改过的日志文件,用图形界面得一个个文件夹翻,但用命令行,一行指令就能搞定。这不仅是效率问题,更是一种思维方式。很多企业招聘运维、后端开发,都要求会Linux,不是没有道理的。别怕,跟着我一步步来,你会发现它其实很友好,甚至有点“上瘾”。

2. 文件与目录操作:像管理你的书桌一样

想象一下你的电脑桌面,上面有文件夹、文档、图片。Linux的文件系统也是一棵倒挂的树,最顶端是根目录 /,所有东西都从这里长出来。我们操作文件,无非就是“看看有什么”、“去哪里”、“新建什么”、“删掉什么”。这几个动作,对应着最核心的几个命令。

2.1 我在哪?我要看什么?(pwd, ls, cd)

刚登录系统,你首先得知道自己站在哪里。pwd(Print Working Directory)就是干这个的,它会告诉你当前所在的绝对路径。

pwd
# 输出可能是:/home/yourname

知道了位置,下一步就是看看周围有什么。ls(list)命令就像你的眼睛。直接输入 ls,它会列出当前目录下所有非隐藏的文件和文件夹。但它的能力远不止于此,配合选项(options),它能告诉你更多细节。

我常用的几个组合:

  • ls -l:以长格式列出,能看到文件权限、所有者、大小、修改时间等详细信息。这是我最常用的,一眼就能看清文件全貌。
  • ls -a:显示所有文件,包括以点 . 开头的隐藏文件(比如 .bashrc 这种配置文件)。
  • ls -lh:在 -l 的基础上,把文件大小用 K、M、G 这样人类易读的方式显示,比直接看字节数友好多了。
  • ls -la:组合拳,显示所有文件(包括隐藏的)的详细信息。
ls -la
# 输出类似:
# drwxr-xr-x  5 user group  4096 Mar 10 14:30 .
# drwxr-xr-x 18 user group  4096 Mar  9 10:15 ..
# -rw-r--r--  1 user group   220 Mar  9 10:15 .bash_logout
# -rw-r--r--  1 user group  3771 Mar  9 10:15 .bashrc
# drwxrwxr-x  2 user group  4096 Mar 10 14:30 my_project

看完了,想换个地方?用 cd(Change Directory)来移动。cd 后面跟路径,可以是绝对路径(从根 / 开始),也可以是相对路径(从当前位置开始)。

cd /usr/local  # 绝对路径,切换到 /usr/local
cd ..          # 相对路径,返回上一级目录
cd ~           # 切换到当前用户的家目录,比如 /home/yourname
cd -           # 切换到上一次所在的目录,在两个目录间来回跳转特别方便
cd my_project  # 相对路径,进入当前目录下的 my_project 文件夹

提示:Tab 键是你的好朋友。输入路径时,按一下 Tab 可以自动补全,按两下会列出所有可能的选项,能有效防止输错。

2.2 创建与删除:从无到有,从有到无(touch, mkdir, rm, rmdir)

想新建一个空文件,比如准备写个脚本或者记点笔记,就用 touch。它的本意是“触摸”,如果文件不存在,就创建它;如果存在,就更新它的最后修改时间。

touch my_notes.txt  # 创建一个名为 my_notes.txt 的空文件
touch file1 file2 file3  # 一口气创建多个文件

创建文件夹用 mkdir(Make Directory)。如果想创建的文件夹的上级目录还不存在,加上 -p 选项,它会帮你把路径上所有不存在的目录都创建好,非常省心。

mkdir new_folder          # 在当前目录创建 new_folder
mkdir -p project/src/main/java  # 递归创建多级目录,即使 project 目录不存在

删除操作要谨慎,因为命令行里删除的东西默认不进“回收站”。删除空目录用 rmdir

rmdir empty_folder  # 删除名为 empty_folder 的空目录

删除文件或者非空目录,用 rm(Remove)。这是最需要小心的命令之一。

  • rm file.txt:删除文件。
  • rm -r folder_name:递归删除文件夹及其内部所有内容。-r 是递归的意思。
  • rm -rf folder_name:在 -r 基础上加 -f(force,强制),不会询问,直接删除。这个命令威力巨大,请务必确认路径无误后再敲回车! 我见过有人想删 /tmp/test,结果输成了 rm -rf / tmp/test(/ 后面多了个空格),后果非常严重。

注意:对于新手,我强烈建议先使用 rm -ri 命令。-i 选项会在删除每个文件前都询问你,虽然麻烦,但安全。等完全熟悉了再考虑其他方式。

2.3 复制、移动与重命名:文件的搬运工(cp, mv)

cp(Copy)用于复制。复制文件很简单:cp 源文件 目标文件。如果想复制整个目录,需要加上 -r 选项。

cp document.txt document_backup.txt  # 复制文件并重命名
cp -r old_project/ new_project/      # 递归复制整个目录
cp *.txt backup/                     # 使用通配符,复制所有 .txt 文件到 backup 目录

mv(Move)有两个功能:移动文件和重命名文件。它的逻辑是,看第二个参数(目标)是什么。

  • 如果目标是一个不存在的名字,那就是重命名。
  • 如果目标是一个已存在的目录,那就是移动文件到那个目录。
mv old_name.txt new_name.txt  # 重命名文件
mv file.txt /home/user/docs/  # 移动文件到指定目录
mv *.png images/              # 移动所有png图片到images文件夹

3. 查看与编辑文件内容:不止是“打开看看”

很多时候,我们不需要编辑文件,只是想快速瞄一眼内容,或者从中找点信息。这时候,cat, more, less, head, tail 这些命令就派上用场了。

3.1 快速浏览与搜索(cat, more, less)

cat(concatenate)本意是连接文件,但最常用的功能是快速打印整个文件内容到屏幕。适合看小文件。

cat config.yaml

但如果文件有几百上千行,cat 刷一下就过去了,根本看不清。这时可以用 moreless。它们都会分页显示。

more 比较简单,只能往下翻页(空格键),不能往回看。翻到底就自动退出了。 less 更强大,是 more 的增强版。可以用上下箭头、PageUp/PageDown 键随意滚动,支持向前(?)向后(/)搜索,退出按 q我几乎只用 less

less huge_log_file.log

less 视图里,输入 /error 可以搜索“error”这个词,按 n 跳转到下一个匹配项,N 跳转到上一个。

3.2 只看头尾(head, tail)

日志文件动不动几百MB,我们通常只关心最新的错误。tail 就是为这个而生的。默认显示文件最后10行。

tail app.log          # 显示 app.log 最后10行
tail -n 20 app.log   # 显示最后20行
tail -f app.log      # 这是神器!`-f` 表示 follow,实时追踪文件新增的内容。监控日志时一直开着这个窗口,所有新日志都会实时显示出来。

head 则相反,看文件开头部分,默认显示前10行。常用于检查配置文件的前几行,或者看一个数据文件的格式。

head -n 5 users.csv  # 显示 users.csv 文件的前5行

3.3 强大的文本搜索(grep)

grep 是文本搜索的瑞士军刀。它的基本用法是在一个或多个文件里,搜索包含特定模式(字符串或正则表达式)的行。

grep "ERROR" app.log            # 在 app.log 中搜索包含 “ERROR” 的行
grep -r "function_name" src/    # `-r` 递归地在 src 目录下所有文件中搜索
grep -n "login" auth.log        # `-n` 显示匹配行所在的行号
grep -i "warning" system.log    # `-i` 忽略大小写,匹配 warning, WARNING, WaRnInG 等
grep -v "success" output.txt    # `-v` 反向选择,只显示**不包含** “success” 的行

我经常用 grep 和管道符 | 结合其他命令。比如,我想看看当前正在运行的进程里,有哪些是 Java 进程:

ps aux | grep java

这里 ps aux 列出所有进程,然后把结果“管道”给 grep java 进行过滤,只显示包含“java”的行。

4. 文件查找、打包与权限管理

4.1 如何找到“藏起来”的文件?(find)

find 命令功能极其强大,可以在指定目录下递归地查找文件,根据名称、大小、修改时间、类型等各种条件进行搜索。最常用的就是按名字找。

find /home -name "*.jpg"               # 在 /home 目录下查找所有 .jpg 文件
find . -type f -name "config.*"        # 在当前目录(`.`)下查找类型为文件(`-type f`)且名字匹配 config.* 的文件
find /var/log -mtime -7                # 在 /var/log 下查找过去7天内修改过的文件
find . -size +10M                      # 在当前目录下查找大于10MB的文件

find 还可以对找到的文件执行操作。比如,删除当前目录下所有名为 .tmp 的临时文件:

find . -name "*.tmp" -delete

(再次提醒,-delete 操作前请务必确认查找结果!)

4.2 打包与压缩:方便传输和备份(tar, gzip, zip)

在Linux世界,tar 是标准的打包工具,它能把一堆文件和目录打包成一个 .tar 文件(归档)。为了节省空间,我们通常还会用 gzipbzip2 进行压缩,生成 .tar.gz (或 .tgz) 或 .tar.bz2 文件。

打包并压缩(最常用):

tar -czvf my_project.tar.gz my_project/  # 将 my_project 目录打包并用gzip压缩
# -c: 创建归档
# -z: 使用gzip压缩
# -v: 显示过程(verbose)
# -f: 指定文件名

解压:

tar -xzvf my_project.tar.gz          # 解压到当前目录
tar -xzvf my_project.tar.gz -C /opt  # `-C` 指定解压到 /opt 目录
# -x: 解压

对于 .zip 格式,使用 zipunzip 命令:

zip -r archive.zip folder_to_zip/  # 压缩
unzip archive.zip                   # 解压到当前目录
unzip archive.zip -d target_folder  # 解压到指定目录

4.3 理解文件权限(ls -l 的输出)

当你用 ls -l 时,第一列的那串奇怪字符(如 drwxr-xr-x)就是文件权限。它决定了“谁”能对文件“做什么”。

这串字符有10位:

  • 第1位:文件类型(- 普通文件,d 目录,l 链接等)。
  • 第2-4位:文件所有者(user)的读(r)、写(w)、执行(x)权限。
  • 第5-7位:文件所属用户组(group)的权限。
  • 第8-10位:其他用户(others)的权限。

rwx 分别用数字 4, 2, 1 表示。所以 rwxr-xr-x 就是 755(所有者:4+2+1=7;组:4+1=5;其他人:4+1=5)。

修改权限用 chmod 命令:

chmod 755 script.sh    # 将 script.sh 设为所有者可读写执行,组和其他人只读执行
chmod +x script.sh     # 给 script.sh 添加可执行权限(对所有用户)
chmod u+w file.txt     # 只给所有者(user)添加写(write)权限

修改文件所有者和所属组用 chown

sudo chown newowner:newgroup file.txt  # 改变文件的所有者和组

5. 系统状态与进程管理

5.1 看看系统在忙什么?(ps, top, df, free)

  • ps aux:查看当前系统所有进程的快照。a 显示所有用户进程,u 显示详细信息,x 包括没有控制终端的进程。我常用 ps aux | grep nginx 来检查Nginx是否在运行。
  • top / htop:动态实时查看系统资源占用情况,像任务管理器。htoptop 的增强版,界面更友好,支持鼠标操作。它能直观地看到哪个进程吃了最多的CPU和内存。
  • df -h:查看磁盘空间使用情况。-h 选项让大小以 G、M 为单位显示,一目了然。服务器磁盘快满的时候,第一个就该运行这个命令。
  • free -h:查看内存使用情况。同样,-h 选项让输出更易读。关注 available 这一列,它表示系统可用的内存。

5.2 管理进程(kill, pkill, jobs, bg, fg)

如果某个程序卡死了,你需要结束它。首先用 ps aux | grep 程序名 找到它的进程ID(PID),然后用 kill 命令。

kill 1234           # 温和地终止PID为1234的进程(发送SIGTERM信号)
kill -9 1234        # 强制杀死进程(发送SIGKILL信号),这是最后的手段
pkill firefox       # 根据进程名来杀死进程,比如杀死所有Firefox进程

如果你在终端里启动了一个程序(比如 python3 app.py),它在前台运行,占用了你的终端。你可以按 Ctrl + Z 把它暂停并放到后台。然后:

  • jobs:查看当前终端后台的所有任务。
  • bg %1:将1号后台任务转为后台继续运行。
  • fg %1:将1号后台任务调回前台运行。
  • 想让程序一开始就在后台运行,可以在命令末尾加 &python3 app.py &

5.3 网络相关(ping, netstat/ss, wget/curl)

  • ping baidu.com:检查网络连通性。看看能不能通到百度。
  • netstat -tulpnss -tulpn:查看系统监听了哪些端口,以及对应的进程。ss 是更现代、更快的工具。排查“端口被占用”问题时必用。
  • curl http://example.com:在命令行里获取网页内容或下载文件,功能非常强大。wget 也是一个常用的下载工具,更适合直接下载文件到本地。

6. 用户管理与文件传输

6.1 我是谁?我能做什么?(whoami, sudo, adduser/useradd)

  • whoami:告诉你当前登录的用户名。
  • sudo command:以超级管理员(root)权限运行命令。普通用户执行需要高权限的操作(如安装软件、修改系统文件)时,需要在命令前加 sudo,并输入自己的密码(如果该用户在sudoers列表里)。
  • adduser username:创建一个新用户。它会交互式地询问密码等信息,并自动创建家目录,对新手更友好。useradd 是更底层的命令,需要更多参数。
  • passwd username:修改用户密码。

6.2 在机器间搬运文件(scp, sftp)

这是本地电脑和远程服务器之间传输文件最常用的安全方式。

从本地上传文件到远程服务器:

scp local_file.txt user@remote_server_ip:/home/user/

从远程服务器下载文件到本地:

scp user@remote_server_ip:/path/to/remote/file.txt /local/path/

递归传输整个目录(加 -r 选项):

scp -r my_project/ user@remote_server_ip:/opt/

scp 基于SSH,所以你需要有远程服务器的登录权限。如果需要进行更复杂的文件管理(如重命名、删除远程文件),可以使用 sftp,它提供了一个类似FTP的交互式界面。

学习Linux命令就像学骑自行车,一开始可能会摔几下,但一旦掌握了平衡,你就会发现一片新天地。最好的学习方法就是“用”。给自己定个小目标,比如在服务器上部署一个个人博客,过程中遇到的所有问题,都尝试用命令行去解决。遇到不会的命令,随时用 man 命令名(比如 man ls)去查官方手册,或者 命令名 --help 看简单帮助。别指望一次全记住,用得多了,自然就熟了。记住,每个高手都是从输入第一行 ls 开始的。

内容概要:本文系统研究了在有限控制集约束下,三相并网逆变器中电流与功率双模态模型预测控制(MPC)的等效机理及其性能边界。通过构建精确的预测模型,设计合理的代价函数,并结合Simulink仿真与Matlab代码实现,深入分析了电流预测控制与功率预测控制两种策略在动态响应速度、稳态精度、谐波抑制能力和抗扰性等方面的差异与内在联系。研究揭示了在特定系统参数和运行条件下,两种控制模式之间的等效转化机制,并界定了各自的适用范围与性能极限。同时,探讨了多模态控制的切换逻辑、实时性优化及预测模型不确定性对控制性能的影响,旨在提升逆变器在复杂电网环境下的综合控制品质与鲁棒性。; 适合人群:具备电力电子、自动控制或新能源并网等相关专业背景,熟悉Matlab/Simulink仿真环境,从事研究生及以上层次科研或从事高端电力电子装备研发的工程技术人员。; 使用场景及目标:①深入理解模型预测控制在并网逆变器中的具体实现方法与理论基础;②掌握电流与功率双模态MPC控制器的设计、仿真建模与性能对比评估流程;③为高动态、高精度并网控制系统的方案选型、参数优化与工程化应用提供坚实的理论依据和技术参考。; 阅读建议:建议结合所提供的Simulink仿真模型与Matlab源代码进行同步实验验证,重点关注预测模型的建立过程、控制律的数学推导以及不同工况下的仿真结果对比分析,宜配合现代控制理论、电力电子变换技术及并网标准等相关资料进行系统性学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值