命令行是一个流行的选择,还是我这里有问题?
在现代 Linux 中,有数十种新的、强大的、3D 渲染的 GUI、基于图形的 API 和桌面界面,可以通过更强大的功能程序在 GUI 上轻松实现输入到命令解释器基于文本的 UI 中的命令,该程序更好地包含 GUI 元素。
我想说的是,为什么命令行在2013年仍然如此流行?
我的意思是,我可以同意,在计算机中的内存非常小之前,精美的 GUI 会耗尽主内存,但现在内存确实很便宜,GUI 是 3D 的,我们的移动电源机器每天都在变得更好,所以说吧,那么为什么我们仍然将命令输入到解释器中解析终端 UI 模拟呢?
为什么没有一种更强大、更图形化的方式来实现命令,而只能通过更现代的 GUI 来实现?
例如,“ls”或“list”作为将生成数据表视图的按钮,或者在生成当前安装点的表视图的按钮中实现“umount”怎么样?
总的来说,为什么命令解释器的更现代的实现没有发挥作用,以更方便的装饰提供完全相同的控制和功能?
PS:我也应该在这里添加这个......我不是说每一个命令应该使用带有精美小部件等的基于 GUI 的程序来实现。我只是说,我认为我们应该对命令行进行改造,或者也许一些想法可以通过视觉方面比仅仅“文字”更好地表达、优化、管理或更容易地循环。并不是要开始争论,而是要找出为什么这么多年以来没有任何事情发生这种变化以及操作系统/软件中图形的进步。
答案1
命令行具有语法 - 即一种根据位置或与其他字符串的关系为词法相同的字符串赋予不同含义的方法。
与没有语法相比,你可以用语法表达更多的东西。最好的例子是回文字符串:您无法编写识别回文的正则表达式(comp sci 类型)。另一个例子:您无法编写匹配“一定数量的‘a’字符,后跟相同数量的‘b’字符”的正则表达式。
一旦掌握了语法,可编程性就随之而来。您有一个带有测试的命令行和一个“while”循环吗?你可以进行任意计算,这是“你可以表达更多东西”的另一种说法。
很少有点击式界面具有任何程度的可编程性。
在我看来,答案归结为“命令行更具表现力”。
答案2
对我来说,一切都与自动化有关。
以下是从我的 shell 历史文件中提取的一系列小自动化示例(带有一些行分割):
# Modify remote urls for a few dozen git repositories
while read repo ; do (
cd $repo; git-remote-mod-url 's/parad/para/g' locserv
); done < gits
# List the package repository that contains each package in a list
while read package ; do
echo -n "$package " ; yaourt -Si $package | grep Repository
done < all-packages
# Make a bunch of directories based on the output of a script
./scripts/info/list.sh a | while read cat ; do mkdir $cat ; done
# Filter hundreds of files
for p in * ; do clean-text < $p/PKGBUILD | sponge $p/PKGBUILD; done
# Retrieve a list of items that might be suitable as examples for this post
grep -E '\<(while|for)\>' hist-zsh
# Get a list of orphan packages on the [AUR](https://aur.archlinux.org/)
for pack in * ; do (
source $pack/info
echo $pack
curl -s https://aur.archlinux.org/packages/$upstream_name/ |
grep '<td>None</td>'
); done
类unix系统提供的命令是灵活的。您可以将它们链接在一起以执行无数的操作。它们就像积木或乐高积木。图形程序更加严格。通常很难将它们与其他程序连接。
答案3
我更喜欢命令行,因为它更快、更精简、更灵活、更强大。几乎任何你用鼠标能做的事情,我用键盘都能做得更快。这也是我(和其他人)更喜欢 vim 而不是 IDE 的原因。
答案4
一些可能的原因:
- 脚本 - 自动化(与鼠标和按钮相反) - 这样您就不会每次都手动移动鼠标和单击按钮来浪费精力。
- CLI 不易分散注意力(集中注意力)
- CLI 使用更少的资源(运行速度更快)
- GUI 基于 CLI(命令和文件)。你无法摆脱 CLI。