# [SUCHE]Progamm, das zugehörige Partition einer Datei ausgibt

## Finswimmer

Hi!

Ich weiß, dass ich das Programm schonmal hatte. Es gibt dir die zugehörige Partition der Eingabedatei zurück.

Bps:

foo /tmp/test1

-> /dev/sda1

foo /suspend_file

-> /dev/hda1

Leider fällt mir der Name nicht ein.

Habt ihr eine Idee?

Danke

Tobi

----------

## bell

df kann das, allerdings nicht 100% so wie Du es brauchst:

```
 df /mnt/backup/autobackup/oldinst

Dateisystem          1K‐Blöcke   Benutzt Verfügbar Ben% Eingehängt auf

/dev/mapper/vg--myspace-lv--backup

                      33027952  27852936   5175016  85% /mnt/backup

```

----------

## Necoro

```
df $FILE | tail -1 | cut -f1 -d' '
```

Das als funktion in die .${SHELL}rc packen  :Smile: 

----------

## Finswimmer

 *Necoro wrote:*   

> 
> 
> ```
> df $FILE | tail -1 | cut -f1 -d' '
> ```
> ...

 

Das klappt schon ganz gut. Dachte nur, da gäbe es was "fertigeres". Aber ich kann mich auch irren.

Wie soll das mit der Funktion gehen? Mit bash Skripten kenn ich mich nur leidlich aus, und mit Funktionen irgenwie gar nicht *schäm*

Tobi

----------

## Necoro

 *Finswimmer wrote:*   

> Wie soll das mit der Funktion gehen? Mit bash Skripten kenn ich mich nur leidlich aus, und mit Funktionen irgenwie gar nicht *schäm*

 

```

gp ()

{

# abort if there is no argument

  if [ $# -eq 0 ]; then

     echo "Please provide a path" >&2

     return 1

  fi

  

# do not provide mappings if there is only one argument

  if [ $# -eq 1 ]; then

      df $1 | tail -1 | cut -f1 -d' '

  else

      for f in $*; do

          echo $f "==>" $(df $f | tail -1 | cut -f1 -d' ')

      done

  fi

}
```

/edit: mal erweitert, so dass es mit mehreren parametern funktioniert

/edit2: nochmal n bissl ausgebaut

----------

## mv

Anderer Ansatz: 

```
stat -c%D file
```

----------

## Necoro

 *mv wrote:*   

> Anderer Ansatz: 
> 
> ```
> stat -c%D file
> ```
> ...

 

 *Quote:*   

> necoro@Zakarumiy dev % stat -c%D eclipse 
> 
> 804

 

Naja ... die "804" ist nicht sehr aussagekräftig  :Wink: 

----------

## mv

 *Necoro wrote:*   

> Naja ... die "804" ist nicht sehr aussagekräftig 

 

Wesentlich aussagekräftiger, als die Antwort vom mehr oder weniger willkürlichen Inhalt von /dev abhängig zu machen. Bei 

```
df /etc
```

 bekomme ich z.B. als Partition /dev/root angezeigt. Das ist zwar korrekt, aber nicht das, was man i.d.R. will.

"4. Partition des 1. SCSI-Devices" (in offensichtlicher Art als Nummer kodiert) ist da schon eindeutiger und aussagekräftiger.

----------

## Finswimmer

Mir gings vor allem darum, wenn ich sehe, dass auf hda1 kein Platz mehr ist, dass ich dann bei bestimmten Ordnern sehe, wo sie liegen.

Denn ich habe mittlerweile soviele Symlinks rumfliegen, dass ich da den Überblick verloren habe  :Confused: 

BTW: Wie kommst du von 804 auf 4.Partition vom SCSI Controller?

Tobi

----------

## mv

 *Finswimmer wrote:*   

> BTW: Wie kommst du von 804 auf 4.Partition vom SCSI Controller?

 

Major Device 8, Minor Device 4. Mit 

```
ls -l /dev/sd*
```

 siehst Du, was ich meine (vergiss aber nicht, dass das Minor Device mit %D in Hex ausgegeben wird). Bei mir gibt es keine /dev/sd* (weil ich kein SCSI habe), also musste ich in /usr/src/kernel/Documentation/devices.txt nachsehen, was die 8 bedeutet...

 *Quote:*   

> Mir gings vor allem darum, wenn ich sehe, dass auf hda1 kein Platz mehr ist, dass ich dann bei bestimmten Ordnern sehe, wo sie liegen.

 

filelight ist für solche Zwecke unübertreffbar.

 *Quote:*   

> Denn ich habe mittlerweile soviele Symlinks rumfliegen, dass ich da den Überblick verloren habe

 

readlink -f file

----------

