Questions tagged «shell»

术语“外壳”是指通常与Unix和Linux操作系统相关联的一类基于文本的交互式命令解释器。对于有关shell脚本的问题,请使用更具体的标签,例如'bash','powershell'或'ksh'。没有特定标签的情况下,应该假定使用便携式(符合POSIX的)解决方案,尽管最好另外使用“ posix”或“ sh”。

9
查找多个文件并在Linux中重命名它们
我有类似的文件a_dbg.txt, b_dbg.txt ...在Suse 10系统中。我想编写一个bash shell脚本,该脚本应通过从文件中删除“ _dbg”来重命名这些文件。 Google建议我使用rename命令。所以我rename _dbg.txt .txt *dbg*在CURRENT_FOLDER 我的实际CURRENT_FOLDER文件包含以下文件。 CURRENT_FOLDER/a_dbg.txt CURRENT_FOLDER/b_dbg.txt CURRENT_FOLDER/XX/c_dbg.txt CURRENT_FOLDER/YY/d_dbg.txt 执行rename命令后, CURRENT_FOLDER/a.txt CURRENT_FOLDER/b.txt CURRENT_FOLDER/XX/c_dbg.txt CURRENT_FOLDER/YY/d_dbg.txt 它不是递归执行的操作,如何使此命令重命名所有子目录中的文件。LikeXX和YY我将有很多子目录,这些子目录的名称不可预测。而且我CURRENT_FOLDER还将拥有一些其他文件。
72 linux  bash  shell  scripting  suse 



6
时间命令的自定义格式
我想在bash脚本中使用time命令来计算脚本的经过时间,并将其写入日志文件。我只需要实时,而不需要用户和sys。还需要一个体面的格式。例如00:00:00:00(与标准输出不同)。我感谢任何建议。 预期的格式应为00:00:00.0000(毫秒)[小时]:[分钟]:[秒]。[毫秒] 我已经有3个脚本了。我看到了这样的例子: { time { # section code goes here } } 2> timing.log 但是我只需要实时,而不需要用户和sys。还需要一个体面的格式。例如00:00:00:00(不像标准输出)。 换句话说,我想知道如何将时间输出变成更易于处理的东西。
71 bash  shell  time  format 

4
文件描述符如何工作?
有人可以告诉我为什么这行不通吗?我在玩文件描述符,但是有点迷路。 #!/bin/bash echo "This" echo "is" >&2 echo "a" >&3 echo "test." >&4 前三行运行正常,但后两行出错。为什么?


3
强制“ git status”在终端上输出颜色(在脚本内部)
编辑: 我想提出一个建议,即解析颜色通常是一个构思错误的想法。 我想要它的部分原因是我既可以解析它,又可以将其传递到我自己的脚本输出中。没关系,但是使用瓷器或类似瓷器自己重建彩色零件可能更明智! 原始问题如下。 我喜欢看到颜色,因为我的脚本足够强大(到目前为止)可以处理颜色代码。似乎我在这里背叛了话题,但老实说,我看不出必须解析脚本中的转义代码之类的东西有什么大不了的。如果颜色有助于交互使用,为什么它们不能在脚本使用中帮助我聚集数据并处理比手工更多的数据?颜色会更重要吗? 无论如何,我写了一个简洁的小shell脚本来修改git status输出,而我只是想使此脚本保持原样。设置我的全局git配置,以便在git状态下以彩色显示更改和未跟踪的文件列表。不幸的是,与之不同的git diff是git status,我没有找到强制使用颜色的选项。 明确地说,这是问题所在: $ git status 产生完美的输出,但是(摘录自我的脚本) git status | sed "s/^#/\x1b[34m#[0m/" 不会产生任何彩色git status输出,您甚至可以在此处看到我正在将前导哈希字符明确转换为蓝色,因为它有助于突出显示脚本输出的不同区域。 有谁知道如何使它熄灭颜色?我是否可以使用一个可用作“假终端” STDIN / STDOUT管道的标准程序?实际上,我也在开发pty伪终端工具,因此我可以为此目的当然使用它,但这是一个比较繁琐的解决方案(由于我尚未完成构建,因此尚未准备就绪)。
71 git  shell  unix  io  terminal 

2
在sh中替换源
我需要设置环境变量,通常我们通过 source script.sh 但是现在,我在引导过程中将其自动化,默认情况下,它看起来像是用shshell引导的根。如何从中获取此脚本sh?
71 bash  shell  sh 







7
在Unix上删除部分路径
我正在尝试删除字符串中的部分路径。我有路径: /path/to/file/drive/file/path/ 我想删除第一部分/path/to/file/drive并产生输出: file/path/ 注意:我在while循环中有几个路径,/path/to/file/drive所有路径都相同,但是我只是在寻找删除所需字符串的“方法”。 我找到了一些示例,但无法使它们起作用: echo /path/to/file/drive/file/path/ | sed 's:/path/to/file/drive:\2:' echo /path/to/file/drive/file/path/ | sed 's:/path/to/file/drive:2' \2 作为字符串的第二部分,我显然做错了什么……也许有更简单的方法吗?
70 shell  unix  scripting  sed 

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.