, Если единственной проблемой являются цвета в выводе ls
, легко зафиксировать. Просто установить свое собственное переменная LS_COLORS
, и это переопределит что-либо еще. Так, для запуска работайте
dircolors -p > ~/.mycolors
, Который распечатает значения по умолчанию в новый файл, названный .mycolors
в вашем $HOME
каталог. Обратить внимание, что это выберет цвета по умолчанию от вашей текущей среды. Вы, возможно, должны были бы отредактировать этот файл и изменить цвета. Например, чтобы заставить каталоги казаться голубыми, найдите строку, запускающуюся с DIR
в .mycolors
, и установите его в:
DIR 01;34
Несколько доступных цветов ( от TLDP):
Black 0;30 Dark Gray 1;30
Blue 0;34 Light Blue 1;34
Green 0;32 Light Green 1;32
Cyan 0;36 Light Cyan 1;36
Red 0;31 Light Red 1;31
Purple 0;35 Light Purple 1;35
Brown 0;33 Yellow 1;33
Light Gray 0;37 White 1;37
Затем скажите вашей оболочке загружать тот файл. Принятие вы используете удар, добавляет эта строка к вашему ~/.bashrc
:
dircolors -b ~/.mycolors > /dev/null
Теперь, все новые окна терминала (оболочки), которые вы открываете, будут иметь правильные цвета.
Полагаю, стандартный способ создания меню в CLI - выбрать
:
select response in "Folder 1" "Folder 2"
do
case $response in
"Folder 1") cd folder1; /path/to/ScriptA.sh; exit ;;
"Folder 2") cd folder2; /path/to/ScriptB.sh; exit ;;
esac
done
Скрипты настолько похожи, я бы объединил их в один скрипт. Это потребовало бы два аргумента: опция -TAR
или -CSV
, чтобы указать, как файлы должны быть расширены, и имя каталога для откуда к CD
MODE=$1
FOLDER=$2
DATE_LOG=`date "+%Y-%m-%d-%H:%M:%S"`
LOG_FILE=/home/kamil/Desktop/Script/log_$DATE_LOG.txt
case "$mode" in
-tar) SUFFIX=tar.gz
CMD="tar -xvf"
;;
-csv) SUFFIX=csv
CMD="cat"
;;
*) echo Invalid mode "$mode" >&2; exit 1 ;;
esac
if ! cd "$FOLDER"
then echo "Bad folder $FOLDER" >&2
exit 1
fi
for file in *.SUFFIX; do
contents=`$CMD $file`
echo -n "$contents" "|" | sed -r 's/(.*)_[0-9]{8}_[0-9][0-9]-[0-9][0-9].[0-9][0-9].csv/\1/'
head -1 "$contents"
done | tee $LOG_FILE
Вещи, которые вы делаете в для цикла
, не выглядят правильно, я подозреваю, что это больше ошибок копирования. Надеюсь, вы сможете выяснить, как соответствовать тому, что вы на самом деле делаете в вышеуказанной структуре. Общая идея состоит в том, чтобы найти все места, где два сценария отличаются, и помещают их в переменные, которые устанавливаются в выписке
. Возможно, вы не сможете сделать все с помощью простых переменных замещений, таких как я, возможно, вам может понадобиться , если
также.
Это называется принцип сухого .
Если папки всегда одинаковы в зависимости от режима, вы можете поместить присвоение папку
в оператор CASE
, а не требовать его в командной строке. Вы также можете заменить опцию командной строки с меню, как в ответе Muru.