标签: bash

重定向输出两次

我想从命令行重定向我的输出两次

例如:

comp.reg $T_GDS_MASTER/bin.new $T_GDS_MASTER/bin.old > $T_GDS/log/comp.reg.out 2>&1
Run Code Online (Sandbox Code Playgroud)

我希望该命令也打印到屏幕上。我怎样才能做到这一点?

linux bash shell

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

如何设置 Bash 选项卡完成的最小字符数?

有没有办法为 Bash 的 Tab 补全设置最少字符数?

我的原因是我经常不小心在空命令行上按了 tab 键,加载命令列表需要很长时间。

bash tab-completion

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

使用 Bash 在 OS X 的 Terminal.app 中的历史记录和 control-a 期间出现的自定义提示

我在 .bash_profile 中自定义了我的提示,如下所示:

export PS1="\w \e[0;32m\$(vcprompt -f '[%n:%b]')\e[m\$ "
Run Code Online (Sandbox Code Playgroud)

现在,当我按向上箭头返回历史,找到我想要的那个,然后按 control-a 转到行首时,它通常会在第 5 个字符处停止,而不是一直到开头. 然后前几个字符被“冻结”到位。如果我从那里向上或向下箭头,就好像这些字符是新的 $。

我按回车,又恢复正常了,但是让那些字符卡在那里很烦人!我在定制中搞砸了什么吗?谢谢!

bash prompt command-history macos

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

为什么屏幕没有显示当前正在运行的进程名称?(Mac OSX 终端 bash)

我在 Mac OSX 终端应用程序 (bash) 中运行屏幕。

这是 screenrc (从这里得到的):

$ cat ~/.screenrc 
termcapinfo xterm* ti@:te@
startup_message off
defutf8 on
shelltitle "$ |what?" # make screen assign window titles automatically
hardstatus alwayslastline
hardstatus string '%{= kw} [ %{= kb}%H%{= kw} ][%= %{= kw}%?%-Lw?%{= kW}%n*%f %t%?%?%{= kw}%?%+Lw%?%?%= ][ %{r}%l%{w} ]%{w}[%{r} %m/%d/%y/ %C %A %{w}]%{w}'
$
Run Code Online (Sandbox Code Playgroud)

可以看出,我确实有一行将当前进程名称显示为屏幕中的标题:

shelltitle "$ |what?" # make screen assign window titles automatically
Run Code Online (Sandbox Code Playgroud)

但在屏幕内我只看到“什么?” (默认)而不是进程名称。这表明“$”不起作用。

我错过了什么?“$ |something-else”是如何工作的?

terminal bash gnu-screen macos

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

删除文件每一行中的重复项

如何删除每一行中的重复项,例如这里?

1 1 1 2 1 2 3
5 5 4 1 2 3 3
Run Code Online (Sandbox Code Playgroud)

我想得到这个输出:

1 2 3 
5 4 1 2 3
Run Code Online (Sandbox Code Playgroud)

有很多行(100,000),在每一行中我都想要唯一的值。Perl 可能是最快的,但我怎样才能在 Perl 或 Bash 中做到呢?

linux bash perl uniq

7
推荐指数
2
解决办法
2950
查看次数

如何使用 Automator 在 finder 中更改空文件夹的外观?

我正在尝试使用 Apple Automator 在层次结构中标记空文件夹。基本上,我从一个带有空文件夹层次结构的项目开始,并在工作时填充它们。我想要一个工作流来标记所有不包含文件且其后代也不包含文件的空文件夹(灰色)。

换句话说,当我创建空项目时,所有文件夹都应该是灰色的,因为任何地方都没有“文件”,只有空文件夹。但是,一旦我将文件放在某处,它的父文件和所有祖父母文件将不再被标记为灰色。

我以为我在如何更改 finder 中空文件夹的外观中找到了我需要的东西但是,它正在标记空文件夹。在我的项目中,只有最后一个后代才会是灰色的,因为所有父文件夹都包含文件夹,因此,不是空的。

这是我在 Automator 的 /bin/bash shell 脚本中运行的代码:

find "$@" -type d -empty
Run Code Online (Sandbox Code Playgroud)

然后我将它传递给“标签查找器项目”以将结果变为灰色。

这是我在测试文件夹上运行时得到的结果:

  • 测试文件夹(非灰色)
    • 文件夹一(灰色)
    • 文件夹二(非灰色)
      • 文件夹 A(灰色)
    • 文件夹三(非灰色)
      • 测试.txt
    • 文件夹四(非灰色)
      • 文件夹 A(非灰色)
        • 测试.txt

这是我正在寻找的结果:

  • 测试文件夹(非灰色)
    • 文件夹一(灰色)
    • 文件夹二(灰色)
      • 文件夹 A(灰色)
    • 文件夹三(非灰色)
      • 测试.txt
    • 文件夹四(非灰色)
      • 文件夹 A(非灰色)
        • 测试.txt

任何帮助将不胜感激!

哦,我相信我可以从 Hazel 运行工作流程。如果您有更好的方法让它偶尔自动运行,我也很想知道。

谢谢。

编辑:刚刚意识到 .ds_store 文件(我假设)导致文件夹也不显示为空,例如,如果我删除了文件夹中的最后一个文件。

finder bash shell-script automator macos

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

将 Linux 符号链接转换为 Windows 符号链接

我注意到 Linux 符号链接在 Windows 中不起作用,反之亦然。有什么方法可以将 Linux 符号链接转换为 Windows 符号链接?具体来说,我想将相对 Linux 符号链接转换为相对 Windows 符号链接(以防带有符号链接的文件夹存储在闪存驱动器上,或从 Linux 文件系统复制到 Windows 文件系统)。

windows linux bash symbolic-link cross-platform

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

无法在 OS X bash 上分配给 PS1

我正在尝试进行设置,PS1以便在 git 上显示分支名称:

user.name:some/repo (master) $

但是,我所做的一切似乎都不起作用。即使我只是尝试PS1直接分配给,它也不起作用:

user.name:~ $ echo $PS1
\u:\w $
user.name:~ $ PS1='oh yeah'
user.name:~ $ echo $PS1
\u:\w $
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?我没有设置这个 var 的权限吗?我有语法错误吗?

我在 Mac OS X 10.8 上。

我也试过:

user.name:~ $ echo $PS1
\u:\w $
user.name:~ $ export PS1='oh yeah'
user.name:~ $ echo $PS1
\u:\w $
Run Code Online (Sandbox Code Playgroud)

以供参考:

user.name:~ $ $SHELL --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin12)
Copyright (C) 2007 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)

显然PS1是只读的。有趣的。

user.name:~ $ readonly PS1
-bash: PS1: …
Run Code Online (Sandbox Code Playgroud)

bash osx-mountain-lion

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

为什么在 Mac 中加载 .bash_profile 返回错误代码 1

每当我打开 bash 终端时,都会返回错误代码 1:

Last login: Tue Jan 15 16:19:53 on ttys000
spam@moss:~ $ echo $?
1
Run Code Online (Sandbox Code Playgroud)

我发现这是由我的最后一行代码引起的.bash_profile

test -f $HOME/.debug && export profile_bash_profile='.bash_profile' || return 0
Run Code Online (Sandbox Code Playgroud)

如果删除此行,则返回错误代码 0。我不明白这一行是如何引起任何问题的,因为我可以.bash_profile使用错误代码 0:

spam@moss:~ $ source .bash_profile
spam@moss:~ $ echo $?
0
Run Code Online (Sandbox Code Playgroud)

更新:

有谁知道 Mac 是如何加载 ~/.bash_profile 的?当登录外壳启动时,我怀疑 Mac 的来源。该return命令似乎没有按预期运行 - 当我将其return 5作为最后一行~/.bash_profile并启动登录 shell 时,它不会返回错误代码 5(我确定~/.bash_profile是加载的最后一个脚本)。

mac bash .bash-profile

7
推荐指数
2
解决办法
2313
查看次数

制作自定义的单字符目录映射,如 ~ > $HOME

我们都知道~映射到$HOME/home/user

是否可以在其他字符(@,_)上进行这样的其他映射?

我想到的一种可能的解决方法是使用变量(至少需要两个字符)...

H=/run/media/user/Storage
cp $H/file.txt .
Run Code Online (Sandbox Code Playgroud)

但是有更好的方法吗?

linux bash

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