Объединение двух сценариев удара и использование меню

, Если единственной проблемой являются цвета в выводе 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

Теперь, все новые окна терминала (оболочки), которые вы открываете, будут иметь правильные цвета.

0
31.12.2014, 00:01
2 ответа

Полагаю, стандартный способ создания меню в 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
1
28.01.2020, 02:36

Скрипты настолько похожи, я бы объединил их в один скрипт. Это потребовало бы два аргумента: опция -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.

1
28.01.2020, 02:36

Теги

Похожие вопросы