我想从命令行重定向我的输出两次
例如:
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)
我希望该命令也打印到屏幕上。我怎样才能做到这一点?
有没有办法为 Bash 的 Tab 补全设置最少字符数?
我的原因是我经常不小心在空命令行上按了 tab 键,加载命令列表需要很长时间。
我在 .bash_profile 中自定义了我的提示,如下所示:
export PS1="\w \e[0;32m\$(vcprompt -f '[%n:%b]')\e[m\$ "
Run Code Online (Sandbox Code Playgroud)
现在,当我按向上箭头返回历史,找到我想要的那个,然后按 control-a 转到行首时,它通常会在第 5 个字符处停止,而不是一直到开头. 然后前几个字符被“冻结”到位。如果我从那里向上或向下箭头,就好像这些字符是新的 $。
我按回车,又恢复正常了,但是让那些字符卡在那里很烦人!我在定制中搞砸了什么吗?谢谢!
我在 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”是如何工作的?
如何删除每一行中的重复项,例如这里?
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 中做到呢?
我正在尝试使用 Apple Automator 在层次结构中标记空文件夹。基本上,我从一个带有空文件夹层次结构的项目开始,并在工作时填充它们。我想要一个工作流来标记所有不包含文件且其后代也不包含文件的空文件夹(灰色)。
换句话说,当我创建空项目时,所有文件夹都应该是灰色的,因为任何地方都没有“文件”,只有空文件夹。但是,一旦我将文件放在某处,它的父文件和所有祖父母文件将不再被标记为灰色。
我以为我在如何更改 finder 中空文件夹的外观中找到了我需要的东西?但是,它正在标记空文件夹。在我的项目中,只有最后一个后代才会是灰色的,因为所有父文件夹都包含文件夹,因此,不是空的。
这是我在 Automator 的 /bin/bash shell 脚本中运行的代码:
find "$@" -type d -empty
Run Code Online (Sandbox Code Playgroud)
然后我将它传递给“标签查找器项目”以将结果变为灰色。
这是我在测试文件夹上运行时得到的结果:
这是我正在寻找的结果:
任何帮助将不胜感激!
哦,我相信我可以从 Hazel 运行工作流程。如果您有更好的方法让它偶尔自动运行,我也很想知道。
谢谢。
编辑:刚刚意识到 .ds_store 文件(我假设)导致文件夹也不显示为空,例如,如果我删除了文件夹中的最后一个文件。
我注意到 Linux 符号链接在 Windows 中不起作用,反之亦然。有什么方法可以将 Linux 符号链接转换为 Windows 符号链接?具体来说,我想将相对 Linux 符号链接转换为相对 Windows 符号链接(以防带有符号链接的文件夹存储在闪存驱动器上,或从 Linux 文件系统复制到 Windows 文件系统)。
我正在尝试进行设置,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 终端时,都会返回错误代码 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是加载的最后一个脚本)。
我们都知道~映射到$HOME或/home/user。
是否可以在其他字符(@,_)上进行这样的其他映射?
我想到的一种可能的解决方法是使用变量(至少需要两个字符)...
H=/run/media/user/Storage
cp $H/file.txt .
Run Code Online (Sandbox Code Playgroud)
但是有更好的方法吗?