小编Ken*_*ent的帖子

部分分支或部分合并或其他方式来帮助我同步dotfiles?

我不知道如何使我的要求在标题中缩短,对不起,如果它没有意义.我会在这里解释一下:

许多人将他们的dotfiles放在bitbucket或github上,以方便以后的安装或配置,在不同的PC上同步.我做了同样的事情,但是我想做一些特别的事情,我不确定mecurial/git是如何帮助的.

是)我有的:

我有3台机器,比如Home,Office和Client,所有linux操作系统(可能是不同的发行版).为了使示例简单,请说我只想将一个文件.zshrc放入repo.问题是,三个操作系统有不同的系统变量(或其他设置).例如

  • Office已安装JBOSS,然后在.zshrc我需要导出JBOSS_HOME var.
  • 客户端已安装Oracle,然后导出不同的vars集.
  • Office必须导出HTTP_PROXY,但HOME不是,客户端也需要它,但代理值不同等.

我现在所做的是,我将那些机器特定的设置(主要是导出,别名声明)提取到另一个文件,比方说myVar.sh.并在结尾处采购.zshrc.

所以3台机器有共同的部分(相同.zshrc)和不同的部分(myVar.sh).

我想要的是:

  • 在任何机器上,如果我找到了一些不错的设置,我会更改.zshrc文件(公共部分)并推送.这些更改应该很容易与其他机器同步(例如,拉动)

  • 如果我myVar.sh在HOME上更改了(不同的部分)并推送,myVar.sh如果我拉上Office机器,它不应该影响Office .

我在做什么:

现在我在bitBucket上有一个Repo,还有三个分支(H,O,C).在家用电脑上,我只是玩Home分支.对于Office,Client也是如此.

问题是,如果我在一台PC上更改了公共部分,那么更改就在它自己的分支中,有点难以同步到另外两个.因为我永远不会合并那些分支.

我也想到为不同的电脑mk不同的目录.例如

/.zshrc
|--/HOME/myVar.sh
|--/Office/myVar.sh
|--/Client/myVar.sh
Run Code Online (Sandbox Code Playgroud)

并编写shell脚本,例如检查$ HOST以决定写入myVar.sh哪个目录.但我怀疑,如果这是实现我的目标的最佳方式.当我看到我的dotfiles目录时,我看到所有3个人的设置.我应该小心并输入正确的一个来读取文件.

在现实世界中,公共部分包含的不仅仅是.zhsrc(tmux,vimrc,xdefault ..),不同的部分也是如此.

我不知道我们可以以某种方式制作部分分支或在存储库上进行部分合并...

我使用hg远远超过git,如果hg可以解决它我宁愿hg,如果没有,git也是可以接受的.我没有太多git经验,除了克隆,推,拉,上,合并,ci.

现在,我该怎么办

并且,感谢您阅读此...


编辑更多关于不同部分的内容

我要感谢所有人给我答案.正如我上面所说,我真机中的不同部分并不那么简单myVar.sh.例如,我将我的公司 - 笔记本电脑(Office)带到不同的客户端(大约有6个客户端,并非所有客户端都为我们提供PC,这很好,因为我可以随处使用Linux),并为每个客户配置打印机.我也会把这些配置放在Repo中.因为如果有一天我必须刷新我的系统,或硬盘失败,我可以很容易地设置这些打印机.其他属于不同部分的东西,但我不能简单地"源xxx"之类的

  • 用于跟踪点的Xorg.conf
  • .hgrc文件(因为在公司我们有自己的repo,uid,pwd,代理..)
  • 一些预配置的systemd模块,基本上是.conf文件.但机器特定,例如radeon.conf仅适用于我的家用笔记本电脑.并且客户端PC根本没有安装systemd.

    这就是我为PC考虑不同目录的原因.

正如我现在所说的那样,我有3个分支方式,并且myConf在我的目录中有一个目录getConf.sh,用于复制dotfiles,不同的confs等myConf.实际上也getConf.sh属于不同的部分,因为脚本对于所有的pc都不相同.

因此,我认为if-else/switch当时source可能不适用于这种情况.

昨天我刚拿了.zshrc,试着让这个例子变得简单.如果它误导了你们,对不起.

git shell mercurial dotfiles

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

grep -v模式也删除1行之前和4行之后

我想grep一个模式并删除匹配模式的行,并且还在上下文之前的1行和4行之后.我试过了:

grep -v -A 4 -B 1
Run Code Online (Sandbox Code Playgroud)

提前致谢!

例:

Rule: r1
Owner: Process explorer.exe Pid 1544
0x01ec350f  8b 45 a8 0f b6 00 8d 4d a8 ff 14 85 c8 7f ed 01   .E.....M........
0x01ec351f  84 c0 75 ec 8b 4d fc e8 ba f5 fe ff f7 85 b0 fd   ..u..M..........
0x01ec352f  ff ff 00 00 01 00 75 13 33 c0 50 50 50 68 48 28   ......u.3.PPPhH(
0x01ec353f  eb 01 33 d2 8b cb e8 b0 57 …
Run Code Online (Sandbox Code Playgroud)

regex bash shell awk grep

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

Apache POI适用于没有Microsoft Office的Linux

我已经在我的linux机器上下载了Apache POI,我想编写创建excel文件并在其中存储数据的java程序.

我的问题是,我的机器没有Microsoft Office软件包.

Apache POI会在其中运行吗?

java linux apache-poi

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

正则表达式:匹配以某些字母开头的特定长度的单词

我需要一个匹配7字母单词的正则表达式,以字母开头'st'.例如,它应该只匹配'startin'以下内容:start startin starting

php regex

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

如何从shell中的字符串中检索url?

我想使用 shell/bash 脚本从字符串中提取 url,如果字符串中有多个 url,则只应返回第一个。

我在下面提供了一些输入和输出字符串的示例。我猜我需要做一些正则表达式,但我不太熟悉如何在 bash/shell 中做到这一点?

Input: Take a look at this site: http://www.google.com/ and you'll find your answer
Output: http://www.google.com/


Input: http://www.google.com
Output: http://www.google.com


Input: Check out http://www.bing.com and http://www.google.com
Output: http://www.bing.com


Input: Grettings, visit <http://www.mywebsite.com> today!
Output: http://www.mywebsite.com
Run Code Online (Sandbox Code Playgroud)

regex string bash shell grep

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

尝试在cygwin中运行脚本时出错

意外的文件结束.现在我搜索了错误,我明白我的脚本文件(在Windows中创建)有错误的结尾.我还读到我可以在文件上使用dos2unix命令来解决这个问题.但是,我试过了,cygwin告诉我:

-bash: dos2unix: command not found
Run Code Online (Sandbox Code Playgroud)

除了cygwin,我在远程unix终端上工作,我的脚本运行正常,甚至还有dos2unix命令.我已经在脚本文件中使用它,并尝试在cygwin中使用转换后的文件,并出现意外的文件错误结束.那有什么选择呢?

unix bash cygwin syntax-error

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

如何获取CSV文本文件中特定字段的最大值?

我的文本文件示例中的每一行(CSV,逗号分隔)如下:

2016-01-10,23:56:07,10,71,47
Run Code Online (Sandbox Code Playgroud)

可以看出,字段3,4和5是数值.

对于每一行,我只想获得字段3和4最大值.就像是:

awk -F ',' '{print max($3,$4)}'
Run Code Online (Sandbox Code Playgroud)

(可能不是真正的AWK语法,这个,但它是我能想到的最接近的).
因此,对于上述行,结果数字将为"71".

更多行的示例:

2016-01-10,23:53:07,6,99,41
2016-01-10,23:54:07,10,88,44
2016-01-10,23:55:07,31,71,46
2016-01-10,23:56:07,71,10,47
Run Code Online (Sandbox Code Playgroud)

结果:

99
88
71
71
Run Code Online (Sandbox Code Playgroud)

如何在Linux shell上完成?
我建议AWK,但任何其他解决方案都可以.

linux csv shell awk

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

Bash:在 X 列中保留所有具有重复值的行

我有一个包含几千行和 20 多列的文件。我现在只想保留第 3 列中与其他行具有相同电子邮件地址的行。

文件:(名字;姓氏;电子邮件;...)

Mike;Tyson;mike@tyson.com
Tom;Boyden;tom@boyden.com
Tom;Cruise;mike@tyson.com
Mike;Myers;mike@tyson.com
Jennifer;Lopez;jennifer@lopez.com
Andre;Agassi;tom@boyden.com
Paul;Walker;paul@walker.com
Run Code Online (Sandbox Code Playgroud)

我想保留所有具有匹配电子邮件地址的行。在这种情况下,预期的输出将是

Mike;Tyson;mike@tyson.com
Tom;Boyden;tom@boyden.com
Tom;Cruise;mike@tyson.com
Mike;Myers;mike@tyson.com
Andre;Agassi;tom@boyden.com
Run Code Online (Sandbox Code Playgroud)

如果我使用

awk -F';' '!seen[$3]++' file
Run Code Online (Sandbox Code Playgroud)

我将丢失电子邮件地址的第一个实例,在本例中为第 1 行和第 2 行,并且仅保留重复项。

有没有办法保留所有行?

bash awk

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

在一列数字中,找到与某个目标值最接近的值

假设我在列中有一些数值数据,例如

11.100000 36.829657 6.101642
11.400000 36.402069 5.731998
11.700000 35.953025 5.372652
12.000000 35.482082 5.023737
12.300000 34.988528 4.685519
12.600000 34.471490 4.358360
12.900000 33.930061 4.042693
13.200000 33.363428 3.738985
13.500000 32.770990 3.447709
13.800000 32.152473 3.169312
Run Code Online (Sandbox Code Playgroud)

我还有一个目标值和一个列索引.给定这组数据,我想找到具有指定索引的列中与目标值最接近的值.

例如,如果我的目标值11.6在列中1,则应输出脚本11.7.如果有两个与目标值等距的数字,则应输出较高的值.

我有一种感觉,awk具有执行此操作的必要功能,但欢迎任何在bash脚本中工作的解决方案.

bash awk

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

Maven来源与资源

这两个文件夹有什么区别?为什么我的bean必须进入资源,所以我的网络应用程序工作?

src/main/java Application/Library sources
src/main/resources Application/Library resources
Run Code Online (Sandbox Code Playgroud)

java maven

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

标签 统计

bash ×5

awk ×4

shell ×4

regex ×3

grep ×2

java ×2

linux ×2

apache-poi ×1

csv ×1

cygwin ×1

dotfiles ×1

git ×1

maven ×1

mercurial ×1

php ×1

string ×1

syntax-error ×1

unix ×1