Questions tagged «script»

以特定顺序执行的一系列自动指令,例如创建Windows脚本以在启动时启动特定程序。

30
文件更改时如何执行命令?
我想要一种只要文件更改即可执行命令的快速简单的方法。我想要一个非常简单的东西,让我在终端上运行并在完成该文件处理后将其关闭。 目前,我正在使用此: while read; do ./myfile.py ; done 然后Enter,每当我在编辑器中保存该文件时,都需要转到该终端并按。我想要的是这样的: while sleep_until_file_has_changed myfile.py ; do ./myfile.py ; done 或任何其他简单的解决方案。 顺便说一句:我正在使用Vim,我知道我可以添加一个自动命令来在BufWrite上运行某些命令,但这不是我现在想要的解决方案。 更新:我想要一些简单的东西,如果可能的话可以丢弃。此外,我希望在终端中运行某些内容,因为我想查看程序输出(我想查看错误消息)。 关于答案:感谢您的所有答案!所有这些都非常好,并且每个人都采取了截然不同的方法。因为我只需要接受一个,所以我接受了我实际使用的一个(简单,快速且易于记忆),即使我知道它不是最优雅的。
434 linux  unix  shell  script 


20
将目录添加到$ PATH(如果尚不存在)
是否有人编写了bash函数来仅在目录$ PATH中添加目录? 我通常使用类似以下的命令添加到PATH: export PATH=/usr/local/mysql/bin:$PATH 如果我在.bash_profile中构造PATH,那么除非我所在的会话是登录会话,否则不会读取它-并非总是如此。如果我在.bashrc中构造PATH,那么它将在每个子Shell中运行。因此,如果启动终端窗口,然后运行屏幕,然后运行外壳程序脚本,则会得到: $ echo $PATH /usr/local/mysql/bin:/usr/local/mysql/bin:/usr/local/mysql/bin:.... 我将尝试构建一个bash函数add_to_path(),该函数仅在目录不存在时才添加目录。但是,如果有人已经写(或发现)了这样的东西,我就不会花时间在上面。
126 bash  script  path 

3
Linux Bash脚本,单个命令但多行?
我有以下通过搜索Google编写的脚本,它将我的Linux系统备份到存档中: #!/bin/bash # init DATE=$(date +20%y%m%d) tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev --exclude=/share/Archive / 这行得通,但是我想知道是否可以格式化脚本以在多行上显示命令,类似这样,所以以后可以轻松编辑: tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev --exclude=/share/Archive / 这样一来,以后阅读和编辑变得更加容易。是否可以通过这种方式格式化Bash脚本?
97 linux  bash  script  tar 

11
何时使用Bash以及何时使用Perl / Python / Ruby?[关闭]
到目前为止,我们正在使用Bash进行所有脚本编写,但是我对此感到有点傻。虽然我们当然可以使用Bash来完成我们想要的一切(功能非常强大),但我开始怀疑我们是否应该使用适当的脚本语言(在我们的情况下,很可能是Ruby)代替。 您如何决定何时在Bash上使用Perl / Python / Ruby来编写脚本?我认为使用Ruby的初始化脚本没有道理,但是添加电子邮件帐户的稍长的脚本又如何呢?
78 linux  bash  script  perl  ruby 


6
如何在另一个文件夹中执行命令,而不重复文件夹路径?
有没有一种聪明的方法来执行复制和移动操作或命令来复制文件,而不必在同一文件夹中先执行cd,然后执行mv? 例如,我必须运行以下命令: mv /folder1/folder2/folder3/file.txt /folder1/folder2/folder3/file-2013.txt 请注意,我要将文件移动到的目录是相同的,但是我必须再次输入整个路径,有时它会令人讨厌。我很想知道是否还有另一种方法可以不必重新放置整个路径,因为该操作将在同一路径中完成。


10
如何在Mac OS中使用命令行参数运行应用程序
在Mac上,是否有任何简单的方法可将命令行参数附加到应用程序?例如,要在信息亭模式下运行Opera或在Firefox中使用其他配置文件,我可以输入 $ /Applications/Opera.app/Contents/MacOS/Opera -kioskmode $ /Applications/Firefox.app/Contents/MacOS/firefox -P profilename -no-remote 在Windows中,我可以将参数附加到快捷方式属性中,但是由于Macs本身并不使用快捷方式而是直接运行应用程序,因此这是不可能的。 我发现通过bash或Applescript启动应用程序部分有效: # Bash #!/bin/sh /Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote # Applescript do shell script "exec /Applications/Opera.app/Contents/MacOS/Opera -kioskmode" 我可以使这些可执行文件并分配一个图标,并且一切正常,但是当我运行这些伪程序中的任何一个时,只要打开应用程序,终端窗口或Applescript图标都会保持打开状态。大概,使用Applescript命令open可以避免这种情况,但是由于我没有运行打包的应用程序(只是/Applications/Firefox),所以它不起作用。 因此,是否有更好的方法来运行带有命令行参数的应用程序?如果不是,是否有一种方法可以防止在打开应用程序时持续的终端会话或Applescript图标保持打开状态? 编辑 根据Mozilla Wiki页面,最好使用脚本来运行带有参数的应用程序。&在脚本的末尾添加a 将终止持久性Terminal窗口。现在唯一的烦恼是它打开了一个死的,已注销的终端窗口(这比持久窗口要好,但仍然...) #!/bin/sh /Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote &


2
dd产生的是32 MB随机文件,而不是1 GB
我想产生一个1 GB的随机文件,因此我使用了以下命令。 dd if=/dev/urandom of=output bs=1G count=1 但是,每次我启动此命令时,我都会得到一个32 MB的文件: <11:58:40>$ dd if=/dev/urandom of=output bs=1G count=1 0+1 records in 0+1 records out 33554431 bytes (34 MB, 32 MiB) copied, 0,288321 s, 116 MB/s 怎么了? 编辑: 多亏了本主题中的出色答案,我提供了一个解决方案,该解决方案读取32个大32 MB的块,即1GB: dd if=/dev/urandom of=output bs=32M count=32 给出了其他解决方案,该解决方案直接读取1 GB的内存,然后再写入磁盘。此解决方案占用大量内存,因此不推荐使用: dd if=/dev/urandom of=output bs=1G count=1 iflag=fullblock

12
删除文件夹及其子文件夹中的所有文件
我想从文件夹结构中删除所有文件,所以我留下了一个空的文件夹结构。 这可以通过批处理或VBScript脚本来实现吗? 我尝试过一个非常基本的批处理命令,但这要求用户允许删除每个文件。这不是一个合适的解决方案,因为有数百个文件,这将随着时间的推移而大量增加。 你能提出什么建议?


5
遍历子目录并在每个子目录中运行命令
我有一组存储库,基于它们的VCS(Git,Mercurial,SVN)分类到目录中。使用Subversion,我可以svn update *在父目录中运行,它将遍历每个目录并按预期更新每个存储库。Git或Mercurial并非如此。 我想提出一个bash脚本,我可以运行它来完成该任务,遍历目录以及每个目录git pull或hg pull每个目录。我只是没有太多的bash脚本编写经验。
47 linux  bash  shell  script 


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.