Linux 基础指令完全指南 —— 从入门到熟练

前言

目标:入门 Linux 基础指令。

一、Linux 是什么?

简单来说,Linux 就是一个操作系统,就像 Windows、macOS 一样。但它的特别之处在于:

  • 开源免费:任何人都可以免费使用、修改、甚至贡献代码

  • 稳定高效 :全球 75% 的服务器都在运行 Linux

  • 命令行操作:虽然也有图形界面,但真正的力量在命令行

小知识:我们用的 Android 手机,底层也是基于 Linux 内核的哦!

1.2 为什么要学命令行?

为什么不用图形界面?点点鼠标多方便!"

原因很简单:

  • 高效 :一条命令可以完成图形界面十几步操作

  • 自动化 :命令可以写成脚本,批量执行

  • 服务器:大部分服务器根本没有装图形界面(为了节省资源)

1.3 Shell是什么?

打个比方:

  • 操作系统内核 = 公司的CEO(核心决策者)

  • Shell(外壳) = 前台小姐姐(转达你的需求)

  • = 客户

你不能直接找CEO办事,需要通过前台小姐姐转达。Shell就是那个"前台小姐姐",负责把你的命令翻译给内核执行。

所以Shell 就是接收你输入的命令,交给内核执行,并把结果返回给你的那个程序。

二、环境准备

2.1 使用XShell远程连接

步骤:

  1. 下载XShell(家庭/学校版免费):https://www.xshell.com/

  2. 在Linux终端输入 ifconfig 查看IP地址

  3. 打开XShell,输入 ssh IP地址 连接

XShell复制粘贴快捷键:

  • 复制:Ctrl + Insert

  • 粘贴:Shift + Insert

三、核心指令详解(附完整代码)

3.1 ls ------ 查看文件列表

功能 :列出当前目录下的文件和文件夹

基本语法

cpp 复制代码
ls [选项] [目录名]
复制代码
-l:显示详细信息(权限、大小、时间等)
复制代码
-a:显示所有文件(包括隐藏文件,隐藏文件是以.开头的)
复制代码
 -h:以人类易读的方式显示大小,把文件大小从字节,自动换成 K、M、G 这种我们看得懂的单位。

3.2 pwd ------ 显示当前路径

pwd 就是 Linux 里的 "定位",告诉你当前站在哪个目录里。

3.3 cd ------ 切换目录

基本概念

路径类型 说明 例子
绝对路径 从根目录 / 开始 /home/user/Documents
相对路径 从当前位置开始 ./Documents../
复制代码
快速返回家目录:   cd \~  或直接 cd     \~代表当前用户的家目录 /代表根目录

linux结构像一棵倒着的树

cpp 复制代码
/
├── bin
├── etc
├── home
├── root
├── usr
├── var
├── dev
└── ...
  • / = Linux 世界的唯一祖先
  • 所有文件夹、文件、磁盘、U 盘、光盘......全都挂在 / 下面

在 Linux 目录树中:叶子结点 = 文件 或 空目录

只要一个目录下面还有子目录或文件 → 它是树枝节点,不是叶子

只有下面啥都没有的目录(空目录)→ 才算叶子

普通文件不可能再有下级→ 天生就是叶子

复制代码
返回上级目录(.. 代表上级) 切换到最近访问的目录(- 代表上一个目录)

. 代表当前目录的操作

3.4 touch ------ 创建文件/更新时间

复制代码
创建空文件hello.c, 如果文件已存在,只更新修改时间(ACM时间都会改)

3.5 mkdir ------ 创建目录

复制代码
 创建单级目录
cpp 复制代码
[root@localhost ~]# mkdir -p project/src/main/java
[root@localhost ~]# tree project/
project/
└── src
    └── main
        └── java

创建多级目录(-p 参数自动创建父目录)

3.6 rm ------ 删除文件/目录

rm 文件名 删除文件,不能删除目录 rm -f 文件名 强制删除

rm -r 可以删除非空目录 rm -rf 目录名 强制删除

rm -rf 是非常危险的命令!rm -rf / 会删除整个系统!

3.7 cp ------ 复制文件/目录

复f复制文件 加 -r

复制当前目录到lovexh目录下 复制目录加 -r

3.8 echo

echo = 输出内容(打印文字、变量、空行)

覆盖写入(>) 重定向:把本来要输出到屏幕的内容,强行送到文件里。 test2.txt 不存在 → 自动创建,如果存在test2.txt → 清空原有内容,再写入 HELLOWROLD

追加重定向:原来的内容还在,新内容加在后面

如果想清空文件内容,可以用**echo > test.c,它会把文件内容清空成空文件。包含了一个换行符** (\n),文件大小是 1 字节。

3.9 grep ------ 文本搜索

grep = 在文件里搜索指定文字 / 字符串

忽略大小写搜索: grep -i "hello" test.cpp

显示行号: grep -n "hello" test.cpp

显示 不包含 hello 的所有行(-v = 反选 / 取反):grep -v "hello" test.cpp

**递归搜索整个文件夹所有文件:**grep -r "main" ./

3.10 tar ------ 打包压缩

tarczf 压缩包名 源文件 作用:把源文件打包成指定名字的 .tgz 压缩包,压缩包名和源文件可以完全不同

tarxzf 压缩包名 -C 路径解压到指定目录**tar xzf r.tgz -C ./..** → 把 r.tgz 解压到当前目录的上一层

  • 压缩包的名字只是 "容器名",和里面文件的名字无关
  • 解压时只会还原包内文件的原名,不会变成压缩包的名字
  • 你这次解压到上级目录,看到的 test.c 就是压缩包里还原出来的文件,和你原来的 test.c 内容完全一致

3.10 more/less ------ 分页查看大文件

cpp 复制代码
# 1. 生成一个大文件用于演示
[root@localhost ~]# for i in {1..100}; do echo "Line $i"; done > bigfile.txt

# 2. more:分页查看(只能向下翻页)
[root@localhost ~]# more bigfile.txt
Line 1
Line 2
...
Line 20
--More--(29%)   # 按空格翻页,按q退出

# 3. more指定显示行数
[root@localhost ~]# more -10 bigfile.txt
Line 1
...
Line 10
--More--(10%)

# 4. less:更强大的分页查看(可上下翻页)
[root@localhost ~]# less bigfile.txt
# 在less中:
#   空格/PageDown:向下翻页
#   PageUp:向上翻页
#   /关键词:向下搜索
#   ?关键词:向上搜索
#   n:下一个匹配
#   N:上一个匹配
#   q:退出

3.11 head/tail ------ 查看文件头尾

cpp 复制代码
# 1. head:查看前10行(默认)
[root@localhost ~]# head bigfile.txt
Line 1
Line 2
...
Line 10

# 2. head指定行数
[root@localhost ~]# head -5 bigfile.txt
Line 1
Line 2
Line 3
Line 4
Line 5

# 3. tail:查看后10行(默认)
[root@localhost ~]# tail bigfile.txt
Line 91
Line 92
...
Line 100

# 4. tail指定行数
[root@localhost ~]# tail -3 bigfile.txt
Line 98
Line 99
Line 100

# 5. 实时跟踪日志(-f,非常实用!)
[root@localhost ~]# tail -f /var/log/messages
# 会持续显示新增的日志,按 Ctrl+C 退出

# 6. 实战:显示第20-30行
[root@localhost ~]# head -30 bigfile.txt | tail -11
Line 20
Line 21
...
Line 30

3.12find ------ 查找文件

cpp 复制代码
# 1. 按文件名查找
[root@localhost ~]# find /home -name "test.txt"
/home/user/test.txt
/home/user/Documents/test.txt

# 2. 按文件名模糊匹配(使用通配符)
[root@localhost ~]# find /home -name "*.log"
/home/user/app.log
/home/user/error.log

# 3. 按类型查找
[root@localhost ~]# find /home -type d   # 查找目录
[root@localhost ~]# find /home -type f   # 查找普通文件

# 4. 按大小查找
[root@localhost ~]# find /home -size +100M   # 大于100MB
[root@localhost ~]# find /home -size -1M     # 小于1MB
[root@localhost ~]# find /home -size 10M     # 等于10MB

# 5. 按时间查找
[root@localhost ~]# find /home -mtime -7    # 7天内修改的文件
[root@localhost ~]# find /home -mtime +30   # 30天前修改的文件

# 6. 对查找结果执行操作
[root@localhost ~]# find /tmp -name "*.tmp" -delete           # 删除
[root@localhost ~]# find /home -name "*.sh" -exec chmod +x {} \;  # 添加执行权限

# 7. 实战:查找大文件
[root@localhost ~]# find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null

3.13 ps ------ 查看进程

cpp 复制代码
# 1. 查看当前终端进程
[root@localhost ~]# ps
  PID TTY          TIME CMD
 1234 pts/0    00:00:00 bash
 5678 pts/0    00:00:00 ps

# 2. 查看所有进程
[root@localhost ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  19368  1544 ?        Ss   10:00   0:01 /sbin/init
root      1234  0.0  0.2  28932  2340 pts/0    Ss   10:00   0:00 -bash

# 3. 查看进程树
[root@localhost ~]# ps auxf

# 4. 查找特定进程
[root@localhost ~]# ps aux | grep nginx

# 5. 查看指定用户的进程
[root@localhost ~]# ps -u root

# 6. 实时查看进程(top命令)
[root@localhost ~]# top
# 按 q 退出,按 M 按内存排序,按 P 按CPU排序

3.14 sudo

Linux 临时提权命令,全称 superuser do,普通用户临时以管理员(root)权限执行操作,输入当前用户密码验证。

高频参数

  • sudo -i:切换 root 完整环境
  • sudo -s:切换 root 终端,保留当前环境
  • sudo -l:查看自身权限
  • sudo -k:清除密码缓存

与 su 区别sudo 单条临时提权、权限可控;su 完整切换用户,需目标账号密码。

总结:

你想干什么 命令 通俗解释 例子
我在哪? pwd P rint W orking Directory,打印当前工作路径。就像问"我现在在地图的哪个位置?" 输入pwd,它告诉你:/home/yourname
里面有什么? ls 列出目录内容。相当于打开一个文件夹,看看里面有啥文件。 ls -l 可以看详细信息; ls -a 可以看到隐藏文件。
去哪儿? cd C hange Directory,切换目录。就像双击文件夹。 cd /home 去home目录; cd .. 返回上一级; cd ~ 直接回家(用户自己的家)。
建个新文件夹 mkdir M ak e DIRectory,创建目录。 mkdir myfiles 创建一个叫myfiles的文件夹。
建个空文件 touch 触摸一下。如果文件不存在,就建一个空的。 touch hello.txt 创建一个空的hello.txt文件。
看看文件内容 cat 把文件内容全部显示在屏幕上。适合看短文件。 cat hello.txt
复制文件 cp C opy,复制。 cp a.txt b.txt 把a.txt复制一份叫b.txt。
移动/改名 mv M ove,移动。也可以用来重命名。 mv a.txt ../ 把a.txt移到上级目录; mv a.txt b.txt 把a.txt改名为b.txt。
彻底删除 rm R em ove,移除。危险! Linux没有回收站。 rm a.txt 删文件; rm -rf 文件夹 强制递归删除整个文件夹。
看一点内容 head / tail 看文件的开头10行 / 结尾10行。看日志文件超级好用。 tail -f error.log 实时追踪日志末尾的新内容。

搜索与帮助:

  1. 找文件:find

    • 场景:你忘了昨天写的代码放哪儿了。

    • 命令:find /home -name "*.c" 在/home目录下找所有以.c结尾的文件。

  2. 找命令:which

    • 场景:你想知道ls这个命令本身住在哪。

    • 命令:which ls

  3. 在文件里找内容:grep

    • 场景:你在一堆日志里找"错误"这个词。

    • 命令:grep "error" server.log 在server.log文件里找包含error的行。加上-i可以忽略大小写。

  4. 救命手册:man

    • 场景:你忘了ls的某个参数是啥了。

    • 命令:man ls 打开ls的说明书。按q退出。这是Linux里的"百度",一定要学会用!

权限

Linux的权限很严格,就像一个高档小区。

  • 三类人:

    • u (主人):房子的主人,可以为所欲为。

    • g (家人):跟主人一组的家人,有一定的权限。

    • o (外人):路过的人,权限最小。

  • 三种权限:

    • r (读):看看文件里写了啥。

    • w (写):修改文件内容。

    • x (执行):运行这个文件(就像双击exe)。

  • 怎么看权限?

    输入 ls -l,你会看到类似 -rw-r--r-- 的东西。

    • 第一个字符:-是文件,d是文件夹。

    • 后面9个字符,每3个一组:主人 | 家人 | 外人。

    • rw- 表示可读可写不可执行。 r-- 表示只读。

  • 怎么改权限?

    • 数字法(推荐):r=4, w=2, x=1。

      • chmod 755 file:主人有7(4+2+1=读写执行),家人和读者有5(4+1=读和执行)。
    • 字母法

      • chmod u+x file:给主人增加执行权限。
  • 粘滞位(防隔壁老王)

    • 在一个公共文件夹(比如/tmp)里,你创建的文件,不想被别人乱删。

    • 命令:chmod +t 目录名。加上后,只有文件的主人、目录的主人、root才能删它。

高手进阶(组合技与打包)

  1. 管道 |

    把左边命令的输出,直接塞给右边命令当输入。像工厂流水线。

    • 例子 :想找出 a.txt 里包含"hello"的行,并且还要看一页停一下。

    • grep "hello" a.txt | less

    • 经典例子(显示文件的第180到200行)

      • head -200 file.txt | tail -21

      • 先取出前200行,再从那200行里取出最后21行。

  2. 重定向 > >>

    • >:把命令的结果覆盖写入一个文件。

    • >>:把命令的结果追加到文件末尾。

    • 例子echo "你好" > hello.txt (把"你好"写到hello.txt文件里)

  3. 打包压缩 tar

    Windows里是zip,Linux里最常用tar

    • 打包+压缩tar -czvf 压缩包名字.tar.gz 要压缩的文件夹/

      • c=创建,z=压缩,v=显示过程,f=指定文件名。
    • 解包tar -xzvf 压缩包名字.tar.gz

      • x=解压。
    • 解压到指定目录tar -xzvf 压缩包名字.tar.gz -C /目标路径/

保命三连快捷键

  1. Tab自动补全 。打一半文件名或命令,按Tab帮你补全。没事就按,神技!

  2. Ctrl + C强制停止。命令卡住了?疯狂输出中?按它,立刻终止。

  3. Ctrl + D退出。相当于跟系统说"拜拜",或者退出当前终端。

相关推荐
千百元2 小时前
FreeMove 文件夹转移工具
服务器
charlie1145141912 小时前
嵌入式Linux驱动开发——新字符设备驱动 API 概览
linux·运维·驱动开发
♛识尔如昼♛2 小时前
C 进阶(2) - 文件I/O
linux·文件i/o
顺风尿一寸2 小时前
深入 Linux 内核 6.8.12:从 Futex 到 MCS 队列自旋锁的完整同步机制剖析
linux
早日退休!!!3 小时前
大模型推理瓶颈七层分析模型
java·服务器·数据库
DFT计算杂谈3 小时前
VASP官方教程 TRIQS DFT+DMFT计算教程
运维·css·自动化·html·css3
橙子也要努力变强3 小时前
信号的保存、阻塞与递达
linux·服务器·c++
进阶的猪3 小时前
使用printk对SPI子系统全过程的追踪
linux·服务器
2301_803554523 小时前
Linux里面的文件描述符和windows里面的句柄
linux·运维·服务器