Bash Czy plik jest tekstowy

XX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0

Problem jest tego typu że skrypt ma stwierdzić czy plik podany w argumencie jest tekstowy jak tak to wyświetlić 10 linii od początku i od końca.
Moje pytanie brzmi: Jak określić czy plik jest tekstowy i użyć tego do konstrukcji warunku.

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
2

Odpowiedź ogólna:

Możesz przyjąć, że się nie da. Alternatywnie, możesz sprawdzić, czy te 10 linii na początku zawiera tylko znaki drukowalne, w przeciwnym wypadku przyjąć, że jest to plik binarny.

Odpowiedź mniej więcej prawidłowa:

Sprawdź MIME. Jeśli to text/* to jest to plik tekstowy, jednak bywają wyjątki (np. application/javascript lub application/xml).

Phestek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 89
0

Użyj polecenia file. Output możesz sobie zgrepować i porównywać w if'ie.

PI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 227
1
Kopiuj
#!/bin/bash
if  file "$1" | grep -q text$ ;
then

        echo "to tekst";
else
    # jesli nie to...
        echo "to nie tekst";
fi
XX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0

Dziękuję bardzo za pomoc i wskazówki udało się :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.