我正在尝试了解 Linux,而且我经常逐案解决我的问题,而没有真正学习如何自己提出答案,当然,我不想这样做。
例如,我设置了一个键盘快捷键来选择一个区域并对其进行截图。每次我选择一个区域时,它总是默认为 /Pictures,我想编辑默认目录或它呈现给我的快速下拉选项。
我像往常一样找到了答案,但是这次我想知道如果没有答案,人们通常会如何解决这个问题。当然,必须有一组合乎逻辑的步骤来确定终端命令的工作方式/参数的位置。
对于这种特殊情况,我在网上查找了 Ubuntu 用来截取屏幕截图的命令,结果是import
.
所以我的问题是,什么是/是什么方法
查找终端命令的配置文件/位置/代码级别信息(例如不是如何调用它,而是在调用它时具体做什么)
如何找出特定操作对应的终端命令。(import
例如,当我截取屏幕截图时会调用弄清楚)
换句话说,如果我无法访问互联网,或者没有人知道答案,我怎么能自己弄清楚呢?:) 我对方法/逻辑更感兴趣,但是import
在这种情况下将是一个很好的例子。
编辑:
我认为我的问题与建议的可能重复不同,因为如果可能的话,我正在寻求一种获取源代码的方法。在其他方面,我要求一种方法来读取命令的源代码及其使用的文件(例如,可能有一个用于导入功能的配置文件,如果我能找到它,我会更改默认保存-目录)。为了进一步澄清,我试图找到的文件(如果可以找到的话)与以下伪代码等效的代码:
<when run>
change mouse pointer to + shape
..wait for a click..
on click -> wait for release..
on release -> take the area between click and release coordinates
read config file located at ./config and get default-save-directory variable
initialize path to default-save-directory
ask user where to save the image
Run Code Online (Sandbox Code Playgroud)
这必须保存在操作系统的某个地方。“这是不可能的,因为......”(例如,可能是在汇编级别)也是一个答案,但使用 man 来获取有关此函数功能的说明并不是一个答案,因为我想了解它是如何工作的。
换句话说,如果一个Linux忍者要在他的本地计算机上修改导入命令,他会去哪里,并说在截图保存的图片中添加签名。
快速回答:
研究终端命令。
变量或详细信息的存储位置没有绝对的设置规则。 如果您不知道终端命令的详细信息,则必须查找以确保。
大多数终端命令,尤其是有很多选项的命令,默认情况下都安装在系统上的手册,这使得查找变得容易。这还包括终端命令的 shell,在 Ubuntu 的情况下是bash
默认的。
在互联网因表演你所指的不知道而如此流行之前,人们非常依赖图书馆、书籍和手册。人们家里有很多书籍和手册。经常去书店和图书馆。我过去常常在图书馆度过很多小时,几乎总是要借两三本书用于家庭研究(或编程和命令)。我去图书馆做研究已经有大约 20 年了。我不时去图书馆参加一些研讨会或会议。我也属于两个共享信息的计算机俱乐部。两家具乐部每月都会发布通讯,其中包括重要的计算机和编程信息。
如果您无法访问 Internet,则可以使用计算机中已有的手册来获取终端命令。
感谢终端命令并输入:
$ man [terminal command]
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令研究bash和导入命令(来自您的问题):
$ man bash
$ man import
Run Code Online (Sandbox Code Playgroud)
两本手册都将向您展示大量信息,无需互联网即可进行研究。它们还包括一个词汇表,您可以使用这些手册中的词进行进一步研究。
要了解命令变量的详细信息,您必须研究特定命令。一些相同的命令甚至可能有不同的风格或变体,根据 Linux 发行版或特定命令的维护者,它们可能会将其中的一些变量或细节存储在不同的区域。
如何下载 Ubuntu 的命令和应用程序的源代码:
您可以通过将源添加到您的存储库来下载命令的源代码。您可以通过以下方式找到:
使用这个命令获取你要下载的源码包:
$ sudo apt source <package name>
Run Code Online (Sandbox Code Playgroud)
Ubuntu 实际上使用gnome-screenshot
, 不是import
(至少在 14.04 上)。我是怎么想出来的?好吧,首先,它import
已经很老了,所以这给了我提示。但是也...
man -k
可用于搜索终端命令的描述。
我查找了一些与屏幕截图相关的关键字,例如“屏幕截图”、“捕获”、“屏幕截图”等。根据搜索词的不同,这会带来一些项目或太多项目。我看到一些命令不断出现,主要是gnome-screenshot
和shutter
(我安装的)。
在我们处理 GUI 的地方,它还可以帮助搜索应用程序文件,例如:
find /usr/share/applications/ ~/.local/share/applications/ -iname "*screenshot*"
grep -i "screenshot" /usr/share/applications/*.desktop ~/.local/share/applications/*.desktop
Run Code Online (Sandbox Code Playgroud)我打开gnome-system-monitor
,按Started排序,并观察当我截取屏幕截图时是否弹出命令。那时我确认是gnome-screenshot
在命令行上,您可以使用
watch "ps -ef --sort=start_time | tail"
Run Code Online (Sandbox Code Playgroud)是的,您可以轻松找到并阅读 Linux 世界中所有内容的源代码,除了一些边缘情况(例如纯二进制显卡驱动程序)。
例如,要了解有关命令ls
google 的更多信息ls source code
,它会在顶部提供一个特殊的 google 命中,告诉您这ls
是coreutils
.
coreutils是 GNU 而不是 Linux 的命令,是您在大多数发行版中整天使用的命令。从该登陆页面,您可以轻松下载整个 tarball,或直接浏览其 git 存储库。
例如,这是最有趣的目录(此时,链接显示固定哈希,因此如果您稍后阅读此答案,请务必再次从顶部浏览): master 分支中“src”的历史视图
类似的方法适用于所有其他开源程序,包括内核本身。
which ls
显示该特定二进制文件所在的位置。
Linux文件系统标准列出了保存文件的所有常用位置。
根据您的发行版,您可能或多或少可以通过包管理器(例如apt-get source $package
)轻松下载源包,这应该更加轻松。这样做有一个明显的好处:a)非常简单,b)应该返回您的二进制文件实际使用的源代码版本。当然取决于分布。
您问题的核心是如何了解某些软件的行为。如果您只是获取源代码,这通常并不简单。在极端情况下,即,如果该软件对您来说确实至关重要/必不可少,并且您绝对必须让它工作,那么这可能是一条可行的路线,但一般来说,您最好通过谷歌搜索。我已经(ab)使用了大型软件包的源代码,特别是在编译软件时(通常会出现奇怪的边缘情况,其中库或编译器版本略有不匹配),我向您保证它可以令人满意,但是往往是很多工作。
如果您确实找到了问题的解决方案,如果您认为对其他人来说是值得的(而不仅仅是修复软件以更符合您的个人意愿),请务必让它通过拉取请求流回当前的维护者。
至于其他人如何发现;他们经常这样做,因为他们实际上在开发软件,并且通过他们的错误跟踪器与他们联系 - 了解代码库已经有很大帮助。
当然,还有真正的黑客,他们实际上喜欢深入研究源代码,以发现他们遇到的任何问题。
总而言之,对于任何真正的问题,很可能有人已经遇到了它,并且已经发布了相关内容,因此谷歌搜索当然不是一个坏方法。使用正确的关键词本身就是一门艺术。
所有这些都是美好而有趣的,但如果您想真正深入兔子洞,您可以从头开始引导 Linux。该网站指导您完全从头开始(即从源代码)构建一个完整的(尽管非常小)Linux 系统。根本没有现成的二进制文件。
归档时间: |
|
查看次数: |
2164 次 |
最近记录: |