2016-11-20 6 views
3

は私にはbashのバグを示唆しているようだすべてのステップです。問題のバッシュ文字クラスパラメータ展開一貫性のない動作

バージョンとプラットフォーム情報

--> cat /etc/os-release 
NAME="Ubuntu" 
VERSION="14.04.5 LTS, Trusty Tahr" 
ID=ubuntu 
ID_LIKE=debian 
PRETTY_NAME="Ubuntu 14.04.5 LTS" 
VERSION_ID="14.04" 
HOME_URL="http://www.ubuntu.com/" 
SUPPORT_URL="http://help.ubuntu.com/" 
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" 
--> bash --version 
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu) 
Copyright (C) 2013 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 

This is free software; you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. 

詳細な手順:

--> ls 
--> touch a aa aaa b bb bbb 
--> ls *[:alpha:] 
a aa aaa 
--> rm a aa aaa 
--> ls *[:alpha:] 
ls: cannot access *[:alpha:]: No such file or directory 

なぜだろう '* [:アルファ:]' リスト '*' のファイル名ではなく 'Bの*'もの?適切な動作を得るために、気になる人のために

、一つは([[:アルファ:]])*を使用する必要があります。しかし、それはここに現れた不一致を説明していません。

答えて

4

何の矛盾はありません。重複した文字を削除すると、[:alpha:][:alph]と同等です。 したがって、ls *[:alpha:]は実際にはls *[:alph]に相当し、a,aaaaaと一致しますので、出力します。 あなたがそれらのファイルを削除した後、 ls *[:alph]はマッチ、あなたが受け取ったので、エラー何を見つけないでしょう。

[:alpha:]文字クラスを使用する場合は、 を[[:alpha:]]と書く必要があります。

+0

ああ、答えてくれてありがとう。 – Fireplume

関連する問題