当我使用类似程序svn并在 Gnome 终端中输入时:
svn upd
Run Code Online (Sandbox Code Playgroud)
并点击Tab它自动完成:
svn update
Run Code Online (Sandbox Code Playgroud)
是否可以在我的自定义 bash 脚本中执行类似的操作?
我经常遇到在 if 语句中使用这种语法的小型 bash 脚本:
some command > /dev/null 2>&1Run Code Online (Sandbox Code Playgroud)
/dev/null这样输出的目的是什么,什么2>&1意思?
它似乎总是有效,但我想知道它在做什么。
默认情况下,终端提示显示如下内容:
user@system:/folder1/folder2/folder3/folder4$
Run Code Online (Sandbox Code Playgroud)
您进入文件系统越深,用于输入命令的空间就越少。我可以将其更改为仅显示以下内容:
>
Run Code Online (Sandbox Code Playgroud)
我的意思是,我可以打字pwd来显示我的位置。;)
当我必须输入长命令时,有没有办法加快 Linux CLI 导航?我现在只是使用箭头,并且 - 如果我有一个很长的命令,从命令的开始到它的中间需要一些时间。
例如,有没有办法在不使用箭头的情况下跳转到命令的中间?
我有一个可执行文件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 转移到 zsh,因为我经常遇到赞美 zsh 的帖子。我是一名经验丰富的命令行用户,我假设基础知识几乎相同,所以我正在寻找建议以获得移动的好处,以及任何需要注意的问题。
请为每个答案提供一点建议。我正在寻找一口大小的块,在那里我可以回来并以稳定的速度将额外的信息集成到我的 shell 使用中,而不是试图一次性学习所有内容。
例如,如果我正在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.
每隔一段时间,我就会敲出一个 bash 脚本,它让我觉得有几种设置变量的方法:
key=value
env key=value
export key=value
Run Code Online (Sandbox Code Playgroud)
当您在脚本或单个命令中时(例如,我经常将变量与 Wine 启动器链接起来以设置正确的 Wine 前缀),这些似乎是完全可以互换的,但肯定不是这种情况。
这三种方法有什么区别,你能举个例子说明我什么时候特别想使用每种方法吗?
肯定与`VAR=...` 和 `export VAR=...` 有什么区别?但我也想知道如何env适应这个,一些展示每个好处的例子也很好:)
最近,有关于“CVE-2014-6271”(参见USN-2362-1)的消息,这是 Bash 中的一个漏洞。我怎么知道我是否受此影响,我该如何解决,我为什么要关心?
由于其范围和严重性,这被设计为针对此漏洞的规范答案。
chmod u+x和 just 和有什么不一样chmod +x?我已经看到大量教程说要使用u+x使脚本可执行。但是,省略u似乎没有任何效果。
bash ×10
command-line ×5
scripts ×3
zsh ×2
alias ×1
chmod ×1
permissions ×1
redirect ×1
security ×1
shellshock ×1