Переход к корневому каталогу или домашнему каталогу из любого места

Невозможно контролировать процесс, проверяя его результат. По ссылке описано, как контролировать время выполнения и выполнять различные проверки.https://stackoverflow.com/questions/5161193/how-to-kill-a-child-process-after-a-given-timeout-in-bash

1
28.02.2021, 23:55
1 ответ

Если вы можете выбрать только суффикс имени файла и хотите отобразить путь, начинающийся с корневого каталога, использование достаточного количества ../— единственный способ. Невозможно «перезапустить» путь из корневого каталога на полпути. Также нет способа сослаться на домашний каталог в файле, поэтому вам нужно снова использовать что-то вроде../../../../../home/username(с достаточным количеством ../), предполагая, что домашний каталог пользователя — /home/username.

Некоторые приложения выполняют дополнительные расширения имен файлов, но это необычно. Одно расширение, которое умеренно распространено в интерактивных приложениях, — это расширение ~/в самом начале пути. Приложения командной строки не делают даже этого, потому что такое расширение — работа оболочки.

Требуемое количество ../может быть или не быть количеством компонентов пути в префиксе, которым вы не управляете, потому что символические ссылки изменяют эффективную глубину. Например, если /dir, /fooи /foo/bar— каталоги, а /foo/sym— символическая ссылка на /dir, /foo/bar/..— корневой каталог. Но если /sym— это символическая ссылка на /foo/bar, то /sym/..— это /foo,и вам нужно /sym/../.., чтобы вернуться в корневой каталог.

Слишком много ../не повредит, если только вы не столкнетесь с ограничением длины пути.

Другим потенциальным методом может быть использование символической ссылки на каталог выше. Но для этого нужно, чтобы такая символика существовала, и чтобы вы знали о ней. Точка монтирования (, например.mount --bind / /a/really/long/path/root)также может позволить вам выйти из дерева каталогов.

Обратите внимание, что мой ответ до сих пор обсуждает имена файлов. Если вы можете внедрить команду оболочки , как в eval "cat /a/really/long/path/idk/how/long/$param1", способ анализа путей не имеет значения :, просто введите специальные символы оболочки, например. установите param1на nonexistent || true; cat /the/file/I/want.

0
18.03.2021, 22:28

Теги

Похожие вопросы