Как проверить, является ли файл исполняемым или нет? [dубликат]

У этого вопроса уже есть ответ здесь: Как пометить файл как исполняемый файл на Xubuntu? 2 ответа

Я хочу проверить, что файл выполним или нет через командную строку, чтобы я не мог открыть файл независимо от того, является ли он исполняемым или нет.

0
задан 1 June 2017 в 17:41

4 ответа

Рекомендуемым инструментом для определения типа файла является file.

Пример исполняемого файла.

$ file c.sh a.out c.sh: Bourne-Again shell script, ASCII text executable a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=a741679fcc57d5dafa76025d943090fdf614b7e2, not stripped
2
ответ дан 18 July 2018 в 12:21

[ -r file ] проверяет, доступен ли файл. [ -w file ] проверяет, может ли файл записываться. [ -x file ] проверяет, является ли файл исполняемым.

if [ -x file ]; then ./file else echo "File is not executable" fi

Попробуйте это с помощью простого примера:

#!/bin/bash touch testfile test -x testfile && echo true || echo false # --> false chmod +x testfile test -x testfile && echo true || echo false # --> true rm testfile
3
ответ дан 18 July 2018 в 12:21

Рекомендуемым инструментом для определения типа файла является file.

Пример исполняемого файла.

$ file c.sh a.out c.sh: Bourne-Again shell script, ASCII text executable a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=a741679fcc57d5dafa76025d943090fdf614b7e2, not stripped
2
ответ дан 24 July 2018 в 19:57
  • 1
    не дает мне необходимой информации: touch test; file test; --> test:empty chmod +x test; file test --> test: empty – RoVo 1 June 2017 в 18:07
  • 2
    Вы неправы. На страницах man: chmod - change file mode bits. Конечно, если вы используете chmod +x, вы можете сделать исполняемый файл. Если вы проверите это, вы сделаете круговое рассуждение. Но без изменения файла вы можете определить тип файла с помощью команды file или как написано на страницах man: file — determine file type. – John Goofy 1 June 2017 в 18:24
  • 3
    Что я показал с моим примером, так это то, что вывод файла НЕ меняется после chmod + x ... – RoVo 1 June 2017 в 18:44
  • 4
    Разумеется, ваши круговые рассуждения прекрасно работают, если я использую ваш сценарий bash, а строка 5 завершит круговые рассуждения. Если вы не любите читать man-страницы, я просто копировал главные заголовки для вас, но вы можете получить причудливую информацию об определении типа файла здесь: lifewire.com/file-linux-command-unix-command -4097142 – John Goofy 1 June 2017 в 18:52
  • 5
    Кто хочет узнать тип файла? Op хочет знать, является ли исполняемый файл. И файл для этого не работает. – RoVo 1 June 2017 в 18:53

[ -r file ] проверяет, доступен ли файл. [ -w file ] проверяет, может ли файл записываться. [ -x file ] проверяет, является ли файл исполняемым.

if [ -x file ]; then ./file else echo "File is not executable" fi

Попробуйте это с помощью простого примера:

#!/bin/bash touch testfile test -x testfile && echo true || echo false # --> false chmod +x testfile test -x testfile && echo true || echo false # --> true rm testfile
3
ответ дан 24 July 2018 в 19:57

Другие вопросы по тегам:

Похожие вопросы: