Ваш внешний диск, скорее всего, отформатирован NTFS или FAT32. Эти файловые системы не поддерживают разрешения файлов Linux.
У вас есть по крайней мере пять параметров:
Просто скопируйте его на рабочий стол (или в свою домашнюю папку) и установите разрешения для этого файл. Сохраните данные на нем и переформатируйте диск в файловую систему ext4. Это можно сделать с помощью Disk Utility или GParted. Выполнить файл с помощью программы, открыть терминал и запустить: для сценариев Bash: bash /path/to/your/file.sh для скриптов Python: python /path/to/your/file.py для скриптов Perl: perl /path/to/your/file.pl для исполняемых файлов Windows: wine /path/to/your/file.exe для 32-битных двоичных файлов: /lib/ld-linux.so.2 /path/to/your/file для 64-разрядных двоичных файлов: /lib/ld-linux-x86-64.so.2 /path/to/your/file Скопируйте файл на компьютер (например, домашнюю папку), установите бит выполнения и запустите его. (это не может быть сделано для всех файлов) (возможно, опасно). Установите раздел с битом выполнения, установленным для всех файлов. Для этого выполните следующие действия: Установите раздел (например, открыв его в браузере файлов). Откройте терминал и запустите:sudo mount -o remount,fmask=027 /media/YOURDRIVE
Если вы не можете писать / получать доступ к файлам, запустите команду с ,uid=$(id -u) после fmask=022 : sudo mount -o remount,fmask=027,id=$(id -u) /media/YOURDRIVE
«Возможно, опасно», потому что вы предоставляете разрешения на выполнение для всех файлов, используйте этот параметр только в том случае, если другие методы не работают. Конвенция.
$$: Расширяется до идентификатора процесса оболочки. В () подоболочке она расширяется до идентификатора процесса вызывающей оболочки, а не подоболочки (см. Ссылку на руководство ниже).
rinzwind@schijfwereld:~$ echo $$
3244
rinzwind@schijfwereld:~$ ps -ef |grep 3244
rinzwind 3244 3237 0 19:06 pts/0 00:00:00 /bin/bash
Очень полезно при программировании программного обеспечения. И он может использоваться как грубый (mktemp был бы лучшим способом) способ создания временных файлов
1 $ не имеет особого значения, поэтому он дает вам то, что всегда делает эхо: верните его.
Для этого есть страница руководства (3.4.2 Специальные параметры).
Конвенция.
$$: Расширяется до идентификатора процесса оболочки. В () подоболочке она расширяется до идентификатора процесса вызывающей оболочки, а не подоболочки (см. Ссылку на руководство ниже).
rinzwind@schijfwereld:~$ echo $$
3244
rinzwind@schijfwereld:~$ ps -ef |grep 3244
rinzwind 3244 3237 0 19:06 pts/0 00:00:00 /bin/bash
Очень полезно при программировании программного обеспечения. И он может использоваться как грубый (mktemp был бы лучшим способом) способ создания временных файлов
1 $ не имеет особого значения, поэтому он дает вам то, что всегда делает эхо: верните его.
Для этого есть страница руководства (3.4.2 Специальные параметры).
Конвенция.
$$: Расширяется до идентификатора процесса оболочки. В () подоболочке она расширяется до идентификатора процесса вызывающей оболочки, а не подоболочки (см. Ссылку на руководство ниже).
rinzwind@schijfwereld:~$ echo $$
3244
rinzwind@schijfwereld:~$ ps -ef |grep 3244
rinzwind 3244 3237 0 19:06 pts/0 00:00:00 /bin/bash
Очень полезно при программировании программного обеспечения. И он может использоваться как грубый (mktemp был бы лучшим способом) способ создания временных файлов
1 $ не имеет особого значения, поэтому он дает вам то, что всегда делает эхо: верните его.
Для этого есть страница руководства (3.4.2 Специальные параметры).
В bash для использования с использованием переменной мы используем $, используя $$ с первым знаком доллара, мы говорим, что я хочу использовать переменную и используя вторую, мы говорим, что имя этой переменной фактически $. это действительно соглашение об именах, и эта переменная содержит идентификатор процесса текущей оболочки.
Как вы просили в комментариях с $$$$, вы дважды возвращаете один и тот же идентификатор процесса.
Существуют и другие переменные (отсюда):
$1, $2, $3, ... являются позиционными параметрами , "$@" представляет собой массивную конструкцию всех позиционных параметров {$1, $2, $3 ...}. "$*" - это IFS-расширение всех позиционных параметров $1 $2 $3 .... $# - количество позиционных параметров. $- текущие параметры, установленные для оболочки. $$ pid текущей оболочки (не подоболочки). $_ самый последний параметр (или путь абзаца команды для запуска текущей оболочки сразу после запуска). $IFS является разделителем полей (ввода). $? является последним статусом выхода из проекта переднего плана. $! - это PID самой последней фоновой команды. $0 - это имя оболочки или сценария оболочки.Вот реальное приложение $$, взятое из таймера блокировки экрана:
# Check if lock screen timer already running
pID=$(pgrep -f "${0##*/}") # All PIDs matching lock-screen-timer name
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy ($$$)
if [ "$PREVIOUS" != "" ]; then
kill "$PREVIOUS"
rm ~/.lock-screen-timer-remaining
zenity --info --title="Lock screen timer already running" --text="Previous lock screen timer has been terminated."
fi
В этом фрагменте кода строка:
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy
использует текущий запуск process ($$), чтобы удалить его (обозначенный не -v) из списка всех процессов, работающих под тем же именем (lock-screen-timer в этом случае).
Если был предыдущий запуск копия кода убивает его и удаляет рабочий файл, который он использовал.
В bash для использования с использованием переменной мы используем $, используя $$ с первым знаком доллара, мы говорим, что я хочу использовать переменную и используя вторую, мы говорим, что имя этой переменной фактически $. это действительно соглашение об именах, и эта переменная содержит идентификатор процесса текущей оболочки.
Как вы просили в комментариях с $$$$, вы дважды возвращаете один и тот же идентификатор процесса.
Существуют и другие переменные (отсюда):
$1, $2, $3, ... являются позиционными параметрами , "$@" представляет собой массивную конструкцию всех позиционных параметров {$1, $2, $3 ...}. "$*" - это IFS-расширение всех позиционных параметров $1 $2 $3 .... $# - количество позиционных параметров. $- текущие параметры, установленные для оболочки. $$ pid текущей оболочки (не подоболочки). $_ самый последний параметр (или путь абзаца команды для запуска текущей оболочки сразу после запуска). $IFS является разделителем полей (ввода). $? является последним статусом выхода из проекта переднего плана. $! - это PID самой последней фоновой команды. $0 - это имя оболочки или сценария оболочки.Вот реальное приложение $$, взятое из таймера блокировки экрана:
# Check if lock screen timer already running
pID=$(pgrep -f "${0##*/}") # All PIDs matching lock-screen-timer name
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy ($$$)
if [ "$PREVIOUS" != "" ]; then
kill "$PREVIOUS"
rm ~/.lock-screen-timer-remaining
zenity --info --title="Lock screen timer already running" --text="Previous lock screen timer has been terminated."
fi
В этом фрагменте кода строка:
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy
использует текущий запуск process ($$), чтобы удалить его (обозначенный не -v) из списка всех процессов, работающих под тем же именем (lock-screen-timer в этом случае).
Если был предыдущий запуск копия кода убивает его и удаляет рабочий файл, который он использовал.
В bash для использования с использованием переменной мы используем $, используя $$ с первым знаком доллара, мы говорим, что я хочу использовать переменную и используя вторую, мы говорим, что имя этой переменной фактически $. это действительно соглашение об именах, и эта переменная содержит идентификатор процесса текущей оболочки.
Как вы просили в комментариях с $$$$, вы дважды возвращаете один и тот же идентификатор процесса.
Существуют и другие переменные (отсюда):
$1, $2, $3, ... являются позиционными параметрами , "$@" представляет собой массивную конструкцию всех позиционных параметров {$1, $2, $3 ...}. "$*" - это IFS-расширение всех позиционных параметров $1 $2 $3 .... $# - количество позиционных параметров. $- текущие параметры, установленные для оболочки. $$ pid текущей оболочки (не подоболочки). $_ самый последний параметр (или путь абзаца команды для запуска текущей оболочки сразу после запуска). $IFS является разделителем полей (ввода). $? является последним статусом выхода из проекта переднего плана. $! - это PID самой последней фоновой команды. $0 - это имя оболочки или сценария оболочки.Вот реальное приложение $$, взятое из таймера блокировки экрана:
# Check if lock screen timer already running
pID=$(pgrep -f "${0##*/}") # All PIDs matching lock-screen-timer name
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy ($$$)
if [ "$PREVIOUS" != "" ]; then
kill "$PREVIOUS"
rm ~/.lock-screen-timer-remaining
zenity --info --title="Lock screen timer already running" --text="Previous lock screen timer has been terminated."
fi
В этом фрагменте кода строка:
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy
использует текущий запуск process ($$), чтобы удалить его (обозначенный не -v) из списка всех процессов, работающих под тем же именем (lock-screen-timer в этом случае).
Если был предыдущий запуск копия кода убивает его и удаляет рабочий файл, который он использовал.