小编dog*_*ane的帖子

“--”(双破折号)是什么意思?

--compgen命令中看到使用过。

例如:

compgen -W "foo bar baz" -- b
Run Code Online (Sandbox Code Playgroud)

里面的意思是什么--

command-line shell utilities syntax

659
推荐指数
5
解决办法
25万
查看次数

在 tmux 中重新编号窗口

我经常在 tmux 中得到十多个窗口。后来,我关闭了一些较旧的。有没有办法将窗口 15 重新编号到窗口 3(不再存在)?或者把pack它们全部重新排列起来,这样就没有空槽了?我想这样做是因为很难跳转到更高编号的窗口,因为你不能这样做Ctrl+B, 15。我必须使用Ctrl+B, w列出窗口,然后键入与我要打开的窗口对应的字母。

我知道我可以交换窗户。例如,我可以创建一个新窗口 ( Ctrl+B, c),它将在空槽 3 中打开。然后我可以swapw打开窗口 15 和窗口 3,然后关闭窗口 15。显然,这是一种乏味的方法。

在 tmux 中如何管理多个窗口?

tmux

169
推荐指数
5
解决办法
4万
查看次数

如何创建类似 /dev/null 的“黑洞”目录?

我想创建一个“ /dev/null”目录(或“黑洞”目录),这样写入它的任何文件都不会真正写入,而只是消失。

我有一个将大型临时文件写入目录的应用程序。我无法控制文件的名称,而且我并不真正关心这些文件的内容。我可以编写一个脚本来定期破坏这些文件,但这些文件会很快写出并填满我的磁盘。我正在寻找更聪明的东西。我希望应用程序“认为”它正在写出这些文件,而实际上,写的内容只是在另一端被丢弃。

另请参阅这个旧的相关线程。

filesystems directory io-redirection

98
推荐指数
3
解决办法
4万
查看次数

你什么时候会使用额外的文件描述符?

我知道您可以创建一个文件描述符并将输出重定向到它。例如

exec 3<> /tmp/foo # open fd 3.
echo a >&3 # write to it
exec 3>&- # close fd 3.
Run Code Online (Sandbox Code Playgroud)

但是你可以在没有文件描述符的情况下做同样的事情:

FILE=/tmp/foo
echo a > "$FILE"
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个很好的例子,说明何时必须使用额外的文件描述符。

shell bash io-redirection file-descriptors

93
推荐指数
5
解决办法
6万
查看次数

在 xterm 标题栏中显示命令

我的 Bash Prompt 当前正在使用以下顺序设置 xterm 标题栏:

PS1='\033]0;\u@\h>\w\007'
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以在标题栏中显示当前命令。例如,如果我使用 拖尾文件tail -f foo.log,我希望我的标题栏显示tail -f foo.log.

bash prompt xterm window-title

25
推荐指数
2
解决办法
6870
查看次数

在 tmux 中使用 Ctrl+B

我使用Ctrl+B命令前缀 in tmux,但这与Ctrl+Bin冲突less,后者用于向上滚动文件。

我怎样才能让它发挥作用?我必须在 中设置不同的命令前缀tmux吗?如果可以避免的话,我真的不想学习新的键绑定。

tmux

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

如何检查 gzip 压缩文件是否为空?

有没有一种快速的方法来检查 gzip 压缩的文件是否为空,或者我必须先解压缩它吗?

例子:

$ touch foo
$ if [ -s foo ]; then echo not empty; fi
$ gzip foo
$ if [ -s foo.gz ]; then echo not empty; fi
not empty
$ wc -l foo.gz
      1 foo.gz
Run Code Online (Sandbox Code Playgroud)

command-line bash gzip

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

Bash:在提示中显示退出状态:

GREEN="\e[1;32m"
RED="\e[1;31m"
NONE="\e[m"

get_exit_status(){
   es=$?
   if [ $es -eq 0 ]
   then
       echo -e "${GREEN}${es}${NONE}"
   else
       echo -e "${RED}${es}${NONE}"
   fi
}

get_path(){
    #dummy function
    echo "PATH"
}

PROMPT_COMMAND='exitStatus=$(get_exit_status)'
Run Code Online (Sandbox Code Playgroud)

下面给出了正确的 exitStatus 但颜色变量没有扩展:

PS1='${RED}\h $(get_path) ${exitStatus}${NONE} '
Run Code Online (Sandbox Code Playgroud)

但是,下面的一个给了我颜色,但退出状态没有更新:

PS1="${RED}\h $(get_path) ${exitStatus}${NONE} "
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?我该如何解决这个问题,以便 exitStatus 和颜色都能正常工作?

bash prompt

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

动态符号链接

我已经为不同的架构构建了我的应用程序,并希望创建一个“动态符号链接”,它根据变量将我带到正确的版本。

如果我当前登录的机器是 x86,那么符号链接应该将我带到那个版本。

我想做的一个嘲笑的例子

$ uname -i
x86_64

$ ls -ltr 
lrwxr-xr-x  1 dogbane gg     4 Feb 16 15:40 mylink -> @sys/
drwxrwxr-x  2 dogbane gg  2048 Feb 16 15:40 x86_64/
drwxrwxr-x  2 dogbane gg  2048 Feb 16 15:40 i386/

$ cd mylink

$ pwd -P
~/x86_64
Run Code Online (Sandbox Code Playgroud)

这可能吗?

我知道我可以使用cd $(uname -i),但想要更简单的东西。

symlink

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

Bash 正则表达式匹配在 4.1 中不起作用

升级到Bash4,发现不匹配正则表达式:

$ echo $BASH_VERSION
4.1.2(1)-release

$ [[ "20110228" =~ "^[0-9]{8}$" ]] && echo matches
Run Code Online (Sandbox Code Playgroud)

但是 Bash 3.0 是:

$ echo $BASH_VERSION
3.00.16(1)-release

$ [[ "20110228" =~ "^[0-9]{8}$" ]] && echo matches
matches
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我没有正确安装它吗?

bash regular-expression

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

在 cal 中突出显示当前日期

我想在cal命令的输出中突出显示今天的日期。什么是最好的方法?

这是我到目前为止:

cal -m | grep -C6 --color "$(date +%e)"
Run Code Online (Sandbox Code Playgroud)

但它不适用于所有情况,例如,当日期只有一位数时。我还希望突出显示在我显示一年的日历时起作用。

highlighting date cal

6
推荐指数
3
解决办法
7253
查看次数

Bash 重用进程替换文件

我有一个大脚本,它将文件作为输入并用它做各种事情。这是一个测试版本:

echo "cat: $1"
cat $1
echo "grep: $1"
grep hello $1
echo "sed: $1"
sed 's/hello/world/g' $1
Run Code Online (Sandbox Code Playgroud)

我希望我的脚本可以使用进程替换,但只有第一个命令 ( cat) 有效,而其余的则无效。我认为这是因为它是一个管道。

$ myscript.sh <(echo hello)
Run Code Online (Sandbox Code Playgroud)

应该打印:

cat: /dev/fd/63
hello
grep: /dev/fd/63
hello
sed: /dev/fd/63
world
Run Code Online (Sandbox Code Playgroud)

这可能吗?

bash io-redirection process-substitution

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