From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27760 invoked by alias); 20 Feb 2020 14:40:42 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 27753 invoked by uid 89); 20 Feb 2020 14:40:41 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=unusual, rwr, rw-r, rwxr-xr-x X-HELO: mail-qk1-f182.google.com Received: from mail-qk1-f182.google.com (HELO mail-qk1-f182.google.com) (209.85.222.182) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 20 Feb 2020 14:40:40 +0000 Received: by mail-qk1-f182.google.com with SMTP id t83so3763442qke.3 for ; Thu, 20 Feb 2020 06:40:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=lN1wKwz1ZNDv9z/k6eiVarTNYMRhzOP8B7XRaJNASIo=; b=FgwX1O2NewrkUlkZR+Z2qXWpcbqOgqdt6wnLM4D5L73LHCu/ygQkJAHvcwxcjyfsta JPNewEOoUnUDXWAV06rlemaVs7dzctdhSsKl5XmlnGmKoS+acdi2qOSDlg+/I3lRKp+B 1kBsXGIF4sTXK7xJKqapbIPqKglbBK5k+k1Guipu38mSOIKJme2u3p0dab6xQB+pWpK6 K75GVlUwqNDQ8leNYm3UEFcAq42eiLEZSbVqk2SdmxSZMAD0jGgn2SN0Y62Jr+43uAfS TbpzWYuEekV5ynY+6wBJqwFmGPi5QdXkBCv1tUn2UJHoVu4o908jVFj5WHaOtylislcI n0EA== MIME-Version: 1.0 References: In-Reply-To: From: Paul Moore Date: Thu, 20 Feb 2020 14:40:00 -0000 Message-ID: Subject: Re: CYGWIN env variable - glob option To: cygwin@cygwin.com Content-Type: text/plain; charset="UTF-8" X-IsSubscribed: yes X-SW-Source: 2020-02/txt/msg00172.txt.bz2 Some further investigations. 1. I missed the comment "default is set". So setting CYGWIN=glob is irrelevant. I may still want to set CYGWIN=glob:ignorecase, but that's a separate matter. 2. With forward slashes, globbing works as expected: E:\Utils\Cygwin64\bin\echo E:/Work/Scratch/m*.py E:/Work/Scratch/markov_pmf.py E:/Work/Scratch/monopoly.py However, with backslashes it does not: >E:\Utils\Cygwin64\bin\echo E:\Work\Scratch\*.py E:\Work\Scratch\*.py I can understand that the conflict between Windows using backslash as a directory separator and Unix using it as an escape character makes for a difficult problem, but nevertheless, the current behaviour is problematic for me (I won't say "wrong", because clearly plenty of people are fine with it, but it doesn't suit my use case, and I don't know if there's any setting I can use to improve things). Basically my issue is that I want to use cygwin from a Windows shell (powershell). I do *not* run cygwin commands from the cygwin shell - I am very familiar with, and comfortable in, powershell, but I do need Unix-like commands like grep, diff, etc, and cygwin provides the most reliable forms of those commands (good Unicode support, no weird bugs or porting glitches...) I routinely tab-complete directory names, with things like "grep so*.py" which autocompletes on tab to "grep .\sources\" and then I add "*.py". So it's fairly important for me that backslash-separated pathnames work. I don't know how unusual this is - I hear many people talking about using cygwin tools to get Unix-like utilities on Windows, but I don't know if the common use is via a cygwin shell (with a full Unix experience) or mixing Cygwin into a Windows shell like I do. If cygwin isn't intended to fit seamlessly into this use case, then that's fine - I'll just need to find an alternative way of getting Unix-like commands (maybe go back to mingw-compiled versions, and accept their limitations). But if there *is* a way to get things to work for my situation, I'd be disappointed if I missed it :-) If there *isn't* an option like that, is it something that could be added to the existing globbing code? I've never contributed to cygwin, but how easy would such a change be? Paul On Wed, 19 Feb 2020 at 16:46, Paul Moore wrote: > > I'm not sure if I'm misunderstanding the documentation of the "glob" > option in the CYGWIN environment variable. I have (this is under > Powershell Core 7.0.0-rc2): > > $env:CYGWIN="glob:ignorecase winsymlinks:native" > > if I then try to grep in a file that exists, using wildcards to > specify it, I get > > > C:\Utils\Cygwin64\bin\grep.exe . C:\Work\Scratch\mkpip*.ps1 > /usr/bin/grep: C:\Work\Scratch\mkpip*.ps1: No such file or directory > > Using echo as a (presumably) simpler test case: > > >C:\Utils\Cygwin64\bin\echo.exe C:\Work\Scratch\*.ps1 > C:\Work\Scratch\*.ps1 > > >C:\Utils\Cygwin64\bin\ls.exe -l C:\Work\Scratch\ > total 1121 > -rwxr-xr-x 1 Gustav Gustav 1144832 Feb 17 15:15 DigraphMgr.exe > -rw-r--r-- 1 Gustav Gustav 172 Jan 23 10:37 mkpipclone.ps1 > > I thought that the glob option resulted in glob expansion being done > before the args are passed to the grep command, so my expectation was > that this would work. > > This is with the very latest cygwin DLL - 3.1.4-1. I tried downgrading > to 3.1.2 (the earliest the installer offered) but that was no > different. The odd thing is that I thought I'd tested this on anther > machine, but now I can't get it to work as I expect :-( > > Am I doing something wrong? Or are my expectations incorrect? I need > to work with "native" backslash-delimited path names, because that's > how my shell autocompletes directory names, and patching them up with > forward slashes isn't really an option for me. > > Paul -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple