Форум русскоязычного сообщества Ubuntu


Автор Тема: Bash, в чём разница между test -e и -f  (Прочитано 561 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Electricity

  • Автор темы
  • Участник
  • *
  • Сообщений: 191
    • Просмотр профиля
Bash, в чём разница между test -e и -f
« : 18 Ноябрь 2016, 14:03:40 »
Здравствуйте.

Примерно так везде написано:
-e    Возвращает значение если файл существует
-f    Возвращает значение если файл существует и это обычный файл

В чём эта обычность заключается?

У меня -f истину выдаёт если это линк.
Kubuntu 17.10 amd64, Qt: 5.9.1, KDE Frameworks: 5.38.0, plasmashell 5.10.5

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5659
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Bash, в чём разница между test -e и -f
« Ответ #1 : 18 Ноябрь 2016, 14:18:16 »
Ну Вы сами почти ответили
Цитата: help test
      -a FILE        True if file exists.
      -b FILE        True if file is block special.
      -c FILE        True if file is character special.
      -d FILE        True if file is a directory.
      -e FILE        True if file exists.
      -f FILE        True if file exists and is a regular file.
      -g FILE        True if file is set-group-id.
      -h FILE        True if file is a symbolic link.
      -L FILE        True if file is a symbolic link.
      -k FILE        True if file has its `sticky' bit set.
      -p FILE        True if file is a named pipe.

В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Electricity

  • Автор темы
  • Участник
  • *
  • Сообщений: 191
    • Просмотр профиля
Re: Bash, в чём разница между test -e и -f
« Ответ #2 : 18 Ноябрь 2016, 14:29:27 »
Что значит регулярный файл?
Kubuntu 17.10 amd64, Qt: 5.9.1, KDE Frameworks: 5.38.0, plasmashell 5.10.5

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5659
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Bash, в чём разница между test -e и -f
« Ответ #3 : 18 Ноябрь 2016, 20:13:24 »
Исходя из того что все в Линукс файл, то обычный — это не блочное устройство, не конвейер, не директория, не спец.файл…
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Alie Alexandross

  • Старожил
  • *
  • Сообщений: 1580
    • Просмотр профиля
Re: Bash, в чём разница между test -e и -f
« Ответ #4 : 19 Ноябрь 2016, 06:56:49 »
hard и sym link на regular file тоже проходят проверку
test -fПолучается:
-f FILE        True if file exists and is a regular file. or a link to existing regular file.
Подпись автора jillsmitt истинна...

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5659
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Bash, в чём разница между test -e и -f
« Ответ #5 : 19 Ноябрь 2016, 11:16:28 »
Alie Alexandross, уточню:
  • hard-link это и есть сам файл, просто их(ссылок) может быть несколько (но как минимум 1), но они ссылаются на одну и ту же дисковую область с данными.
  • sym-link по своей структуре и есть файл в котором просто прописана ссылка на hard-link, т.е. путь к ней
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Electricity

  • Автор темы
  • Участник
  • *
  • Сообщений: 191
    • Просмотр профиля
Re: Bash, в чём разница между test -e и -f
« Ответ #6 : 19 Ноябрь 2016, 17:03:27 »
Теперь ясно, спасибо
Kubuntu 17.10 amd64, Qt: 5.9.1, KDE Frameworks: 5.38.0, plasmashell 5.10.5

Оффлайн Alie Alexandross

  • Старожил
  • *
  • Сообщений: 1580
    • Просмотр профиля
Re: Bash, в чём разница между test -e и -f
« Ответ #7 : 20 Ноябрь 2016, 02:05:44 »
..
ЕМНИП link не считается regular file.
Подпись автора jillsmitt истинна...

 

Страница сгенерирована за 0.064 секунд. Запросов: 24.