Questions tagged «bash»

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


2
如何在不保留权限的情况下移动文件
问题是我希望能够在移动文件时看到错误,但不能看到权限问题的错误。换句话说-我关心文件是否没有完全传输,但是不想看到这样的错误: mv:无法保留`/home/blah/backup/pgsql.tar.gz'的所有权:不允许操作 所以,我想是这样的:mv $backupfile $destination --ignore-permissions。 备份文件的大小可以是1 MiB到5 GiB,并且可以通过NFS传输。
42 bash  mv 

7
为单个语句设置IFS
我知道可以为单个命令/内置命令的范围设置自定义IFS值。有没有一种方法可以为单个语句设置自定义IFS值?显然不会,因为基于以下内容,尝试时会影响全局IFS值 #check environment IFS value, it is space-tab-newline printf "%s" "$IFS" | od -bc 0000000 040 011 012 \t \n 0000003 #invoke built-in with custom IFS IFS=$'\n' read -r -d '' -a arr <<< "$str" #environment IFS value remains unchanged as seen below printf "%s" "$IFS" | od -bc 0000000 …
42 bash 

10
如何检查管道是否为空,如果不是,则对数据运行命令?
我已经在bash脚本中通过管道传递了一条线,并希望在将其提供给程序之前检查管道是否具有数据。 我发现有关搜索,test -t 0但在这里不起作用。始终返回false。那么如何确保管道中有数据呢? 例: echo "string" | [ -t 0 ] && echo "empty" || echo "fill" 输出: fill echo "string" | tail -n+2 | [ -t 0 ] && echo "empty" || echo "fill" 输出: fill 有别于标准/规范方式来测试上述管道是否产生了输出?输入需要保留,以将其传递给程序。这概括了如何将输出从一个进程传递到另一个进程,但仅在第一个进程具有输出时才执行?重点是发送电子邮件。
42 bash  shell  pipe 

9
无法使用Ctrl + C停止bash脚本
我编写了一个带有循环的简单bash脚本,用于打印日期并ping到远程计算机: #!/bin/bash while true; do # *** DATE: Thu Sep 17 10:17:50 CEST 2015 *** echo -e "\n*** DATE:" `date` " ***"; echo "********************************************" ping -c5 $1; done 当我从终端运行它时,无法使用停止它Ctrl+C。似乎将传送^C到终端,但是脚本没有停止。 MacAir:~ tomas$ ping-tester.bash www.google.com *** DATE: Thu Sep 17 23:58:42 CEST 2015 *** ******************************************** PING www.google.com (216.58.211.228): 56 data bytes 64 …
42 bash  terminal  signals 

7
如何通过通配符复制多个文件?
我有一个文件夹,其中包含许多文件ABC。*(大约有100个此类文件)。我想将它们全部复制到名称以DEF开头的新文件。* 所以,我要 ABC.Page1 ABC.Page2 ABC.Topic12 ...etc 复制到 DEF.Page1 DEF.Page2 DEF.Topic12 ...etc 使用批处理命令(在BASH或类似格式中)执行此操作的最简单方法是什么?我正在考虑涉及sed或awk或xargs的内容,但是我很难弄清语法。我可以编写Python脚本,但我认为可能存在一种不太复杂的命令行解决方案。

4
递归查找最大文件
我试图递归地在目录中找到最大的文件。如果该目录内有一个子目录,则该函数需要进入该目录内,并检查是否存在最大的文件。找到最大文件后,将显示输出,并显示相对路径名以及最大文件的名称和大小。 例如: dude@shell2 (~...assignment/solutions) % bash maxfile.sh ~/test class/asn dude.h.gch: 9481628 这就是我所拥有的: #!/bin/sh clear recursiveS() { for d in *; do if [ -d $d ]; then (cd $d; echo $(pwd)/$line; du -a; recursiveS;) fi done } recursiveS 我已经被卡住了一段时间了。我无法通过流水线化许多现有的Unix工具来实现这一点。任何想法都很好!


2
ls的输出有换行符,但显示在一行上。为什么?
我认为我可能忽略了关于Shell的一个相对基本的观点。缺省情况下,ls命令的输出用换行符分隔输出,但是外壳程序将输出显示在一行上。 有人可以向我解释吗?我一直以为输出只是用空格分隔,但是现在我看到输出用换行符分隔,我希望输出显示在单独的行上。 例: cpoweradm@debian:~/lpi103-4$ ls text* text1 text2 text3 od显示输出用换行符分隔: cpoweradm@debian:~/lpi103-4$ ls text* | od -c 0000000 t e x t 1 \n t e x t 2 \n t e x t 0000020 3 \n 0000022 如果存在换行符,那么为什么输出不显示为: text1 text2 text3
41 bash  terminal  ls  od 



3
作为命令变量;评估vs bash -c
我正在阅读某人制作的bash脚本,发现作者没有使用eval将变量作为命令求值 。 bash -c "$1" 代替 eval "$1" 我认为使用eval是首选方法,无论如何它可能会更快。真的吗? 两者之间有什么实际区别吗?两者之间的显着区别是什么?

7
将xargs与文件输入配合使用
说我有一个以下文件 bob john sue 现在,这些直接corrospond到(在这种情况下)URL模式如http://example.com/persons/bob.tar,john.tar,sue.tar。 我想采取这些路线,并贯穿它们xargs。我不知道是什么传递给正在执行的命令。如何从提示符(例如,我想简单地回显每行cat file | xargs echo $PARAM)或bash脚本中访问参数。
41 bash  scripting  xargs 



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.