1. 虚拟机与终端基础操作
作为一名嵌入式开发者,Linux系统是我们日常工作的主战场。与Windows不同,Linux系统的操作主要依靠命令行界面,这给初学者带来不小挑战。今天我就从最基础的虚拟机操作开始,分享Linux入门必备的核心技能。
1.1 虚拟机基础操作
在Windows环境下学习Linux,虚拟机是最常用的工具。我推荐使用VMware Workstation Player,它对个人用户免费且性能稳定。安装好Ubuntu系统后,这几个基础操作需要熟练掌握:
- 开机/关机:不同于直接关闭电源,正确的关机流程是点击右上角电源图标选择"关机"。直接关闭虚拟机可能导致系统文件损坏。
- 挂起与重启:挂起(suspend)会保存当前状态到内存,下次快速恢复;重启(reboot)则是完全重新启动系统。
- 全屏切换:使用Ctrl+Alt+Enter可以快速切换全屏模式,这在需要专注工作时特别有用。
注意:关闭Ubuntu系统与关闭虚拟机是不同的概念。前者是正常关机流程,后者是强制终止虚拟机进程。建议总是通过系统菜单正常关机。
1.2 终端操作技巧
终端(Terminal)是Linux系统的核心交互界面,掌握这些快捷键能极大提升效率:
- 打开终端:Ctrl+Alt+T是Ubuntu默认的终端快捷键。我习惯将其设置为Super+T更方便调用。
- 字体调整:长时间盯着终端,合适的字体大小很重要。Ctrl+Shift+"+"放大,Ctrl+"-"缩小,Ctrl+0恢复默认。
- 标签页管理:Ctrl+Shift+T新建标签页,Ctrl+PgUp/PgDown切换标签页,这在多任务处理时非常实用。
bash复制# 查看终端类型
echo $SHELL
# 输出通常是/bin/bash,表示使用的是Bash shell
2. 命令行提示符与用户管理
2.1 解读命令提示符
当打开终端,你会看到类似这样的提示符:
code复制linux@linux-virtual-machine:~$
这个结构包含重要信息:
- linux:当前登录的用户名。我刚入行时曾因忽略用户身份导致权限问题,切记确认当前用户。
- linux-virtual-machine:主机名,用于网络识别。生产环境中主机名应有明确含义。
- ~:波浪符代表当前用户的家目录(home directory),每个用户都有独立空间。
- $:表示当前是普通用户。如果是超级用户(root),这里会显示#。
2.2 用户类型与权限
Linux采用严格的权限管理,主要用户类型有:
| 用户类型 | 权限范围 | 典型场景 |
|---|---|---|
| 普通用户 | 受限权限,只能操作自己的文件 | 日常开发工作 |
| root用户 | 无限制,可修改系统任何部分 | 系统配置、软件安装 |
重要原则:日常操作应使用普通用户,仅在必要时通过sudo临时获取root权限。我曾因长期使用root导致误删系统文件,教训深刻。
创建新用户的命令:
bash复制sudo adduser newusername # 交互式创建用户
sudo passwd newusername # 设置密码
3. Linux文件管理核心命令
3.1 基础命令格式
Linux命令通常遵循这种结构:
code复制命令 [选项] [参数]
例如:
bash复制ls -l /home # 列出/home目录的详细信息
查看命令帮助的三种方式:
bash复制man ls # 最详细的帮助手册
ls --help # 快速查看选项
info ls # 更结构化的帮助信息
3.2 文件操作命令详解
3.2.1 查看与导航
-
ls:列出目录内容。常用组合:
bash复制ls -la # 显示所有文件(包括隐藏文件)的详细信息 ls -lh # 人类可读的文件大小显示(如KB/MB) -
pwd:显示当前工作目录的绝对路径。在脚本中特别有用。
-
cd:切换目录。记住这些快捷方式:
bash复制cd ~ # 回到家目录 cd - # 回到上一个目录 cd .. # 到上级目录
3.2.2 创建与删除
-
mkdir:创建目录。添加-p选项可创建多级目录:
bash复制mkdir -p project/src/main # 一次性创建多级目录 -
rmdir:只能删除空目录。更常用的是rm -r。
-
touch:除了创建文件,还可用于更新时间戳:
bash复制touch existing_file # 更新文件的修改时间
3.2.3 复制与移动
-
cp:复制文件/目录。重要选项:
bash复制cp -a src dest # 归档模式,保留所有属性 cp -i src dest # 覆盖前提示确认 -
mv:移动或重命名。注意:
bash复制mv oldname newname # 重命名 mv file dir/ # 移动到目录
危险命令警示:rm -rf是Linux中最危险的命令之一,它会递归强制删除目录及其所有内容。我曾不小心在根目录执行过,后果灾难性。建议设置别名:
bash复制alias rm='rm -i' # 删除前提示确认
4. 文件权限与属性
4.1 理解文件权限
使用ls -l看到的权限字符串如drwxr-xr-x,分为四部分:
-
文件类型:
- -:普通文件
- d:目录
- l:符号链接
- c/b:设备文件
-
用户权限:所有者(owner)的rwx权限
-
组权限:所属组(group)的rwx权限
-
其他用户权限:其他人(other)的权限
4.2 权限修改
使用chmod修改权限,两种表示法:
-
数字表示法:
bash复制chmod 755 file # rwxr-xr-x # 7=rwx, 5=r-x, 4=r-- -
符号表示法:
bash复制chmod u+x file # 给所有者添加执行权限 chmod o-w file # 移除其他人的写权限
修改所有者和组:
bash复制sudo chown user:group file # 同时修改所有者和组
sudo chown user file # 仅修改所有者
sudo chgrp group file # 仅修改组
5. Linux目录结构
5.1 标准目录解析
Linux采用统一的目录结构(FHS标准),主要目录作用:
| 目录 | 用途 | 示例内容 |
|---|---|---|
| /bin | 基础命令 | ls, cp, mv等 |
| /etc | 系统配置 | 网络配置、用户信息 |
| /home | 用户目录 | 个人文件和设置 |
| /var | 可变数据 | 日志、数据库文件 |
| /tmp | 临时文件 | 重启后清空 |
5.2 路径类型
- 绝对路径:从根目录/开始,如/home/user/file
- 相对路径:相对于当前目录:
- ./:当前目录
- ../:上级目录
- ~/:家目录
在脚本中建议使用绝对路径,避免位置依赖问题。
6. C语言开发环境
6.1 Vim基础使用
Vim是Linux下强大的文本编辑器,基本工作流程:
- 打开文件:
vim hello.c - 按i进入插入模式
- 编写代码
- 按ESC返回普通模式
- 输入:wq保存退出
常用命令:
- :w 保存
- :q 退出
- :wq 保存并退出
- :q! 强制退出不保存
6.2 GCC编译流程
从源代码到可执行程序的步骤:
bash复制gcc -Wall -g hello.c -o hello # 编译
./hello # 运行
选项说明:
- -Wall:显示所有警告
- -g:生成调试信息
- -o:指定输出文件名
调试工具:
bash复制gdb ./hello # 启动GDB调试器
7. 实用技巧与问题排查
7.1 终端效率技巧
-
命令历史:
- 上下箭头浏览历史
- Ctrl+R反向搜索历史命令
- !number执行历史中第number条命令
-
自动补全:
- Tab补全命令/文件名
- 按两次Tab显示所有可能选项
-
别名设置:
bash复制alias ll='ls -alF' alias grep='grep --color=auto'
7.2 常见问题解决
问题1:Permission denied
- 原因:权限不足
- 解决:
bash复制sudo command # 以root权限执行 chmod +x file # 添加执行权限
问题2:Command not found
- 原因:命令未安装或不在PATH中
- 解决:
bash复制which command # 查找命令位置 echo $PATH # 查看PATH变量
问题3:无法删除文件
- 可能原因:权限问题或文件被占用
- 解决:
bash复制sudo rm file # 使用root权限 lsof file # 查看哪个进程在使用文件
8. 进阶学习建议
掌握这些基础后,建议深入学习:
- Shell脚本编程:自动化重复任务
- 系统服务管理:systemd/service
- 网络配置:ifconfig/netstat
- 软件包管理:apt/yum
- 性能监控:top/htop
学习资源推荐:
- 《鸟哥的Linux私房菜》
- Linux man pages
- Stack Overflow社区
我在实际工作中发现,Linux技能需要持续练习。建议每天用Linux完成日常工作,遇到问题先尝试自己解决,这样进步最快。记住,每个专家都是从这些基础命令开始的。