отображать цветной текст с табуляциями

Изменить:

Предполагая, что вы не можете изменить код программы, вы можете написать короткий сценарий-оболочку, который экспортирует food.sh как глобальная переменная, а затем выполнит ее.

И, если вы хотите полностью удалить зависимость каталога от этого сценария, вы также можете экспортировать сценарий оболочки. Это позволит вам запускать скрипт из любого пути в этом сеансе оболочки и всегда получать выходной файл в папке / home /

Wrapper script wrapper_food.sh :

#!/bin/bash
export mkfood="/home/shadowme/mkfood.sh"
cd /home/shadowe/testdir/
$mkfood

Вывод:

$ ls testdir
food.0.txt

Экспорт сценария оболочки:

$ export wrapper_food=/home/shadowe/wrapperfood.sh

Затем вы можете вызвать приведенный выше сценарий из любого места в той же оболочке:

$ $wrapper_food

Исходный ответ:

Вообще говоря, на ум приходят три способа избежать cd / home / перед touch :

  1. Invoke touch с полным путем к каталогу, в котором нужно создать food.txt
  2. Сохраните путь к каталогу как переменную, а затем объедините ее в touch
  3. Передайте путь к каталогу в качестве аргумента при вызове сценария sh .

Можно выбрать каждое из вышеперечисленных в зависимости от варианта использования. Например, если я хочу всегда создавать файлы в одном каталоге, я не буду использовать параметр аргумента, потому что это более длинный ввод. Вместо этого я сохраню путь как переменную.

Приведенный ниже сценарий предоставляет примеры для каждого из вышеперечисленных в порядке их упоминания.

Входные данные:

$ ./mkfood.sh /home/shadowe/testdir

Выходные данные:

$ ls /home/shadowe/testdir
food1.txt  food2.txt  food.txt

Скрипт:

#!/bin/bash

# store path as variable
dir_path="/home/shadowe/testdir"
touch $dir_path/food.txt

#direct path
touch /home/shadowe/testdir/food1.txt

# argument pass
touch $1/food2.txt

Наконец, даже если его не спрашивали, можно также передать имя файла, который будет создан, в качестве аргумента, изменив команду аргумента на коснитесь $ 1 / $ 2 . Например:

$ ./mkfood.sh /home/shadowe/testdir food2.txt
1
13.06.2015, 10:02
1 ответ

Используйте ksh ANSI strings особенность:

echo $'\033[1;31m${var[a]}\t$time\t$end\t$day\t$score\033[m'

то есть ваша строка с escape-символами ANSI, встроенными в $ '...' .

Примечание. Вам понадобится ksh93 (ksh88 не поддерживает эту функцию).

1
27.01.2020, 23:50

Теги

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