标签: bash

使用 Cygwin 中的 Notepad++,而无需 shell 等待退出代码

我正在运行 Cygwin 并希望使用 Notepad++ 作为主要的 shell 编辑器,有点像我在 Mac 上的编辑器,我可以在其中键入mate whatever以打开 TextMate 的一个实例。在我~/.bashrc的 Cygwin 文件中,我设置了以下别名和环境变量:

export EDITOR="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
alias np="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
Run Code Online (Sandbox Code Playgroud)

它主要有效:当我键入np whatever或 Cygwin 程序调用 $EDITOR 时,Notepad++ 会打开。

但是,shell 会等待 Notepad++ 关闭,直到那时才允许任何输入。这可能特定于 bash,但是如何从 Cygwin 打开 Notepad++ 并告诉 shell不要等待退出代码继续?&在 alias 命令的末尾添加 a不能正常工作 - 它只是打开一个未命名的文件并发出警告filename: command not found而不是打开文件。

谢谢!

cygwin bash notepad++

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

如何在 vim 中为 .bash_aliases 启用语法高亮?

我正在努力重组我的.bashrc. 我将我的别名移动到.bash_aliases(来自.bashrc,但我无法弄清楚如何为此文件启用语法突出显示。vim似乎无法确定文件使用的语言。它适用于.bashrc。有什么想法吗?

linux bash vim syntax-highlighting

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

cygwin下的ssh配置

我在 Windows 7 上安装了 Cygwin。我进行了默认安装。我想使用 ssh 配置文件 (~/.ssh/config) 来设置主机和连接选项。

当我尝试连接时,普通的 ssh 命令无法找到配置:ssh host 如果我明确指定配置文件,一切正常:ssh -F ~/.ssh/config

我找不到任何设置 ssh 客户端的选项,例如 /etc/ssh

也许 ssh 不知道我的主文件夹在哪里?(我已将 HOME 环境变量设置为我的主文件夹)

ssh windows-7 cygwin bash openssh

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

Bash:查找主机名的 IP,包括搜索中的 /etc/hosts

Ubuntu 10.10+

在我的脚本中,我需要查找给定主机名的 IP。

如果该名称在 中列出/etc/hosts,则命令应该打印来自 的 IP /etc/hosts,而不是来自 DNS 服务器。

我尝试过的命令 ( nslookup, dig, host) 完全忽略/etc/hosts- 至少对于 DNS 服务器不知道的名称。

注意:我更喜欢不需要我/etc/hosts手动grep的解决方案。

linux dns bash ubuntu hosts-file

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

在不继承父级环境的情况下运行命令

有没有办法“好像”在新的登录会话中运行命令?

我已经试过了env -i。但是,我不想处理必须设置或取消设置的各种 ENV 变量。

我也试过bash -c "some command"and bash -l -c "some commmand",但它们都是复制当前环境。

我最接近的是一个不太干净的解决方案:

ssh me@localhost "some command"`
Run Code Online (Sandbox Code Playgroud)

session bash shell

18
推荐指数
2
解决办法
9645
查看次数

unix - 按行拆分一个巨大的 .gz 文件

我确定有人有以下需求,按行拆分巨大的 .gz 文件的快速方法是什么?底层文本文件有 1.2 亿行。我没有足够的磁盘空间来一次对整个文件进行压缩,所以我想知道是否有人知道可以将文件(.gz 或内部 .txt)拆分为 3x 40mn 行文件的 bash/perl 脚本或工具. 即调用它像:

    bash splitter.sh hugefile.txt.gz 4000000 1
 would get lines 1 to 40 mn    
    bash splitter.sh hugefile.txt.gz 4000000 2
would get lines 40mn to 80 mn
    bash splitter.sh hugefile.txt.gz 4000000 3
would get lines 80mn to 120 mn
Run Code Online (Sandbox Code Playgroud)

也许是在做一系列这些解决方案,或者 gunzip -c 需要足够的空间来解压缩整个文件(即原始问题): gunzip -c hugefile.txt.gz | 头 4000000

注意:我无法获得额外的磁盘。

谢谢!

linux unix bash shell perl

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

如何让`find`按时间倒序查找文件?

我想在按时间戳(创建时间)排序的子目录中查找文件,最近的在最前面。

我看过手册页,但它似乎只让你按时间戳过滤而不是按时间戳排序。

我可以通过哪些选项find来实现这一目标?或者,我如何将它与其他工具结合使用,比如sort按时间戳排序?

unix bash find

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

如何检查 cygwin mintty/bash 是否以管理员身份运行?

问题陈述:测试 Cygwinmintty bash会话是否为“以管理员身份运行”的最优雅和健壮的方法是什么?

为什么,具体的?mintty使用 Windows 时,我通常会打开几个终端(mintty没有选项卡)。最尴尬的是当我需要找到一个终端窗口时,例如我想运行ping或其他一次性程序时,我通过右键单击“以管理员身份运行”启动了该窗口。我想以视觉方式指示终端会话的“以管理员身份运行”(通过更改我的启动文件中的bashshell 提示变量)。PS1~/.bashrc

一些快速的潜在解决方案:

  1. 我可以比较一些环境变量的值。通过快速查看env输出,有很多不同之处。然而,很难说哪个在可移植到另一台 Windows 机器(可能运行不同版本的 Windows)方面最可靠。
  2. idid -Gn如果以管理员身份运行,则更具体地显示不同的组。在我的Windows 7机器,我必须Administratorsroot添加到列表中的组。同样,我不确定这是否可移植。
  3. 我可以尝试将文件写入普通用户会失败的位置。但我不想将任何文件写入陌生的地方——这在某些想象的场景中可能具有潜在的破坏性(例如,存储介质出现故障),这似乎完全不符合我的口味。
  4. 运行一些 Windows 程序,如果命令以“管理员身份”运行,将通过返回状态或输出指示。最好是一些与 UNIXid(1)命令具有类似目的的命令(但本机存在于 Windows - 或 Cygwin 中,但没有将 Windows 系统概念转换为 POSIX 模拟概念的过分牵强)。

有更好或更优雅的建议吗?也许 cygwin 提供了专门用于此目的的命令实用程序?

更新:https : //stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights/ 的 97% 重复- 区别只是在这里使用bash而不是(恕我直言奇怪和古老的)Windows cmd.exe. 请务必检查那里的答案和评论。

windows terminal cygwin bash

18
推荐指数
3
解决办法
8911
查看次数

sed 中的`-n` 选项有什么作用?

这是以下内容的手册页条目-n

-n

抑制模式空间的自动打印

我注意到,当使用-n对某些操作,每行被打印到标准输出(和所请求的线被印刷两次):

$ cat test.txt 
first
second
third
fourth
fifth

$ sed -n '2,3p' test.txt 
second
third

$ sed '2,3p' test.txt 
first
second
second
third
third
fourth
fifth
Run Code Online (Sandbox Code Playgroud)

但是,该定律不适用于其他命令:

$ sed -n 's/t/T/' test.txt 

$ sed 's/t/T/' test.txt 
firsT
second
Third
fourTh
fifTh
Run Code Online (Sandbox Code Playgroud)

那么究竟有什么作用-n呢?

linux text-editing bash sed command-line

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

find 命令中“{}”和{} 之间的区别?

文档中,我看到了两种用法:

find . -type f -exec file '{}' \;

find repo/ -exec test -d {}/.svn -o -d {}/.git -o -d {}/CVS ; \
Run Code Online (Sandbox Code Playgroud)

linux bash command-line find syntax

18
推荐指数
4
解决办法
4598
查看次数