Все в ~/.profile
и ~/.bashrc
запускается после/etc/profile
и /bash.bashrc
. Таким образом, любые псевдонимы или переменные, установленные в первом, заменят те, что установлены во втором, если они имеют одно и то же имя.
Кому бы это ни помогло, :конкретная проблема, с которой я столкнулся, связана с тем, что я переношу серверы и прошу своих пользователей сделать резервную копию всех важных файлов, которые у них есть, и поместить их обратно на новый сервер. Когда они сделали это, они включили ~/.bashrc
, потому что у него был «трюк, который заставляет работать Python» (, то есть он устанавливал переменную PATH для включения каталога anaconda
), а также некоторые настройки, которые я сделали на своих компьютерах на предыдущем сервере. Это было в конфликте с новыми псевдонимами, которые я устанавливаю (, например. псевдоним для source activate
, который стал conda activate
), а начиная с conda 4.4, conda.sh
следует добавить к /etc/profiles.d/
, а не вручную устанавливать переменную PATH.
tac file | uniq -c -f 2 | awk '{$(NF+1)=$1;$1=""}1' | tac
tac
печатает файл из в обратном порядке. Это гарантирует, что последнее вхождение повторяющихся строк будет сохранено.
uniq -c -f 2
сравнивает только последнее поле, пропуская первые два с -f 2
. Он добавляет к количеству повторяющихся строк флаг -c
, поэтому мы должны перенести числовое значение в последнее поле. Вот что делает awk '{$(NF+1)=$1;$1=""}1'
.
Наконец, tac
приводит все в порядок.
[2020-09-15 09:03:21.935335] 1021 2
[2020-09-15 09:03:25.835335] 1022 2
[2020-09-15 09:05:23.835335] 1023 4
$ awk '{map[$3]=$1" "$2; cnt[$3]++} END{for (key in map) print map[key], key, cnt[key]}' file
[2020-09-15 09:03:21.935335] 1021 2
[2020-09-15 09:03:25.835335] 1022 2
[2020-09-15 09:05:23.835335] 1023 4
В приведенном выше примере строки будут выводиться в случайном порядке.если им нужно сохранить порядок ввода, это небольшая настройка.