标签: bash

如何创建具有自动完成功能的脚本?

当我使用类似程序svn并在 Gnome 终端中输入时:

svn upd
Run Code Online (Sandbox Code Playgroud)

并点击Tab它自动完成:

svn update
Run Code Online (Sandbox Code Playgroud)

是否可以在我的自定义 bash 脚本中执行类似的操作?

bash auto-completion

158
推荐指数
5
解决办法
13万
查看次数

在 bash 脚本中输出到 /dev/null 有什么作用?

我经常遇到在 if 语句中使用这种语法的小型 bash 脚本:

some command > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

/dev/null这样输出的目的是什么,什么2>&1意思?

它似乎总是有效,但我想知道它在做什么。

command-line bash scripts redirect

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

在终端中隐藏当前工作目录

默认情况下,终端提示显示如下内容:

user@system:/folder1/folder2/folder3/folder4$
Run Code Online (Sandbox Code Playgroud)

您进入文件系统越深,用于输入命令的空间就越少。我可以将其更改为仅显示以下内容:

>
Run Code Online (Sandbox Code Playgroud)

我的意思是,我可以打字pwd来显示我的位置。;)

bash

152
推荐指数
4
解决办法
13万
查看次数

如何更快地导航长命令?

当我必须输入长命令时,有没有办法加快 Linux CLI 导航?我现在只是使用箭头,并且 - 如果我有一个很长的命令,从命令的开始到它的中间需要一些时间。

例如,有没有办法在不使用箭头的情况下跳转到命令的中间?

command-line bash

149
推荐指数
5
解决办法
9万
查看次数

如何在 shell 脚本中运行别名?

我有一个可执行文件mpiexec,其完整路径是~/petsc-3.2-p6/petsc-arch/bin/mpiexec. 由于我想在不同的目录中执行这个命令(而不必重新输入整个路径),我在我的主.bashrc文件中设置了一个别名:

alias petsc="~/petsc-3.2-p6/petsc-arch/bin/mpiexec"  
Run Code Online (Sandbox Code Playgroud)

这使我mpiexec可以通过键入以下内容在命令提示符下轻松执行此文件:

petsc myexecutable
Run Code Online (Sandbox Code Playgroud)

我尝试script使用我的新别名petsc作为命令编写一个名为 的 shell 脚本文件。在授予我的 shell 脚本适当的权限(使用chmod)后,我尝试运行该脚本。但是,它给了我以下错误:

./script: line 1: petsc: command not found
Run Code Online (Sandbox Code Playgroud)

我知道我可以只写mpiexec文件的完整路径,但是每次我想写一个新脚本时都写完整路径很麻烦。有没有办法可以petsc在脚本文件中使用我的别名?有没有办法可以编辑我的.bashrc.bash_profile实现这一点?

bash scripts alias

148
推荐指数
7
解决办法
27万
查看次数

从 bash 迁移到 zsh

我正在考虑从 bash 转移到 zsh,因为我经常遇到赞美 zsh 的帖子。我是一名经验丰富的命令行用户,我假设基础知识几乎相同,所以我正在寻找建议以获得移动的好处,以及任何需要注意的问题。

请为每个答案提供一点建议。我正在寻找一口大小的块,在那里我可以回来并以稳定的速度将额外的信息集成到我的 shell 使用中,而不是试图一次性学习所有内容。

command-line bash zsh

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

按 Enter 会产生 ^M 而不是换行符

例如,如果我正在tail -f输入文件或read输入用户输入,<Enter>^M在终端中生成而不是结束read或向标准输出添加换行符。^J工作正常。

ssh如果这很重要,我正在进入 ubuntu 系统。这在 zsh 和 bash 中都发生在我身上。我使用的一种解决方案是在 zsh 中重新映射^Mto ^J,但这似乎无法解决根本问题。有谁知道这可能是什么原因造成的?

编辑:为了回答一些问题,我正在ssh从 OSX 进入 Ubuntu。我正在使用 iTerm 和 zsh。我还忘了提到我在 Ubuntu 机器上使用 tmux。

编辑2:错过了一个问题。当我型Ctrl-V Enter我得到^M(无论在OSX和Ubuntu)。

编辑 3:在 OSX 和 Ubuntu 上echo $TERM生成screen-256color.

command-line bash zsh

146
推荐指数
3
解决办法
7万
查看次数

set、export 和 env 之间有什么区别,我应该什么时候使用它们?

每隔一段时间,我就会敲出一个 bash 脚本,它让我觉得有几种设置变量的方法:

key=value
env key=value
export key=value
Run Code Online (Sandbox Code Playgroud)

当您在脚本或单个命令中时(例如,我经常将变量与 Wine 启动器链接起来以设置正确的 Wine 前缀),这些似乎是完全可以互换的,但肯定不是这种情况。

这三种方法有什么区别,你能举个例子说明我什么时候特别想使用每种方法吗?

肯定与`VAR=...` 和 `export VAR=...` 有什么区别?但我也想知道如何env适应这个,一些展示每个好处的例子也很好:)

command-line bash

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

什么是 CVE-2014-6271 bash 漏洞 (Shellshock),我该如何修复?

最近,有关于“CVE-2014-6271”(参见USN-2362-1)的消息,这是 Bash 中的一个漏洞。我怎么知道我是否受此影响,我该如何解决,我为什么要关心?

由于其范围和严重性,这被设计为针对此漏洞的规范答案。

security bash shellshock

142
推荐指数
3
解决办法
10万
查看次数

'chmod u+x' 与 'chmod +x'

chmod u+x和 just 和有什么不一样chmod +x?我已经看到大量教程说要使用u+x使脚本可执行。但是,省略u似乎没有任何效果。

permissions bash scripts chmod

139
推荐指数
4
解决办法
46万
查看次数