Рейтинг:3

Как добавить дату и текст в файл в качестве псевдонима?

флаг pl

Я хочу создать псевдоним для добавления датированной заметки к файлу. (Случай использования, который я хочу воспроизвести: Себастьян Дашнер - Как эффективно делать заметки в качестве разработчика.

Пока мне удалось добавить дату, но я не могу найти способ добавить дату и примечание из пользовательского ввода.

Применение

добавить в файл «мой текст»

Ожидаемый результат в файл.txt

2021-08-30 : немного предыдущего текста
2021-09-01 : мой текст

Псевдоним, который я написал до сих пор

псевдоним append-to-file='tee -a file.txt <<< $(echo $(date -I) :)'
sudodus avatar
флаг jp
Это простая заметка, которую вы можете ввести с помощью простой команды `read`, или вам нужен текстовый редактор для создания заметки?
Рейтинг:4
флаг cn

Вы можете сделать это с помощью небольшого скрипта. Один из способов может быть:

#!/бин/баш
эхо "$(дата -I): $@" >> файл.txt
хвост -n 1 файл.txt

$@ переменная обозначает все, что вы ввели в командной строке. хвост Команда выведет на экран последнюю строку файла.

Сохраните этот скрипт у себя ~/бен или в вашем .local/bin каталог как добавить в файл. Создайте каталог, если он не существует. В следующий раз, когда вы войдете в систему, любой из этих каталогов будет включен в ваш PATH. Затем вы можете ввести команду в любое время. То, что вы вводите, будет сохранено в файле файл.txt в текущем рабочем каталоге.

флаг pl
Спасибо за Ваш быстрый ответ. Я написал скрипт и добавил его в путь. Затем я создал псевдоним для его вызова. Я сделаю его более общим позже, если это необходимо (первый аргумент для пути к целевому файлу и другие аргументы для содержимого)
vanadium avatar
флаг cn
Если вам нравятся псевдонимы, то можете, конечно ;) Я бы просто дал самому скрипту короткое имя. Псевдонимы в основном предназначены для добавления опций по умолчанию к команде или имеют варианты (например, `alias ls='ls --color=auto'`, `alias la='ls -A'`). Для любого исполняемого файла, которого нет в пути, более удобно создавать ссылку в папке в пути, чем помещать его в псевдоним (что можно сделать).
Рейтинг:4
флаг hr

Если вам нужно что-то, чему вы можете передать текстовое сообщение в качестве аргумента, вам следует смотреть на функцию оболочки, а не на псевдоним.

Вы можете рассмотреть возможность использования утилиты ts (timestamp) из пакета moreutils:

добавить в файл () { printf '%s\n' "$*" | ts '%Y-%m-%d :' >> /path/to/myfile.txt ; }

Если тс это не вариант, ты может вставить текст в строку формата датировать команда, но вам нужно быть осторожным с % символы:

добавить в файл () { msg="$*"; date "+%Y-%m-%d : ${msg//%/%%}" >> /path/to/myfile.txt ; }

или же (спасибо @bac0n) возможно, безопаснее использовать bash printf собственные возможности форматирования времени функции - нет необходимости заменять %s в этом методе, так как сообщение передается как строковый аргумент, а не внедряется в строку формата:

добавить к файлу () { printf '%(%Y-%m-%d)T : %s\n' -1 "$*" >> /path/to/myfile.txt; }

Если вы хотите, чтобы он также отображался на терминале, замените >> с | тройник -а

Ответить или комментировать

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