1. 引言:Linux是什么

Linux作为服务器、云计算、嵌入式开发和数据科学领域的核心操作系统,掌握其命令行操作是每个技术人员的必备技能。与图形界面相比,命令行具有以下优势:

  • 高效快捷:通过简单的命令组合完成复杂操作
  • 资源占用少:在远程服务器或资源受限环境中运行流畅
  • 自动化能力强:可编写脚本批量处理任务
  • 功能更强大:许多高级功能仅通过命令行提供

本文将带你从零开始,系统学习Linux命令的基础知识、常用操作和实用技巧。

2. Linux命令行环境

2.1 终端与Shell

终端(Terminal) 是用户与Shell交互的界面,可以是物理终端、虚拟终端或终端模拟器。

Shell 是命令解释器,负责解析用户输入的命令并执行。常见的Shell有:

  • Bash:最流行的Shell,大多数Linux发行版的默认选择
  • Zsh:功能强大,支持丰富的插件和主题
  • Fish:用户友好,提供智能提示和语法高亮

2.2 命令提示符

打开终端后,你会看到类似这样的提示符:

user@hostname:~$ 
  • user:当前登录用户名
  • hostname:主机名
  • ~:当前目录(~表示用户主目录)
  • $:普通用户提示符(#表示root用户)

3. 基础文件操作命令

3.1 查看目录内容:ls

# 列出当前目录内容
ls

# 列出详细信息(权限、所有者、大小、时间)
ls -l

# 列出所有文件(包括隐藏文件)
ls -a

# 组合使用
ls -la

# 按文件大小排序
ls -lhS

# 按修改时间排序(最新在前)
ls -lt

3.2 切换目录:cd

# 切换到用户主目录
cd ~
cd

# 切换到上一级目录
cd ..

# 切换到上两级目录
cd ../..

# 切换到指定目录
cd /usr/local/bin

# 切换到上次所在的目录
cd -

3.3 查看当前目录:pwd

# 显示当前工作目录的完整路径
pwd

3.4 创建目录:mkdir

# 创建单个目录
mkdir new_folder

# 创建多级目录
mkdir -p parent/child/grandchild

# 创建目录并设置权限
mkdir -m 755 shared_folder

3.5 创建文件:touch

# 创建空文件
touch file.txt

# 创建多个文件
touch file1.txt file2.txt file3.txt

# 更新文件时间戳(如果文件存在)
touch existing_file.txt

3.6 复制文件/目录:cp

# 复制文件
cp source.txt destination.txt

# 复制文件到目录
cp file.txt /path/to/directory/

# 复制目录(递归复制)
cp -r source_dir/ destination_dir/

# 复制时保留文件属性
cp -p important_file.txt backup/

# 交互式复制(覆盖前询问)
cp -i source.txt destination.txt

3.7 移动/重命名:mv

# 重命名文件
mv old_name.txt new_name.txt

# 移动文件到目录
mv file.txt /path/to/directory/

# 移动并重命名
mv file.txt /path/to/directory/new_name.txt

# 移动目录
mv source_dir/ destination_dir/

# 交互式移动(覆盖前询问)
mv -i source.txt destination.txt

3.8 删除文件/目录:rm

# 删除文件
rm file.txt

# 删除多个文件
rm file1.txt file2.txt file3.txt

# 删除目录(递归删除)
rm -r directory/

# 强制删除(不提示)
rm -f file.txt

# 交互式删除(删除前询问)
rm -i file.txt

# 删除空目录
rmdir empty_dir/

⚠️ 警告rm -rf / 会删除系统所有文件,永远不要执行!

4. 文件内容查看与编辑

4.1 查看文件内容:cat

# 显示文件全部内容
cat file.txt

# 显示多个文件内容
cat file1.txt file2.txt

# 创建新文件(Ctrl+D保存)
cat > newfile.txt

# 追加内容到文件
cat >> existing_file.txt

4.2 分页查看:less / more

# 使用less查看(推荐)
less large_file.log

# less常用操作:
# 空格:向下翻一页
# b:向上翻一页
# /pattern:搜索
# n:下一个匹配项
# N:上一个匹配项
# q:退出

# 使用more查看
more large_file.log

4.3 查看文件头部:head

# 查看前10行(默认)
head file.txt

# 查看前20行
head -n 20 file.txt

# 查看前100字节
head -c 100 file.txt

4.4 查看文件尾部:tail

# 查看最后10行(默认)
tail file.log

# 查看最后50行
tail -n 50 file.log

# 实时查看日志(监控新增内容)
tail -f application.log

# 查看最后100字节
tail -c 100 file.txt

4.5 文本编辑器:nano / vim

nano(简单易用)

# 打开/创建文件
nano file.txt

# nano基本操作:
# Ctrl+O:保存
# Ctrl+X:退出
# Ctrl+W:搜索
# Ctrl+K:剪切行
# Ctrl+U:粘贴

vim(功能强大)

# 打开文件
vim file.txt

# vim基本模式:
# 正常模式:Esc键进入,用于导航和命令
# 插入模式:i键进入,用于编辑文本
# 命令模式::进入,用于保存退出等操作

# 常用命令:
# :w 保存
# :q 退出
# :wq 保存并退出
# :q! 强制退出不保存
# /pattern 搜索

5. 文件权限管理

5.1 理解权限表示

使用 ls -l 查看文件权限:

-rwxr-xr-- 1 user group 4096 Jul 25 10:20 script.sh
  • 第1位:文件类型(-普通文件,d目录,l链接)
  • 第2-4位:所有者权限(rwx
  • 第5-7位:组权限(r-x
  • 第8-10位:其他用户权限(r--

权限含义:

  • r:读权限(4)
  • w:写权限(2)
  • x:执行权限(1)
  • a : 所有用户
  • o :

5.2 修改权限:chmod

# 数字方式
chmod 755 script.sh    # rwxr-xr-x
chmod 644 file.txt     # rw-r--r--
chmod 700 private.sh   # rwx------

# 符号方式
chmod u+x script.sh    # 给所有者添加执行权限
chmod g-w file.txt     # 移除组的写权限
chmod o=r file.txt     # 设置其他用户只有读权限
chmod a+x script.sh    # 给所有用户添加执行权限
chmod a-rwx file.txt   #删除所有用户的读,写,执行权限

5.3 修改所有者:chown

# 修改文件所有者
chown newowner file.txt

# 修改所有者和组
chown newowner:newgroup file.txt

# 递归修改目录下所有文件
chown -R user:group directory/

5.4 修改所属组:chgrp

# 修改文件所属组
chgrp newgroup file.txt

# 递归修改
chgrp -R newgroup directory/

6. 进程管理

6.1 查看进程:ps

# 查看当前终端进程
ps

# 查看所有进程
ps aux

# 查看指定用户进程
ps -u username

# 查看进程树
ps auxf

# 查看特定进程
ps aux | grep nginx

6.2 实时监控:top / htop

# 实时查看系统进程
top

# top常用操作:
# P:按CPU使用率排序
# M:按内存使用率排序
# k:杀死进程
# q:退出

# 更友好的监控工具(需安装)
htop

6.3 杀死进程:kill

# 正常终止进程
kill 1234

# 强制终止进程
kill -9 1234

# 终止所有同名进程
killall process_name

# 按名称终止进程
pkill process_name

6.4 后台运行:& / nohup

# 后台运行程序
./long_running_script.sh &

# 查看后台作业
jobs

# 将后台作业调到前台
fg %1

# 断开连接后继续运行
nohup ./server.sh > output.log 2>&1 &

7. 网络相关命令

7.1 网络配置:ifconfig / ip

# 查看网络接口信息(传统命令)
ifconfig

# 查看网络接口信息(现代命令)
ip addr show

# 查看路由表
ip route show

# 查看网络连接
netstat -tulpn

7.2 网络测试:ping

# 测试网络连通性
ping google.com

# 指定次数
ping -c 4 google.com

# 指定间隔
ping -i 2 google.com

7.3 域名解析:nslookup / dig

# 查询域名IP
nslookup example.com

# 详细DNS查询
dig example.com

# 查询MX记录
dig example.com MX

# 反向DNS查询
dig -x 8.8.8.8

7.4 下载文件:wget / curl

# 使用wget下载
wget https://example.com/file.zip

# 断点续传
wget -c https://example.com/large_file.iso

# 使用curl下载
curl -O https://example.com/file.txt

# 保存为指定文件名
curl -o custom_name.zip https://example.com/file.zip

8. 系统信息查看

8.1 系统信息:uname

# 查看内核信息
uname -a

# 查看内核版本
uname -r

# 查看系统架构
uname -m

8.2 磁盘使用:df / du

# 查看磁盘使用情况
df -h

# 查看指定目录大小
du -sh /home/user/

# 查看目录下各文件大小
du -sh /home/user/*

# 查看目录深度
du -h --max-depth=1 /var/

8.3 内存使用:free

# 查看内存使用(人类可读格式)
free -h

# 持续监控
watch -n 1 free -h

9. 实用技巧与组合命令

9.1 管道(|)与重定向

# 管道:将一个命令的输出作为另一个命令的输入
ps aux | grep nginx
cat file.txt | grep "error" | wc -l

# 输出重定向:覆盖文件
ls -la > file_list.txt

# 输出重定向:追加到文件
echo "new line" >> log.txt

# 错误重定向
command 2> error.log

# 输出和错误都重定向
command > output.log 2>&1

9.2 命令替换

# 将命令输出作为参数
echo "Today is $(date)"
cp file.txt backup/file_$(date +%Y%m%d).txt

# 使用反引号(旧式)
echo "Current dir: `pwd`"

9.3 通配符

# * 匹配任意字符
ls *.txt          # 所有.txt文件
ls file*.txt      # 以file开头,.txt结尾

# ? 匹配单个字符
ls file?.txt      # file1.txt, file2.txt等

# [] 匹配字符范围
ls file[0-9].txt  # file0.txt到file9.txt
ls file[abc].txt  # filea.txt, fileb.txt, filec.txt

# {} 扩展
mkdir dir{1,2,3}  # 创建dir1, dir2, dir3
cp file.{txt,bak} # 复制file.txt为file.bak

9.4 命令别名

# 创建别名
alias ll='ls -la'
alias update='sudo apt update && sudo apt upgrade'

# 查看所有别名
alias

# 永久保存别名(添加到~/.bashrc)
echo "alias ll='ls -la'" >> ~/.bashrc
source ~/.bashrc

查看命令类型

type ls

内置命令帮助

help cd

                                                       


## 结语

Linux命令的学习是一个渐进的过程,不要试图一次性记住所有命令。从最常用的`ls`、`cd`、`cp`、`rm`开始,逐步扩展到更复杂的操作。记住:**实践是最好的老师**。遇到问题时,善用`man`命令和在线资源,多动手尝试,你会在解决问题的过程中不断进步。
。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐