Questions tagged «bash»

有关为Bash命令外壳编写的脚本的问题。对于具有错误/语法错误的shell脚本,请在此处发布之前,使用shellcheck程序(或在Web shellcheck服务器中的https://shellcheck.net)进行检查。有关Bash交互使用的问题更可能是Super User而不是Stack Overflow上的话题。

9
如何同时将STDOUT和STDERR转到终端和日志文件?
我有一个脚本,该脚本将由非技术用户交互运行。该脚本将状态更新写入STDOUT,以便用户可以确保脚本运行正常。 我希望STDOUT和STDERR都重定向到终端(以便用户可以看到脚本正在运行以及是否有问题)。我还希望两个流都重定向到日志文件。 我在网上看到了很多解决方案。有些不起作用,而另一些则非常复杂。我已经开发了一个可行的解决方案(将作为答案输入),但这很麻烦。 完美的解决方案是将一行代码合并到任何脚本的开头,该脚本会将两个流都发送到终端和日志文件。 编辑:将STDERR重定向到STDOUT并将结果通过管道传递到tee,但是它取决于记住重新定向和管道输出的用户。我希望日志记录是万无一失的并且是自动的(这就是为什么我希望能够将解决方案嵌入脚本本身的原因)。
104 bash  logging  shell 



5
Bash中的脚本参数
我正在尝试制作应该像这样使用的shell脚本: ocrscript.sh -from /home/kristoffer/test.png -to /home/kristoffer/test.txt 然后,脚本将ocr将图像文件转换为文本文件。到目前为止,这是我想出的: #!/bin/bash export HOME=/home/kristoffer /usr/local/bin/abbyyocr9 -rl Swedish -if ???fromvalue??? -of ???tovalue??? 2>&1 但是我不知道如何获得-from和-to价值观。关于如何做的任何想法?
103 linux  bash  shell  parameters 

6
Bash:递归复制命名文件,保留文件夹结构
我希望: cp -R src/prog.js images/icon.jpg /tmp/package 将在目标目录中产生对称结构: /tmp | +-- package | +-- src | | | +-- prog.js | +-- images | +-- icon.jpg 但是相反,两个文件都被复制到/ tmp / package中。平面副本。(这是在OSX上)。 我是否可以使用一个简单的bash函数将所有文件(包括通配符指定的文件(例如src / *。js))复制到目标目录中的正确位置。有点像“为每个文件运行mkdir -p $(dirname "$file"); cp "$file" $(dirname "$file")”,但也许只有一个命令。 这是一个相关的线程,这表明不可能。不过,作者的解决方案对我而言并没有那么有用,因为我只想提供文件列表(带或不带通配符),并将所有文件复制到目标目录。IIRC MS-DOS xcopy可以执行此操作,但是cp似乎没有等效功能。
103 bash  shell 

7
如何在Linux上的Bash中一次删除多个文件?
我在Linux服务器上有以下文件列表: abc.log.2012-03-14 abc.log.2012-03-27 abc.log.2012-03-28 abc.log.2012-03-29 abc.log.2012-03-30 abc.log.2012-04-02 abc.log.2012-04-04 abc.log.2012-04-05 abc.log.2012-04-09 abc.log.2012-04-10 我一直在使用以下命令逐个删除选定的日志文件rm -rf: rm -rf abc.log.2012-03-14 rm -rf abc.log.2012-03-27 rm -rf abc.log.2012-03-28 还有另一种方法,以便我可以立即删除所选文件吗?
103 linux  bash  rm 

22
使用Ansible创建新的用户名和密码
我有一个麻烦的任务,它在ubuntu 12.04上创建了一个新用户; - name: Add deployment user action: user name=deployer password=mypassword 它可以按预期完成,但是当我以该用户身份登录并尝试使用我设置的密码sudo时,它总是表示不正确。我究竟做错了什么?
103 bash  shell  ubuntu  ansible 

17
如何计算每个目录中的文件数?
我可以列出所有目录 find ./ -type d 我试图使用以下命令列出每个目录的内容并计算每个目录中的文件数 find ./ -type d | xargs ls -l | wc -l 但这总和由返回的行数 find ./ -type d | xargs ls -l 有没有一种方法可以计算每个目录中的文件数?
103 linux  bash  ubuntu 

15
计算特定目录中的目录数
如何计算特定目录中的文件夹数。我正在使用以下命令,但它总是提供一个额外的命令。 find /directory/ -maxdepth 1 -type d -print| wc -l 例如,如果我有3个文件夹,则此命令提供4。如果包含5个文件夹,则该命令提供6。为什么?
103 linux  bash 

3
外壳中的变量插值
我有一个名为的变量filepath=/tmp/name。 要访问该变量,我知道我可以这样做: $filepath 在我的shell脚本中,我试图做这样的事情(需要使用反引号) `tail -1 $filepath_newstap.sh` 这行失败,duuh !,因为未调用该变量 $filepath_newstap.sh 如何追加_newstap.sh到变量名? 请注意,反引号用于表达式评估。
103 bash  shell  unix 

5
在shell脚本的行尾是否多余分号?
我有一个包含以下内容的shell脚本: case $1 in 0 ) echo $1 = 0; OUTPUT=3;; 1 ) echo $1 = 1; OUTPUT=4;; 2 ) echo $1 = 2; OUTPUT=4;; esac HID=$2; BUNCH=16; LR=.008; 分号在上面的代码段中是完全多余的吗?某些人使用双分号有什么理由吗? 看来分号只是一个分隔符,您将使用它而不是换行符。
103 bash  shell  syntax 


11
用`set -u`重击空数组扩展
我正在编写一个具有的bash脚本set -u,并且我有一个空数组扩展问题:bash似乎在扩展过程中将空数组视为未设置的变量: $ set -u $ arr=() $ echo "foo: '${arr[@]}'" bash: arr[@]: unbound variable (declare -a arr也无济于事。) 对此的一种常见解决方案是使用${arr[@]-},从而用一个空字符串代替(“未定义”)空数组。但是,这不是一个好的解决方案,因为现在您无法区分其中有一个空字符串的数组和一个空数组。(@ -expansion在bash中是特殊的,它扩展"${arr[@]}"为"${arr[0]}" "${arr[1]}" …,这使其成为构建命令行的理想工具。) $ countArgs() { echo $#; } $ countArgs a b c 3 $ countArgs 0 $ countArgs "" 1 $ brr=("") $ countArgs "${brr[@]}" 1 $ countArgs "${arr[@]-}" …
103 bash 

15
如何在目录及其子目录中找到最大的文件?
我们刚刚开始UNIX类,并且正在学习各种Bash命令。我们的工作涉及在目录下执行各种命令,该目录下还包含许多文件夹。 我知道如何使用以下方法列出和计数根文件夹中的所有常规文件: find . -type l | wc -l 但是我想知道从那里去哪里才能找到整个目录中最大的文件。我已经看到了有关du命令的一些信息,但是我们还没有学到,所以在我们学到的所有命令中,我认为我们需要以某种方式将其连接到ls -t命令。 如果我的“行话”不正确,请原谅我,我仍然会习惯它!


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.