在Unix环境下如何学习编程?我应该先学习shell吗?

3

我已经学习了标准的C和C++语言,但是我不知道如何使用系统调用以及如何编写进程等程序。因此,我想学习在Unix/Linux环境下的编程。那么,接下来应该怎么做呢?我应该先学习shell吗?


“标准”C和C++是什么意思? - Noufal Ibrahim
5个回答

1

如果你使用Unix/Linux系统,你应该至少了解一些shell脚本和其工具,只是为了知道你的启动脚本做了什么或快速移动你的系统(例如使用ls、mv、cp等)。除此之外,对于真正的编程内容,你可以使用编程语言(比如Python、Ruby)。许多现代编程语言,如Python,已经提供了系统级API。Python自带一个shell,所以如果你是一个硬核用户,你也可以将其用于日常任务。这个小例子展示了如何在Python shell中进行目录列表。

>>> import os                                                         
>>> os.chdir("/tmp")                                                  
>>> os.listdir(".")         

这与在命令行中键入ls相同。移动/复制文件怎么样?不要使用shell的mvcp

>>> import shutil
>>> shutil.copy("file","/destiation")
>>> shutil.move("file1","/destination")

在我看来,如果你计划编写系统/底层程序,那么C/C++可能是你需要的,但对于普通的系统管理或日常操作,像Python/Ruby(或Perl)这样的编程语言更适合你。


是的,我现在正在学习Python。你有什么建议吗? - liu

1
如果你想在UNIX环境下编程,那么在涉及系统调用等内容之前,你需要先了解它的基本操作。我建议阅读UNIX编程环境,这是一本介绍UNIX的好书。虽然有点过时,但仍然是一本珍贵的书籍,对于任何程序员来说都是必读的。

1
这本书非常精彩,读起来很有趣。但是它已经过时了一些。几年前我父亲需要学习Unix编程,他是一个循序渐进的人,所以在向我寻求帮助之前先从图书馆借来阅读了这本书。我想说,它带来的困惑与解决问题的效果差不多。尽管如此,这确实是一本好书。 - dmckee --- ex-moderator kitten

0
不需要学习shell。 只需查找一本介绍C语言Unix系统调用的书籍或网页即可。

0

如果你要在“传统”的Unix环境中进行编程(即使用文本编辑器并从命令行执行所有操作),你需要对shell非常熟练,并且非常熟练使用你选择的编辑器(你有自由选择,但如果不是emacs,你就会进入一个糟糕的地方...)。

但是,没有必要首先“学习”shell。只需意识到shell提供了强大的工具。然后,每当你发现自己想“一定有更好的方法!”时,去学习什么是更好的方法。


0

我现在正在学习系统编程,教授正在向我们介绍Unix,包括系统调用和编写现有核心实用程序的简化版本。

我发现一个非常有用的资源是阅读实用程序的完整源代码系统调用快速参考。教材是《理解UNIX/Linux编程》,我强烈推荐你去看一下。

我们还没有涉及到shell脚本编程,除了使用输入重定向、grep和管道,所以我不知道这对你目前有多大用处。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接