小编Jia*_* W.的帖子

Bash:逐行读取文件并将每个段作为参数处理到其他prog

我有一些肮脏的工作要做,所以Bash脚本似乎是一个不错的选择.我是Bash的新手,这种经历让我很沮丧.

文件mapfiles.txt由以下行组成.每条线有四个由白色空间隔开的段.每个段表示外部程序名称'prog'的输入参数.例如,"cm19_1.png"是文件名,"0001"是索引,"121422481"是经度,"31035995"是纬度.

文件:mapfiles.txt

cm19_1.png 0001 121422481 31035995
cm19_2.png 0002 121423224 31035995
cm19_3.png 0003 121423967 31035995
…
Run Code Online (Sandbox Code Playgroud)

我想对每一行执行类似的命令.如下所示,prog的输入参数顺序略有不同.所以编写一个bash脚本来处理重复的工作是有意义的.

[Usage] prog <index> <longitude> <latitude> <filename>
example: prog 0001 121422481 31035995 cm19_1.png
Run Code Online (Sandbox Code Playgroud)

通常,bash脚本将以这种方式运行:

  1. 从mapfiles.txt中读取一行
  2. 拆分细分
  3. 使用正确的参数顺序调用prog

这是run.sh.

#!/bin/sh

input=mapfiles.txt
cmd=prog

while read line
do
        file=$(echo $line | cut -d' ' -f1)
        key=$(echo $line | cut -d' ' -f2)
        log=$(echo $line | cut -d' ' -f3)
        lat=$(echo $line | cut -d' ' -f4)
        echo $cmd $key …
Run Code Online (Sandbox Code Playgroud)

parameters bash line-by-line

36
推荐指数
2
解决办法
8万
查看次数

如何重命名包含子目录中子模块的git repo(项目)

我从不期望重命名git repo,更具体地说,它是顶级文件夹保存项目,会非常困难.是的,项目包含一些子模块,但它是需要重命名的顶级文件夹,而不是子模块文件夹.Git似乎在其子模块机制中记录了一些奇怪的绝对路径.

让我们假设一下

  1. 你所有的项目都在/tmp.
  2. 你有一个proj_masterproj_mod.
  3. 您克隆porj_master,proj_ALL然后克隆prom_mod为其中的子模块.
  4. 你重命名proj_ALLproj_onebillion.然后黑魔法发生了.

以下步骤将重现我提到的问题.我使用的git版本是:

$ git --version
git version 1.7.9.5
Run Code Online (Sandbox Code Playgroud)
  1. 初始化proj_master.

    $ cd /tmp
    $ mkdir proj_master; cd proj_master
    $ git init .
    $ touch README
    $ git add .; git commit -m "hello proj_master"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 初始化proj_mod.

    $ cd /tmp
    $ mkdir proj_mod; cd proj_mod
    $ git init .
    $ touch …
    Run Code Online (Sandbox Code Playgroud)

git git-submodules

19
推荐指数
2
解决办法
3651
查看次数

如何告诉Maven包含jar依赖项,而不是Eclipse中的子项目源目录?

我使用Apache Maven来管理我的Java库(jar)和一些使用libs的项目.为了方便起见,我使用mvn eclipse:eclipse生成Eclipse项目文件,可以将其导入Eclipse工作区进行编辑.

当我在同一个Eclipse工作区中编辑主项目和Java lib项目时出现问题.也就是说,mvn eclipse:eclipse包括文件中的src路径依赖性.classpath,而不是jar预期的依赖性.

假设我有一个名为的Jave lib项目mylib.相应的jar文件mylib.jar已部署到由我维护的私有Maven仓库.为了在主项目中使用mylib.jar,包含以下依赖项pom.xml.

<!-- pom.xml for the main project -->
<dependency>
  <groupId>namespace.my</groupId>
  <artifactId>mylib</artifactId>
  <version>[1.0, )</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

mvn compile并且mvn test工作完美,mylib.jar从我的仓库自动下载.但是,在尝试时mvn eclipse:eclipse,我发现生成的.classpath文件不包含mylib.jar预期的依赖项.相反,它包括mylib的源文件目录,如下所示.

<!-- .classpath file generated by mvn eclipse:eclipse -->
<classpathentry kind="src" path="/mylib"/>
Run Code Online (Sandbox Code Playgroud)

似乎Maven读取Eclipse的元数据并找到mylib并且主项目在同一工作区中共存.因此,maven包含了我的好处.该死的.如何告诉maven忽略本地项目源并只包含jar文件?

java eclipse maven

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

如何将tmux热键设置为Ctrl-,即Ctrl +逗号

在Mac OS X上设置我首选的tmux热键时遇到了一些麻烦.

调用tmux魔法的最常见热键是CTRL+ ACTRL+ B.但我宁愿选择其他按键,原因如下:Ca是"跳到行首"的全局热键; C- b用于"在线上向后移动"和"在Vim中向上翻页".我不想在tmux中打破这些好的规则.

所以,我尝试为tmux热键设置一些非经常使用的按键.我选择的是CTRL- ,,CTRL- .,或CTRL-;

我在.tmux.conf文件中写了这个语句:

set-option -g prefix C-,
Run Code Online (Sandbox Code Playgroud)

我开始tmux.哦,它说"坏键".我用C-代替C-.或C-;.它也不起作用.

那么,我怎样才能将tmux热键设置为CTRL- ,

hotkeys comma ctrl tmux

10
推荐指数
2
解决办法
8188
查看次数

如何同步Pandoc生成的各种标记文件之间的更改?

所有.我正在使用Pandoc作为我的写作工具.它在各种标记格式(markdown,LaTeX,HTML)之间转换的惊人能力给我留下了深刻的印象."一个源文件,多输出格式"听起来不错,但我有一些关于同步降价格式之间变化的问题.

比方说,我首先写下降价源文件,名称hello.mkd.我按时间顺序列出我的任务:

  1. 完成撰写hello.mkd文件.
  2. 使用pandoc转换hello.mkdhello.texhello.html.
  3. 编辑hello.tex:添加一些软件包,添加一些复杂的环境,使TeX文档更加美观.
  4. 精炼hello.html.

问题出现了:如果我在编辑时发现拼写错误或其他错误,我hello.tex应该.tex立即修复它还是将其修复到源文件中hello.mkd并重新生成输出?

我有两个选择:

  • 修正错误的源文件hello.mkd,然后regerate所有的输出,这是指hello.texhello.html在这里.然后我必须合并对特定文件类型所做的所有更改,例如,合并所有packages/environment等.更改为新生成的文件.
  • 修正了在每个输出格式的错误,那就是将其固定hello.mkd,hello.tex,hello.html,和更多的修补程序/文件类型,如果你喜欢.嗯,这种方法需要较少的合并工作.但它看起来很荒谬,因为这三个共享的标记文件现在似乎无关紧要.

嗯......你怎么看?

markup markdown latex sync pandoc

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