Tuve el mismo problema en algunas de mis máquinas :Era como si Linux no se diera cuenta de que había agregado intercambio.
La solución :Actualice el kernel de 3.x a 4.x.
De man bash
en el párrafo de expresiones condicionales:
-x file
True if file exists and is executable.
Entonces, puedes usar:
[ -x /usr/bin/xeyes ] && echo "File is executable" || echo "File is not an executable or does not exist"
Если вы не знаете путь к команде, вы можете использовать which
, чтобы проверить, где она находится (, конечно, если она у вас есть в $PATH ). Если вы знаете путь к командному файлу, используйте оператор if -x /path/to/command
.
Если вы знаете, где хранится двоичный файл команды, просто выполните ls -l
. Если вы не знаете местоположение, сначала узнайте местоположение с помощью команды which
$ which xeyes
/usr/bin/xeyes
Если для команды установлено разрешение на выполнение (x
), она является исполняемой.
$ ls -l /usr/bin/
-rw-rw-r-- 1 arushirai arushirai 0 May 23 11:58 123
-rwxrwxr-x 1 arushirai arushirai 0 May 23 11:58 xeyes
-x <filename>
фактически проверяет, есть ли у файла права на выполнение
Пояснение:
Первый столбец ls -l показывает права доступа к файлу.
-rwxrwxr-x
-rwxrwxr-x
type of file
(-
для обычного файла)owner
разрешение(rwx
:чтение, запись и выполнение)group
разрешение(rwx
:чтение, запись и выполнение)other
разрешение(r-x
:разрешение на чтение и выполнение)Для получения дополнительной информации о правах доступа к файлам см.:https://wiki.archlinux.org/index.php/File_permissions_and_attributes