А поскольку вы находитесь в csh
, это можно очень просто записать как:
mkdir "/tmp/userid_${cwd:t}"
где из текущего каталога $cwd
мы можем получить его базовое имя с помощью модификатора :t
.
Суть в том, чтобы добавить немного больше контекста в регулярное выражение:
sed -e "s#\\(url(\\\\'\\)\\(test.png\\\\')\\)#\1/navigation/\2#g"
Также обратите внимание, что:
'
не имеет особого значения. \\
, чтобы получить один \
. Вы можете использовать [^/]
для соответствия любому символу, кроме косой черты, и использовать url(\'[^/]
в качестве шаблона в вашей команде s
. Это, конечно, уничтожит ваш первый символ, поэтому вам нужно сделать из него подвыражение \([^/]\)
, чтобы вы могли сохранить его как \1
в замене:
sed -i "s#url(\\\'\\([^/]\\)#url(\\\'/navigation/\\1#g" "main.js"
Другой попыткой было бы всегда заменить, но вернуться, если косая черта уже была:
sed -i "s#url(\\\'#url(\\\'/navigation/#g;s#navigation//##g" "main.js"