Questions tagged «bash»

有关为Bash命令外壳编写的脚本的问题。对于具有错误/语法错误的shell脚本,请在此处发布之前,使用shellcheck程序(或在Web shellcheck服务器中的https://shellcheck.net)进行检查。有关Bash交互使用的问题更可能是Super User而不是Stack Overflow上的话题。

5
如何在显示标准输出的同时将其显示在屏幕上?(而不是输出文件)
我想在保持程序在屏幕上的同时通过管道输出标准程序。 通过一个简单的示例(echo此处仅用于说明目的): $ echo 'ee' | foo ee <-我希望看到的输出 我知道tee可以将stdout复制到文件,但这不是我想要的。 $ echo 'ee' | tee output.txt | foo 我试过了, $ echo 'ee' | tee /dev/stdout | foo但由于将tee输出/dev/stdout管道输送到foo
234 bash  shell  pipe  output  stdout 

9
默认情况下,如何防止Conda激活基本环境?
我最近在Mac上安装了anaconda2。默认情况下,将Conda配置为在打开新的终端会话时激活基本环境。 我想访问Conda命令(即,我想将Conda的路径添加到我的$ PATH中,初始化时Conda会这样做,所以就可以了)。 但是我通常不使用python编程,并且我不希望Conda默认激活环境。 首次conda init从提示执行时,Conda将以下内容添加到我的.bash_profile: # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/Users/geoff/anaconda2/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then . "/Users/geoff/anaconda2/etc/profile.d/conda.sh" else export PATH="/Users/geoff/anaconda2/bin:$PATH" fi …
234 bash  anaconda  conda 

9
如何列出正在运行的屏幕会话?
我有一堆服务器,可以使用在服务器上运行实验screen。步骤如下: ssh 到服务器XXX 发射 screen 在几个标签中开始实验 分离 screen 与服务器断开连接 在实验运行期间,ssh通过访问所有服务器并列出正在运行的进程(使用top或ps),我可以轻松找到它们在哪些服务器上。 但是,一旦实验完成,如何查找打开了屏幕会话的服务器(以便可以查看输出,重新启动它们,等等)? PS:我的实验也将其输出也打印到文件中……但这不是我要问的重点。

20
如何将〜/ .composer / vendor / bin目录放置在PATH中?
我在Ubuntu 14.04上,并且一直在尝试所有可能的方法来安装Laravel。错误消息我尝试的一切。我现在正在尝试快速入门文档中的第一种方法,即通过Laravel Installer,但是它说:“确保将~/.composer/vendor/bin目录放在您的目录中,PATH以便在终端中运行Laravel命令时可以找到Laravel可执行文件。” 所以我的问题是,我该怎么做?这可能是一个简单的问题,但我真的很沮丧,希望对您有所帮助。
232 bash  laravel  path 


14
从bash模拟“分组依据”的最佳方法?
假设您有一个包含IP地址的文件,每行一个地址: 10.0.10.1 10.0.10.1 10.0.10.3 10.0.10.2 10.0.10.1 您需要一个Shell脚本,该脚本针对每个IP地址计算它在文件中出现的次数。对于先前的输入,您需要以下输出: 10.0.10.1 3 10.0.10.2 1 10.0.10.3 1 一种方法是: cat ip_addresses |uniq |while read ip do echo -n $ip" " grep -c $ip ip_addresses done 但是,这实际上远非有效。 您如何使用bash更有效地解决此问题? (要添加的一件事:我知道可以通过perl或awk解决它,我对bash而不是那些语言的更好解决方案感兴趣。) 附加信息: 假设源文件为5GB,运行该算法的计算机为4GB。因此,排序不是一种有效的解决方案,读取文件也不止一次。 我喜欢类似散列表的解决方案-任何人都可以对该解决方案进行改进吗? 其他信息#2: 有人问为什么在例如perl中更容易用bash进行操作呢?原因是在我必须执行此操作的机器上,我无法使用perl。这是一台定制的Linux机器,没有我惯用的大多数工具。我认为这是一个有趣的问题。 因此,请不要怪这个问题,如果您不喜欢它,那就忽略它。:-)
231 bash  scripting 

27
重命名文件夹中的文件为序号
我想将目录中的文件重命名为连续数字。基于文件的创建日期。 例如sadf.jpgto 0001.jpg,wrjr3.jpgto 0002.jpg等等,前导零的数目取决于文件的总数(如果不需要,则不需要额外的零)。

4
如何创建一个临时目录?
我用来创建tempfile,删除它,并将其重新创建为目录: tmpnam=`tempfile` rm -f $tmpnam mkdir "$tmpnam" 问题是,如果另一个进程X在一个进程之后rm -f X和之前意外执行tempfile,则另一个进程可能具有相同的名称mkdir X。

5
在Bash中的不同行上打印数组元素?
如何在单独的行上打印Bash数组的数组元素?此方法有效,但肯定有更好的方法: $ my_array=(one two three) $ for i in ${my_array[@]}; do echo $i; done one two three 尝试过此方法,但没有用: $ IFS=$'\n' echo ${my_array[*]} one two three
229 arrays  bash 

3
在Bash中的文件路径参数中获取最后一个目录名/文件名
我正在尝试为SVN编写一个提交后钩子,该钩子驻留在我们的开发服务器上。我的目标是尝试自动将已提交项目的副本检出到服务器上托管的目录。但是,我需要能够仅读取传递给脚本的目录字符串中的最后一个目录,以便签出到托管我们项目的同一子目录。 例如,如果我对项目“ example”进行SVN提交,则我的脚本将“ / usr / local / svn / repos / example”作为其第一个参数。我只需要从字符串末尾得到“ example”,然后将其与另一个字符串连接起来,这样我就可以签出到“ / server / root / example”并立即看到更改。
228 linux  bash  shell  svn 

17
在Bash中,如何在任何命令或别名中添加“您确定[Y / n]”?
在这种情况下,我想在Bash中添加一个确认 你确定吗?[是/否] 对于Mercurial来说hg push ssh://username@www.example.com//somepath/morepath,实际上是一个别名。是否可以将标准命令添加到别名中来实现它? 原因是hg push和hg out听起来相似,有时在我需要时hgoutrepo,我可能会不小心键入hgpushrepo(均为别名)。 更新:如果它可以像是内置命令和另一个命令一样,例如:confirm && hg push ssh://...那就太好了……只是一个可以要求yesor 的命令,no其余的if 可以继续yes。
228 bash  alias  confirmation 

19
我怎样才能发现忽略.svn目录?
我经常使用该find命令搜索源代码,删除文件等等。令人讨厌的是,由于Subversion在每个文件的.svn/text-base/目录中存储了每个文件的重复项,因此我的简单搜索最终会得到很多重复的结果。例如,我要递归搜索uint多个messages.h和messages.cpp文件: # find -name 'messages.*' -exec grep -Iw uint {} + ./messages.cpp: Log::verbose << "Discarding out of date message: id " << uint(olderMessage.id) ./messages.cpp: Log::verbose << "Added to send queue: " << *message << ": id " << uint(preparedMessage->id) ./messages.cpp: Log::error << "Received message with invalid SHA-1 hash: id " …
227 linux  find  bash  grep  svn 

8
如果进程死了,我该如何编写bash脚本来重新启动进程?
我有一个python脚本,它将检查队列并对每个项目执行操作: # checkqueue.py while True: check_queue() do_something() 我如何编写一个bash脚本来检查它是否正在运行,如果没有运行,请启动它。大致如下的伪代码(或者也许应该做类似的事情ps | grep?): # keepalivescript.sh if processidfile exists: if processid is running: exit, all ok run checkqueue.py write processid to processidfile 我会从crontab调用它: # crontab */5 * * * * /path/to/keepalivescript.sh
226 bash  scripting  cron 

3
bash脚本:如果参数等于此字符串,则定义一个类似于此字符串的变量
我正在做一些bash脚本,现在我得到了一个变量调用source和一个数组samples,如下所示: source='country' samples=(US Canada Mexico...) 当我想扩展源的数量(每个源都有自己的样本)时,我尝试添加一些参数来执行此操作。我尝试了这个: source="" samples=("") if [ $1="country" ]; then source="country" samples="US Canada Mexico..." else echo "try again" fi 但是当我运行脚本时,source countries.sh country它不起作用。我究竟做错了什么?

8
在git仓库中处理密码的最佳实践是什么?
我有一个Bash脚本,可用于访问Twitter并在某些情况下弹出Growl通知。用脚本存储密码的最佳方法是什么? 我想将此脚本提交到git repo并使其在GitHub上可用,但是我想知道在执行此操作时保持我的登录名/密码为私有的最佳方法是什么。当前,密码存储在脚本本身中。我不能在推送之前立即删除它,因为所有旧提交都将包含密码。没有密码进行开发不是一种选择。我想我应该将密码存储在一个外部配置文件中,但是我想我会先检查一下是否有确定的方法来处理此问题,然后再尝试将它们放在一起。
225 git  bash  security  github  passwords 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.