跳到主要内容

Shell 入门:终端命令行基础

前置准备

如果你还没有配置好 SSH 连接到你的 Linux 机器,请先查看 SSH 工具教程

回眸的第一眼

当你打开终端时,你会看到一个提示符,一般长这样:

user@hostname:~$ 

这行字包含了几个重要信息:

  • user: 你当前登录的用户名
  • hostname: 主机名(你的电脑叫什么名字)
  • ~: 当前所在的目录(~ 表示用户的家目录)
  • $: 表示你是普通用户(如果是 root 用户会显示 #

$ 后面就可以输入命令了,敲下回车键命令就会被执行。

第一个命令:看看现在几点了

执行 date 命令
等待输入...
进度
0/3
键盘输入
$

date 这个程序会打印出当前的日期和时间,然后 shell 就静静地等你输入下一条命令。

给程序传参数:echo

使用 echo 命令
等待输入...
进度
0/3
键盘输入
$

echo 程序会把后面跟着的参数打印出来。shell 用空格来分割命令和参数,第一个词是要执行的程序名,后面的都是参数。

提示

如果参数里包含空格怎么办?比如有个文件夹叫 My Photos,你可以这样写:

  • 用引号包起来:"My Photos"'My Photos'
  • 用反斜杠转义:My\ Photos

Shell 是怎么找到程序的?

你可能会好奇:我输入 date,shell 怎么知道去哪找这个程序?

答案是环境变量 $PATH。它记录了一堆目录路径,当你输入一个命令时,shell 会按顺序在这些目录里找对应的程序。

查看 PATH 环境变量
等待输入...
进度
0/6
键盘输入
$

可以看到 echo 程序实际上是 /bin/echo。你也可以直接用完整路径来执行程序:/bin/echo hello,效果是一样的。

在目录间穿梭

路径的基本概念

Linux 的文件系统是一棵树,根节点是 /,所有文件和目录都挂在这棵树下面。

  • 绝对路径:从 / 开始的完整路径,如 /home/user/Documents
  • 相对路径:相对于当前目录的路径,如 ./Documents../Downloads
  • .:表示当前目录
  • ..:表示上一级目录

常用导航命令

目录导航基础
等待输入...
进度
0/15
键盘输入
$

查看目录内容:ls

使用 ls 命令
等待输入...
进度
0/8
键盘输入
$

ls -l 输出的每一列含义:

  • 第1列 drwxr-xr-x:文件类型和权限(d 表示目录,- 表示文件)
  • 第2列 2:链接数
  • 第3列 user:所有者
  • 第4列 user:所属组
  • 第5列 4096:文件大小(字节)
  • 第6-8列:最后修改时间
  • 最后一列:文件名
备注

关于权限 rwxr-xr-x

  • r (read):可读
  • w (write):可写
  • x (execute):可执行

每三个字符为一组,分别表示:所有者权限、同组用户权限、其他用户权限

文件操作三剑客

mv - 移动或重命名

mv 命令演示
等待输入...
进度
0/4
键盘输入
$

cp - 复制文件

cp 命令演示
等待输入...
进度
0/4
键盘输入
$

mkdir - 创建目录

mkdir 命令演示
等待输入...
进度
0/4
键盘输入
$

查帮助文档:man 命令

不知道一个命令怎么用?用 man 查手册!

使用 man 命令
等待输入...
进度
0/8
键盘输入
$
提示

大多数命令都支持 --help 参数来显示简短的帮助信息:ls --help

输入输出重定向:让程序互相配合

重定向到文件

在 shell 中,程序有两个主要的"流":标准输入 (stdin)标准输出 (stdout)。默认情况下,输入来自键盘,输出显示在屏幕上。但我们可以用 >< 来改变这个行为:

输出重定向
等待输入...
进度
0/7
键盘输入
$

管道:把程序串起来

| 操作符可以把一个程序的输出直接接到另一个程序的输入:

管道操作
等待输入...
进度
0/6
键盘输入
$

管道是 Linux 命令行的精髓之一,通过把简单的命令组合起来,可以完成非常复杂的任务。