命令行是一个流行的选择,还是我这里有什么问题?
在现代 Linux 中,有数十种全新、强大的 3D 渲染 GUI、基于图形的 API 和桌面界面,它们可以通过更强大的特色程序轻松实现在 GUI 上的命令解释器基于文本的 UI 中输入的命令。更好地包含 GUI 元素。
我想说的是,为什么命令行在 2013 年仍然如此流行?
我的意思是我可以同意,在计算机中的内存如此之小以至于花哨的 GUI 会耗尽主内存之前,但现在内存确实便宜,GUI 是 3-D,我们的移动电源机器每天都在变得更好说吧,那么为什么我们还在解释器解析终端 UI 模拟中输入命令呢?
为什么没有更健壮和图形化的方式来实现命令,只能通过更现代的 GUI 来实现?
例如,“ls”或“list”如何作为按钮生成数据的表视图,或者“umount”在生成当前挂载点的表视图的按钮中实现?
总的来说,为什么没有更现代的命令解释器实现,在更方便的装饰中具有完全相同的控制和功能?
PS:我也应该在这里添加这个......我并不是说每个命令都应该使用基于 GUI 的程序来实现,并带有花哨的小部件等。我只是想说我想我们会对命令行进行改造,或者也许可以通过视觉方面更好地表达、优化、管理或循环某些想法,而不仅仅是“文字”。不是要开始争论,而是要找出为什么这么多年以来没有任何东西改变这种方式以及操作系统/软件中图形的进步。
Bru*_*ger 14
命令行有一个语法——也就是说,一种根据位置或与其他字符串的关系赋予词法相同的字符串不同含义的方法。
你可以用语法表达比没有语法更多的东西。最好的例子是回文字符串:您不能编写识别回文的正则表达式(comp sci 类型)。另一个示例:您不能编写匹配“一定数量的 'a' 字符,后跟相同数量的 'b' 字符”的正则表达式。
一旦你掌握了语法,可编程性就会随之而来。你有一个带测试的命令行和一个“while”循环?你可以进行任意计算,这是另一种说法,“你可以表达更多的东西”。
很少有点击式界面具有任何程度的可编程性。
在我看来,答案归结为“命令行更具表现力”。
小智 6
对我来说,一切都与自动化有关。
这是从我的 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
Run Code Online (Sandbox Code Playgroud)
类 Unix 系统提供的命令是灵活的。您可以将它们链接在一起以执行无数的操作。它们就像积木或乐高积木。图形程序更加僵化。通常很难将它们与其他程序连接起来。