Я хочу проверить, что файл выполним или нет через командную строку, чтобы я не мог открыть файл независимо от того, является ли он исполняемым или нет.
Рекомендуемым инструментом для определения типа файла является 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
[ -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
Рекомендуемым инструментом для определения типа файла является 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
[ -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