标签: expansion

在执行搜索之前,Gnuwin32 find.exe会扩展通配符

我在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)

谢谢

find gnuwin32 expansion

17
推荐指数
2
解决办法
4635
查看次数

android - 扩展库有很多问题

我需要使用新的谷歌播放(或市场)扩展库,我很难用它.我想知道是否有其他人正在使用它并注意到我能看到的相同问题,所以如果你能帮忙解决它们我会很高兴:

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).

他们声称接下来的变化:

  • 项目清单
  • 现在可以下载补丁文件了.
  • 蜂窝设备现在支持类似ICS的通知
  • CRC检查(来自示例)现在支持压缩的Zip文件
  • 使用反射可以轻松进行混淆
  • 服务泄漏已修复
  • 从ZipResourceFile中删除了不可打印的字符
  • 次格式更改
  • 对此文件的其他注释和编辑

我现在已经测试过,似乎它们几乎就在那里.

我发现的唯一错误是,如果我更新扩展文件(以及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)

android download expansion google-play

17
推荐指数
1
解决办法
3880
查看次数

新版Google Play开发者控制台中的扩展文件

我正在尝试使用开发者控制台将我的应用上传到Google Play.大约一周前,他们已经做到了这一点,以便每个应用程序都有一个唯一的密钥字符串.您必须使用新的开发人员控制台来获取应用程序的密钥.问题是,在新的开发人员控制台中,显然没有办法上传我的应用程序所需的扩展文件.然后如何获取我的密钥,并将我的apk上传的扩展文件上传到Google Play?

使用旧控制台上传扩展文件非常简单,您只需在上传apk文件的同时上传它.

我错过了什么?

android expansion apk google-play

16
推荐指数
5
解决办法
2万
查看次数

在python glob中支持扩展

我有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)

我的表情有什么问题?

python bash shell glob expansion

14
推荐指数
3
解决办法
3611
查看次数

bash是否在$ {var + ...}内错误地进行了"$ @"扩展?

我目前通过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)

bash shell scripting posix expansion

14
推荐指数
1
解决办法
296
查看次数

Haskell:Equation Expander 1+(1+(1+(1+(...))))=∞

是否存在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)

haskell expression equation expansion equational-reasoning

13
推荐指数
1
解决办法
1026
查看次数

bash选项卡完成没有变量扩展?

假设我在这里定义了这些变量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扩展到相对路径而不是完整路径.

variables bash expansion bash-completion

13
推荐指数
1
解决办法
2110
查看次数

主目录扩展(〜)在一个参数内

当我输入以下内容(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)

如何使波浪扩展?

bash expansion tilde home-directory

12
推荐指数
2
解决办法
8911
查看次数

为什么zsh试图扩展*和bash不?

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时,我没有收到以下错误.
为什么会这样?

bash zsh glob expansion adb

11
推荐指数
1
解决办法
2335
查看次数

在eclipse中运行Java app时如何避免glob扩展

我遇到了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扩展?

java eclipse shell wildcard expansion

10
推荐指数
1
解决办法
1353
查看次数