初学者必备的基本指令指南

引言

欢迎来到Linux的世界!如果你对这个强大的操作系统感兴趣,但又不知道从哪里开始,那么你来对地方了。Linux以其稳定性和灵活性闻名,几乎无处不在,从服务器到你的智能设备。

对于新手来说,命令行可能看起来有点吓人,但其实掌握一些基本指令就能让你在Linux上如鱼得水。这篇博客会带你快速认识那些关键的Linux指令,帮你轻松搞定文件管理、系统信息查看,还有权限设置等等。

无论你是Linux的新朋友,还是想要巩固基础,这里都有你需要的实用技巧和例子。准备好了吗?让我们一起开启这段Linux之旅吧!

0. 快速学习几个命令

su - 切换到另一个用户账户 (substitute user)

1
2
3
4
su  // 切换到root用户,要求输入root用户的密码
su - username // 切换到指定用户的环境,类似于该用户登录
su -c "whoami" // 切换到root用户并执行`whoami`命令,然后退出
su -s /bin/bash username // 使用指定的bash shell切换到指定用户
  • whoami 显示当前用户的用户名
  • who 显示当前用户的用户名

help 功能:获取Shell内置命令的帮助信息 (help)

  • -d:显示命令的简短描述。
  • -m:以简易手册页格式显示帮助信息。
  • -s:仅显示命令的语法部分。
  • -a:显示所有内置命令的帮助信息。

示例:

1
2
3
4
help cd  // 显示cd命令的帮助信息
help -m echo // 以简易手册页格式显示echo命令的帮助信息
help -d pwd // 显示pwd命令的简短描述
help -a // 显示所有内置命令的帮助信息

man 功能:查看命令的手册页 (manual)

  • -k:搜索与关键字匹配的手册页条目(类似于 apropos)。
  • -f:显示命令或程序的简短描述(类似于 whatis)。
  • -M:指定手册页的搜索路径。
  • -s:指定手册页的章节。
  • -a:显示所有匹配的手册页,按顺序逐一查看。

示例:

1
2
3
4
5
man ls  // 查看ls命令的手册页
man -k passwd // 搜索与“passwd”相关的手册页条目
man -f bash // 显示bash的简短描述
man 5 passwd // 查看passwd文件格式的手册页(章节5)
man -a printf // 查看所有与printf相关的手册页

手册页分为不同的章节,每个章节包含特定类型的信息:

  1. 用户命令(通常可执行的命令和工具)
  2. 系统调用(内核提供的函数)
  3. 库调用(程序库函数)
  4. 特殊文件(通常是/dev下的设备文件)
  5. 文件格式(配置文件格式)
  6. 游戏(游戏和演示程序)
  7. 杂项(杂项信息)
  8. 系统管理命令(通常只有root用户可用)
  9. 内核例程(内核开发人员使用的例程

1. 文件和目录管理

ls 列出目录内容(list)

选项

  • -l:长格式显示详细信息。
  • -a:显示所有文件,包括隐藏文件。
  • -h:以人类可读的格式显示文件大小。
  • -R:递归列出目录内容。
  • -t:按修改时间排序。

示例

1
2
3
ls -l //长格式显示文件详细信息
ls -la //显示所有文件(包括隐藏文件)及其详细信息
ls -lh //长格式显示文件信息,大小以易读格式呈现

cd 切换当前工作目录 (change directory)

  • -:切换到前一个目录。
  • ..:切换到上一级目录。
  • ~:切换到用户主目录。

示例:

1
2
3
cd ..  // 切换到上一级目录
cd - // 切换到前一个目录
cd ~ // 切换到用户主目录

pwd 显示当前工作目录 (print working directory)

示例:

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

touch 创建空文件或更新文件时间戳 (touch)

  • -a:仅修改访问时间。
  • -m:仅修改修改时间。
  • -c:如果文件不存在则不创建。

示例:

1
2
3
touch file.txt  // 创建一个空文件file.txt
touch -a file.txt // 仅更新file.txt的访问时间
touch -c file.txt // 更新文件时间戳,如果文件不存在则不创建

mkdir 创建新目录 (make directory)

  • -p:创建多级目录。
  • -v:显示创建的目录。

示例:

1
2
3
mkdir newdir  // 创建一个名为newdir的目录
mkdir -p dir1/dir2 // 创建多级目录dir1/dir2
mkdir -v newdir // 创建目录并显示创建信息

rm/rmdir 删除文件或目录 (remove/remove directory)

  • -r:递归删除目录及其内容(适用于 rm)。
  • -f:强制删除,不提示。
  • -v:显示删除的文件或目录。

示例:

1
2
3
rm file.txt  // 删除文件file.txt
rm -r dir // 递归删除目录dir及其内容
rmdir emptydir // 删除空目录emptydir

cp 复制文件或目录 (copy)

  • -r:递归复制目录及其内容。
  • -v:显示复制的文件。
  • -i:覆盖文件前提示确认。

示例:

1
2
3
cp file.txt /backup/  // 将file.txt复制到/backup/目录
cp -r dir /backup/ // 递归复制目录dir及其内容到/backup/
cp -i file.txt /backup/ // 复制文件,覆盖前提示确认

mv 移动或重命名文件或目录 (move)

  • -v:显示移动或重命名的文件。
  • -i:覆盖文件前提示确认。
  • -n:不覆盖已有文件。

示例:

1
2
3
mv file.txt newfile.txt  // 重命名文件file.txt为newfile.txt
mv file.txt /backup/ // 将file.txt移动到/backup/目录
mv -i file.txt /backup/ // 移动文件,覆盖前提示确认

2. 文件内容查看和编辑

cat 显示文件内容 (concatenate)

  • -n:显示行号。
  • -E:显示每行的结尾字符($)。
  • -T:显示制表符为 ^I
  • -s : 不输出多行空行

示例:

1
2
3
4
cat file.txt  // 显示file.txt的内容
tac file.txt // 逆向显示file.txt的内容
cat -n file.txt // 显示file.txt的内容并加上行号
cat -E file.txt // 显示file.txt的内容并标记行尾字符

nano 轻量级文本编辑器 (nano)

  • -B:自动备份文件。
  • -m:启用鼠标支持。
  • -c:显示光标位置的行号和列号。

示例:

1
2
3
nano file.txt  // 用nano编辑file.txt
nano -B file.txt // 编辑file.txt,并在保存时创建备份
nano -c file.txt // 编辑file.txt,并显示光标位置

echo 输出字符串到终端或文件 (echo)

  • -n:不换行,输出内容后不附加换行符。
  • -e:启用反斜杠转义(如 \n 表示换行,\t 表示制表符)。
  • -E:禁用反斜杠转义(默认)。

示例:

1
2
3
echo "Hello, World!"  // 输出字符串 "Hello, World!"
echo -n "Hello, World!" // 输出字符串 "Hello, World!" 后不换行
echo -e "Hello\nWorld" // 输出 "Hello""World" 并在之间换行

vi 强大的文本编辑器 (vi)

  • +:打开文件时跳转到文件末尾。
  • +num:跳转到指定行。
  • -R:以只读模式打开文件。

示例:

1
2
3
vi file.txt  // 用vi编辑file.txt
vi + file.txt // 打开file.txt并跳转到文件末尾
vi +10 file.txt // 打开file.txt并跳转到第10行

cal 显示日历 (calendar)

  • -y:显示当前年份的日历。
  • -m:显示指定月份的日历。
  • -3:显示前一个月、当前月和下一个月的日历。

示例:

1
2
3
cal  // 显示当前月的日历
cal -y // 显示当前年份的日历
cal -m 5 // 显示5月的日历

find 搜索文件或目录 (find)

  • -name:按名称搜索文件。
  • -type:按文件类型搜索(如 f 文件,d 目录)。
  • -exec:对找到的文件执行命令。

示例:

1
2
3
find . -name "file.txt"  // 在当前目录及子目录中搜索名为file.txt的文件
find /home -type d // 在/home目录中搜索所有目录
find . -name "*.sh" -exec chmod +x {} \; // 搜索并对所有.sh文件赋予可执行权限

whereis 查找可执行文件、源码或文档 (where is)

- `-b`:仅查找可执行文件。
  • -m:仅查找手册页。
  • -s:仅查找源码。

示例:

1
2
3
whereis ls  // 查找ls命令的可执行文件、手册页和源码路径
whereis -b ls // 仅查找ls命令的可执行文件
whereis -m ls // 仅查找ls命令的手册页

which 显示命令的绝对路径 (which)

  • -a:显示所有匹配的路径。
  • -s:无匹配时静默处理。

示例:

1
2
which ls  // 显示ls命令的绝对路径
which -a python // 显示所有匹配的python命令路径

more/less 分页显示文件内容 (more/less)

  • -N:显示行号(适用于 less)。
  • -S:单行显示长行(适用于 less)。
  • -f:强制打开特殊文件(适用于 more)。

示例:

1
2
3
more file.txt  // 分页显示file.txt的内容
less file.txt // 以分页模式显示file.txt的内容
less -N file.txt // 显示file.txt内容并加上行号

grep 搜索文本中的模式匹配 (grep)

  • -i:忽略大小写。
  • -r:递归搜索目录中的文件。
  • -n:显示匹配的行号。

示例:

1
2
3
grep "text" file.txt  // 在file.txt中搜索"text"字符串
grep -i "text" file.txt // 忽略大小写在file.txt中搜索"text"
grep -r "text" /path/to/dir // 递归搜索目录中包含"text"的文件

zip/unzip 压缩与解压文件 (zip/unzip)

  • -r:递归压缩目录(适用于 zip)。
  • -d:解压到指定目录(适用于 unzip)。
  • -l:列出压缩包内容(适用于 unzip)。

示例:

1
2
3
zip archive.zip file.txt  // 将file.txt压缩成archive.zip
zip -r archive.zip dir/ // 递归压缩目录dir/
unzip archive.zip // 解压缩archive.zip
### `tar`  创建或解压归档文件  (tape archive)
  • -c:创建新的归档文件。
  • -x:解压归档文件。
  • -z:使用 gzip 压缩或解压。
  • -v:显示处理的文件。
  • -f:指定归档文件名。

示例:

1
2
3
tar -cvf archive.tar dir/  // 将目录dir/打包为archive.tar
tar -xvf archive.tar // 解压archive.tar文件
tar -czvf archive.tar.gz dir/ // 将目录dir/压缩成gzip格式的archive.tar.gz

3. 系统信息和管理

top 实时显示系统资源使用情况 (table of processes)

  • -d:设置刷新间隔时间。
  • -u:按用户过滤进程。
  • -p:监控指定的进程ID。

示例:

1
2
3
top  // 实时显示系统资源使用情况
top -d 5 // 每5秒刷新一次显示
top -u root // 仅显示root用户的进程

df 显示磁盘使用情况 (disk free)

  • -h:以人类可读的格式显示信息。
  • -T:显示文件系统类型。
  • -a:显示所有文件系统,包括0字节的文件系统。

示例:

1
2
3
df -h  // 以人类可读的格式显示磁盘使用情况
df -T // 显示磁盘使用情况并包括文件系统类型
df -a // 显示所有文件系统的使用情况

free 显示内存使用情况 (free memory)

  • -h:以人类可读的格式显示内存信息。
  • -m:以MB为单位显示内存使用情况。
  • -s:每隔指定秒数刷新一次显示。

示例:

1
2
3
free -h  // 以人类可读的格式显示内存使用情况
free -m // 以MB为单位显示内存信息
free -s 5 // 每5秒刷新一次显示内存使用情况

uname 显示系统信息 (unix name)

  • -a:显示所有系统信息。
  • -r:显示操作系统内核版本。
  • -m:显示系统架构类型。

示例:

1
2
3
uname -a  // 显示所有系统信息
uname -r // 显示内核版本
uname -m // 显示系统架构类型

ps 显示当前进程信息 (process status)

  • -e:显示所有进程。
  • -f:显示完整格式信息。
  • -u:按用户过滤进程。

示例:

1
2
3
ps -e  // 显示所有进程信息
ps -ef // 以完整格式显示所有进程
ps -u root // 显示root用户的进程信息

systemctl 管理systemd服务 (system control)

  • start:启动服务。
  • stop:停止服务。
  • status:查看服务状态。
  • restart:重启服务。

示例:

1
2
3
systemctl start apache2  // 启动apache2服务
systemctl stop apache2 // 停止apache2服务
systemctl status apache2 // 查看apache2服务状态

4. 权限管理

chmod 更改文件或目录的权限 (change mode)

  • -R:递归更改目录及其内容的权限。
  • u+x:为文件所有者添加执行权限。
  • g-w:移除文件所属组的写权限。
  • o+r:为其他用户添加读取权限。

示例:

1
2
3
chmod 755 file.txt  // 将file.txt的权限设置为所有者可读写执行,组和其他用户可读可执行
chmod -R 644 directory/ // 递归设置directory及其内容的权限为所有者可读写,其他用户可读
chmod u+x script.sh // 为文件所有者添加执行权限

chown 更改文件或目录的所有者和所属组 (change ownership)

  • -R:递归更改目录及其内容的所有者和所属组。
  • --reference=:将所有者和所属组更改为与指定参考文件相同。
  • :group:仅更改文件或目录的所属组。

示例:

1
2
3
chown user file.txt  // 将file.txt的所有者更改为user
chown user:group file.txt // 将file.txt的所有者更改为user,所属组更改为group
chown -R user directory/ // 递归更改directory及其内容的所有者为user

结语

在这篇博客中,我们深入探讨了Linux系统中一些最常用的命令及其基本用法,包括文件管理、系统监控、权限设置等操作。这些命令不仅是Linux用户日常操作的基础,更是高效管理系统资源和文件的重要工具。通过熟练掌握这些命令,您可以更灵活地控制和管理系统,提高工作效率。

无论是新手还是有经验的用户,理解和应用这些命令都会帮助您更好地驾驭Linux环境。如果您遇到任何问题或有进一步的学习需求,欢迎随时留言讨论。希望这篇博客能为您的Linux之旅提供实用的帮助和指导