The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Как получить полный путь вышестоящей директории?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Как получить полный путь вышестоящей директории?"  +/
Сообщение от universite (ok) on 08-Июн-17, 19:01 
Сабж

Пока сделано так, ибо tar не понимает путей с /../ внутри...


dir="/tmp/sdaf/dsg/dg/df/gd/hf/d"
cd $dir/.. && dir2="$(pwd)"

Где-то видел вариант с awk, но не могу найти...

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Как получить полный путь вышестоящей директории?"  +/
Сообщение от Аноним (??) on 08-Июн-17, 19:57 
> Сабж
> Пока сделано так, ибо tar не понимает путей с /../ внутри...
>
 
> dir="/tmp/sdaf/dsg/dg/df/gd/hf/d"
> cd $dir/.. && dir2="$(pwd)"
>

> Где-то видел вариант с awk, но не могу найти...

man realpath

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Как получить полный путь вышестоящей директории?"  +/
Сообщение от universite (ok) on 08-Июн-17, 20:03 
>> Сабж
>> Пока сделано так, ибо tar не понимает путей с /../ внутри...
>>
 
>> dir="/tmp/sdaf/dsg/dg/df/gd/hf/d"
>> cd $dir/.. && dir2="$(pwd)"
>>

>> Где-то видел вариант с awk, но не могу найти...
> man realpath

1) чем realpath лучше pwd ?
2) мне надо текстовая операция над переменной - полным путем директории.


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Как получить полный путь вышестоящей директории?"  +/
Сообщение от Led (ok) on 08-Июн-17, 20:39 
man 1 dirname

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Как получить полный путь вышестоящей директории?"  +/
Сообщение от Аноним (??) on 09-Июн-17, 01:11 
>>> Сабж
>>> Пока сделано так, ибо tar не понимает путей с /../ внутри...
>>>
 
>>> dir="/tmp/sdaf/dsg/dg/df/gd/hf/d"
>>> cd $dir/.. && dir2="$(pwd)"
>>>

>>> Где-то видел вариант с awk, но не могу найти...
>> man realpath

дык ты сразу говори что это тебя какая-то хрень, а не реальный путь на фс

всё таки ман почитай, realpath тебе отдаст реальный абсолютный путь без точек

если путь таки существует на тазике так как ты делаешь в него cd - дарю:

 
dir="/tmp/sdaf/dsg/dg/df/gd/hf/d"
echo $(realpath $dir/../)

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Как получить полный путь вышестоящей директории?"  +/
Сообщение от universite (ok) on 09-Июн-17, 03:58 
Как-то так:


dir="/tmp/sdaf/dsg/dg/df/gd/hf/d"
dir2="$(echo $dir | awk -F/ '{ for (i = 1; i < NF; i++) printf  $i"/"; }')"

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Как получить полный путь вышестоящей директории?"  +/
Сообщение от universite (ok) on 09-Июн-17, 04:03 
> man 1 dirname

да, подходит, при существовании реальных директорий.


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Как получить полный путь вышестоящей директории?"  +/
Сообщение от Аноним (??) on 09-Июн-17, 07:14 
> да, подходит, при существовании реальных директорий.

При не существовании тоже:

$ dirname /tmp/sdaf/dsg/dg/df/gd/hf/d
/tmp/sdaf/dsg/dg/df/gd/hf
$
$ ls /tmp/sdaf/dsg/dg/df/gd/hf
ls: невозможно получить доступ к /tmp/sdaf/dsg/dg/df/gd/hf: Нет такого файла или каталога

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Как получить полный путь вышестоящей директории?"  +/
Сообщение от Andrey Mitrofanov on 09-Июн-17, 09:16 
> Как-то так:
>
 
> dir="/tmp/sdaf/dsg/dg/df/gd/hf/d"
> dir2="$(echo $dir | awk -F/ '{ for (i = 1; i <
> NF; i++) printf  $i"/"; }')"
>

+

${dir%/*}   # косячит с / в конце

dir2="$(dirname "${dir}")"

dirn() { echo "${1%/?*}"; }
dir2="$(dirn "${dir}")"

dir2="${dir%/?*}"

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "Как получить полный путь вышестоящей директории?"  +/
Сообщение от михалыч (ok) on 09-Июн-17, 10:03 
> ${dir%/*}   # косячит с / в конце

да-да, хардкор никто не отменял ))

dir="/tmp/sdaf/dsg/dg/df/gd/hf/d"
dir2="${dir%/*}/"

чуть про sed не забыл!
sed 's|\(.*/\).*$|\1|'
но в "попугаях" длиннее ))

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor