Дерево /dev
содержит узлы устройств, что дает пользовательское пространство доступ к драйверам устройств в работающем ядре вашей операционной системы.¹ Все ОС типа POSIX имеют /dev
дерево.
Дерево /proc
было создано в System V Unix, где оно давало информацию только о каждом выполняющемся процессе, используя схему /proc/$PID/stuff
. Linux значительно расширил эту схему , добавив всевозможную информацию о статусе запущенного ядра. В дополнение к этим информационным файлам, доступным только для чтения, в Linux's /proc
также есть виртуальные файлы, доступные для записи, которые могут изменить состояние работающего ядра. Операционные системы типа BSD, как правило, вообще не имеют /proc
, поэтому многое из того, что вы найдете здесь, не переносится.
Предполагаемое решение этой проблемы в Linux's /proc
- /sys
. В идеале, вся непроцессорная информация, которая попала в дерево /proc
должна была уже переместиться в /sys
, но историческая инерция сохранила много вещей в /proc
. Часто есть два способа внести изменения в работающее ядро: старый /proc
способ, сохраненный для обратной совместимости, и новый /sys
способ, который вы /sys предполагаете использовать сейчас. ²
Сноски:
Также есть несколько записей /dev
, которые не соответствуют аппаратным устройствам, таким как /dev/null
, /dev/random
и /dev/tty
. Это виртуальные устройства, которые позволяют программам пользовательского пространства взаимодействовать с другими частями ядра, кроме выполняющихся драйверов, подобно устройствам.
Как правило, /sys
более строго организованы, чем /proc
, так как /sys
зеркально отражают внутренние структуры данных ядра, которые управляют ресурсами системы, в то время как /proc
развивались органически на протяжении многих лет, и старые сомнительные конструкторские решения теперь не могут измениться, так как есть программы, использующие эти старые интерфейсы. /sys
начинали с более четкого дизайна, и не нужно таскать за собой столько исторического багажа, сколько /proc
.
Это должно быть readlink-f "1$"
. Кажется очевидным, что файл не существует – в той позиции. Сценарий восстановления работал бы, только если это, оказывается, выполняется в (рабочий каталог) $HOME/my-documents/mydir01/Trash
. Таким образом, решение должно состоять в том, чтобы добавить
cd "$HOME/my-documents/mydir01/Trash" || exit 1
вначале.