open(1)
символьная ссылка на openvt(1)
, для которого описание, "запускают программу на новом виртуальном терминале". Чтобы сделать это, этому нужен доступ к консольному устройству для открытия виртуального терминала. Это маловероятно программа, которую Вы ищете.
Системы Debian имеют дженерик edit
управляйте, чтобы можно было использовать для редактирования файла. Иначе выберите определенного редактора, с которым Вы хотите использовать и вызвать это .bash_profile
.
Я предполагаю, что Вы хотите переименовать файл, а также переместить его.
Используя мой исходный сценарий как основа, измените эту часть сценария:
if [ "$NumFolders" -eq 1 ] ; then
mv "$ParentFolder/$FileToMove" "$TargetFolder/"
else
к чему-то вроде этого:
if [ "$NumFolders" -eq 1 ] ; then
NewFileName=$(echo "$FileToMove" | sed -E -e 's/_zz[0-9]+\././')
mv "$ParentFolder/$FileToMove" "$TargetFolder/$NewFileName"
else
Переводя regex в подробный английский язык, sed сценарий здесь заменяет "первое вхождение во входной строке '_zz сопровождаемый одной или несколькими цифрами, сопровождаемыми литеральной точкой'" только с точкой.
т.е. как ответ Ben это не сделает правильной вещи с файлом, который имеет два или больше '_zz20...' последовательности в нем. Достаточно легкий заменить его regexp Birei (кроме избавляются от слова 'пустой указатель' между \1 и \2, это заменит его литеральной строкой 'пустой указатель'):
NewFileName=$(echo "$FileToMove" | sed -E -e 's/^(.*)zz[0-9]+(\.pdf)$/\1\2/')
BTW, это, возможно, было сделано с одной строкой и без временной переменной ($NewFileName), но легче понять этот путь.
Если я понимаю Ваш вопрос, Вы не хотите извлекать что-либо, только заменять литеральной строкой zz20
с null
.Односторонняя дорога:
FolderNo=$(echo "$FileToMove" | sed -r -e 's/^(.*)zz[0-9]+(\.pdf)$/\1null\2/')
Это сохраняет в группе 1 все символы до zz20
и в группе 2 все символы после соответствия. Единственные символы, не сохраненные, будут zz20
это потеряют и заменят с null
.
Если Вы означаете заменять понятием пустого указателя, а не текстом "пустой указатель", Вы могли использовать это:
$ FolderNo=$(sed 's/_zz20//' <<< "2012-09-01 Home insurance quote_zz20.pdf")
$ echo $FolderNo
2012-09-01 Home insurance quote.pdf
Это заменит первое вхождение _zz20
ни с чем. Это вызвано тем, что вторая часть аргумента sed пуста (s/search/replace/
=> s/_zz20//
).
Мой пример не так осторожен как тот, который Вы цитируете, и один @Birei предлагает. Если какой-либо из Ваших файлов будет иметь несколько строк '_zz20', то вещи не получатся хорошо.