我承认我的 bash 提示符是从几个地方偷来的并拼凑在一起的,在使用向上/向下箭头滚动 bash 历史记录时,有时会在其长度中添加部分先前的命令。
例如,如果我之前的命令是:
ls
cd /home/caleb
vim .bashrc
Run Code Online (Sandbox Code Playgroud)
当我在提示下向上滚动两次时,它可能看起来像:
$ vim .bcd /home/caleb
前五个字符是最后一个命令留下的。
有谁知道为什么会发生这种情况,以及如何阻止?
我的提示是用这个代码设置的(在这里包含的方式很长):https : //gist.github.com/1679352
是否有类似 bash 的反向搜索历史 ( Ctrl- R) 之类的东西,但仅适用于目录?
我有一些我想跳转到的深层文件夹层次结构,所以我想使用类似反向搜索历史的东西,但它只查找文件夹名称并给我绝对路径。
从本质上讲,它会给出与使用类似的结果,!?但只匹配cd前面的命令,您可以单步执行结果和完整路径。
到目前为止,我找到的最好的解决方案是bashmarks。
我试过了
rm -- -
rm "-"
rm "\-"
rm \-
Run Code Online (Sandbox Code Playgroud)
给了 Perl 一个机会
~$ perl -e '$junk = glob("-"); chomp $junk; print "$junk\n"; `rm $junk`;'
-
rm: cannot remove `-': No such file or directory
Run Code Online (Sandbox Code Playgroud)
...和...
~$ perl -e '$junk = glob("-"); chomp $junk; print "$junk\n"; `mv $junk newfile.garbage`;'
-
mv: cannot stat `-': No such file or directory
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,聪明的人。
我怎样才能得到在 bash 脚本中运行的所有命令的标准输出?
即输出必须包含命令输出和命令本身。
我发现
#!/bin/bash -x
Run Code Online (Sandbox Code Playgroud)
但这并不完全相同,因为不是
mysql -v dbname < dump.sql | grep "CREATE TABLE"
Run Code Online (Sandbox Code Playgroud)
表明
+ mysql -v dbname
+ grep 'CREATE TABLE'
Run Code Online (Sandbox Code Playgroud) 我在 Linux 下使用了一些需要一些时间才能完成的 Bash 脚本;我想在它们的末尾添加一个命令,当这些任务完成时响起系统铃,这样我就可以得到通知。
这样做的正确命令是什么?(请注意,我需要的是通过声音和可能的消息得到通知,因此我可以接受这些方面的任何解决方案)。
可能的重复:
如何有效地在 bash 命令行中移动?
在 Windows 提示中,可以通过按ctrl和来后退或前进一个词<-/->。bash 环境中的等价物是什么?
我在飞机上阅读 bash 的联机帮助页时偶然发现了 HITIGNORE 变量。为了测试它,我立即编辑了我的 .profile 来定义这个变量:
导出 HISTIGNORE=ls
我测试了它,这很棒!它从我的历史记录中排除了简单的“ls”命令,但不排除更有趣的具有冗长路径的命令,但最近从 SU 那里收获了大量智慧,我很想知道超级用户可能会推荐哪些其他命令或其他经验教训。
关于在 bash 中使用 HITIGNORE 变量,您能分享什么?
我有两台装有最新 Fedora 的计算机。首先,我使用 zsh 并且鼠标滚轮可以与 gnome-terminal 中的 less 寻呼机一起使用来滚动寻呼机。
第二,我使用 bash 和鼠标滚动终端历史记录,而不是寻呼机。
外壳应该没有任何区别,为什么我不能在第二种情况下使用鼠标滚轮滚动?
为了说明它的作用,假设我有一个这样的文档:
AAAA
BBBB
CCCC
DDDD
EEEE
Run Code Online (Sandbox Code Playgroud)
我有一个两线终端。如果我用得少,我就会出现在屏幕上
AAAA
BBBB
Run Code Online (Sandbox Code Playgroud)
鼠标滚轮无法进一步向下滚动。如果我向上滚动,我会得到 bash 提示历史记录。现在我使用向下翻页键到达文档底部,我进入屏幕:
DDDD
EEEE
Run Code Online (Sandbox Code Playgroud)
向上滚动让我
BBBB
DDDD
Run Code Online (Sandbox Code Playgroud)
-->
使用 bash shell 时,我有时会将环境变量保存在我复制/粘贴内容的文本文件中,例如exports.txt:
export FOO=bar
export FIZZ=buzz
Run Code Online (Sandbox Code Playgroud)
有人向我展示而不是复制/粘贴,我可以在终端中输入
. exports.txt
Run Code Online (Sandbox Code Playgroud)
这将具有与复制/粘贴相同的效果。
这个“点空间文件名”命令的工作机制是什么?很难想到它的搜索词。
我想了解正在发生的事情以及这个单线飞机正在做什么的更一般的细节。