Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。

4
复制时如何重命名文件?
在重命名每个文件以从名称(即-2b0fd460_1426b77b1ee_-7b8e)中删除随机字符串部分的同时,如何将备份目录中的所有文件复制(不更改日期的归档样式)到用户目录? cp来自: /backup/path/data/Erp.2014.02.16_16.57.03-2b0fd460_1426b77b1ee_-7b8e.etf 至: /home/user/data/Erp.2014.02.16_16.57.03.etf 每个文件将始终以“ Erp”开头。然后是日期时间戳字符串,然后是随机字符串,然后是扩展名“ .etf”。我想保留所有名称元素,包括日期时间戳。我只想删除随机字符串。 随机字符串允许同一文件的多个备份。但是,在这种情况下,我只运行了fdupes,没有重复项。因此,我可以简单地还原所有文件,删除随机字符串。 我正在寻找单行bash命令来执行此操作。 如果那行不通,我可以分两个或两个以上的步骤来完成。我通常使用KRename,但在这种情况下,我需要使用bash进行操作。(我正在远程工作。)
12 bash  shell  rename  file-copy 

3
两种查找命令比较
最近,我收到了这一find单行代码,但是我无法解释以下两者的区别来自哪里: 例子1 [root@centos share]# find . -exec grep -i "madis" {} /dev/null \; ./names:Madison Randy:300:Product Development 例子2 [root@centos share]# find . -exec grep -i "madis" {} \; Madison Randy:300:Product Development 如您所见,在第一个文件中,有一个从该字符串派生的特定文件,到目前为止,我还真的无法找出原因。
12 bash  shell  find 

5
BASH中两个数组的交集
我有两个这样的数组: A=(vol-175a3b54 vol-382c477b vol-8c027acf vol-93d6fed0 vol-71600106 vol-79f7970e vol-e3d6a894 vol-d9d6a8ae vol-8dbbc2fa vol-98c2bbef vol-ae7ed9e3 vol-5540e618 vol-9e3bbed3 vol-993bbed4 vol-a83bbee5 vol-ff52deb2) B=(vol-175a3b54 vol-e38d0c94 vol-2a19386a vol-b846c5cf vol-98c2bbef vol-7320102b vol-8f6226cc vol-27991850 vol-71600106 vol-615e1222) 数组未排序,甚至可能包含重复的元素。 我想使这两个数组相交并将元素存储在另一个数组中。我该怎么办? 另外,我如何获得出现在B中但在A中不可用的元素的列表?
12 bash  scripting  array 

2
在目录中查找并删除重复项
我的目录中包含多个img文件,其中一些是相同的,但它们的名称不同。我需要删除重复项,但仅使用bash脚本就不需要外部工具。我是Linux的初学者。我尝试了嵌套的for循环来比较md5总和,并根据结果将其删除,但是语法出了点问题,因此不起作用。有什么帮助吗? 我试过的是... for i in directory_path; do sum1='find $i -type f -iname "*.jpg" -exec md5sum '{}' \;' for j in directory_path; do sum2='find $j -type f -iname "*.jpg" -exec md5sum '{}' \;' if test $sum1=$sum2 ; then rm $j ; fi done done 我得到: test: too many arguments

6
为什么“ $((〜33))”产生-34?
$ echo $(( 255 )) 255 $ echo $(( 33 )) 33 $ echo $(( ~33 )) -34 $ echo $(( ~255 )) -256 $ 而我的内核是: $ uname -a Linux HOSTNAME 3.2.0-40-generic-pae #64-Ubuntu SMP Mon Mar 25 21:44:41 UTC 2013 i686 i686 i386 GNU/Linux 问题: ~用于否定数字FAIKK。但是为什么~33产生-34,为什么~255产生-256?
12 bash  shell  arithmetic 

5
在bashrc中使用别名时,如何测试可能的冲​​突?
有没有一种简单的方法来列出由于涉及别名命令的bashrc更新而导致系统中发生的所有命令冲突? 例如,有人alias ls=/path/to/user-generated/executable用bashrc 编写。如何发现这掩盖了实际命令(ls)。一种方法似乎是在采购bashrc之前和之后运行所有别名并比较输出。有没有更好的方法? 我正在运行Ubuntu 12.04。 bash --version GNU bash版本4.2.24(1)-发行版(i686-pc-linux-gnu)
12 bash  alias  bashrc 

1
ls一切不是符号链接
是否ls可以显示否定条件,例如“ 不是符号链接的所有文件”?我在项目目录中经常使用后者,但其他取反也将很有用。 目前,我的研究仅导致为“ like”创建别名: find . -maxdepth 1 ! -type l | sort # (...) 但是很显然,这种方式我无法获得ls,列格式等的颜色... 我有时在OS X 10.8.2上使用Bash v3,有时在Pangolin上使用Bash v4。
12 bash  ls 

4
使用cp将单个文件复制到多个目录
这个问题是我先前提出的问题的续集,该问题使用来创建许多目录mkdir。 我正在使用bash外壳。我使用以下命令创建了五十个目录,每个目录以前缀“ s”开头: mkdir $(printf "s%02i " $(seq 1 50)) 用零填充到第二个数字。也就是说,我获得目录的形式为s01,s02,..., ,。s49s50 现在,我想cp用来将一个文件(例如test.txt)复制到这五十个目录中的每个目录中。是否可以通过与上述类似的方式进行?例如,以下工作有效吗?我是Unix / Linux的新手,所以我真的不想尝试此操作,直到有人请给我表明它是安全的。 cp test.txt $(printf“ s%02i.txt” $(seq 1 50)) 查看的man页面cp,它似乎不cp支持这样的多个目标,但是: NAME cp - copy files and directories SYNOPSIS cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... DESCRIPTION Copy SOURCE to DEST, …
12 bash  shell  cp 

3
多变量循环
有没有一种方法可以在for循环中指定多个变量(不仅仅是整数)bash?我可能有2个文件,其中包含我需要使用的任意文本。 我在功能上需要的是这样的: for i in $(cat file1) and j in $(cat file2); do command $i $j; done 有任何想法吗?


4
删除一定大小范围的文件
我想删除大小介于某些值之间的文件。例如,我有以下文件列表: -rw-r--r-- 1 smsc sys 558 Apr 30 13:07 stats.sfe.1.20120430130513.xml.Z -rw-r--r-- 1 smsc sys 388 Apr 30 15:32 stats.sfe.1.20120430153013.xml.Z -rw-r--r-- 1 smsc sys 386 Apr 30 15:36 stats.sfe.1.20120430153513.xml.Z -rw-r--r-- 1 smsc sys 389 Apr 30 15:42 stats.sfe.1.20120430154013.xml.Z -rw-r--r-- 1 smsc sys 390 Apr 30 16:02 stats.sfe.1.20120430160013.xml.Z -rw-r--r-- 1 smsc sys …
12 bash  find  size 

3
是否可以更改全局顺序?
我正在尝试通过执行以下操作来按时间顺序显示syslog中特定消息的所有实例: grep squiggle /var/log/messages* 不幸的是,全局模式首先匹配当前活动的文件。例如。 /var/log/messages /var/log/messages-20120220 /var/log/messages-20120227 /var/log/messages-20120305 /var/log/messages-20120312 这意味着最近的消息会先显示,然后是按时间顺序的历史消息。 是否可以通过某种方式调整全局模式行为,以使空匹配项(即just messages)显示在列表的末尾? 如果没有,什么是解决此问题的好方法?
12 bash  wildcards 

2
观看支持颜色的替代品
我有一个phpunit带有彩色输出的命令()。根据watch,命令我应该能够使用该--color标志来允许颜色渲染通过。但是,这不起作用。还有其他解决方法吗?
12 bash  utilities  watch 

3
取消引用串联变量名
我可以做到这一点,但是它需要对变量进行字符串处理然后再取消引用。有什么办法可以将其简化为更简单的陈述? #!/bin/bash FRUITS="BANANA APPLE ORANGE" BANANA_COLOUR="Yellow" APPLE_COLOUR="Green or Red" ORANGE_COLOUR="Blue" for fruit in $( echo $FRUITS ); do fruit_colour="${fruit}_COLOUR" echo $fruit is ${!fruit_colour} done 我尝试了很多类似${!"${fruit}_COLOUR"}或\$${fruit}_COLOUR和其他许多变体的方法,但是唯一有效的方法是使用字符串。

1
在bash中重新映射Ctrl-l
一个重映射可以Ctrl- l在bash执行更不仅仅是清除? 我知道通常它只是清除屏幕。我想更改它以清除屏幕并列出我的pwd名字,如下所示: Ctrl- l:clear;ls;

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.