Neofetch — информация о системе linux и логотип в терминале
Содержание:
- Назначение и синтаксис[править | править код]
- DESCRIPTION top
- Другие Операции с Командой Tee в Linux
- Локаль по-умолчанию
- Автоматическое удаление старых файлов
- EXAMPLES top
- Подробная информация о локалях
- Comando Tee Linux – Sintaxe e Usos
- Примеры[править | править код]
- Примеры использования
- Удалить лишние локали
Назначение и синтаксис[править | править код]
tee используется для разделения выводимых программой данных, таким образом данные могут быть использованы для вывода на дисплей и сохранены в файл. Также команда может быть использована для получения промежуточных данных до того, как они будут изменены другой программой или командой. Команда tee считывает , после чего записывает его в и одновременно копирует его в подготовленный файл или переменную. Синтаксис различается в соответствии с местом использования команды.
В UNIXправить | править код
tee
Переменные:
File Один, или более, файл, который примет данные от tee.
Флаги:
- Дописать выходящие данные в конец файла, не перезаписывая его содержимого.
- Игнорировать ошибки.
По окончании команда возвращает следующие значения состояния выхода:
- 0 был успешно записан во все принимающие файлы.
- >0 В случае ошибки.
Примечание: Если при записи в любой удачно открытый файл операнд не удался, данные записываются в следующий удачно открытый файл, операнд и завершаются, но состояние выхода будет >0.
DESCRIPTION top
tee() duplicates up to len bytes of data from the pipe referred to by the file descriptor fd_in to the pipe referred to by the file descriptor fd_out. It does not consume the data that is duplicated from fd_in; therefore, that data can be copied by a subsequent splice(2). flags is a bit mask that is composed by ORing together zero or more of the following values: SPLICE_F_MOVE Currently has no effect for tee(); see splice(2). SPLICE_F_NONBLOCK Do not block on I/O; see splice(2) for further details. SPLICE_F_MORE Currently has no effect for tee(), but may be implemented in the future; see splice(2). SPLICE_F_GIFT Unused for tee(); see vmsplice(2).
Другие Операции с Командой Tee в Linux
Если вы хотите узнать больше классных функций команды tee в Linux, вы должны знать, как открыть руководство пользователя! Это намного упростит использование правильного синтаксиса!
Большинство пользователей, как правило, копируют и вставляют команды в терминал, но мы призываем вас не торопиться и потратить время на их ввод вручную. Таким образом, вы по-настоящему освоите команду tee и синтаксис других команд в Linux.
Чтобы поднять документацию, вы можете использовать:
Каждая команда сопровождается информацией о версии. Это можно проверить с помощью:
По умолчанию команда tee перезаписывает файл с выводом исходной команды, что можно отменить, используя добавляемую опцию -a.
С помощью команды tee в Linux мы также можем сохранить вывод команды в нескольких файлах. Эта опция используется для многократной обработки вывода команды в сценарии оболочки:
Как и в случае стандартных команд, к которым добавляется >, стандартный поток ошибок и стандартный поток вывода (stdout) в tee также обрабатываются по-разному. Обычный знак канала | сохранит в файл только стандартный вывод, но если нам нужны и стандартный поток вывода, и стандартный поток ошибок, следует использовать |& c Linux командой tee.
Нормальная копия стандартного вывода:
команда > file.txt | Обычный способ перенаправления стандартного вывода |
команда tee file.txt | Использование tee с перезаписью |
команда tee -a file.txt | Использование tee с дописыванием в файл |
Стандартный поток вывода и стандартный поток ошибки:
команда &> file.txt | Обычный способ перенаправления стандартного вывода и ошибки |
команда |& tee file.txt | Использование tee с перезаписью |
команда |& tee -a file.txt | Использование tee с дописыванием в файл |
Запись файлов с использованием повышенных привилегий в редакторе vim — это ещё одно преимущество команды tee. В среде с высокой степенью защиты обычные операции Linux выполняются с использованием непривилегированных пользователей. Для выполнения административных задач с правами администратора мы используем команду sudo.Стандартный поток вывода и стандартный поток ошибки:
Но иногда нам нужно отредактировать файлы, которые требуют прав администратора.
Отмена изменений и повторное открытие файла с использованием необходимых привилегий посредством sudo — один из вариантов, как это можно сделать. Но если мы используем команду tee, мы можем избежать этой ситуации, записав файл на самом начальном этапе, не отказываясь от изменений с помощью опции повышенных привилегий. При записи в редакторе vim синтаксис будет следующим:
Локаль по-умолчанию
Хорошо, нужные локали у нас теперь есть, осталось только задать локаль по умолчанию:
$ sudo update-locale LANG=ru_RU.UTF-8
Эта команда запишет в файл строку:
LANG=ru_RU.UTF-8
После этого надо будет перезайти в систему. И проверяем информацию о языковом окружении:
$ locale LANG=ru_RU.UTF-8 LANGUAGE= LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_PAPER="ru_RU.UTF-8" LC_NAME="ru_RU.UTF-8" LC_ADDRESS="ru_RU.UTF-8" LC_TELEPHONE="ru_RU.UTF-8" LC_MEASUREMENT="ru_RU.UTF-8" LC_IDENTIFICATION="ru_RU.UTF-8" LC_ALL=
Теперь все правильно, так что запишем эту информацию в файл :
$ locale | sudo tee /etc/default/locale
$ cat /etc/default/locale
LANG=ru_RU.UTF-8 LANGUAGE= LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_PAPER="ru_RU.UTF-8" LC_NAME="ru_RU.UTF-8" LC_ADDRESS="ru_RU.UTF-8" LC_TELEPHONE="ru_RU.UTF-8" LC_MEASUREMENT="ru_RU.UTF-8" LC_IDENTIFICATION="ru_RU.UTF-8" LC_ALL=
Автоматическое удаление старых файлов
Все мы часто качаем файлы из интернета, это торренты, фильмы, музыка и т д. И все это со временем накапливается в папке загрузки если ненужное вовремя не удалять, а нужное не перемещать в другие папки. Тогда папка загрузок начинает напоминать огромную свалку где вообще нереально что-то найти. У себя я всегда время от времени сортировал и удалял файлы, но когда видел такое у знакомых брался за голову. Есть способ упростить очистку папки загрузок.
Утилита find позволяет находить все файлы, созданные позже определенной даты и выполнять с ними нужное действие. Все нужные файлы будем вовремя рассортировывать и перемещать по папкам назначения, а все что останутся в загрузках будут через два дня автоматически удаляться. Знание что файлы будут удалены заставит их вовремя переместить куда нужно.
Вот так выглядит сама команда:
Если не хотите полностью удалять файлы можно перемещать их в корзину:
Подробнее о работе find можно почитать тут. Для полной автоматизации добавим выполнение этой команды каждый день в расписание cron:
Теперь давние файлы будут автоматически удаляться каждый день.
EXAMPLES top
The example below implements a basic tee(1) program using the tee() system call. Here is an example of its use: $ date |./a.out out.log | cat Tue Oct 28 10:06:00 CET 2014 $ cat out.log Tue Oct 28 10:06:00 CET 2014 Program source #define _GNU_SOURCE #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <limits.h> int main(int argc, char *argv[]) { int fd; int len, slen; if (argc != 2) { fprintf(stderr, "Usage: %s <file>\n", argv); exit(EXIT_FAILURE); } fd = open(argv, O_WRONLY | O_CREAT | O_TRUNC, 0644); if (fd == -1) { perror("open"); exit(EXIT_FAILURE); } do { /* * tee stdin to stdout. */ len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); if (len < 0) { if (errno == EAGAIN) continue; perror("tee"); exit(EXIT_FAILURE); } else if (len == 0) break; /* * Consume stdin by splicing it to a file. */ while (len > 0) { slen = splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); if (slen < 0) { perror("splice"); break; } len -= slen; } } while (1); close(fd); exit(EXIT_SUCCESS); }
Подробная информация о локалях
Более подробную информацию об установленных в системе локалях можно посмотреть так:
$ locale -a -v locale: en_US.utf8 archive: /usr/lib/locale/locale-archive ------------------------------------------------------------------------------- title | English locale for the USA source | Free Software Foundation, Inc. address | http://www.gnu.org/software/libc/ email | bug-glibc-locales@gnu.org language | American English territory | United States revision | 1.0 date | 2000-06-24 codeset | UTF-8 locale: ru_RU.utf8 archive: /usr/lib/locale/locale-archive ------------------------------------------------------------------------------- title | Russian locale for Russia source | RAP address | Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark email | bug-glibc-locales@gnu.org language | Russian territory | Russia revision | 1.0 date | 2000-06-29 codeset | UTF-8 locale: ru_UA.utf8 archive: /usr/lib/locale/locale-archive ------------------------------------------------------------------------------- title | Russian locale for Ukraine source | RFC 2319 email | bug-glibc-locales@gnu.org language | Russian territory | Ukraine revision | 1.0 date | 2000-06-29 codeset | UTF-8 locale: C.UTF-8 directory: /usr/lib/locale/C.UTF-8 ------------------------------------------------------------------------------- title | C locale email | aurel32@debian.org language | C revision | 1.6 date | 2016-08-08 codeset | UTF-8
Часть локалей размещена в архиве , а часть — в директориях внутри .
Comando Tee Linux – Sintaxe e Usos
Se você quer começar a usar o comando Linux Tee, deverá acessar seu VPS usando o SSH. Se você está tendo problemas, confira nosso tutorial do PuTTY.
A sintaxe básica para este comando é:
O comando acima verificará a linha do arquivo file1.txt, gerar o resultado no terminal e salvar no file2.txt.
Enviar o Comando Tee Linux para Outros Comandos
Ao usar o comando tee do Linux, obtemos uma saída no terminal, que podemos canalizar para outro comando para processamento. O seguinte comando irá listar os arquivos dentro da pasta e usar o primeiro pipe irá gravar a saída para o arquivo test.txt e passar a saída para o terceiro comando – grep para identificar os arquivos com a string py neles:
Outras Operações do Comando Linux Tee
Se você quer aprender mais recursos interessantes com comandos tee Linux, você deverá saber como abrir este manual. Isto fará com que use a sintaxe correta de forma mais fácil.
A maioria dos usuários tende a copiar e colar os comando no terminal, mas insistimos que você invista tempo para digitá-los. Você então terá familiaridade com eles e entenderá o comando tee, assim como qualquer outra sintaxe de comando da melhor forma.
Para abrir a documentação você pode usar:
Todo comando vem com uma versão informacional. Isso poderá ser checado com:
Por padrão, o comando tee Linux irá escrever sobre o arquivo a saída do comando inicial. Que pode ser substituído usando a opção -a switch.
Com o comando tee Linux nós também podemos salvar a saída do comando em múltiplos arquivos. O uso desta opção é para processar a saída do comando diversas vezes em um script de shell.
Como com os comandos padrão, anexando >, os erros e os stdout são tratados de forma diferente no tee. As pipes regulares | salvarão somente as saídas padrão dos arquivos, e se precisamos de ambos, saída padrão e saída de erro, precisamos usar |& com o comando tee linux.
Cópia de saída normal padrão:
command > file.txt | A forma regular de redirecionar a saída padrão |
command | tee file.txt | Usando tee para substituição |
command | tee -a file.txt | Usando tee com apêndice |
Ambos saída de erro e saída padrão:
command &> file.txt | O caminho comum para redirecionar a saída padrão e saída de erro |
command |& tee file.txt | Usando tee para substituir |
command |& tee -a file.txt | Usando tee com acréscimos |
Escrever arquivos usando privilégios elevados no editor vim é outra vantagem do comando tee. Em um ambiente altamente seguro, as operações normais do Linux são realizadas usando usuários não privilegiados. Para executar tarefas administrativas com privilégios de administrador, usamos o comando sudo.
Algumas vezes, precisamos editar os arquivos que precisam de privilégios de administrador.
Abandonar as alterações e reabrir um arquivo usando os privilégios necessários com o sudo é uma das opções. Se estivermos usando o comando tee, podemos evitar essa situação gravando o arquivo no próprio estágio inicial sem abandonar as alterações usando a opção de privilégio elevado. Ao escrever no editor vim, a sintaxe seria a seguinte:
Примеры[править | править код]
В UNIXправить | править код
Чтобы одновременно увидеть и сохранить выходные данные:
lint program.c | tee program.lint
Эта команда покажет стандартные выходящие данные команды на средстве вывода, в то же самое время она сохранит полученные данные в файл . Если такой файл уже существует, он будет перезаписан.
Чтобы получить данные от команды и дописать их в существующий файл:
lint program.c | tee -a program.lint
Как и в предыдущем примере, на экран будут выведены данные от команды , после чего эти данные будут дописаны в конец файла . Если такой файл не существует, он будет создан.
Использование совместно с sudo:
echo "Body of file..." | sudo tee root_owned_file > /dev/null
В этом примере демонстрируется, как при помощи tee обойти ограничения команды sudo, за счёт которых она не может перенаправлять вывод () в файл. А дальнейшее перенаправление в позволит избежать вывода текста на консоль.
Перенаправление STDERR:
ls ./ qwerty 2>&1 | tee ls.log
По умолчанию команда tee записывает в файл только данные от STDOUT, поэтому, если файл «qwerty» отсутствует в текущем каталоге, в файле ls.log будет перечень имеющихся файлов и каталогов и не будет записи о не найденном файле. На экране же будут отображаться выводы как STDOUT, так и STDERR. Если в файл нужно включить так же и данные из STDERR, то необходимо, как в примере выше, перенаправить STDERR на STDOUT.
Примеры использования
1. Простое использование команды tee
Команда ls -la нужна в Linux для показа списка файлов с описанием в текущем каталоге. Здесь команда tee используется для сохранения вывода ls -la в файл вывод.txt Введите следующие команды в терминале, чтобы проверить как работает команда tee.
Здесь первая команда показала вывод списка файлов в текущем каталоге в терминал и записала полученные данные в файл вывод.txt
Вторая команда показала содержимое файла вывод.txt
2. Добавление вывода в существующий файл
Если вывод любой команды записать в существующий файл с применением команды tee и операции -a, содержимое файла не будет перезаписано. Здесь вывод команды pwd будет добавлен в конец файла вывод.txt Запустите следующие команды с помощью терминала:
Здесь первая команда отображает вывод pwd в терминал и записывает вывод в конец файла вывод.txt Вторая команда используется для выделения вывода файла. Показано, что файл вывод.txt содержит оба результата: из предыдущего примера и из этого.
3. Запись вывода в несколько файлов
Команда tee может использоваться для вывода любой команды сразу в несколько файлов. Для этого необходимо указать имена файлов, разделив их пробелом. Используйте следующие команды для сохранения вывода date в два файла: вывод1.txt и вывод2.txt
Здесь первая команда выводит текущее системное время и сохраняет полученные результаты в два файла вывод1.txt и вывод2.txt Вторая команда показывает идентичное содержимое обоих файлов.
4. Игнорируем прерывание сигнала
Команда tee linux с опцией -i используется в этом примере, чтобы игнорировать любые прерывания во время ее выполнения. Таким образом, команда будет выполнена правильно, даже если пользователь нажимает CTRL+C. Выполните следующие команды в терминале.
Здесь первая команда считает количество строчек в файле вывод.txt и сохраняет полученный результат в файл вывод3.txt Вторая команда показывает содержимое файла вывод.txt, который содержит 37 строчек. Третья команда показывает содержимое файла вывод3.txt, в котором указано, что он действительно содержит 37 строчек.
5. Перенос вывода команды tee в другую команду
Вывод команды tee может быть перенесен в другую команду. В этом примере вывод из первой команды переносится в tee, а ее вывод — в другую команду. Запустите следующие команды в терминале:
Здесь первая команда используется для записи вывода ls в файл вывод4.txt и подсчета общего числа строк, слов и символов в файле вывод4.txt Вторая команда используется для отображения вывода команды ls, а третья — для отображения содержимого файла вывод4.txt
6. Команда tee и скрипты
Команда tee также может использоваться для записи вывода bash-скрипта в файл. Создайте bash-файл с приведенным кодом, который возьмет два входных числа из аргументов командной строки и выведет сумму этих чисел. Команда tee используется в этом примере для записи вывода add.sh в файл результат.txt
Запустите следующую команду в терминале для записи файла и отображения его содержимого.
Здесь числа 40 и 80 переносятся в качестве аргументов командной строки в скрипт add.sh и вывод записывается в файл результат.txt Команда cat выводит соответствующий результат.
7. Как скрыть вывод команды в терминале
Если вы хотите записать вывод прямо в файл и не показывать его в терминале, используйте /dev/null с командой tee. Для этого выполните следующие команды.
Здесь первая команда используется для записи вывода команды df в файл вывод5.txt, при этом вывод не показывается в терминале. Вторая команда показывает полученный результат.
Удалить лишние локали
После установки (генерации) локали, она помещается в архив . Файл архива — это файл, отображаемый в память, который содержит все локали системы; он используется всеми локализованными программами. Посмотреть список локалей в архиве можно с помощью команды:
$ localedef --list-archive en_US.utf8 ru_RU.utf8 ru_UA.utf8
Удалить заданную локаль из файла архива:
$ sudo localedef --delete-from-archive ru_UA.utf8
Обратите внимание на название локали — , а не. Если неправильно указать локаль — она не будет удалена из архива:
$ sudo localedef --delete-from-archive ru_UA.UTF-8 locale "ru_UA.UTF-8" not in archive
В случае, если утилита была вызвана с опцией , надо удалить соответствующую директорию в :
$ cd /usr/lib/locale $ ls C.UTF-8 en_US.utf8 ru_RU.utf8 ru_UA.utf8 $ sudo rm -r ru_UA.utf8