为什么我$x从下面的片段中得到不同的值?
#!/bin/bash
x=1
echo fred > junk ; while read var ; do x=55 ; done < junk
echo x=$x
# x=55 .. I'd expect this result
x=1
cat junk | while read var ; do x=55 ; done
echo x=$x
# x=1 .. but why?
x=1
echo fred | while read var ; do x=55 ; done
echo x=$x
# x=1 .. but why?
Run Code Online (Sandbox Code Playgroud) 我想找到一个位于 8 GB 日志(文本)中的日期。
我有点绕行一个完整的顺序读取,和第一可以做文件的二元分割(大小),或以某种方式浏览文件系统inodes(这是我知道的非常少约),开始从各个分割点读,直到我找到一个合适的距离偏移从哪里开始我的文本搜索包含日期的行?
tail对最后一行的读取不使用正常的顺序读取,所以我想知道这个工具是否在 bash 中可用,或者我是否需要使用 Python 或 C/C++ ......但我对一个bash选项特别感兴趣..
根据以下示例,以及我最近的问题 在 bash 中,尾随的换行符去哪儿了?,我想知道它“为什么”发生
x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p
# Output is: 610a62
# The trailing newline from the 'echo' command
# has been "deleted" by Command Substitution
Run Code Online (Sandbox Code Playgroud)
我认为shell 操作必须有一些非常重要的原因,即命令替换,从它正在替换的命令输出中实际删除一些数据......
但我无法理解这个,因为它似乎是它应该做什么的对立面......即。将命令的输出传递回脚本进程......保留一个字符对我来说似乎很奇怪,但我认为有一个合理的原因......我很想知道这个原因是什么...... .
从 bash 脚本中,是否有某种方法可以获取鼠标指针下 X 窗口的 ID?
(编辑)我需要该过程是非交互式的。
我一直在研究GNU Emacs 几个月了,断断续续(主要是关断),我真的只测试了一些我特别想要在编辑器中使用的基本东西......我慢慢地意识到它的地形,它开始变得(好)有意义......
我注意到的主要事情是它在 X-GUI 版本中的工作方式似乎与在 X-Terminal 版本中的工作方式完全相同(我怀疑它在非 GUI 环境中几乎相同.. .
我最初认为在非 GUI 编辑器中工作会感到非常不舒服,事实确实如此,但是我越是涉足 Emacs 领域,这种需求就越不重要......所以我现在正在研究它从棍子的另一端......我将注意力转向主要在终端版本中工作..
我的问题是:除了明显的 GUI 菜单(事实证明这是非常不必要的)之外,版本(X-GUI、X-Terminal 和 no-GUI)之间是否有任何显着差异?*
我有一个 Unicode 代码点列表,但我不知道将这些十六进制值转换为它们代表的实际字符的“简单”方法......
我听说zsh有echo -e '\u0965',但我使用bash 4.1。
对于 bash,有没有像 zsh 方法一样简单的东西?
为什么重定向,使用sudo给我以下命令的错误?
$ sudo printf "foo" >/etc/file
bash: /etc/file: Permission denied
$ sudo printf "foo" ~/file; cat ~file >/etc/file
bash: /etc/file: Permission denied
Run Code Online (Sandbox Code Playgroud)
...但是当我使用编辑器时我没有这样的问题,或者cp.
我想我以前从未尝试过这个,所以我不知道我的系统是否有问题,或者这是否正常。正常似乎有点限制,但是(?)也许它是限制性的......(使用Ubuntu)
I have extracted the shorthand version of the current monitor attached to the computer.
Here is an example: vendor "VSC", prod id "18500"
In Ubuntu's Monitor Preferences, it is identified as Viewsonic Corporation 16".
How can I extract this human readable form? ... and also, how can I determine if a monitor is a CRT or an LCD? (this is actually what got me started on this quest)
The EDID format can be found on Wikipedia: Extended display …
像下面这样的东西就是我所追求的,但我的代码不起作用,无论我如何逃避{}和+ ;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
Run Code Online (Sandbox Code Playgroud)
在看到这个Unix-&-Linux question 后,我发现下面的代码有效,但它并没有嵌套find,我怀疑有更好的方法来完成这项特定的工作。
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
Run Code Online (Sandbox Code Playgroud)
有什么方法可以find -exec在不需要调用 shell(如上)的情况下嵌套,以及所有古怪的引用和转义约束?
或者这可以直接在单个 find 命令中完成,使用它的许多参数的混合?
我使用 Ubuntu。在“侏儒末端”,I可以通过第一输入键入的Unicode码点Ctrl+ Shift+u其次是码点的十六进制值,例如C-S-u 2468产生?
konsole,我的首选终端,没有这个C-S-u(Gnome)功能......
在 Konsole 中是否有一些等效的 KDE 方法来执行此操作?