Articles of bash

如何从命令历史中回想一个特定的命令,而不执行它

例如,在bash中,我可以键入!xyz ,它将运行从xyz开始input的最后一个命令。 我怎样才能调出我input的最后一个命令,而不是执行它? 例如,所以我可以在执行之前更改参数….

为什么SSH远程命令的$ PATH与交互式shell不同?

我有一个用户没有修改任何点文件中的$ PATH:这正是系统的默认设置。 从loginshell: $ ssh example.com [email protected]:~$ cat /tmp/hello.hs #!/bin/bash echo "$SHELL" echo "$PATH" [email protected]:~$ /tmp/hello.hs /bin/bash /usr/local/bin:/usr/bin:/bin 完全按照/etc/profile 。 这个我觉得很意外: $ ssh example.com '/tmp/hello.sh' /bin/bash /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games 就像我说的,在~/.bashrc和/etc/bash.bashrc没有修改$ PATH。 没有~/.ssh/environment 。 ssh(1)声明环境variablesPATH是 设置为编译ssh时指定的默认PATH。 但是这个来自StackOverflow的线程和这个邮件列表文章build议我应该能够通过修改/ etc / profile,shell启动文件之一等来影响给定命令的$ PATH。 这里发生了什么?

iftop – 如何生成文本文件的输出?

iftop可以很好地查看由source-ip源端口destination-ip目标端口区分的实时带宽使用情况。 我正在使用它来查看哪个客户端的IP使用最多的带宽。 现在我想存储输出的地方。 iftop如此使用ncurses iftop > log.txt 不按预期工作,结果文件不可读。 有没有这样的工具可以用来输出到文本文件?

grep在Fedora和Ubuntu上performance不同

所以当我在Fedora运行这个时,我看到这个: $ ls hmm_data/indivA12_AATAAG/refs/par1/ 2R-orths.alleles 2R-ref.alleles $ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles' 2R-ref.alleles 但是,当我在Ubuntu上运行(相同的数据),我没有从grep得到任何结果: $ ls hmm_data/indivA12_AATAAG/refs/par1/ 2R-orths.alleles 2R-ref.alleles $ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles' 任何想法可能会发生什么? 我怎么能想出在两个系统上都一样的东西?

从find命令输出中删除path

我有一个bash脚本,用于将代码从beta环境部署到生产环境,但是目前我必须将文件列表经常地添加到一个txt文件中,有时候我会错过一些。 基本上我的部署脚本猫/循环复制文件。 (出口/import分贝,以及这是不相关的..大声笑) 无论如何,我想使用find命令来生成过去14天内修改的文件列表。 问题是我需要删除path./为了使部署脚本工作。 以下是find命令用法的示例: 找 。 -type f -mtime -14> deploy.txt 下面是部署脚本中的deploy.txt部署deploy.txt行: for i in `cat deploy.txt`; do cp -i /home/user/beta/public_html/$i /home/user/public_html/$i; done 任何想法如何使用bash脚本完成这个? 谢谢!

SSH等同于.profile / .bashrc

我正在寻找一种方法来自动定义我的会话中的任何服务器我ssh到的一些别名。 我不能把它们放在服务器上的.bashrc文件中,因为我login的用户帐户被其他人共享,除此之外还有几十个,在每台机器上维护一个脚本将是痛苦的。 我知道我可以使用expect自动input别名,但我只是想知道OpenSSH是否有内置的,可以用来实现这个?

$ BASH_ENV通常在哪里设置?

我有两台应该configuration相同的Linux服务器,但是对其中一台服务器的ssh命令无法执行需要在〜/ .bashrc中指定的path的命令。 例如,我可以通过交互方式和通过ssh使用像pwd这样的命令,但是如果我尝试运行位于应用程序bin文件夹中的程序,它只能在其中一台服务器的交互式shell中运行。 两个服务器上的/ etc / profile和/ etc / environment文件是相同的,但是$ BASH_ENV在正常工作的服务器上设置为〜/ .bashrc。 我想在不工作的服务器上设置$ BASH_ENV,但是我希望将它设置在工作服务器中设置的相同位置。 Linux在非交互式login时将运行的地方是什么,例如来自另一台计算机的ssh命令? 编辑:用户在/ etc / passwd中的行在两台服务器上指定/ bin / bash。 两个服务器的〜/ .bash_profile文件是相同的,并且包含if [ -f ~/.bashrc ]; then . ~/.bashrc; fi if [ -f ~/.bashrc ]; then . ~/.bashrc; fi if [ -f ~/.bashrc ]; then . ~/.bashrc; fi 。 系统之间的唯一区别是$ BASH_ENV是服务器上的一个空string不工作,我找不到它在工作的服务器上设置的位置。 编辑2:两台服务器上的〜/ .ssh […]

有没有人发现一个(如bash)的Windowsterminal的Windows一样好OS X之一?

我主要使用Git vcs的Windows安装附带的'git-bash'。 我认为这与Cygwin一样。 它技术上工作正常,但用户界面糟透了: 必须右键单击标题栏并转到“属性”以更改窗口宽度 最恼人的是…用鼠标复制粘贴和突出显示同样麻烦 相比之下,OS X附带的terminal应用程序以沉着的方式pipe理这些应用程序,使其更加舒适。 你甚至可以拖放一个文件,并将它粘贴到你的光标的文件path! 我也试过了: http://sourceforge.net/projects/win-bash http://www.steve.org.uk/Software/bash/ http://www.hamiltonlabs.com/cshell.htm 这些都没有复制和粘贴的文字没有繁琐的右键单击。 我特别在Windows中寻找一个Unix口味的shell,所以我不必在我的家庭开发(Windows),在线服务器(Linux)或办公室(Mac)的开发者之间使用不同的shell。 是的,我已经谷歌search,还没有find一个…

找出一个目录在Linux上的分区?

有没有办法找出目录所在的分区? 我知道我可以使用df来列出分区和挂载点,但我需要能够通过一个简单的命令找出哪个目录所在的分区。

Bash可以告诉我哪个SSH公钥用于身份validation?

比方说,我想跟踪我的root用户。 他们每个人都有一个唯一的私钥,他们的公钥已经被存储在/root/.ssh/authorized_keys 。 鉴于每个用户使用其唯一密钥login,我如何从BASH会话中告诉用哪个密钥进行身份validation? 我试着在login时查看环境variables,但看不到任何与我的公钥关联的会话。