如何在脚本本身中确定Bash脚本文件的名称?
就像我的脚本在文件中一样runme.sh,那么我怎么能让它显示"你正在运行runme.sh"的消息而没有硬编码?
对于Linux中的sudo权限,这是一个非常简单的问题,至少看起来应该是这样.
有很多的时候,我只是想将一些东西附加到/etc/hosts或类似的文件,但最终没有能够因为两者>并>>不准,甚至有根.
有没有必要让这项工作无需su或sudo su进入root?
我需要编写一个脚本来输入程序的多行输入(psql).
经过一段谷歌搜索后,我发现以下语法有效:
cat << EOF | psql ---params
BEGIN;
`pg_dump ----something`
update table .... statement ...;
END;
EOF
Run Code Online (Sandbox Code Playgroud)
这正确地构造了多行字符串(从包含BEGIN;到END;包含),并将其作为输入进行管道输入psql.
但是我不知道它是如何/为什么有效的,有人可以解释一下吗?
我主要是指cat << EOF,我知道>文件的输出,>>附加到文件,<从文件读取输入.
究竟做<<了什么?
它有一个手册页吗?
对于给定的输入字符串进行查找和替换的最简单方法是什么,比方说abc,并替换为另一个字符串,比如XYZ在文件中/tmp/file.txt?
我正在编写一个应用程序并使用IronPython通过SSH执行命令 - 但我不熟悉Unix,也不知道要查找什么.
我听说Bash除了是命令行界面外,还可以是一种非常强大的脚本语言.所以,如果这是真的,我假设您可以执行这些操作.
我能用bash做什么,以及实现目标的最简单(一行)脚本是什么?
我正在尝试在脚本中使用cURL并让它不显示进度条.
我已经试过了-s,-silent,-S,和-quiet选择,但他们没有工作.
这是我尝试过的典型命令:
curl -s http://google.com > temp.html
Run Code Online (Sandbox Code Playgroud)
我将它推送到文件时只获得进度条,因此curl -s http://google.com没有进度条,但curl -s http://google.com > temp.html确实如此.
我需要使用bash脚本从一个巨大的文本文件中重复删除第一行.
现在我正在使用sed -i -e "1d" $FILE- 但删除大约需要一分钟.
有没有更有效的方法来实现这一目标?
我正在写一个bash脚本.我需要当前的工作目录始终是脚本所在的目录.
默认行为是脚本中的当前工作目录是我运行它的shell的目录,但我不想要这种行为.
我已经接受了答案,但遗憾的是,我相信我们仍然坚持我们最初的最坏情况:CAPTCHA每个人都在购买废话的尝试.简短说明:缓存/ Web场无法跟踪命中,任何解决方法(发送非缓存的Web信标,写入统一表等)都会使网站的速度比机器人更慢.思科等可能有一些昂贵的硬件可以提供高水平的帮助,但如果每个人都可以选择CAPTCHA,那么很难证明成本是合理的.我稍后会尝试更全面的解释,以及为未来的搜索者清理它(尽管欢迎其他人尝试,因为它是社区维基).
这是关于woot.com上的包装销售情况.我是Woot Workshop的总裁,Woot是Woot的子公司,负责设计,撰写产品说明,播客,博客文章以及审核论坛.我使用CSS/HTML,我只是熟悉其他技术.我与开发人员密切合作,并在这里讨论了所有答案(以及我们已经拥有的许多其他想法).
可用性是我工作的重要组成部分,使网站令人兴奋和有趣是其余部分.这就是下面三个目标的来源.CAPTCHA损害了可用性,机器人从我们的垃圾销售中窃取了乐趣和兴奋.
对于随机垃圾销售,机器人在第二次屏幕抓取(和/或扫描我们的RSS)时数十次关闭我们的头版.他们看到的那一刻,它触发了登录程序的第二阶段,点击我想要一个,填写表格,并购买废话.
lc:在stackoverflow和其他使用此方法的站点上,它们几乎总是处理经过身份验证的(已登录)用户,因为正在尝试的任务需要这样做.
在Woot上,匿名(未登录)用户可以查看我们的主页.换句话说,砰击机器人可以是非认证的(并且除了IP地址之外基本上是不可跟踪的).
所以我们又回到了扫描IP,其中a)在这个云网络和spambot僵尸时代相当无用,以及b)因为来自一个IP地址的企业数量而吸引了太多的无辜者(更不用说与非静态IP ISP和潜在的性能命中试图跟踪这个).
哦,让人们打电话给我们将是最糟糕的情况.我们可以让他们打电话给你吗?
BradC:Ned Batchelder的方法看起来很酷,但它们的设计非常坚固,可以击败为网站构建的机器人.我们的问题是机器人是专门为打败我们的网站而构建的.其中一些方法可能会在很短的时间内工作,直到脚本编写者发展他们的机器人忽略蜜罐,屏幕刮擦附近的标签名称而不是表单ID,并使用支持javascript的浏览器控件.
lc:"当然,除非炒作是你营销计划的一部分." 是的,肯定是.当项目出现时的惊喜,以及如果你设法获得一个项目的兴奋可能与你最终得到的垃圾一样重要或更重要.任何消除先到先得的东西都不利于"赢得"垃圾的快感.
novatrust:我是一个人,欢迎我们新的机器人霸主.我们实际上提供RSSfeeds以允许第三方应用程序扫描我们的网站以获取产品信息,但不会超出主站点HTML.如果我正确地解释它,你的解决方案确实通过完全牺牲目标1来帮助目标2(性能问题),并且只是辞去机器人将购买大部分垃圾的事实.我对你的回复进行了投票,因为你的最后一段悲观情绪对我来说是准确的.这里似乎没有银弹.
其余的响应通常依赖于IP跟踪,再次,这似乎无用(使用僵尸网络/僵尸/云网络)和有害(捕获来自同一IP目的地的许多无辜者).
还有其他方法/想法吗?我的开发人员一直在说"我们只是做CAPTCHA",但我希望所有真正想要我们废话的人都会采用较少侵入性的方法.
假设您正在销售具有很高感知价值的便宜货,并且您的数量非常有限.没有人确切知道你何时会出售这件物品.超过一百万人经常来看看你卖的是什么.
你最终会得到脚本编写者和机器人试图以编程方式[a]弄清楚你卖的东西,并且[b]确保他们是第一个购买它的人.这很糟糕有两个原因:
一个看似显而易见的解决方案是为您的用户创建一些环节,以便在下订单之前跳过,但至少有三个问题:
另一种解决方案是监视IP经常发生的攻击,阻止它们进入防火墙,或以其他方式阻止它们进行排序.这可以解决2.并且防止[b],但是扫描IP的性能是巨大的,并且可能会导致比脚本编写者自己造成的更多问题.此外,云网络和spambot僵尸的可能性使IP检查相当无用.
第三个想法,迫使订单表格被加载了一段时间(比如说,半秒钟)可能会减慢快速订单的进度,但同样,脚本编写者仍然会成为第一批人,无论如何都不会对实际用户.
我正在使用Windows命令行环境编写批处理文件脚本,并希望将文件中某些文本(例如"FOO")的每次出现更改为另一个(例如"BAR").最简单的方法是什么?任何内置功能?
我有脚本调用其他脚本文件,但我需要获取当前在该进程中运行的文件的文件路径.
例如,假设我有三个文件.使用execfile:
script_1.py电话script_2.py.script_2.py打电话script_3.py.我怎样才能获得的文件名和路径script_3.py,从内部代码script_3.py,而无需从传递这些信息作为参数script_2.py?
(执行os.getcwd()返回原始起始脚本的文件路径而不是当前文件的.)
scripting ×10
bash ×7
linux ×3
shell ×2
batch-file ×1
bots ×1
command-line ×1
curl ×1
detection ×1
e-commerce ×1
file ×1
heredoc ×1
ironpython ×1
path ×1
permissions ×1
python ×1
replace ×1
sed ×1
ssh ×1
sudo ×1
text-files ×1
unix ×1
windows ×1