什么是PATH在一个Mac OS?我已经用它来安装全局命令行工具,但我找到的唯一文档是这样做的教程,没有真正解释幕后发生的事情。我也没有在Wikipedia上找到相关页面。
那么和**的目的是PATH什么,有什么区别?/etc/paths~/.bash_profile
例如,在我的paths文件中,我看到:
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
但在我的~/.bash_profile,我看到了这一点:
# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH
Run Code Online (Sandbox Code Playgroud)
这只是对paths文件的特定于用户的添加吗?里面有什么东西paths,比如/usr/bin?
我想知道相当于
cat inputfile | sed 's/\(.\)/\1\n/g' | sort | uniq -c
Run Code Online (Sandbox Code Playgroud)
在/sf/ask/292187941/ 中提出,用于在文本文件中生成用于二进制文件计数的字符使用统计信息简单的字节而不是字符,即输出应为
18383 57
12543 44
11555 127
8393 0
Run Code Online (Sandbox Code Playgroud)
命令是否与引用的字符一样长并不重要。
如果我将字符命令应用于二进制文件,则输出包含不可打印字符的任意长序列的统计信息(我不寻求解释)。
我正在解决一个挑战,我发现了一个没有文件扩展名的数据文件。该file命令显示它是一个data file (application/octet-stream). 该hd命令显示GNP。在最后一行。因此,如果我反转此文件,那么我将获得.PNG格式的文件,我到处搜索,但没有找到解释如何反转二进制文件内容的解决方案。
我想在命令行中从十六进制生成一个原始二进制数据包,以测试协议。我希望这样做比编写应用程序更简单。
以下是目前发生的情况:
echo '0A' | xxd -b
0000000: 00110000 01000001 00001010
Run Code Online (Sandbox Code Playgroud)
我想要的是:
echo '0A' | xxd -b
0000000: 00001010
Run Code Online (Sandbox Code Playgroud)
或者
echo '0A' | xxd -b
0000000: 01010000
Run Code Online (Sandbox Code Playgroud)
因为我不确定所需的字节顺序。我希望能够在必要时更改它。这是可以实现的吗?
我在开发时经常遇到这种情况,我运行一个二进制文件,a.out在后台说,因为它做了一些冗长的工作。在这样做的同时,我对生成a.out并a.out再次编译的 C 代码进行了更改。到目前为止,我没有遇到任何问题。正在运行的进程a.out继续正常运行,永远不会崩溃,并且始终运行它最初启动时的旧代码。
但是,说a.out是一个巨大的文件,可能与 RAM 的大小相当。在这种情况下会发生什么?并且说它链接到一个共享对象文件,libblas.so如果我libblas.so在运行时修改了怎么办?会发生什么?
我的主要问题是 - 操作系统是否保证当我运行时a.out,原始代码将始终按照原始二进制文件正常运行,无论.so它链接到的二进制文件或文件的大小如何,即使这些.o和.so文件在运行期间被修改运行?
我知道有这些问题可以解决类似的问题:https : //stackoverflow.com/questions/8506865/when-a-binary-file-runs-does-it-copy-its-entire-binary-data-into-memory -at-once如果在执行期间编辑脚本会发生什么? 如何在程序运行时进行实时更新?
这帮助我对此有更多了解,但我认为他们并没有问我到底想要什么,这是在执行期间修改二进制文件的结果的一般规则
我有一个可执行的二进制文件;让我们称之为a.out。我可以看到二进制文件包含字符串
$ strings a.out
...
/usr/share/foo
....
Run Code Online (Sandbox Code Playgroud)
我需要将字符串更改/usr/share/foo为/usr/share/bar. 我可以用sed?替换字符串吗?:
sed -i 's@/usr/share/foo@/usr/share/bar@' a.out
Run Code Online (Sandbox Code Playgroud)
这看起来是一件安全的事情。当字符串长度不同时,这也能工作吗?
我将一个简单的二进制文件转换为一个文本文件:
od –t x1 Check.tar | cut –c8- > Check.txt
Run Code Online (Sandbox Code Playgroud)
这给出了类似于以下内容的内容:
64 65 76 2f 6e 75 6c 6c 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[...]
Run Code Online (Sandbox Code Playgroud)
什么是相反的方式——将 Check.txt 转换为 Check.tar 作为原始文件?
是否可以从头开始跟踪二进制文件,la tail -f?
这在某些情况下很有用,例如,如果我scp将文件发送到远程服务器,同时我想将其提供给另一个进程(是的,我知道我可以使用ssh+cat技巧)。
就我从 FM 上读到的而言,tail是在考虑文本文件的情况下编写的。
是否有使用标准 posix 工具进行此类操作的简单方法?
我需要制作一个相当简单的 bash 脚本,一次从二进制文件中提取一个字节,将其发送到串行端口,然后等待一个字节返回,然后再发送下一个。这对于 EEPROM 编程器非常有效,在这种情况下,现成的解决方案将不起作用。
我主要是把字节从文件中提取到一个变量中,除此之外我知道我可以通过串行端口回显这些值并用 dd 读回它们。(有没有更好的方法来做到这一点?)
谢谢您的帮助!
binary ×10
bash ×2
conversion ×2
linux ×2
od ×2
command-line ×1
elf ×1
executable ×1
files ×1
osx ×1
path ×1
programming ×1
serial-port ×1
shell-script ×1
statistics ×1
string ×1
tail ×1
utilities ×1