Нужно: с помощью утилиты dialog, на языке shell построить меню, которое работает с файловой системой и выполняет функции: удаление, создание,перемещение,переименование файла.
Пытаюсь пока реализовать хотя бы одну из функций, но при выполнении команды, например копирования файла вылезает ошибка, что файла такого в каталоге не имеется. И показывается адрес этого файла, который я выбираю, и к этому адресу спереди приплюсованы еще какие-то странные символы типа: "/033[" и так далее, а потом адрес моего файла. Где-то цепляются эти символы.
В чем моя ошибка? не так передаю адрес файла?#!/bin/bash
DIALOG=${DIALOG=dialog}
HOME=/home/fzo
FILE=$HOME
for n in .cshrc .profile .bashrc
do
if test -f $HOME/$n ; then
FILE=$HOME/$n
break
fi
done
FILE=`$DIALOG --stdout --title "Please choose a file" --fselect ${FILE} 14 48`
case $? in
0)
tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15
$DIALOG --clear --title "File_system" \
--menu "Choose option:" 20 51 2 \
"Rename" "" \
"Delete" "" 2> $tempfile
retval=$?
choice=`cat $tempfile`
if test [Rename=$tempfile] ; then
tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15
$DIALOG --title "Ввод данных" --clear \
--inputbox "Input new filename:" 16 51 2> $tempfile
retval=$?
filnam=`cat $tempfile`
cp -a $FILE $filnam
fi
;;
1)
echo "Cancel pressed." ;;
255)
echo "Box closed.";;
esac
> странные символы типа: "/033["Это ESC[ - стандартный управляющий символ терминала, который используется для управления цветами, миганием и прочей ботвой. Откуда он берется - как-то лениво выяснять.
Попробуйте натыкать в скрипт разной отладки, вроде
. . . . .
doneFILE=`$DIALOG --stdout --title "Please choose a file" --fselect ${FILE} 14 48`
### DEBUGGING ###
echo " '$FILE' "
case $? in
. . . . .
Добрый совет: вместо вызова сабшелла через классику `command -arg` пользуйтесь современным синтаксисом $(command -arg) - гораздо лучше видно, где и что сабшеллится.
И все переменные надо переписать исключительно в таком виде
"${VAR}"
Может у тебя alias на команду cat?
вот в таком виде отработало без проблем
$dialog --title "Ввод данных" --clear --inputbox "Input new filename:" 16 51 2> tempfile
$cat tempfile
$cat -tv tempfile - тоже не показал ничего лишнегопокажи вывод команды alias