CLI
CLI
?
CLI
是 Comand Line Interface(命令行界面)的缩写。当你在没有 X Window 系统的计算机上安装 Linux 时,你将在 CLI
模式下工作!也许你会惊呼“哦……太可怕了”,但你的计算机会欢呼“耶……我有更多的 %CPU 和 %内存来工作和玩耍了!”。
CLI
?
一些可穿戴设备可能在图形芯片组、磁盘和内存空间以及电池寿命方面存在问题。如果你在文本模式下工作,你将节省电池寿命和磁盘使用量,以及大量的内存和 CPU 周期。而且如果你不必安装图形界面,你也将节省一些磁盘空间。因此,你为你的数据获得了更多空间。但你可能会觉得在文本模式下,什么都做不了。正如你将看到的,同样的事情可以在文本模式和图形环境完成。只是思考方式不同。
我们必须用我们所拥有的少量程序来思考,这些程序可以通过输入/输出通道相互通信。这种类型的环境意味着我们必须用所有的手指工作,我们甚至可以摆脱鼠标。就像在 X
Window 系统中一样,你有编辑器(Vi
、Emacs
、Jed
...)、游戏(顺便说一句,可穿戴设备本身就是游戏)、查看器/浏览器(?less
、?more
、lynx
、links
...)、文件管理器(mc
...)等等。此外,有些人可能认为 CLI
很酷,但学习所有命令的配置和选项很困难。学习曲线实际上更陡峭,但是当你学会之后,你的工作速度会更快,而且工作速度越快,对于可穿戴设备来说就越好。我们将看到一些例子,这些例子可以加速我们的个人工作。
UNIX
的基础是其强大的 shell。使用 shell,你可以做比 Microsoft 糟糕的批处理语言更多的事情。UNIX
提供了许多强大的 shell(tcsh
、ksh
、bash
...),但我总是使用 sh
。我知道它很旧,功能不如它的哥哥们那么强大,但它在每个 Unix 系统上都有。在 sh
中,经常使用函数/命令(echo
、test
)。我为什么要这么说?你可以注意到 GNU
提供了程序 echo
和 test
,我说:“如果我们能消除这些程序,我们可以释放磁盘空间……好吧,不多,大约 20k。”。并且一些版本的 sh
非常经济。shell(脚本)语言就像一种小型编程语言:你可以使用循环(for
、while
)、用户交互(read
)、I/O (< >)... 要学习脚本,你只需输入:man sh
(或 tcsh
... 但更复杂...)。一个愚蠢的小脚本示例:for i in * .[^.]*; do echo $i; done
(简单的 ls
命令)。
sed
和 AWK
吗?在 Unix 世界中,我们经常听到关于 AWK
和 sed
的消息。这些程序是通用的,可以用于很多事情。GNU
提供了一堆可以替代 sed
和 AWK
的实用程序(dd
、cut
、seq
...)。你可能会问,为什么是 dd
呢?
dd
有一个很棒的小功能:转换大小写。一个例子
这个目录中有一些名称是大写的,但你想将它们更改为小写。使用 AWK
,你必须输入:for i in *; do mv "$i" "`echo $i | awk '{print tolower($0)}'`"; done
;使用 sed
你必须枚举所有字母;使用 dd,这非常容易,我认为:for i in *; do mv "$i" "`echo $i | dd conv=lcase`"; done
cut
是一个用于打印文本列的程序。此外,如果你必须打印一行的不同列,你可以使用 cut
。如果你希望快速高效地完成工作,cut
比 AWK
表现更好,因为 cut
专门用于这项工作。对于相同的任务,你也可以使用 shell 的内部命令(你可以,如果你为 IFS
变量赋值)。这是一个 AWK
、cut
和 sh
的示例。我们只想显示一个包含 login : identity
字段的列表
awk -F: '{ print $1" : "$5}' /etc/passwd
cut
while read line; do echo "`echo $line | cut -d: -f 1` : `echo $line | cut -d: -f 5`"; done < /etc/passwd
IFS=':'; while read a b c d e f; do echo "$a : $e"; done < /etc/passwd; IFS=' '
AWK
。我认为你总是可以在没有 AWK
的情况下完成事情。(好吧,有时,AWK
更容易。)关于 sed
,缺点是你必须使用临时文件。如果你想节省磁盘空间并在命令行中编辑文件,你可以使用 ex
,即 vi
的脚本版本。此外,sed
可以使用,但不是必需的。
如果磁盘空间非常重要,你可以删除某些程序,这些程序执行的任务可以由其他程序完成。例如:如果你必须使用 dd
,你不需要 cat
;如果你有 vi
,你不需要 ed
(请帮助我找到其他例子...)。
脚本比别名更强大。但是脚本占用磁盘空间,并且每次使用时都会加载。别名占用内存空间,如果你在 CLI
中,你拥有所有内存!别名比脚本更快,因为它们是从内存而不是从磁盘加载的。
通常,shell 为你提供别名/脚本的另一种选择:函数。函数具有脚本的功能,并且方便地只占用内存空间。要学习别名和函数,你可以查看手册页(manpages)。