Иногда длинный абсолютный путь, например, параметр командной строки для инструмента linux, может быть сокращен с использованием текущего рабочего каталога в качестве ссылки:
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
В этой задаче вы должны создать функцию или программу, которая получает два параметра:
- Абсолютный путь, используя формат linux (начинается с
/
) - Текущий каталог, использующий тот же формат
Вывод короче из следующего:
- Вход 1 без изменений
- Относительный путь, который относится к тому же файлу / каталогу, что и абсолютный путь
Тонкие моменты:
- Если ваша операционная система совместима с Linux, вы можете использовать текущий системный каталог, а не получать его в качестве входных данных
- Можно предположить, что входные данные содержат только буквенно-цифровые символы (и разделители пути)
- Вы можете предположить, что входной абсолютный путь не имеет разделителя пути
/
в конце - Можно предположить, что входной текущий каталог имеет разделитель пути
/
в конце - Вы не можете предполагать, что абсолютный путь относится к существующему файлу или что любая его часть является доступным каталогом; однако текущий каталог можно считать действительным
- Вы можете предположить, что ни в одном из этих путей нет символических ссылок, потому что я не хочу требовать какого-либо особого способа работы с символическими ссылками.
- Нет необходимости поддерживать случай, когда любой из входов является корневым каталогом
- «Текущий каталог» должен быть выведен как
.
(пустая строка недопустима)
Тестовые случаи (вход1, вход2, выход):
/home/user/mydir/myfile
/home/user
mydir/myfile
/var/users/admin/secret/passwd
/var/users/joe/hack
../../admin/secret/passwd
/home/user/myfile
/tmp/someplace
/home/user/myfile
/dir1/dir2
/dir1/dir2/dir3/dir4
../..
/dir1/dir2
/dir1/dir2
.
/home/test /home/user/mydir/myfile /home/test
и/a/b /a/b/d/e /a/b
/
в конце". Однако в ваших примерах это не так.