本文中将说明如何使用终端命令来提供有关某些命令及其用途的信息。
此外,还提供示例来阐释该过程。
命令行工具十分强大。现有的工具可以在图形用户界面 (UI) 中处理乏味的作业,并将其转换为只需数秒钟即可完成的任务。在用户界面应用程序中,删除大文件每行的最后四行将是一个漫长的过程。但是,它可以在命令行上自动化执行。
在 Ubuntu Linux 中打开终端窗口的最常见方法是:
目前有许多命令与 Ubuntu Linux 中的终端 Shell 相关联。下面的文章列出了它们所影响的群体中的大多数人。
我们使用三个主要命令来提供使用各种终端命令所需的全部信息。
该 man 命令会显示终端中使用的任何命令的手册。
大多数 shell 命令接受各种选项。要获取有关命令和可用选项列表的某些信息,请使用 man
- manual 的缩写命令。提供要查找更多相关信息的命令的名称作为其参数。这就是 man
命令将要发挥作用的命令。
示例:如果输入命令 man who
,将显示以下输出。
WHO(1) User Commands WHO(1)
NAME
who - show who is logged on
SYNOPSIS
who [OPTION}... [ FILE | ARG1 ARG2 ]
DESCRIPTION
-a, --all
same as -b -d --login -p -r -t -T -u
-b, --boot
time of last system boot
-d, --dead
print dead processes
-H, --heading
print line of column headings
-i, --idle
add idle time as HOURS:MINUTES, . or old (deprecated, use -u)
-l, --login
print system login processes
--lookup
attempt to canonicalize hostnames via DNS
-m, only hostname and user associated with stdin
Manual page who(1) line 1
许多手册都有几个屏幕那么长。使用光标或 ARROW
键,或 Page Up 和 Page Down 键来浏览文本。空格键显示下一行文本。按 q 键可退出手册并返回到 shell。
在 man 页面中可以看到,我们可以使用 -a
选项来显示有关活动用户会话的更多信息。
user@3[user]$ who -a
|
|
|
|
Nov 14 13:47 |
|
10 |
id=si |
term=0 |
exit=0 |
|
|
|
system boot |
Nov 14 13:47 |
|
|
|
|
|
|
|
|
run-level 5 |
Nov 14 13:47 |
|
|
Last=S |
|
|
|
|
|
|
Nov 14 13:47 |
|
835 |
id=15 |
term=0 |
exit=0 |
LOGIN |
|
|
tty1 |
Nov 14 13:47 |
|
958 |
id=1 |
|
|
root |
|
- |
tty2 |
Nov 14 19:15 |
00:19 |
959 |
|
|
|
user |
|
- |
tty3 |
Nov 14 19:28 |
00:06 |
960 |
|
|
|
LOGIN |
|
|
tty4 |
Nov 14 13:47 |
|
961 |
id=4 |
|
|
LOGIN |
|
|
tty5 |
Nov 14 13:47 |
|
962 |
id=5 |
|
|
LOGIN |
|
|
tty6 |
Nov 14 13:47 |
|
963 |
id=6 |
|
|
user |
|
? |
:0 |
Nov 14 13:47 |
? |
965 |
|
|
|
|
|
|
pts/3 |
Nov 14 16:29 |
|
1746 |
id=/3 |
term=0 |
exit=0 |
user@3[user]$
此外,它会读取程序的帮助文件, man
命令还可以提供有关 shell、函数和库的信息。
如果您不确定如何使用特定的命令,则运行该命令,并且加上 -h
或 –help
交换机.您看到用法信息和可与命令配合使用的选项列表。
示例:如果您想知道如何使用 wget
命令,则键入 wget –help
或 wget -h
。
User@Ubuntu@#$ wget --help
GNU Wget 1.12, a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...
Mandatory arguments to long options are mandatory for short options t
oo.
Startup:
-V, --version display the version of Wget and exit.
-h, --help print this help.
-b, --background go to background after startup.
-e, --execute=COMMAND execute a '.wgetrc' -style command.
Logging and input file:
这通常会将大量信息打印到终端。滚动浏览可能难以实行。要更轻松地读取输出,您可以 pipe
通过 less 命令。这允许您使用键盘上的光标或箭头键进行滚动浏览。
示例: wget -help | less
GNU Wget 1.12, a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...
Mandatory arguments to long options are mandatory for short options t
oo.
Startup:
-V, --version display the version of Wget and exit.
-h, --help print this help.
-b, --background go to background after startup.
-e, --execute=COMMAND execute a '.wgetrc' -style command.
Logging and input file:
-o, --output-file=FILE log messages to FILE.
:
操作完成后,按 q 键可关闭 less 实用程序。
要查找特定选项,您可以 pipe
通过命令传输 grep
该输出。(例如:使用以下命令搜索包含某单词的选项 proxy.
)
wget -help | grep proxy
User@ubuntu:~$ wget --help | grep proxy
--no-proxy explicitly turn off proxy.
--proxy-user=USER set USER as proxy username.
--proxy-password=PASS set PASS as proxy password.
User@Ubuntu:~$
某些命令也记录在 info
系统中。此处的信息补充了 man
命令所显示的内容。
示例:输入命令 info ls,
将显示以下输出。
[support@support]$" info ls
您现在可以查看包含有关 ls
命令的重要信息的手册。
File: coreutils.info, Node: ls invocation, Next: dir invocation, Up: Directory listing
'ls': List directory contents
=============================
The 'ls' program lists information about files (of any type,
including directories). Options and file arguments can be intermixed
arbitrarily, as usual.
For non-option command-line arguments that are directories, by
default 'ls' lists the contents of directories, not recursively, and
omitting files with name beginning with '.'. For other non-option
arguments, be default 'ls' lists just the file name. If no non-option
argument is specified, 'ls' operates on the current directory, acting
as if it had been invoked with a single argument of '.'.
By default, the output is sorted alphabetically, according to the
locale settings in effect. (1) If standard output is a terminal, the
output is in columns (sorted vertically) and control characters are
output as question marks; otherwise, the output is listed one per line
and control characters are output as-is.
--zz-Info: (coreutils.info.gz)ls invocation, 48 lines --Top------------------
Welcome to info version 4.3 Type C-h for help, m for menu item.
通过按空格键或使用光标/ARROW
键,您可以向下滚动页面。
help
,按 Hquit
,按 Q
您可以在终端中执行几乎所有操作,这些也可以从用户界面进行。
正如前面所述,许多命令首先被设计成在终端中工作,然后用户界面才在此基础上进行构建。这就是某些 GUI 可能让人感觉笨拙的原因 — 它们在开始时是事后添加的事物,因为大多数 Linux 服务器内部版本并不会为它们操心。
从菜单打开终端的默认位置是在您的 home 文件夹。被称为 ~
您可以通过 .
操作符查找当前目录。大多数命令当它们作用于当前文件夹选择时,对命令、位置和文件的操作是区分大小写的。 /home
不同于 /HOME
或 /Home
。
如果驱动程序名称很长,请使用 TAB 键来填入文件名。 driver-128947232jaseu.sh
例如,键入 dri
,它会输入剩余的部分。在没有 2 个以 dri
开头的名称的情况下,如果您这么做,请添加另一个字符,以使其成为 driv
,然后重试。确保自动完成与您想要看到的内容相匹配。
通过使用 man
页面 -h
或 --help
在写入初始命令后键入 ,可以完整阅读几乎所有命令的相关信息。此语法是 man command_name
、 command_name -h
或 command_name --help
。
要获取更多信息,您可以使用 info。通过使用 ,可以搜索命令 info command_name
。对于属于 coreutils 包的大多数这类命令,您也可以查找 info
,方法是使用 info coreutils command_name
调用 ,其中 由搜索到的命令进行替换 command_name
。
几乎所有命令都可以逐步准确地显示正在发生的事情。这通常包括 -v
或 --verbose
。
您可以一次性为命令指定多个命令标记,以获取更多信息。请参阅 ls -al
以下示例。
命令名称并不总是显而易见 — 在以前的 UNIX 中,由于空间限制,命令名称遭到缩短,这些约定一直保留下来。
cd
— 将您移回到主目录,等同于 cd ~
cd..
— 使您返回一个目录。从 /home/user/Desktop
开始, cd..
使您进入 /home/user
。这可以扩展为 cd ../../
,它会将您移回 2 个目录,以便进入 /home
。
cd foldername/
— 将您向前移动到当前文件夹中的给定文件夹。
/
,它是重要的省略。如果我位于 /home/user
,并且想要到达 Desktop
。我必须键入 cd Desktop/
,并且在 /
之前没有 Desktop
。在它前面键入 /
会将我们置于将会无法工作的文件系统的根目录。
cd /some/other/path
— 将您转至指定的文件夹路径。只要路径正确即可。请勿忘记,您可以使用 TAB
键来自动完成。
ls
— 列出当前文件夹中的所有文件。
ls -l
— 提供更长的列表,其中包括所有者、权限、大小和修改日期。
ls -a
— 显示隐藏的文件和文件夹以及正常列表。
ls -al
— 组合两个选项以显示隐藏的文件和文件夹,并以长格式显示。
ls -h
— 以人类可读格式 KB, MB, GB,
文件大小(而非字节)来显示文件大小。它最常与 -l
标记一起使用。
您可以查看自己甚至不在其中的目录中的文件。如果我位于 /home/user/Desktop
,并且想要查看 /home/user
中的文件,则可以执行 ls ../
,它将会列出上一层目录的文件。
cp file /path/to/folder
— 将指定的文件复制到给定路径。
cp -r folder /path/to/folder
— 将文件夹的内容重复复制到另一个文件夹。
cp *.extension /path/to/folder
— 将与给定扩展名匹配的文件复制到新文件夹。要复制所有 .doc 文件,它将变为 cp *.doc /path/to/folder
,并且文件夹必须存在。
cp name* /path/to/folder
— 将以 name
开头的所有文件复制到给定文件夹。要复制以 example
开头的所有文件,它将变为 cp example* /path/to/folder
,并且文件夹必须已存在。
的语法 mv
与上面的示例相似,只需将示例 #2 的 cp
免除即可。 mv
不采用 -r
标记,这是因为移动文件夹也会移动其内容。该语法并不是在所有实例中都是准确的,但是可以用于上面的示例。有关更多详细信息,请查阅您的手册页。
使用 rm
删除文件是永久性的。它不使用垃圾桶。谨慎使用此功能,并确保删除内容正是您想要删除的项,然后再按 Enter
键。如果您使删除命令过于复杂,则它可能不会很好地结束。
rm file
— 从计算机中删除该特定的文件。
rm -r folder
— 从计算机中删除该特定的文件夹。
rm -rf folder
— 从计算机中强行删除该特定文件夹。如果使用不当,此命令可能会使配置混乱。
您可以在终端中使用 nano
编辑文件,从而快速而粗略地执行文件编辑,直至完整配置为止。它可能很有用,但它只处理纯文本文件和编程文件,因此像 Microsoft Word 文档之类的文件无法正常打开。
如果文件归 root 所有,则常规用户无法对其进行编辑。 nano
必须带有前缀 sudo
;以便保存更改。否则,它在只读模式下打开。
nano newfile.whatever
隶属于指定的名称,您可将它打开以进行编辑。
nano existing_file
— 打开现有文件进行编辑。
从内部的 nano
通过同时按 CTRL+O
键来保存文件,然后更改名称或按 Enter
键以保持相同的名称。这将保存文件。
退出 nano
通过同时使用 CTRL+X
键。如果您有未保存的更改,则它会询问您是否要保存它们。
mkdir folder_name
— 使用指定的名称创建文件夹
mkdir -p /path/to/folder/name
— 根据需要创建每个文件夹。要创建文件夹 /home/user/1stfolder/2ndfolder
,并且仅 /home/user
存在,使用 mkdir -p
将创建两个目录 1stfolder,
和 2ndfolder
。
ps aux
— 详细地列出计算机上正在运行的所有进程。这包括用户、进程 ID PID,
和进程名称。通过使用此命令,您可以查看进程列表,如有必要,您可以终止不必要的进程或暂停的进程。
kill PID
— PID 是引用有问题的进程的数字。您应该从 等命令获取 PID ps aux
。如果某个进程拒绝停止运行,您还可以指定 kill -9 PID
,这应该会以所有方式终止该进程。
killall program
- Killall
会按名称(即, by name
)终止列出的程序(即, listed program
)的所有实例。例如,如果打开了 3 个 Firefox Internet 浏览器会话, killall Firefox
将执行操作,终止所有 Firefox 会话。 kill
将只采用您希望终止的有问题的 Firefox 进程的指定 PID,然后仅终止该进程。
xkill
是一种用于单击和关闭窗口的用户界面方式。键入 xkill
应该会出现头骨加交叉腿骨图标,并且将关闭下一个单击打开的窗口。
Pipes
显示为 straight bar,
也称为 |
键。
它是 Windows 中很少使用的键,但通常在反斜杠键上找到。
这些用于将命令链接在一起。 Pipes
获取一个命令的输出,并将其路由,以便在第一个命令和第二个命令链接到一起时用作第二个命令的输入。
有关 pipes
及其用法的更多信息,请查阅联机资源,因为这些管道上有写入的卷。
>
用于 overwrite
覆盖(即,)现有文件内容,方法是将现有文件内容替换为新命令的输出。
>>
于将信息追加 append
到现有文件。这对于日志记录操作非常有用。
Example:
ps aux > processes.log
将 的输出发送 ps aux
到文件 processes.log
以便在文本编辑器中查看命令输出并覆盖该文件的当前内容。
tee
与 |
配合使用,以便获取命令输出,并将其发送到其他地方。如果存在您遗漏的错误,这将很有用。通过这种方式,屏幕上的任何内容也会捕获到文件中。
示例: dmesg
| tee boot.txt
将运行会 dmesg
显示初始启动信息的命令。该 |
将 的输出发送 dmesg
设置为 tee
接着后者会通过将输出发送到终端和日志文件 来完成其作业 boot.txt
。
在标记为可运行项目后,是否需要在当前目录中执行文件?如果 ./
您不需要 root 用户权限, 操作符能够以普通用户的身份执行该文件。 ./
意味着在当前目录(即,), in the current directory
因此它不适用于当前目录以外的文件。
如果您需要运行不在当前目录中的文件,则必须将路径传递至正确的运行程序。例如,如果是 python 程序,则它是 python /path/to/file
;如果是 shell 文件,则它将是 sh /path/to/file
。目前有其他程序,但这些程序都是最常见的。
如果由于先前收到(操作未被允许)而需要使用 root 用户权限运行文件 operation not permitted?
。您必须给该命令加上前缀 sudo
。与上面的示例一样, sudo python /path/to/file
将使用 root 用户权限运行脚本。
如果要从终端运行用户界面程序,请键入程序名称 - case sensitive!
,它将会启动。这会导致当前终端不可用。当程序打开时关闭终端也会终止该程序。更好的方法是使用以下命令对程序进行后台处理 program_name
在后台运行程序,然后在终端键入 exit
一词以将其关闭,并使进程保持运行状态。
如果您需要使用 root 用户权限从终端运行 GUI 程序,则给它加上前缀 gksudo
或 gksu
而不是 sudo
。使用 sudo
启动 GUI 应用程序是一种坏习惯,应加以避免。
应做事项 not
使用 sudo
仅仅因为出现 Operation not permitted.
请记住, destroy
在错误位置使用 root 用户权限运行命令,您可能会销毁。确保您的文件来自可靠来源。
在目录中迷路了吗?键入 pwd
打印工作目录。
要计算磁盘空间吗? df -h
可为您提供快速的图片。
要计算文件夹或文件的大小吗? du -cksh target_name
可以实现。要计算当前文件夹的大小吗? du -cksh
。
要标记可执行文件吗? chmod +x filename
可以做到。
需要装载 ISO?Linux 内置了此功能。请在某个地方创建目录(例如, /home/user/isomount
并发出命令 mount -o loop /path/to/myisofile.iso /home/user/isomount
,然后内容就会装载在该文件夹中。
已运行某个命令,您必须重新运行它,但您无法确切地记得它的运行方式?在终端中键入 , history
它将打印命令历史记录。要清除历史记录吗? history -c
擦除信息。