Насколько я знаю команду:
git log
Покажет все истории пересмотра. Если это верно, я предполагаю, что Вы пытаетесь сохранить содержание в файле, названном myfile, и затем Вы хотите не считать никакие из строк в файле.
Если это - то, что Вы хотите, сначала можно сохранить историю таким образом:
git log>myFile.txt
Теперь Вы не должны находить никакие из строк с помощью туалета-l и хранить его файл под названием nOfLines.txt
Таким образом, необходимо сделать это:
wc -l<myFile.txt>nOfLines.txt
Затем сохраните содержание этого файла в переменной, названной gitVar.
gitVar=$(cat nOfLines.txt)
Вы видите, работает ли это правильно с помощью этой команды:
echo "$gitVar"
Просто свяжите все это в сценарии, названном "myCommand.sh", дайте ему permssions, использующий chmod a+x, и запустите скрипт от терминала как команда.
Хотя ваш вопрос несколько неоднозначен (что подразумевается под консолью), я попытаюсь ответить для наиболее распространенных случаев: /dev/console, /dev/tty, /dev/fb0 ... адаптируйте это к устройствам, которые вам нужны. Мы предполагаем, что имя пользователя - "myuser."
odroid@mbrxu3:~/projects/sc$ ls -l /dev/console
crw------- 1 root root 5, 1 Oct 23 17:49 /dev/console
odroid@mbrxu3:~/projects/sc$ ls -l /dev/tty
crw-rw-rw- 1 root tty 5, 0 Oct 24 17:50 /dev/tty
odroid@mbrxu3:~/projects/sc$ ls -l /dev/fb0
crw-rw---- 1 root video 29, 0 Jan 1 2000 /dev/fb0
группа - "root", но групповой доступ не разрешен. Мне не нравится просто добавлять разрешения в группу root, поэтому вместо этого я создаю группу и chgrp файл и изменяю разрешения
$ sudo addgroup --system console
$ sudo chgrp console /dev/console
$ sudo chmod g+rw /dev/console
$ sudo usermod -a -G console <myuser> <==== replace <myuser>
$ sudo usermod -a -G tty <myuser>
$ sudo usermod -a -G video <myuser>
Вы можете использовать команду usermod, чтобы добавить вашего пользователя во все вышеперечисленные группы, если это вам нужно.
Моя цель была такой же, как у оригинального плаката, но с одним отличием :Мне нужно было запустить приложение SDL как демон systemd. Моя машина с Linux — Raspberry Pi 3, а операционная система — Raspbian Jessie. Клавиатура или мышь не подключены к RPi. Подключаюсь к нему по SSH. Мое приложение SDL на самом деле основано на Pygame -. Я установил pygame/SDL для использования драйвера кадрового буфера «fbcon» через переменную среды SDL _VIDEODRIVER. Мой вывод systemd --version
—:
systemd 215 +PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR
Моя версия пакета pygame:(aptitude show python-pygame
):
1.9.2~pre~r3348-2~bpo8+rpi1
Моя версия libSDL 1.2:(aptitude show libsdl1.2debian
-на вашем компьютере имя пакета может быть другим):
1.2.15-10+rpi1
Добавьте эти строки в раздел [Service] вашего демона.service файл:
User=pi #Your limited user name goes here
StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty2 # I also tried /dev/tty1 and that didn't work for me
Если кому интересно, вот полный файл pyscopefb.service, который я использовал:
[Unit]
Description=Pyscopefb test service
Wants=network-online.target
After=rsyslog.service
After=network-online.target
[Service]
Restart=no
ExecStart=/home/pi/Soft/Test/pygame/pyscopefb
ExecStop=/bin/kill -INT $MAINPID
OOMScoreAdjust=-100
TimeoutStopSec=10s
User=pi
WorkingDirectory=/home/pi/Soft/Test/pygame
StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty2
[Install]
WantedBy=multi-user.target
Введите эти команды в командной строке (Я предполагаю, что файл pyscopefb.service уже помещен в нужное место, где systemd может его найти):
sudo systemctl daemon-reload
sudo systemctl start pyscopefb
Это работает для меня. Обратите внимание, что я не проверял, может ли приложение pygame получать события клавиатуры и мыши или нет.
Пришлось решить еще 2 задачи, которые тоже могут быть интересны
В нижней части экрана мигал текстовый курсор с графика фреймбуфера. Чтобы решить эту проблему, я добавил в свое приложение следующий код Python, который запускается в моем приложении до инициализации Pygame/SDL:
def _disable_text_cursor_blinking(self):
command_to_run = ["/usr/bin/sudo", "sh", "-c", "echo 0 > /sys/class/graphics/fbcon/cursor_blink"]
try:
output = subprocess32.check_output(command_to_run, universal_newlines = True)
self._log.info("_disable_text_cursor_blinking succeeded! Output was:\n{output}", output = output)
except subprocess32.CalledProcessError:
self._log.failure("_disable_text_cursor_blinking failed!")
raise
Примерно через 10 минут экран подключился к HDMI Raspberry Pi. вывод стал черным (, но не выключился ), и моя графика не display, хотя Pygame не сообщил об ошибках. Это оказалось функция энергосбережения.Чтобы отключить это, я добавил следующий Python код, который также запускается до инициализации Pygame/SDL:
def _disable_screen_blanking(self):
command_to_run = ["/usr/bin/setterm", "--blank", "0"]
try:
output = subprocess32.check_output(command_to_run, universal_newlines = True)
self._log.info("_disable_screen_blanking succeeded! Output was:\n{output}", output = output)
except subprocess32.CalledProcessError:
self._log.failure("_disable_screen_blanking failed!")
raise
Исходя из моего недавнего опыта, помимо предоставления разрешения на ваше устройство tty (, как упоминалось ранее ), вам нужно сделать 2 дополнительные вещи:
setcap cap_sys_tty_config+eip /usr/bin/python3.5
(замените путь для python на ваш ). Конечно, примите во внимание, что вы предоставляете эту возможность для любого скрипта Python. openvt./your_script.py