shel пробелы имя файла

Elena_Biknus

как на шеле сделать чтобы имя файла с пробелами преобразовалось в имя файла со слэшами перед этими самыми пробелами?

Maverick-I

echo "aaa bbb ccc" | sed 's/ /\\ /g'

Filan

NAME="name with spaces"
echo ${NAME} | sed 's/ /\\ /g'

Filan

Так не честно - меня отвлекли!

Maverick-I

Я тут у кого-то видел "Соло на клавиатуре"...

abrek

А если NAME=" -n" ?

Filan

shelL

Maverick-I

можно просто $NAME, кстати

Filan

И чем это тебе помешает?

abrek

То, что не будет на выходе ни слешей, ни других символов

Filan

Я юзаю bash, а не sh, и там $NAME работает. Не помню поддерживает это sh, т.к. изначально была конструкция ${NAME}.

abrek

> Я юзаю bash
Так вот и проверь в оном

Filan

Добавь "-n" в исходную строку и ещё один echo в конце:
echo -n $NAME | .... ; echo
И всё у тебя получится.

Filan

Что-то ты тупишь...

abrek

> И всё у тебя получится.
Проверял?

Maverick-I

echo "$NAME"

Filan

"-n"
Нужно полюбому - если изначальная строка "-n".

Maverick-I

Я не понял о чём ты.
Но!
1. не работает
NAME=" -n"
echo $NAME | sed 's/ /\\ /g'
2. работает
NAME=" -n"
echo "$NAME" | sed 's/ /\\ /g'

Filan

1. не работает
NAME="-n"
echo "$NAME" | sed 's/ /\\ /g'
2. работает
NAME="-n"
echo -n "$NAME" | sed 's/ /\\ /g' ; echo

Maverick-I

во фре (sh) не работает. bash не проверял.
заебало, короче:
NAME="fucking shit"; perl -e "\$name='$NAME'; \$name=~s/ /\\\\ /g; print \$name.\"\n\";"
правда, я идиот?

Maverick-I

Как вариант:
NAME="любые -n"; echo "x$NAME" | sed 's/x//;s/ /\\ /g'

abrek

И опять упустил важную деталь: вместо s/x// надо s/^x//

Maverick-I

совсем не обязательно

abrek

да
но всё равно отстой - число неудачных попыток это доказывает

Maverick-I

всё дело в некорректно поставленной задаче

abrek

для корректно поставленных задач шелл как правило совсем не подходит, поэтому и отстой
Оставить комментарий
Имя или ник:
Комментарий: