Попробуйте ls -l / tmp / lijunda
, и вы увидите только имена файлов внутри - вы не сможете ни открывать файлы, ни даже видеть размер файла, разрешения и т. д. для файлов в этом каталоге.
Это потому, что сам каталог содержит только имена файлов и номера inode - и все.
Доступ для чтения к именам файлов контролируется разрешением на чтение.
Доступ к индексным дескрипторам , на которые указывает каталог, управляется разрешением на выполнение, а не разрешением на чтение. Inodes содержат все фактические данные о файле, такие как размер файла, владелец, разрешения, время последнего изменения и физическое расположение (на вашем физическом жестком диске) двоичных данных, которые составляют содержимое файла.
Чтобы просмотреть имена файлов в каталоге , вам необходимо разрешение на чтение в каталоге. Для этого вам не нужны разрешения на выполнение или запись.
Для просмотра подробностей файлов в каталоге , то есть для просмотра содержимого inode - вам необходимы разрешения на выполнение в каталоге. Разрешение на чтение в каталоге не имеет значения для просмотра сведений о файле , если вы уже знаете имя файла.
Чтобы просмотреть сведения о файлах , имена которых вы еще не знаете, , вам необходимо прочитать и разрешения на выполнение.
И, наконец, , чтобы просмотреть содержимое файла , вам потребуются:
См., Например, ниже.
$ whoami
vagrant
$ ls -l
total 12
drwxrwx--x 2 pete pete 4096 Dec 24 08:51 execute_only
drwxrwxr-x 2 pete pete 4096 Dec 24 08:52 read_and_execute
drwxrwxr-- 2 pete pete 4096 Dec 24 08:52 read_only
$ ls -l read_only/
ls: cannot access read_only/mysterious_file: Permission denied
total 0
-????????? ? ? ? ? ? mysterious_file
$ cat read_only/mysterious_file
cat: read_only/mysterious_file: Permission denied
$ ls -l execute_only/
ls: cannot open directory execute_only/: Permission denied
$ ls -l execute_only/unicorn_file
-rw-rw-r-- 1 pete pete 55 Dec 24 08:51 execute_only/unicorn_file
$ cat execute_only/unicorn_file
This file only exists for you if you know it's here ;)
$ ls -l read_and_execute/
total 4
-rw-rw-r-- 1 pete pete 83 Dec 24 08:52 jack_sparrow
$ cat read_and_execute/jack_sparrow
"After the reading, you will be executed."
"That's *Captain* Jack Sparrow to you!"
$
* Вам также потребуются разрешения на выполнение для всех родительских каталогов вплоть до корневого, кстати.
Я подозреваю, что вы ищете
myprogram "$(python x.py)"
Это возьмет выходные данные скрипта и использует их в качестве первого аргумента для myprogram
(argv[1]
).
Чтобы использовать содержимое файла в качестве первого аргумента для myprogram
, cat
вместо файла:
myprogram "$(cat file)"