将文件复制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) 在一个小项目的开发过程中,我一直在Windows和Ubuntu上使用Git,经常在两者之间来回翻转.问题是Git Bash一直变慢.
当我说慢时,我的意思是跑步cd需要8到25秒,运行git命令需要5-20秒,ls有时可能需要30秒.毋庸置疑,这并不好玩,更不用说非生产性了.我知道Git在Windows上比较慢,但这太荒谬了.
对我来说暂时工作的一个解决方案是禁用我的网络连接(如本答案所示),启动Git Bash,然后重新连接.有时它会在这样做之后继续快速运行数天,但性能总是最终会降低.我已经在msysgit讨论组,Stack Overflow,msysgit问题列表等中打开和关闭了几个星期,但我还没有找到有效的解决方案.
到目前为止,我已经尝试过:
git gc我确实读到有几个人成功禁用Bash完成,但理想情况下我想保持活跃.msysgit的版本是1.7.3.1-preview20101002,操作系统是Windows 7 x64.可以预见,在Linux上运行相同的东西是快速的.我会专门使用Linux,但我也需要在Windows中运行东西(某些应用程序,测试等).
有没有人遇到类似的问题?如果是这样,那么潜在的问题是什么?解决方案是什么(如果有的话)?
这超出了Git存储库,但仅供参考,我一直使用Git的存储库非常小:最多4-50个文件.
我有一个调用许多命令的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) 问题:是否有一个简单的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(最新的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而不是 …
我有一个简单的脚本,其中第一个参数是为文件名保留的,所有其他可选参数应该传递给脚本的其他部分.
使用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中长时间运行的命令,都捕获它的退出状态,并且发球它的输出.
所以我这样做:
command | tee out.txt
ST=$?
Run Code Online (Sandbox Code Playgroud)
问题是变量ST捕获退出状态tee而不是命令.我怎么解决这个问题?
请注意,命令长时间运行并将输出重定向到文件以便以后查看它对我来说不是一个好的解决方案.
BASH函数中的returnand exit语句与退出代码有什么区别?
我正在使用以下选项
set -o pipefail
set -e
Run Code Online (Sandbox Code Playgroud)
在bash脚本中停止执行错误.我有100个脚本执行,我不想检查脚本的返回代码.但对于特定的脚本,我想忽略错误.我怎样才能做到这一点 ?