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 命令行的精髓之一,通过把简单的命令组合起来,可以完成非常复杂的任务。