小编An *_*rer的帖子

如果不存在 .txt 文件,则在 shell 中使用 *.txt 进行扩展不起作用

我正在玩扩展,我注意到一个奇怪的行为。我试着做:

echo ./*.txt
Run Code Online (Sandbox Code Playgroud)

我的当前目录中没有任何 .txt 文件。我得到的输出是:

./*.txt
Run Code Online (Sandbox Code Playgroud)

我只是好奇:我为什么会得到这个?我原以为不会得到任何输出。

PS:当我有一个.txt文件时,扩展被正确解释。换句话说,假设我有一个文件,smthn.txt,回声实际上是 echo current_directory/smthn.txt

command-line bash

10
推荐指数
3
解决办法
1445
查看次数

对 grep 和 * 通配符感到困惑

我正在运行以下命令以查找与“flash_drive_data”无关的所有文件/目录:

find . -not -path './flash_drive_data*' | grep "./*flash*"
Run Code Online (Sandbox Code Playgroud)

我尝试过的一些事情让我感到困惑:

1. 当我运行上面的命令时,我得到了一些“部分”命中(即它们与*flash*模式不完全匹配。例如:

./.local/lib/python3.7/site-packages/jedi/third_party/typeshed/third_party/2and3/flask
./.local/lib/python3.7/site-packages/jedi/third_party/typeshed/third_party/2and3/flask/cli.pyi
./.local/lib/python3.7/site-packages/jedi/third_party/typeshed/third_party/2and3/flask/signals.pyi
./.local/lib/python3.7/site-packages/jedi/third_party/typeshed/third_party/2and3/flask/templating.pyi
./.local/lib/python3.7/site-packages/jedi/third_party/typeshed/third_party/2and3/flask/sessions.pyi
./.local/lib/python3.7/site-packages/jedi/third_party/typeshed/third_party/2and3/flask/json
./.local/lib/python3.7/site-packages/jedi/third_party/typeshed/third_party/2and3/flask/json/tag.pyi
Run Code Online (Sandbox Code Playgroud)

所述3/flas在端部被突出显示。

2.当我grep "*flash*"用 just替换时grep "*",我希望找到 find 返回的所有文件,但我没有。为什么?然后,当我这样做时,grep "**"我相信我得到了所有文件(或者至少我认为我得到了)。再说一遍,这是为什么?

3. 最后,我上面所做的目的是确保当我运行时find . -not -path './flash_drive_data*'我没有得到任何与 flash_drive_data 相关的信息。似乎我做到了(正如我上面解释的那样,grep 有一些意想不到的行为)。但是,当我运行时: find . -not -path './flash_drive_data*' -exec tar cfv home.tar.bz '{}' +

我得到的输出包括:

./flash_drive_data/index2/ask-sdk-core/dist/dispatcher/error/handler/
Run Code Online (Sandbox Code Playgroud)

所以 flash_drive_data 文件被包括在内。

command-line grep find

5
推荐指数
2
解决办法
1602
查看次数

如何将 wc 命令的结果通过管道传输到算术展开式中?

我想运行wc -l并在算术展开中使用结果。换句话说,我想做这样的事情:

wc -l (now somehow pipe/pass the result of this to) $((2 + result of wc command))
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

语境

在我的~/Pictures目录中,我有多个名为“ Screenshot from YYYY-MM-DD hh-mm-ss.png”的文件,以及其他文件。我想保留所有非屏幕截图的文件,并且根据它们的最新情况仅保留指定数量的屏幕截图图片。我基本上只想保留最后 3 张最新的屏幕截图,并删除所有其余的。

到目前为止,这是我所拥有的:

ls | grep "Screenshot *" | sort -r | wc -l
Run Code Online (Sandbox Code Playgroud)

然后我想做的是从 中减去 3 wc -l,这样我就可以用来tail列出所有不是前 3 个的文件,然后删除它们。

command-line wc

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

tar 使用短格式选项与旧样式

在 GNU 手册中tar,有以下示例表明选项的顺序很重要:

tar -cfv collection.tar blues folk jazz
Run Code Online (Sandbox Code Playgroud)

在这种情况下,因为v放在 之后f,那么 tar 存档将被命名为“v”,并且如果它存在于当前目录中,tar将尝试添加collection.tar到存档中。但是,如果我-从一开始就省略了,则该命令会按我们希望的那样工作,尽管v放在f. 为什么?

command-line tar

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

烦人的广告

我使用其中一个 youtube 到 mp3 转换器下载了音乐,我认为他们用一些广告软件感染了我的机器。我每隔 30 分钟到 1 小时左右就会在屏幕顶部弹出一个弹出窗口。我怎样才能找出导致这种情况的原因并解决它?

PS:我有 Ubuntu 19.04。另外,我尝试删除歌曲文件,但这没有帮助。我使用https://ytmp3.cc/en1/(Youtube到 MP3 转换器)下载了这首歌

security

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

尝试修改 /proc/sys/vm/overcommit_memory,但即使使用 sudo 也无法获得权限

我正在尝试编辑该文件/proc/sys/vm/overcommit_memory,但即使我sudo通过使用或切换到根用户sudo -i并尝试使用该帐户进行编辑,权限也会被拒绝。我怎样才能让它发挥作用?

permissions sudo ram

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

无法安装 nohup 命令

我正在尝试安装nohup命令。当我运行时,sudo apt-get install nohup我得到:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package nohup
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?

package-management nohup

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

标签 统计

command-line ×4

bash ×1

find ×1

grep ×1

nohup ×1

package-management ×1

permissions ×1

ram ×1

security ×1

sudo ×1

tar ×1

wc ×1