Linux 常用命令(基础)

本文整理 Linux 常用基础命令,涵盖日常操作及文末的关机/重启相关命令说明。

常用命令

1. man

man (Manual) 命令用于查看命令的帮助文档,对你熟悉或不熟悉的命令提供帮助解释。

示例:

man ls

查看 ls 相关的用法说明。

注:q 键或者 Ctrl+C 退出。在 Linux 下可以使用 Ctrl+C 终止当前程序运行。

2. ls

ls (List) 用于查看目录或者文件的属性,列举出任一目录下面的文件。

示例:

ls /usr/man
ls -l

输出说明:

  • 首字符表示文件类型:d 表示目录 (directory),- 表示文件,l 表示连接文件 (link)。
  • 后续字符表示文件或者目录许可权限:分别用可读 (r)、可写 (w)、可运行 (x) 表示。

3. cp

cp (Copy) 用于拷贝文件。

示例:

cp filename1 filename2      # 把 filename1 拷贝成 filename2
cp 1.c netseek/2.c          # 将 1.c 拷到 netseek 目录下命名为 2.c

4. rm

rm (Remove) 用于删除文件和目录。

示例:

rm 1.c                      # 将 1.c 这个文件删除

5. mv

mv (Move) 用于移走目录或者改文件名。

示例:

mv filename1 filename2      # 将 filename1 改名为 filename2
mv qib.tgz ../qib.tgz       # 移到上一级目录

6. cd / pwd

  • cd (Change Directory):改变当前目录。
  • pwd (Print Working Directory):查看当前所在目录完整路径。

示例:

pwd                         # 查看当前所在目录路径
cd netseek                  # 进入 netseek 这个目录
cd                          # 退出当前目录(回到用户主目录)

7. cat / more

将某个文件的内容显示出来。两个命令的区别在于:cat 把文件内容一直打印出来,而 more 则分屏显示。

示例:

cat > 1.c                   # 把代码粘贴到 1.c 文件里,按 Ctrl+D 保存代码
cat 1.c                     # 查看文件内容
more 1.c                    # 分屏查看文件内容

编译相关:

gcc -o 1 1.c                # 将 1.c 编译成可执行文件

8. chmod

chmod (Change Mode) 用于修改文件权限。

用法:

  • 符号模式:chmod [who][+|-|=][mode] filename
  • 数字模式:chmod [八进制数] filename

示例:

chmod u+x filename          # 只想给自己运行,别人只能读
chmod g+x filename          # 同组的人来执行

参数说明:

  • u 表示文件主人 (user),g 表示文件所在组 (group),o 表示其他人 (others)。
  • r 表可读,w 表可写,x 表可以运行。

9. clear / date

  • clear:清屏,相当于 DOS 下的 cls
  • date:显示当前系统时间。

10. mount

mount 用于加载一个硬件设备。

用法:

mount [参数] 要加载的设备 载入点

示例:

mount /dev/cdrom /mnt/cdrom # 加载光盘设备到挂载点
cd /mnt/cdrom               # 进入光盘目录

11. su

su (Switch User) 用于在不退出登录的情况下,切换到另外一个人的身份。

用法:

su -l 用户名                # 如果用户名缺省,则切换到 root 状态

示例:

su -l netseek               # 切换到 netseek 这个用户,将提示输入密码

12. whoami / whereis / which / id

  • whoami:确认自己身份。
  • whereis:查询命令所在目录以及帮助文档所在目录。
  • which:查询该命令所在目录 (类似 whereis)。
  • id:打印出自己的 UID 以及 GID。(UID: 用户身份唯一标识。GID: 用户组身份唯一标识。每一个用户只能有一个唯一的 UID 和 GID)

示例:

whoami                      # 显示你自己登录的用户名
whereis bin                 # 显示 bin 所在的目录,例如:/usr/local/bin
which bin                   # 查询 bin 命令的路径

13. grep / find

  • grep:文本内容搜索。
  • find:文件或者目录名以及权限属主等匹配搜索。

示例:

grep success *              # 查找当前目录下面所有文件里面含有 success 字符的文件

14. kill

可以杀死某个正在进行或者已经是僵尸 (Zombie) 状态的进程。

示例:

ps ax                       # 查看进程列表,配合 kill 使用

15. passwd

可以设置或修改用户口令。

16. history

查看用户用过的命令历史。

示例:

history                     # 显示用户过去使用的命令

17. !!

执行最近一次的命令。

18. mkdir

mkdir (Make Directory) 用于创建目录。

示例:

mkdir netseek               # 创建 netseek 这个目录

19. tar

tar 用于打包或解压文件。

示例:

tar -zxvf nmap-3.45.tgz     # 将文件解压到当前目录

20. finger

可以让使用者查询一些其他使用者的资料(注:现代系统默认可能未安装)。

示例:

finger                      # 查看所有用户的使用资料
finger root                 # 查看 root 的资料

关机与重启

Linux 中常用的关机和重新启动命令有 shutdownhaltreboot 以及 init。它们都可以达到关机和重新启动的目的,但是每个命令的内部工作过程是不同的,下面将逐一进行介绍。

shutdown

shutdown 命令用于安全关闭 Linux 系统。有些用户会使用直接断掉电源的方式来关闭 Linux,这是十分危险的。因为 Linux 与 Windows 不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至会损坏硬件设备。

执行 shutdown 命令时,系统会通知所有登录的用户系统将要关闭,并且 login 指令会被冻结,即新的用户不能再登录系统。使用 shutdown 命令可以直接关闭系统,也可以延迟指定的时间再关闭系统,还可以重新启动。延迟指定的时间再关闭系统,可以让用户有时间储存当前正在处理的文件和关闭已经打开的程序。

部分参数如下:

  • [-t]:指定在多长时间之后关闭系统。
  • [-r]:重启系统。
  • [-k]:并不真正关机,只是给每个登录用户发送警告信号。
  • [-h]:关闭系统(halt)。

shutdown 命令的工作实质是给 init 程序发送信号(signal),要求其切换系统的运行级别(Runlevel)。系统的运行级别包括:

  • 0:关闭系统。
  • 1:单用户模式。如果没有为 shutdown 命令指定 -h-r 参数而直接执行,则默认将切换到此运行级别。
  • 2:多用户模式(不支持 NFS)。
  • 3:多用户模式(支持 NFS),一般常用此种运行级别。
  • 5:多用户模式(GUI 模式)。
  • 6:重新启动系统。

halt

halt 是最简单的关机命令,其实际上是调用 shutdown -h 命令。halt 执行时,杀死应用进程,文件系统写操作完成后就会停止内核。

部分参数如下:

  • [-f]:没有调用 shutdown 而强制关机或重启。
  • [-i]:关机或重新启动之前,关掉所有的网络接口。
  • [-p]:关机时调用 poweroff,此选项为缺省选项。

reboot

reboot 的工作过程与 halt 类似,其作用是重新启动,而 halt 是关机。其参数也与 halt 类似。

init

init 是所有进程的祖先,其进程号始终为 1。init 用于切换系统的运行级别,切换的工作是立即完成的。

  • init 0:用于立即将系统运行级别切换为 0,即关机。
  • init 6:用于将系统运行级别切换为 6,即重新启动。
说明: 本文部分命令(如 init 运行级别、finger)基于传统 SysV init 系统。现代 Linux 发行版(如 CentOS 7+、Ubuntu 16.04+)多采用 systemd 管理初始化进程,部分命令行为或运行级别概念可能有所不同,请以实际发行版文档为准。