小编ka3*_*3ak的帖子

mkdir: 无法创建目录: 没有那个文件或目录

下面的命令有什么问题?

$ 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 多年后我会问这样的问题......

bash

9
推荐指数
1
解决办法
1万
查看次数

如何获取缓冲区的文件路径?

我知道寄存器 % 包含当前缓冲区的完整路径。但是如何通过其编号获得另一个缓冲区的完整路径?

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)

vim path

8
推荐指数
1
解决办法
4277
查看次数

Skype 不再启动

Skype 总是在 PC 启动后自动启动和登录。但今天它没有发生。而不是弹出这个 Skype 登录窗口,我被要求输入我的凭据。我输入了它们,登录窗口消失了,但没有其他任何事情发生。之后我没有看到常见的东西,比如主要的 Skype 用户、联系人等。我以为我被黑了,但没有,因为我可以在 Skype 网页上使用相同的凭据登录。然后我重复了这个过程,但是从终端启动Skype,希望看到一些错误,但根本没有输出。skype 命令刚刚退出。

是否仍支持我的 Skype 版本 (4.3.0.37)?我听说今年夏天 Skype 减少了支持的 Linux 版本的数量......

我的操作系统:Ubuntu 14.04.5 LTS

我的Skype版本是

在此处输入图片说明

ubuntu skype

7
推荐指数
2
解决办法
6081
查看次数

如何在 VIM 中打开文件并将光标移动到搜索结果

考虑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 正常模式下执行它会有所不同?

vim search cursor

5
推荐指数
1
解决办法
1756
查看次数

如何监控麦克风音量?

我找到了一个对我不起作用的解决方案:

音频 - 在 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 …

sox microphone

5
推荐指数
1
解决办法
5239
查看次数

嵌套大括号扩展和命令替换

我想创建一个简单的 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)

但我没有使用它们。问题是什么?

ls bash seq

5
推荐指数
1
解决办法
745
查看次数

不明白 sed 的“n”命令

我正在看书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命令完全没有困难。

sed

3
推荐指数
1
解决办法
2894
查看次数

将 EPUB 转换为 TXT 并保留原始格式

我有一本 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)

但没有结果。如何实现?

text epub calibre

2
推荐指数
1
解决办法
2852
查看次数

如何评估 adb shell 命令的结果?

例如,我想检查手机上是否存在目录。

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)

shell bash command-substitution adb

1
推荐指数
1
解决办法
8634
查看次数

标签 统计

bash ×3

vim ×2

adb ×1

calibre ×1

command-substitution ×1

cursor ×1

epub ×1

ls ×1

microphone ×1

path ×1

search ×1

sed ×1

seq ×1

shell ×1

skype ×1

sox ×1

text ×1

ubuntu ×1