下面的命令有什么问题?
$ var1="~/Music/$(date +%d%m%y)"
$ echo "$var1"
~/Music/240118
$ mkdir "$var1"
mkdir: cannot create directory ‘~/Music/240118’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
然而
$ mkdir ~/Music/240118
Run Code Online (Sandbox Code Playgroud)
作品。
没想到在使用 bash 多年后我会问这样的问题......
我知道寄存器 % 包含当前缓冲区的完整路径。但是如何通过其编号获得另一个缓冲区的完整路径?
VIM 中有这样的函数/命令吗?
我想解释一下我是如何想到这个问题的......
有 2 个缓冲区打开。第一个是左侧窗口中的 XML 文件,另一个是右侧窗口中的 XSD 文件。我编辑了他们两个。在编辑期间,我想根据架构验证 XML。
然而命令
!xmllint --schema /tmp/schema.xsd %
Run Code Online (Sandbox Code Playgroud)
当然,只有当当前缓冲区是带有 XML 的缓冲区时才能很好地工作。所以我很好奇是否可以/tmp/schema.xsd
用一些命令或函数调用来替换,这些命令或函数调用将通过缓冲区编号确定完整路径。就像是:
!xmllint --schema getBufferPath(3) %
Run Code Online (Sandbox Code Playgroud) Skype 总是在 PC 启动后自动启动和登录。但今天它没有发生。而不是弹出这个 Skype 登录窗口,我被要求输入我的凭据。我输入了它们,登录窗口消失了,但没有其他任何事情发生。之后我没有看到常见的东西,比如主要的 Skype 用户、联系人等。我以为我被黑了,但没有,因为我可以在 Skype 网页上使用相同的凭据登录。然后我重复了这个过程,但是从终端启动Skype,希望看到一些错误,但根本没有输出。skype 命令刚刚退出。
是否仍支持我的 Skype 版本 (4.3.0.37)?我听说今年夏天 Skype 减少了支持的 Linux 版本的数量......
我的操作系统:Ubuntu 14.04.5 LTS
我的Skype版本是
考虑tmp.txt
其内容为的文件:
x
abcd
Run Code Online (Sandbox Code Playgroud)
我想在 VIM 中打开它并将光标移动到c
字符上。所以我用参数运行 VIM:
$ vim -c "/c" tmp.txt
Run Code Online (Sandbox Code Playgroud)
但它将光标设置在a
. 看起来 VIM 能够找到c
但将光标放在行开始处。为什么/c
在打开文件时在 VIM 正常模式下执行它会有所不同?
我找到了一个对我不起作用的解决方案:
音频 - 在 Linux 中使用命令行工具监控麦克风电平 - 超级用户 https://superuser.com/questions/306701/monitoring-the-microphone-level-with-a-command-line-tool-in-linux
问题是他们使用最大幅度来检测声音。然而,无论录制的音频仅包含静音还是一些声音,它的价值对我来说始终是相同的。例如:
10 秒静默(可在此处下载:http://denis-aristov.ucoz.com/en/test-mic-silence.wav):
$ arecord -f S16_LE -D hw:2,0 -d 10 /tmp/test-mic-silence.wav
$ sox -t .wav /tmp/test-mic-silence.wav -n stat
Samples read: 80000
Length (seconds): 10.000000
Scaled by: 2147483647.0
Maximum amplitude: 0.999969
Minimum amplitude: -1.000000
Midline amplitude: -0.000015
Mean norm: 0.202792
Mean amplitude: 0.009146
RMS amplitude: 0.349978
Maximum delta: 0.913849
Minimum delta: 0.000000
Mean delta: 0.001061
RMS delta: 0.005564
Rough frequency: 20
Volume adjustment: 1.000
Run Code Online (Sandbox Code Playgroud)
10 秒,有一些声音(可以在这里下载:http://denis-aristov.ucoz.com/en/test-mic-sounds.wav …
我想创建一个简单的 bash 脚本来检查目录是否包含名称包含从 1 到 N 的数字的所有文件。
# Creating some files for testing
$ cd /tmp/
$ mkdir test
$ touch test/a01x.dat
$ touch test/b02y.dat
# Display dir contents
$ ls test/*{01,02}*
test/a01x.dat test/b02y.dat
Run Code Online (Sandbox Code Playgroud)
但是使用seq
命令生成数字会导致以下结果:
$ ls test/*{$(seq -s , -f "%02g" 1 2)}*
ls: cannot access 'test/*{01,02}*': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我知道通过用单引号将路径括起来来运行命令一定会导致错误,因为通配符不会扩展
$ ls 'test/*{01,02}*'
Run Code Online (Sandbox Code Playgroud)
但我没有使用它们。问题是什么?
我正在看书sed & awk
,我认为我理解了直到我执行以下n
命令sed
:
$ echo -ne "abc\ncde\nfg\n" | sed "/c/{
n
/f/d
}"
Run Code Online (Sandbox Code Playgroud)
输出:
abc
cde
fg
Run Code Online (Sandbox Code Playgroud)
但我希望该行fg
被删除。
我对流程的理解:
c
匹配行cde
,下一行是fg
并且应该被/f/d
命令删除,因为它被匹配f
。我非常确定我理解这个命令并且它很简单。特别是因为作者写道大写命令N,D,P
命令更难,如果你理解它们,那么无论如何你都会理解小写命令。但我对N
命令完全没有困难。
我有一本 EPUB 格式的编程书,我正在尝试将其转换为 TXT。为此,我使用calibre的实用程序ebook-convert。问题是标准用法:
ebook-convert book.epub book.txt
Run Code Online (Sandbox Code Playgroud)
删除源代码示例中的缩进。例如,书中的示例如下所示:
class A {
private int a;
}
Run Code Online (Sandbox Code Playgroud)
但在生成的 TXT 中:
class A {
private int a;
}
Run Code Online (Sandbox Code Playgroud)
阅读该实用程序的手册页后,我尝试了以下选项:
--keep-ligatures
--pretty-print
--change-justification=original
Run Code Online (Sandbox Code Playgroud)
但没有结果。如何实现?
例如,我想检查手机上是否存在目录。
R=$(adb shell 'ls /mnt/; echo $?' | tail -1);
$ echo $R
0
$ if [ "$R" -ne 0 ]; then echo "Path doesn't exist"; else echo "Path exists"; fi
: integer expression expected
Path exists
Run Code Online (Sandbox Code Playgroud)
R 有什么问题?好的,尝试使用另一个绝对为 0 的变量。
$ x=0
$ if [ "$x" -ne 0 ]; then echo "Path doesn't exist"; else echo "Path exists"; fi
Path exists
$ echo "|$x|"
|0|
$ echo "|$R|"
|0
Run Code Online (Sandbox Code Playgroud)
不打印第二个管道。0后面有字符吗?尝试修剪:
$ R=$(adb shell 'ls /mnt/; echo $?' | tail …
Run Code Online (Sandbox Code Playgroud)