Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Time format for file calls  (gelezen 711 keer)

FrankOpteynde

  • Gast
Time format for file calls
« Gepost op: 2007/12/28, 12:53:16 »
Dear,

The command "ls -l" and other commands) display files with the following format:
"permissions owner group size 2007-12-27:00:00:00 name".

With RedHat Linux, this is "permissions owner group size Dec 27 2007 name".

Problem is now that my third-party sofware crashes on this difference.

Is there a way to set the default time format for all file calls?

Best regards,
Frank

Offline Rulus

  • Lid
  • Steunpunt: Nee
Time format for file calls
« Reactie #1 Gepost op: 2007/12/28, 13:35:23 »
Je kan wel één en ander regelen met de --time-style optie van ls, meer info in de manpage van ls ('man ls'). Is het geen mogelijkheid om die software aan te passen?

Offline vanadium

  • Lid
  • Steunpunt: Nee
Time format for file calls
« Reactie #2 Gepost op: 2007/12/28, 14:24:35 »
"Defaults" voor het ls commando worden ingesteld met een alias.

FrankOpteynde

  • Gast
Time format for file calls
« Reactie #3 Gepost op: 2007/12/28, 15:20:42 »
Het probleem zit dieper:

Ik gebruik IC-design software van Cadence.  Hierin worden door verschillende commando's (dus niet alleen "ls") calls gemaakt naar files, om zo de creatiedatum e.a. te verifieren.  Doordat de default listing format anders is dan bij RedHat, loopt dit mis.

Voorbeeld van een dergelijke call:

time_stamp=`ls -ol ${LOG_FILE} | awk '{printf "%s.%d.%d\n",$5,$6,$7}'`

Als nu ${LOG_FILE}  wordt gedisplayed als "drwxr-xr-x  2 frank   4096 Dec 12 2007 test", dan is time_stamp = "Dec.12.2007".

Maar als ${LOG_FILE}  wordt gedisplayed als "drwxr-xr-x  2 frank   4096 2007-12-12 13:54 test", dan loopt dit mis want parameters $6 = "13:13" en $7 = "test", en dit zijn geen integers.

Aldus krijg ik de vreemdse resultaten: soms slaagt de Cadence software er zelfs niet in om de permissies van files correct te lezen.

Graag jullie hulp.

Vriendelijke groeten, Frank

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
  • Steunpunt: Nee
Time format for file calls
« Reactie #4 Gepost op: 2007/12/28, 15:32:41 »
Het probleem is dus dat in de script(s) die je gebruikt de aanroep van ls zit ingebakken. Als het geen honderden bestanden zijn, dan zou je "ls -" kunnen veranderen naar "ls_alt" en dat is een klein shell scriptje dat het formaat aanpast zoals Rulus voorstelt. Ik zie zo geen mogelijkheid om het werkend te krijgen zonder de code van je scripts aan te passen.
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

FrankOpteynde

  • Gast
Time format for file calls
« Reactie #5 Gepost op: 2007/12/29, 12:11:34 »
Probleem hierbij is dat deze scripts mee gecompileerd zijn in de software.  Ik kan hier niet aan prutsen.
Ik heb al geprobeerd om 'alias ls  /bin/ls --time-style=+"%b %d %Y" ' in mijn .bashrc te zetten, maar de software gebruikt niet altijd de bash shell (en ik weet sowieso niet of voorgecompileerde programma's rekening houden met de .bashrc).

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
  • Steunpunt: Nee
Time format for file calls
« Reactie #6 Gepost op: 2007/12/29, 15:10:39 »
Overigens wel vreemd dat ze dat "incompileren", hoe moet ik me dat voorstellen? Als ik een gecompileerd programma zou maken, dan zou ik nooit een system call  naar de shell gebruiken, veel te veel overhead, en alle programmeertalen hebben een eigen library waar je tijdszaken mee kunt doen.

Het gaat er echter steeds meer op lijken dat je aan de "executable" ls binnen bash vastzit. Heb je er es aan gedacht om de RH bash te vervangen door een andere die het wel "goed" doet? Je hebt kans dat een "vanilla" GNU Bash het wel doet zoals je wil. In het uiterste geval moet je de C code van Bash aanpassen en deze hercompileren. Hangt er van af natuurlijk hoe belangrijk deze software voor je is ...
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Offline vanadium

  • Lid
  • Steunpunt: Nee
Time format for file calls
« Reactie #7 Gepost op: 2007/12/29, 17:30:28 »
Je kan de defaults voor bash op verschillende niveaus instellen, zowel voor interactieve als niet-interactieve shells. /etc/bash.bashrc is er zo een die instellingen meer algemeen instelt (en die kunnen dan overschreven worden door instellingen per gebruiker). In "man bash" zal je daar wellicht de details over vinden.

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Time format for file calls
« Reactie #8 Gepost op: 2007/12/29, 18:01:30 »
Volgens mij ligt dat gewoon aan de lokalisering
Probeer maar eens: LC_TIME=C ls -l

edit: ofja, dan klopt het ook niet volledig, hè?
dan inderdaad maar --time-style=+"%b %d %Y" gebruiken..

Dus, gewoon het commando alias ls='ls --time-style=+"%b %d %Y"'
uitvoeren in dezelfde sessie waar de ls commando's worden uitgevoerd,
lijkt me het beste.. dan heeft het ook geen invloed op gewone 'ls' commando's.
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)