LS
ls
是用来查看当前目录中有哪些文件和子目录的命令。默认情况下,它显示当前目录的内容。如果想让输出有颜色,可以用 --color
选项:
比如,要给 ls 命令的输出加上颜色,你可以这样做:
ls --color
现在 ls
命令的输出就带颜色了,你可以很容易地区分目录和文件。
但是每次都输入带颜色的 ls
命令会有点麻烦,这就是为什么会使用 alias
命令的原因。
Alias
alias
命令可以让你在你的 shell 会话中定义临时别名。创建别名时,你告诉你的 shell 用一系列命令替换一个单词。
比如,要让 ls
命令默认带颜色而不用每次都敲 --color
标志,你可以这样:
# fish
alias ls "ls --color"
这里我使用的 fish shell
,alias
命令接受一个 key value
,别名的值放在引号里。
如果你想列出你在 shell 会话中所有的别名,可以运行 alias
命令而不带参数。
Unalias
字如其名,unalias 命令是从已设置的别名中移除一个别名。要移除之前的 ls
别名,你可以这样用:
unalias ls
PWD
pwd 命令的全称是 “print working directory”,它会输出你当前所在目录的绝对路径。举个例子,如果你的用户名是“sora”,而你在 github 目录下,那么它的绝对路径就是:/home/sora/github。
使用方法很简单,只需在终端中键入 pwd:
pwd
# /home/sora/github
Cd
cd 命令非常常用,和 ls 一样。它的全称是“change directory”,顾名思义,它可以让你切换到你想要进入的目录。
比如说,如果你当前在主用户目录里,而你想要访问它的一个子文件夹叫做 github,你可以通过输入以下命令进入:
cd github
你也可以提供文件夹的绝对路径:
cd /home/sora/github
cd 命令有一些小技巧,可以在使用时为你节省很多时间,比如:
- 进入当前用户目录:
cd
- 上级目录
cd ..
- 返回前一个目
cd github
# 历史栈堆里记录了这一个步骤
cd -
# 后退
Cp
在 Linux 终端中直接复制文件和文件夹非常简单,有时甚至可以替代 GUI 文件管理器。
要使用 cp
命令,只需要输入它以及源文件和目标文件:
cp file_to_copy.txt new_file.txt
你也可以通过使用 -r
标志来复制整个目录:
cp -r dir_to_copy/ new_copy_dir/
需要注意的是:在 Linux 中,文件夹以斜杠(/)结尾。
Rm
紧随其后的是 rm
命令,它可以用来删除文件和目录,不过使用的时候要小心,通过 rm
命令删除的东西很难 (但不是不可能) 恢复。
要删除文件,可以输入:
rm file_to_copy.txt
如果要删除一个空目录,你可以使用 -r
标志:
rm -r dir_to_remove/
另一方面,如果要删除一个包含内容的目录,你需要使用强制 -f
(focus) 和 -r 标志:
rm -rf dir_with_content_to_remove/
Mv
你可以使用 mv
命令在文件系统中移动(或重命名)文件和目录。使用这个命令时,你需要输入命令名称,以及源文件和目标文件夹:
# 移动文件到文件夹
mv source_file destination_folder/
mv command_list.txt commands/
如果要使用绝对路径,可以这样:
mv /home/kinsta/BestMoviesOfAllTime ./
这里的 ./
表示当前目录。
你还可以使用 mv
命令在保持文件在同一目录的同时重命名文件:
mv old_file.txt new_named_file.txt
Mkdir
使用 mkdir
命令在 shell 中创建文件夹。只需指定新文件夹的名称,然后就可以开始使用了。
例如,要创建一个用于存放所有图片的目录,只需输入:
mkdir images/
要使用 -p
(parent) 标志轻松创建子目录,它允许你一次性创建整个目录层次结构(一个目录树),而不会因为父目录已存在而报错。例如这样:
mkdir -p movies/2004/
Man
另一个重要的 Linux 命令是 man
。它显示任何其他命令的手册页(如果该命令有的话)。
要查看 mkdir
命令的手册页,输入:
man mkdir
你还可以参考 man
的手册页:
man man
Touch
touch
命令允许你更新指定文件的访问和修改时间。例如,如果有一个上次修改日期是 4 月 12 日的旧文件:
touch -m old_file
现在日期与今天的日期匹配了。然而,大多数情况下,你不会使用 touch
来修改文件日期,而是用它来创建新的空文件:
touch new_file_name
Chmod
chmod
命令允许你快速更改文件的模式(权限)。它有很多可用的选项。
在操作系统中,文件可以具有的基本权限有:
- r(读)
- w(写)
- x(执行)
chmod
最常见的用法之一是使文件对用户可执行。为此,输入 chmod
、+x
标志,然后是你要修改权限的文件:
chmod +x script/binary
这一般用于二进制文件,比如我现在写一个了类似 mkdir
的具有读写功能的命令行提供给其他人使用,但是,运行该命令行需要用户提供权限才能跑,那么这个时候,chmod
命令就派上用场了,从而允许你通过使用 ./
符号直接运行这个命令。
./
./
本身不是一个命令,但在这里值得一提:它允许你的 shell 直接从终端运行已在系统中安装的任何可执行文件。不需要在 GUI 文件管理器中双击文件打开。
例如,使用这命令,你可以运行一个 Python 脚本或一个仅在 .run
格式中可用的程序,比如 XAMPP。在运行可执行文件时,请确保它具有可执行(x)权限,你可以使用 chmod
命令进行修改。
这里有一个简单的 Python 脚本以及我们如何使用 ./
符号运行它的示例:
#! /usr/bin/python3
# 文件名: script
for i in range(20):
print(f"This is a cool script {i}")
以下是如何将脚本转换为可执行文件(binary)并运行它的方式:
chmod +x script
./script
Exit
exit
命令正如其名,它可以结束一个 shell 会话,并在大多数情况下自动关闭你正在使用的终端:
exit
Sudo
这个命令代表 “superuser do”,它允许你在运行特定命令时充当超级用户或 root 用户。这是 Linux 保护自己并防止用户意外修改系统文件系统或安装不适当的软件包的方式。
sudo
常用于安装软件或编辑用户主目录之外的文件:
sudo apt install gimp
sudo cd /root/
在运行你在其后输入的命令之前,它会要求你输入管理员密码。
Shutdown
shutdown
命令允许你关闭计算机。但它也可以用于停止和重启计算机。
要立即关闭计算机(默认是一分钟后),输入:
shutdown now
还可以计划在 24 小时制中关闭系统:
shutdown 20:40
要取消之前的关机调用,可以使用 -c
标志:
shutdown -c
Unzip
unzip
命令允许你从终端中提取 .zip
文件的内容。这个包可能默认情况下未安装,所以确保使用软件包管理器 (apt) 安装。
如下所示,解压一个包含图像的 .zip
文件:
unzip images.zip
Apt、Yum、Pacman
无论使用哪个 Linux 发行版,都会使用软件包管理器来安装、更新和删除每天使用的软件。
你可以通过命令行访问这些包管理器,具体取决于你的 Linux 系统运行的发行版(如 Ubuntu、CentOS)
以下示例将安装 GIMP,这是一款通常在大多数包管理器中都可用的免费开源软件:
- Debian-based(Ubuntu、Linux Mint):
sudo apt install gimp
- Red Hat-based(Fedora、CentOS):
sudo yum install gimp
- Arch-based(Manjaro、Arco Linux):
sudo pacman -S gimp
Echo
echo
命令在终端中显示定义的文本,非常简单:
echo "Cool message"
echo
命令显示 “Cool message”。其主要用途是在这些消息中打印环境变量:
echo "Hello, $USER"
# Hello, sora
Cat
cat
,即“concatenate”(连接),允许你直接从终端创建、查看和连接文件。它主要用于预览文件而无需打开图形文本编辑器:
cat long_text_file.txt
PS
使用 ps
,你可以查看当前 shell 会话正在运行的进程。它打印有关你正在运行的程序的有用信息,如进程 ID、TTY(TeleTYpewriter)、时间和命令名。
Kill
Linux 不像 Windows 那般当一个软件停止响应时,可以很方便地通过任务管理器来结束,在 Linux 中,一般都通过使用 kill
命令来关闭一个进程。
你可以通过输入 PID(进程 ID)或程序的二进制名称来终止进程:
kill 533494
kill firefox
在使用这个命令时要小心,因为使用 kill
有可能意外删除你正在运行的软件或者文档。
Ping
ping
是最常用的网络终端实用程序,用于测试网络连接。ping
有很多选项,但在大多数情况下,你只需用它来请求一个域名或 IP 地址:
ping google.com
ping 8.8.8.8
Vim
vim
是一个自 90 年代以来就在使用的免费开源终端文本编辑器。它使用高效的按键绑定来编辑纯文本文件。
有人认为它难以使用,退出 Vim 是 StackOverflow 上可能搜索量最多的问题之一。 (毕竟不好用)这里不介绍,有兴趣可以自行 Google 或者百度查找更多的资料。
History
如果你忘记了某个命令,history
命令就派上用场了。这个命令会显示一个已使用过的命令的编号列表:
history
Passwd
passwd
允许你更改用户帐户的密码。首先,它提示你输入当前密码,然后要求你输入新密码和确认密码。
这与你在其他地方看到的更改密码的方式类似,但在这种情况下,它是直接在你的终端中进行的:
passwd
Which
which
命令输出 shell 命令的完整路径。如果它无法识别给定的命令,它会抛出错误。
例如,我们可以使用它来检查 Python 和 Brave 浏览器的二进制文件路径:
which python
# /usr/bin/python
which brave
# /usr/bin/brave
Shred
如果你想让一个文件几乎无法恢复,shred
就能帮你完成这个任务。该命令会重复覆盖文件的内容,从而使文件极难被恢复。
下面是一个内容很少的文件:
# A testing file
console.log('Hello, world')
现在,让 shred
执行它的任务,输入以下命令:
shred file_to_shred.txt
文件的内容被覆盖。
如果你想立即删除文件,可以使用 -u
标志:
shred -u file_to_shred.txt
Less
less
(与 more
相反)是一个允许你向前和向后查看文件的程序:
less large_text_file.txt
less
的好处在于它在其界面中包含了 more
和 vim
命令。如果你需要比 cat
更交互式的工具,less
是一个不错的选择。
Tail
类似于 cat
,tail
打印文件的内容,但有一个主要的区别:它只输出最后的行。默认情况下,它打印最后的 10 行,但你可以用 -n
修改这个数字。
例如,要打印大型文本文件的最后几行,你会使用:tail
命令。
tail long.txt
要仅查看最后四行:
tail -n 4 long.txt
Head
head
与 tail
互补。head
输出文本文件的前 10 行,但你可以使用 -n
标志设置要显示的行数:
head long.txt
head -n 5 long.txt
Grep
grep
是处理文本文件中文本的最强大的工具之一。它搜索与正则表达式匹配的行并打印它们:
grep "linux" long.txt
你可以使用 -c
(count) 标志计算模式重复的次数:
grep -c "linux" long.txt
# 2
Whoami
whoami
命令(缩写为 “who am i”)显示当前正在使用的用户名:
whoami
# sora
你可以通过使用 echo
和环境变量 $USER
来获得相同的结果:
echo $USER
# sora
Whatis
whatis
打印任何其他命令的单行描述,成为一个有用的参考:
whatis python
# python (1) - an interpreted, interactive, object-oriented programming language
whatis whatis
# whatis (1) - display one-line manual page descriptions
Wc
wc
代表 “word count”,顾名思义,它返回文本文件中的字数:
wc long.txt
# 37 207 1000 long.txt
- 37 行
- 207 个单词
- 1000 字节大小
- 文件名(long.txt)
如果只需要单词的数量,使用 -w
标志:
wc -w long.txt
# 207 long.txt
Uname
uname
(缩写为 “Unix name”)打印操作系统信息,这在你知道当前 Linux 版本时非常有用。
大多数时候,你将使用 -a
(--all
)标志,因为默认输出并不那么有用:
uname
# Linux
uname -a
# Linux sora-pc 5.15.146.1 #1 SMP GNU/Linux
Neofetch
neofetch
是一个显示有关你的系统的信息,如内核版本、shell 和硬件,以及你的 Linux 发行版的 ASCII 图标的工具:
在大多数机器上,默认情况下可能没有安装此命令,所以请确保首先使用包管理器进行安装。
Find
find
命令基于正则表达式在目录层次结构中搜索文件。要使用它,请按照以下语法:
find [flags] [path] -name [expression]
要在当前目录中搜索名为 long.txt
的文件,输入以下命令:
find ./ -name "long.txt" # ./long.txt
要搜索以 .py
(Python)为扩展名的文件,你可以使用以下命令:
find ./ -type f -name "*.py"
# ./get_keys.py
# ./github_automation.py
# ./binarysearch.py
Wget
wget
(World Wide Web get)是一个从互联网上搜索内容的实用程序。它具有最丰富的 flag 之一。
一般可以用它来下载文件,如下所示:从 GitHub 上下载文件:
wget https://raw.githubusercontent.com/vitejs/vite/main/LICENSE
小抄
命令 | 用法 |
---|---|
ls | 列出目录内容 |
alias | 定义或显示别名 |
unalias | 删除别名定义 |
pwd | 显示当前工作目录 |
cd | 切换目录 |
cp | 复制文件和目录 |
rm | 删除文件和目录 |
mv | 移动(重命名)文件和目录 |
mkdir | 创建目录 |
man | 显示其他命令的手册页 |
touch | 创建空文件 |
chmod | 更改文件权限 |
./ | 运行可执行文件 |
exit | 退出当前 shell 会话 |
sudo | 以超级用户身份执行命令 |
shutdown | 关闭计算机 |
htop | 显示进程和资源信息 |
unzip | 解压缩 ZIP 文件 |
apt, yum, pacman | 软件包管理器 |
echo | 显示文本行 |
cat | 打印文件内容 |
ps | 报告 shell 进程状态 |
kill | 终止程序 |
ping | 测试网络是否连接 |
vim | |
history | 显示先前命令列表 |
passwd | 更改用户密码 |
which | 返回程序的完整二进制路径 |
shred | 覆盖文件内容以隐藏其内容 |
less | 交互式查看文件 |
tail | 显示文件的最后几行 |
head | 显示文件的前几行 |
grep | 打印与模式匹配的行 |
whoami | 输出当前用户名 |
whatis | 显示单行描述 |
wc | 统计文件中的字数 |
uname | 显示操作系统信息 |
neofetch | 显示操作系统和硬件信息 |
find | 匹配模式搜索文件 |
wget | 从互联网查找文件 |