标签: bash

是否可以强制将 bash 选项卡完成建议列在单个列中?

当我输入文件名并双击 Tab 时,会出现一个目录列表,为 Tab 完成建议所有选项。默认情况下,ls它以与ls -l. 这可能吗?

我也有兴趣看看是否有任何进一步的定制可以沿着这条路完成,虽然我不确定我想要什么,只是一些想法的例子也会很酷。

bash tab-completion

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

如何在命令行上从我的 Ubuntu 版本中仅提取名称(或版本号)?

我只想要以下值之一:

  • 11.10
  • 梦幻般的

我试过签出lsb_release -rand uname -a,但输出仍然很冗长,没有使用grep. 这是我最接近的:

  • 发行名称:
    grep -oP 'CODENAME=(.+)' -m 1 /etc/lsb-release | awk -F= '{ print $NF }'
  • 版本号:
    grep -oP '\d+\.\d+' -m 1 /etc/lsb-release

bash ubuntu

6
推荐指数
2
解决办法
4819
查看次数

sh:找不到时间命令

在 llvm 3.0 测试套件中,下面的代码片段在 bash 上给出了以下错误:

sh:找不到时间命令

if [ "x$RHOST" = x ] ; then
  ( sh -c "$ULIMITCMD $TIMEIT -p sh -c '$COMMAND >$OUTFILE 2>&1 < $INFILE; echo exit \$?'" ) 2>&1 \
| awk -- '\
BEGIN     { cpu = 0.0; }
/^user/   { cpu += $2; print; }
!/^user/  { print; }
END       { printf("program %f\n", cpu); }' > $OUTFILE.time
Run Code Online (Sandbox Code Playgroud)

其中 $TIMEIT = 时间。

我试图将“sh -c”更改为“eval”,但错误仍在继续。

在尝试解决此错误时,我注意到一些有趣的事情可能有助于解决此问题,也可能无济于事:运行 sh -c "time" 有效,但 sh -c "time -p" 无效。

你们有没有人知道为什么会发生这个错误,我该如何解决? …

bash time sh llvm

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

如何防止 emacs 使用 autojump 加载 `update_terminal_cwd`?

在 MacOSX 10.7 上,Apple 引入/etc/bashrc了一个函数:update_terminal_cwd检查 Apple Terminal 是否正在运行,以及我们是否不在 emacs 中(下面粘贴了代码段)。不幸的是,通过将 autojump 包含到我的 bashrc 配置文件中,调用劣质 shell(即M-x shell)会导致调用 update_terminal_cwd。对于在劣质 shell 中调用的任何命令,我都会得到以下输出:

bash: update_terminal_cwd: command not found
achan[10:29 AM]~ > echo $PROMPT_COMMAND
Run Code Online (Sandbox Code Playgroud)

当我在 bashrc 中包含 autojump 时echo $PROMPT_COMMAND,emacs 内部看起来像这样:

{ [[ "$AUTOJUMP_HOME" == "$HOME" ]] && (autojump -a "$(pwd -P)"&)>/dev/null 2>>"${AUTOJUMP_DATA_DIR}/.autojump_errors";} 2>/dev/null ; update_terminal_cwd;
Run Code Online (Sandbox Code Playgroud)

如果我不包括自动跳转,我只会得到一个空字符串echo $PROMPT_COMMAND

在自动跳转代码中,它插入了第一部分:

{ [[ "$AUTOJUMP_HOME" == "$HOME" ]] && (autojump -a "$(pwd -P)"&)>/dev/null 2>>"${AUTOJUMP_DATA_DIR}/.autojump_errors";} 2>/dev/null ;
Run Code Online (Sandbox Code Playgroud)

update_terminal_cwd …

bash emacs macos

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

将所有错误消息发送到文本文件?

我正在尝试运行以下命令:

$ psql -d template_postgis -f /usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql 
Run Code Online (Sandbox Code Playgroud)

它产生了大量的错误输出,其中我只能在我的 shell 中看到结尾——我需要看到开头才能弄清楚出了什么问题。

... 
psql:/usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql:6065: ERROR:  current transaction is aborted, commands ignored until end of transaction block
psql:/usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql:6075: ERROR:  current transaction is aborted, commands ignored until end of transaction block
psql:/usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql:6081: ERROR:  current transaction is aborted, commands ignored until end of transaction block
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将消息发送到文本文件:

$ psql -d template_postgis -f /usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql > error.txt
Run Code Online (Sandbox Code Playgroud)

文本文件只包含三个命令:

SET
BEGIN
ROLLBACK
Run Code Online (Sandbox Code Playgroud)

那么为什么不是所有的输出都被发送到文本文件,我怎样才能看到所有的输出呢?

bash shell command-line

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

是否有用于更改目录的 bash 通配符?

例如,当使用 Bash 命令行时,我可以使用...

cd /volumes
Run Code Online (Sandbox Code Playgroud)

但是我想输入...

cd /vol*
Run Code Online (Sandbox Code Playgroud)

但这不起作用。有没有办法使用通配符导航目录?

bash macos

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

返回在 shell-script 中执行的最后一个命令

在 bash 脚本中,我想检索执行的最后一个命令。在 bash 本身中,以下命令就像一个魅力。

lastCommand=$(echo `history |tail -n2 |head -n1` | sed 's/[0-9]* //')
Run Code Online (Sandbox Code Playgroud)

然而,在脚本内部,历史根本不起作用。

有没有办法在脚本中检索命令?

bash shell-script

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

如何使用通配符在 unix shell 上复制文件

我正在尝试将一些文件复制到现有文件夹中。这是架构的一个例子

# origin 
/home/user/myfiles/folder1/group1/1.jpg
/home/user/myfiles/folder1/group1/2.jpg
/home/user/myfiles/folder1/group2/1.jpg
/home/user/myfiles/folder1/group2/2.jpg
/home/user/myfiles/folder2/group1/1.jpg
/home/user/myfiles/folder2/group1/2.jpg
/home/user/myfiles/folder2/group2/1.jpg
/home/user/myfiles/folder2/group2/2.jpg
Run Code Online (Sandbox Code Playgroud)

目标文件夹架构已经存在,它只是不存在的原始文件 (jpg)。

我的问题是如何做到这一点?

我想最终得到类似下面的结果,但这不起作用。也许我应该在查询中包含正则表达式以将星号分隔为值并用作来源/目的地?

 cp /home/user/myfiles/*/*/*.jpg  /home2/user/myfiles/*/*/*.jpg
Run Code Online (Sandbox Code Playgroud)

我最初的打算是在我未回答的问题上使用此复制模式: s3cmd:如何将文件从本地复制到具有现有结构的 S3 存储桶作为可能的解决方案。

bash shell

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

如何为 emacs tramp 指定要打开的远程 shell?

除了打开远程文件,tramp 还可用于运行远程 shell。不幸的是,有一个问题。在本地机器上我有 zsh,而在远程服务器上只安装了 bash。发出 Mx shell 会导致exec: 24: /bin/zsh: not found消息。

我可以以某种方式调整流浪汉来运行 bash 吗?

bash zsh shell emacs tramp

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

为什么获取图像会给我一个文件,而不是图像?

我愿意

wget http://services.runescape.com/m=itemdb_rs/3809_obj_sprite.gif?id=2
Run Code Online (Sandbox Code Playgroud)

并下载以下文件:

3809_obj_sprite.gif?id=2
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它保存为以下内容?

2.png
Run Code Online (Sandbox Code Playgroud)

linux bash wget

6
推荐指数
2
解决办法
7251
查看次数

标签 统计

bash ×10

shell ×3

emacs ×2

macos ×2

command-line ×1

linux ×1

llvm ×1

sh ×1

shell-script ×1

tab-completion ×1

time ×1

tramp ×1

ubuntu ×1

wget ×1

zsh ×1