[linux] Re: mv -f

Kees Theunissen theuniss op rijnh.nl
Vr Jan 12 14:36:02 CET 2007


On Fri, 12 Jan 2007, Hans Paijmans wrote:

>Pathname expansion gebeurt toch via een regexp? In dit geval
>[^\.]*
>Ik kan dat moeiteloos lezen, zelfs met mijn geringe kennis van
>regexps.

Deze tekenreeks vormt inderdaad ook een geldige regular expression
maar dan wordt de betekenis heel anders.

Als ik op de commandline r*t gebruik dan expandeert de shell dat
tot all namen (van dirs en bestanden) in de huidige directory
dit met een 'r' beginnen en op een 't' eindigen, met daartussen
nul of meer willekeurige tekens.
In mijn / dir blijft die expansie bepert tot 'root'

  kees op pcict9:/$ echo r*t
  root

Als ik in dezelfde / dir een directory listing op vraag en die
listing beperk tot de regels die matchen met de regular expression
r*t, dan krijg ik alles waarin de letter 'r' nul of meer keer achter
elkaar voorkomt direct gevolgd door een 't'.

  kees op pcict9:/$ /bin/ls | grep 'r*t'
  boot
  etc
  lost+found
  mnt
  opt
  root
  tmp

Al deze regels matchen op de 't' ergens op de regel die wordt vooraf
gegaan door nul keer de 'r'.
Als ik die 'r' en 't' vastpin op het begin resp. eind van de regel
dan vind ik niets meer.

  kees op pcict9:/$ /bin/ls | grep '^r*t$'

Hier zou hij matchen op 't', 'rt', 'rrt', 'rrrt', ...
maar bestanden/dirs met die naam heb ik niet.

Zoals je ziet wordt de een expressie voor pathnaam expansie heel
anders geinterpreteer dan een regular expression bestaande uit
dezelfde tekenreeks.


Groeten,

Kees.

-- 
Kees Theunissen
F.O.M.-Instituut voor Plasmafysica Rijnhuizen, Nieuwegein
E-mail: theuniss op rijnh.nl,     Tel: 030-6096724,     Fax: 030-6031204



More information about the Linux mailing list