小编Sea*_*mus的帖子

Rsync 过滤器:仅复制一种模式

我正在尝试创建一个目录,该目录将包含所有且仅我从 LaTeX 编译的 PDF。我喜欢将每个项目放在一个单独的文件夹中,所有项目都放在一个名为LaTeX. 所以我尝试运行:

rsync -avn *.pdf ~/LaTeX/ ~/Output/
Run Code Online (Sandbox Code Playgroud)

它应该找到所有的pdf~/LaTeX/并将它们传输到输出文件夹。这不起作用。它告诉我没有找到“ *.pdf”的匹配项。如果我省略此过滤器,该命令将列出 LaTeX 下所有项目文件夹中的所有文件。所以这是 *.pdf 过滤器的问题。我尝试用~/我的主目录的完整路径替换,但这没有效果。

我正在使用 zsh。我尝试在 bash 中做同样的事情,甚至使用列出每个子目录中每个文件的过滤器......这里发生了什么?

为什么 rsync 不能理解我的 pdf only 过滤器?


好的。所以更新:不,我正在尝试

rsync -avn --include="*/" --include="*.pdf" LaTeX/ Output/
Run Code Online (Sandbox Code Playgroud)

这给了我整个文件列表。我猜是因为一切都匹配第一个模式......

backup rsync wildcards

178
推荐指数
6
解决办法
19万
查看次数

必须有更好的方法来仅替换单个换行符吗?

我习惯于每句话写一行,因为我通常将内容编译为 LaTeX,或者以其他格式编写,其中换行符会被忽略。我使用一个空行来表示一个新段落的开始。

现在,我有一个以这种风格编写的文件,我只想将其作为纯文本发送。我想删除所有单换行符,但保持双换行符完好无损。这就是我所做的:

sed 's/^$/NEWLINE/' file.txt | awk '{printf "%s ",$0}' | sed 's/NEWLINE/\n\n/g' > linebreakfile.txt
Run Code Online (Sandbox Code Playgroud)

这将用我确信不会出现在文件中的一些文本替换空行:NEWLINE然后它摆脱了所有换行符awk(我在某个网站上发现了这个技巧),然后NEWLINE用必要的两个换行符替换了s。

这似乎是做一件非常简单的事情的冗长方法。有没有更简单的方法?此外,如果有一种方法可以用单个空格替换多个空格(有时出于某种原因会出现),那也很好。

我使用 emacs,所以如果有一些 emacs 特定的技巧是好的,但我宁愿看到一个纯粹的sed或纯粹的awk版本。

sed awk text-processing regular-expression

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

bash 目录快捷方式

当我键入 时cd ~foo,我希望 bash 将我带到某个目录foo作为键入foo. 我希望能够cp ~foo/bar.txt ~/bar.txt将文件从/foo/目录复制到主目录......所以基本上,我想要一些完全一样的东西~/,但我指定目录应该是什么。[我确定我应该jfgi,但我不知道该fg]

bash

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

在 zsh 别名中转义引号

这个关于从文本中删除换行符的问题之后,我想将其转换为 zsh 别名,如下所示:

alias striplines=' awk " /^$/ {print \"\n\"; } /./ {printf( \" %s \",$0);}"'
Run Code Online (Sandbox Code Playgroud)

我试过在 awk 脚本中转义引号,但出现此错误:

awk: (FILENAME=bspsrobustness FNR=1) fatal: division by zero attempted
Run Code Online (Sandbox Code Playgroud)

(该文件名为bspsrobustness

有没有办法做我想做的事?我想我可以把它变成一个 awk 脚本而不是 zsh 别名,这是我最好的选择吗?

shell zsh alias quoting

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

conky:正确的列对齐

说我想在我的 .conkyrc

NAME                PID       CPU%      MEM%
${top name 1} ${top pid 1}   ${top cpu 1}    ${top mem 1}
${top name 2} ${top pid 2}   ${top cpu 2}    ${top mem 2}
${top name 3} ${top pid 3}   ${top cpu 3}    ${top mem 3}
${top name 4} ${top pid 4}   ${top cpu 4}    ${top mem 4}
Run Code Online (Sandbox Code Playgroud)

我是否必须通过添加空间来手动对齐列,或者有没有办法告诉 conky 对齐列中的内容。使用较少的列,我可以只使用$alignc$alignr但我不能在这里这样做......

conky

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

用命令的输出做两件事

我有一个程序texcount可以输出 LaTeX 文档中的字数。我还可以将它的输出通过管道传输sed到 TeX 换行符并将其写入一个文件,然后我可以将其包含在我的最终文档中。但是当我执行texcount foo.tex | sed s/$/'\\\\'/ > wc.tex命令行输出时texcount被抑制。

如何获取要在终端中显示并通过管道传输到 sed的第一个命令的输出?

shell utilities text-processing

9
推荐指数
3
解决办法
667
查看次数

emacs 缓冲区中的目录快捷方式

所以我问了这个关于 shell 中目录快捷方式的问题。这个想法是我希望能够打开一个文件/home/Documents/foo,比如说,通过输入C-x C-f ~foo/file.

那么,有没有办法在 emacs 缓冲区中模拟 zsh 的“命名目录”?

顺便说一句,我想使用的快捷方式定义已经在我的 .zshrc 中,如果有直接读取它们的解决方案,则可以获得加分。

zsh emacs

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

为什么我的主机名在 Emacs 中不同?

所以我最近通过编辑/etc/hostname. bash 提示是user@name,所以我知道它有效。

但是在 emacs 中,它在窗口栏中显示emacs@name.tiscali.co.uk. Tiscali 是我的互联网提供商。在我更改它之前,emacs 只是emacs@oldname在窗口栏中。

如何从 emacs 的窗口栏中删除我的 IP 名称?

linux emacs hostname

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

使用 shell 脚本从 git 中提取“标签”信息

VC捆绑是一个整洁的小包装,大约一个git回购易于插入一个LaTeX文档中提取信息。它目前不提取有关当前提交是否被标记以及标记名称是什么的信息。我将如何编辑vc脚本来做到这一点?

然后我将如何编辑vc-git.awk脚本以在生成的 vc.tex 文件中添加额外的行?大概我想要一条看起来像这样的行:

print "\\gdef\\GITTag{" Tag "}%"
Run Code Online (Sandbox Code Playgroud)

但我需要更早的一行来告诉 awk 是什么" Tag "意思?

这不是关于 LaTeX 的问题,而是关于 git、awk 和 bash...

bash git awk

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