我在Windows环境中使用Gnuwin32二进制文件.
当我想查找某种类型的文件时,我们说PDF,我通常运行:
find . -iname '*.pdf' -print
Run Code Online (Sandbox Code Playgroud)
这适用于任何UNIX系统.
find.exe . -iname "*.pdf" -print
Run Code Online (Sandbox Code Playgroud)
但是在Windows下,用双引号替换了单引号,它只在当前目录中没有pdf文件时才有效,否则*会扩展.
更糟糕的是:当前目录中只有一个PDF文件,它会扩展,没有语法错误,你会得到错误的结果.
我试着*用一个插入符号,一个反斜杠,一个明星本身,用双引号来避开它:对我来说没什么用.
好的,这是我的所有文件:
C:\tmp>find . -type f
./a/1.pdf
./a/2.pdf
./a/aa/1.pdf
./b/1.pdf
./b/bb/1.pdf
./b/bb/2.pdf
Run Code Online (Sandbox Code Playgroud)
良好的行为,通配符没有扩大
C:\tmp>find . -iname "*.pdf"
./a/1.pdf
./a/2.pdf
./a/aa/1.pdf
./b/1.pdf
./b/bb/1.pdf
./b/bb/2.pdf
C:\tmp>cd a
Run Code Online (Sandbox Code Playgroud)
注意,不一致的行为,扩展了通配符:
C:\tmp\a>find . -iname "*.pdf"
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
C:tmp\a>cd ..\b
Run Code Online (Sandbox Code Playgroud)
注意,不一致的行为,扩展了通配符:
C:\tmp\b>find . -iname "*.pdf"
./1.pdf
./bb/1.pdf
Run Code Online (Sandbox Code Playgroud)
谢谢
我需要使用新的谷歌播放(或市场)扩展库,我很难用它.我想知道是否有其他人正在使用它并注意到我能看到的相同问题,所以如果你能帮忙解决它们我会很高兴:
1.有时我不会将重要事件(例如错误)返回到下载程序活动.
2.it在某些设备上根本不起作用,比如xoom.我想我已经修好了: 在平板电脑上下载扩展文件
3.对于相同的设备,可以下载文件,另一个可以始终得到连接错误.对于某些设备,它永远不会永远无法下载(即使是具有google-play应用程序的非root设备).
4.下载完成后,文件可能已损坏,因此我需要使用CRC校验并重新下载所有内容.
5.通知有时会在按下时打开下载器活动的多个实例.此外,我不明白为什么他们让通知留在以防活动仍然显示.
6.当发生错误并稍后处理时,它不会等待用户告诉它恢复.我不确定它会在哪些情况下发生,但它确实很奇怪且不可预测.
7.在离开下载程序活动时,我得到一个泄漏服务的例外.
8.对应用程序进行模糊处理,因为通过库完成的SQL操作而崩溃.怎么样,为什么呢?编辑:这是因为谷歌决定在SQL部分(在"DownloadsDB.java"文件中)进行一些反思操作.为了解决这个问题,我试图将proguard设置为忽略整个库(无论如何都是开源),但它没有用,所以我所做的就是给自己想要的类,所以我是将"DownloadsDB.class.getDeclaredClasses()"替换为"new Class [] {MetadataColumns.class,DownloadColumns.class};" .
我只是不明白为什么谷歌只是发布一个简单的API发送意图到市场下载文件,检查是否正常,或提供一个不那么复杂的库.由于复杂性,很难找到并修复它们的bug.
我的问题是:有没有其他人尝试过这个库,还有其他人成功地使用它而没有任何问题吗?如果是的话,请发布解决方案......
编辑:似乎谷歌已经更新了它的库(到版本2).
他们声称接下来的变化:
我现在已经测试过,似乎它们几乎就在那里.
我发现的唯一错误是,如果我更新扩展文件(以及APK和文件大小和CRC),下载开始但它没有删除旧的扩展文件.
此外,通知显示当前时间,而不是与下载有关的任何其他内容.
现在,由于我只有一个扩展,每次从服务获得STATE_COMPLETED状态时,我都会进行下一次检查.我希望它没有任何其他问题:
private void deleteOldExpansionFile()
{
int fileVersion = 0;
final int versionCode = App.getAppVersionCode(DownloaderActivity.this);
fileVersion = versionCode;
final String fileName = Helpers.getExpansionAPKFileName(this, true, fileVersion); //get the expansion file name based on the build version of the app.
final File newFile = new File(Helpers.generateSaveFileName(this, fileName));
final File[] listFiles = newFile.getParentFile().listFiles();
for …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用开发者控制台将我的应用上传到Google Play.大约一周前,他们已经做到了这一点,以便每个应用程序都有一个唯一的密钥字符串.您必须使用新的开发人员控制台来获取应用程序的密钥.问题是,在新的开发人员控制台中,显然没有办法上传我的应用程序所需的扩展文件.然后如何获取我的密钥,并将我的apk上传的扩展文件上传到Google Play?
使用旧控制台上传扩展文件非常简单,您只需在上传apk文件的同时上传它.
我错过了什么?
我有python 2.7,我试图发出:
glob('{faint,bright*}/{science,calib}/chip?/')
Run Code Online (Sandbox Code Playgroud)
我没有获得匹配,但是从shell echo {faint,bright*}/{science,calib}/chip?给出:
faint/science/chip1 faint/science/chip2 faint/calib/chip1 faint/calib/chip2 bright1/science/chip1 bright1/science/chip2 bright1w/science/chip1 bright1w/science/chip2 bright2/science/chip1 bright2/science/chip2 bright2w/science/chip1 bright2w/science/chip2 bright1/calib/chip1 bright1/calib/chip2 bright1w/calib/chip1 bright1w/calib/chip2 bright2/calib/chip1 bright2/calib/chip2 bright2w/calib/chip1 bright2w/calib/chip2
Run Code Online (Sandbox Code Playgroud)
我的表情有什么问题?
我目前通过3个炮弹得到2个意见:
$ bash -c 'set bar; set foo${1+ "$@"}; echo "$# $*"'
1 foobar
$ ash -c 'set bar; set foo${1+ "$@"}; echo "$# $*"'
2 foo bar
$ dash -c 'set bar; set foo${1+ "$@"}; echo "$# $*"'
2 foo bar
Run Code Online (Sandbox Code Playgroud)
或者我忽略了一些POSIX定义,它将我的示例呈现为实现定义的行为?
请注意,只有"$ @"似乎会触发差异.以下所有3个shell的工作方式相同:
$ bash -c 'set bar; set foo${1+ $*}; echo "$# $*"'
2 foo bar
$ ash -c 'set bar; set foo${1+ $*}; echo "$# $*"'
2 foo bar
$ dash -c 'set bar; set foo${1+ …Run Code Online (Sandbox Code Playgroud) 是否存在Haskell的方程扩展器?
像foldr.com这样的东西:1+(1+(1+(1+(…))))=?
我是Haskell的新手我很难理解为什么某些方程比其他方程更优选.我认为如果我能看到方程扩展会有所帮助.
例如,我发现foldrvs foldl起初很难理解,直到我看到它们扩展.
foldr :: (a -> b -> b) -> b -> [a] -> b
foldr k z xs = go xs
where
go [] = z
go (y:ys) = y `k` go ys
foldl :: (a -> b -> a) -> a -> [b] -> a
foldl f z0 xs0 = lgo z0 xs0
where
lgo z [] = z
lgo z (x:xs) = lgo (f z x) …Run Code Online (Sandbox Code Playgroud) 假设我在这里定义了这些变量bashrc:
i='cgi-bin/internal';
e='cgi-bin/external';
f='cgi-bin/foo';
b='cgi-bin/bar';
ad='cgi-bin/admin';
#etc...
Run Code Online (Sandbox Code Playgroud)
当我在命令行上使用变量时vim $i/edit_TAB,它将扩展变量并且命令行上的输入变为vim /www/productX/subdomain_x/cgi-bin/internal/edit_(相应于我所在的任何站点)然后我TABTAB获得可能的完成.
没关系,功能不是问题.只是每次看到完整路径而不仅仅是变量的值会变得烦人.
有没有办法不在命令行上扩展bash变量而不影响功能?
是这样做的bash完成吗?
期望的结果$i不会扩展到它的价值(视觉上)或$i扩展到相对路径而不是完整路径.
当我输入以下内容(BASH)时:
rdesktop -r disk:bacon=~/bacon host
Run Code Online (Sandbox Code Playgroud)
它没有扩展到
rdesktop -r disk:bacon=/home/me/bacon host
Run Code Online (Sandbox Code Playgroud)
似乎"磁盘:"部分是问题,如下所示:
$ echo bacon=~/bacon disk:bacon=~/bacon
bacon=/home/me/bacon disk:bacon=~/bacon
Run Code Online (Sandbox Code Playgroud)
如何使波浪扩展?
我zsh在尝试使用logcat时遇到了以下错误.
即,输入时:
adb logcat *:D
Run Code Online (Sandbox Code Playgroud)
我在zsh中收到以下错误
zsh: no matches found: *:D
Run Code Online (Sandbox Code Playgroud)
我不得不逃避*:
adb logcat \*:D
Run Code Online (Sandbox Code Playgroud)
使用bash时,我没有收到以下错误.
为什么会这样?
我遇到了Eclipse运行配置的特殊行为,它似乎只是一个Windows问题.假设我有一个Java应用程序打印出命令行参数,如下所示:
public class WildCard {
public static void main(String[] args) {
for (String arg: args) {
System.out.println(arg);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用可以由shell扩展的外卡提供参数,shell将展开它并将其提供给Java程序.这并不奇怪.所以,如果我在命令提示符下做
java WildCard test/*
Run Code Online (Sandbox Code Playgroud)
该程序将打印
test/foo.txt
test/bar.txt
Run Code Online (Sandbox Code Playgroud)
其中foo.txt和bar.txt是目录"test"中的文件.
如果我用引号括起通配符参数,可以防止Shell扩展;*nix上的单引号,以及Windows上的双引号.所以对于Windows,如果我在命令提示符下执行以下操作:
java WildCard "test/*"
Run Code Online (Sandbox Code Playgroud)
该程序现在将打印
test/*
Run Code Online (Sandbox Code Playgroud)
(没有扩张).
但是,我发现Eclipse运行启动器中的引用似乎没有效果,并且参数仍在扩展.如果我放
"test/*"
Run Code Online (Sandbox Code Playgroud)
在Eclipse运行启动程序的程序参数部分,并运行上面的类,我仍然得到
test/foo.txt
test/bar.txt
Run Code Online (Sandbox Code Playgroud)
换句话说,当程序实际运行时,双引号似乎丢失了.这似乎只发生在Windows上.
有没有办法在Windows上使用Eclipse运行启动器阻止glob扩展?