标签: bash

如何让cp命令创建用于将文件复制到目标的任何必要文件夹

将文件复制cp到可能存在或不存在cp的文件夹时,如何在必要时创建文件夹?这是我尝试过的:

[root@file nutch-0.9]# cp -f urls-resume /nosuchdirectory/hi.txt
cp: cannot create regular file `/nosuchdirectory/hi.txt': No such file or directory
Run Code Online (Sandbox Code Playgroud)

linux bash cp

421
推荐指数
7
解决办法
44万
查看次数

如何将输出附加到文本文件的末尾

如何将命令的输出附加到文本文件的末尾?

bash shell

419
推荐指数
12
解决办法
50万
查看次数

在Windows 7 x64上,Git Bash非常慢

在一个小项目的开发过程中,我一直在Windows和Ubuntu上使用Git,经常在两者之间来回翻转.问题是Git Bash一直变慢.

当我说慢时,我的意思是跑步cd需要8到25秒,运行git命令需要5-20秒,ls有时可能需要30秒.毋庸置疑,这并不好玩,更不用说非生产性了.我知道Git在Windows上比较慢,但这太荒谬了.

对我来说暂时工作的一个解决方案是禁用我的网络连接(如本答案所示),启动Git Bash,然后重新连接.有时它会在这样做之后继续快速运行数天,但性能总是最终会降低.我已经在msysgit讨论组,Stack Overflow,msysgit问题列表等中打开和关闭了几个星期,但我还没有找到有效的解决方案.

到目前为止,我已经尝试过:

  • 将Git和项目文件夹添加到病毒扫描程序的排除列表中
  • 完全禁用我的病毒扫描程序(Kaspersky IS 2011)
  • 确保Outlook未运行(Outlook 2007)
  • 关闭所有其他应用程序
  • 以管理员身份运行Git Bash
  • 禁用网络连接,启动Git Bash并禁用连接
  • 禁用网络连接,启动Git Bash,重新启用连接(仅偶尔工作)
  • 运行 git gc
  • 以及上述的组合

我确实读到有几个人成功禁用Bash完成,但理想情况下我想保持活跃.msysgit的版本是1.7.3.1-preview20101002,操作系统是Windows 7 x64.可以预见,在Linux上运行相同的东西是快速的.我会专门使用Linux,但我也需要在Windows中运行东西(某些应用程序,测试等).

有没有人遇到类似的问题?如果是这样,那么潜在的问题是什么?解决方案是什么(如果有的话)?

这超出了Git存储库,但仅供参考,我一直使用Git的存储库非常小:最多4-50个文件.

git bash msysgit mingw32 windows-7

418
推荐指数
14
解决办法
16万
查看次数

如果任何命令返回非零值,则中止shell脚本?

我有一个调用许多命令的Bash shell脚本.如果任何命令返回非零值,我希望shell脚本自动退出,返回值为1.

如果没有明确检查每个命令的结果,这可能吗?

例如

dosomething1
if [[ $? -ne 0 ]]; then
    exit 1
fi

dosomething2
if [[ $? -ne 0 ]]; then
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell

405
推荐指数
8
解决办法
18万
查看次数

bash/fish命令用于打印文件的绝对路径

问题:是否有一个简单的sh/bash/zsh/fish/...命令来打印我提供的文件的绝对路径?

用例:我在目录中/a/b,我想c在命令行上打印文件的完整路径,以便我可以轻松地将其粘贴到另一个程序中:/a/b/c.简单但是一个小程序可以在处理长路径时节省大约5秒钟,这最终会增加.因此,令我惊讶的是,我无法找到标准实用程序来执行此操作 - 真的没有吗?

这是一个示例实现,abspath.py:

#!/usr/bin/python
# Author: Diggory Hardy <diggory.hardy@gmail.com>
# Licence: public domain
# Purpose: print the absolute path of all input paths

import sys
import os.path
if len(sys.argv)>1:
    for i in range(1,len(sys.argv)):
        print os.path.abspath( sys.argv[i] )
    sys.exit(0)
else:
    print >> sys.stderr, "Usage: ",sys.argv[0]," PATH."
    sys.exit(1)
Run Code Online (Sandbox Code Playgroud)

bash shell path

405
推荐指数
14
解决办法
28万
查看次数

递归查找具有特定扩展名的文件

我正在尝试使用我的bash(最新的Ubuntu LTS版本)在目录及其子目录中查找具有特定扩展名的所有文件.

这是在脚本文件中写的:

#!/bin/bash

directory="/home/flip/Desktop"
suffix="in"

browsefolders ()
  for i in "$1"/*; 
  do
    echo "dir :$directory"
    echo "filename: $i"
    #   echo ${i#*.}
    extension=`echo "$i" | cut -d'.' -f2`
    echo "Erweiterung $extension"
    if     [ -f "$i" ]; then        

        if [ $extension == $suffix ]; then
            echo "$i ends with $in"

        else
            echo "$i does NOT end with $in"
        fi
    elif [ -d "$i" ]; then  
    browsefolders "$i"
    fi
  done
}
browsefolders  "$directory"
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我在终端中启动这个脚本时,它说:

[: 29: in: unexpected operator
Run Code Online (Sandbox Code Playgroud)

($extension而不是 …

linux bash recursion

402
推荐指数
8
解决办法
46万
查看次数

处理除第一个之外的所有参数(在bash脚本中)

我有一个简单的脚本,其中第一个参数是为文件名保留的,所有其他可选参数应该传递给脚本的其他部分.

使用Google我发现了这个wiki,但它提供了一个文字示例:

echo "${@: -1}"
Run Code Online (Sandbox Code Playgroud)

我无法得到任何其他工作,例如:

echo "${@:2}"
Run Code Online (Sandbox Code Playgroud)

要么

echo "${@:2,1}"
Run Code Online (Sandbox Code Playgroud)

我从终端得到"坏替换".

问题是什么,除了传递给bash脚本的第一个参数外,我该如何处理?

bash shell

401
推荐指数
3
解决办法
15万
查看次数

在Bash中管道输出和捕获退出状态

我想执行Bash中长时间运行的命令,都捕获它的退出状态,并且发球它的输出.

所以我这样做:

command | tee out.txt
ST=$?
Run Code Online (Sandbox Code Playgroud)

问题是变量ST捕获退出状态tee而不是命令.我怎么解决这个问题?

请注意,命令长时间运行并将输出重定向到文件以便以后查看它对我来说不是一个好的解决方案.

error-handling bash shell pipe

400
推荐指数
11
解决办法
16万
查看次数

Bash函数中返回和退出之间的区别

BASH函数中的returnand exit语句与退出代码有什么区别?

bash return function return-value exit

399
推荐指数
8
解决办法
37万
查看次数

Bash忽略特定命令的错误

我正在使用以下选项

set -o pipefail
set -e
Run Code Online (Sandbox Code Playgroud)

在bash脚本中停止执行错误.我有100个脚本执行,我不想检查脚本的返回代码.但对于特定的脚本,我想忽略错误.我怎样才能做到这一点 ?

linux bash

399
推荐指数
9
解决办法
23万
查看次数

标签 统计

bash ×10

shell ×5

linux ×4

cp ×1

error-handling ×1

exit ×1

function ×1

git ×1

mingw32 ×1

msysgit ×1

path ×1

pipe ×1

recursion ×1

return ×1

return-value ×1

unix ×1

windows-7 ×1