В прошлой среде Linux у меня была команда resolve
, которая стандартизировала пути, включая превращение относительного пути в абсолютный. Я не могу его сейчас найти, так что, возможно, это было написано кем-то в этой организации.
Вы можете создать свой собственный сценарий, используя функции стандартных библиотек Python или Perl (и, возможно, других языков тоже).
resolve.py
:
#!/bin/env python
import sys
import os.path
for path in sys.argv:
print os.path.abspath(path)
resolve.pl
:
#!/bin/env perl
use warnings;
use Cwd qw ( abs_path );
foreach (@ARGV) {
print abs_path($_), "\n";
}
Затем вы должны решить свою проблему с помощью:
resolve.py * > listOfFiles.list
С помощью этой команды вы также можете делать такие вещи, как
cd /root/dir1/dir2/dir3
resolve.py ../../dir4/foo.txt
# prints /root/dir1/dir4/foo.txt
sudo showkey | awk -v date="$(date +%s)" '{print $1 date}'
Это не сработает, так как вы запускаете date
один раз до запуска awk
, поэтому во всех строках будет напечатано одно и то же значение.
С помощью GNU awk вы можете использовать функцию systime()
, чтобы получить текущее время (в секундах с начала Эпохи ). Например. это работает для меня:
$ stdbuf -o0 showkey -a | awk '{ print $0, systime(); }'
1551031085
Press any keys - Ctrl-D will terminate this program 1551031085
1551031085
a 97 0141 0x61 1551031086
d 100 0144 0x64 1551031087
^D 4 0004 0x04 1551031088
(Сейчас я не могу протестировать showkey
с необработанными кодами клавиш.)
Я отказался от showkey
и переключился на xev
.
xev -id $(xdotool search -name "Stardew Valley") -event keyboard >> /home/reedbear/user_scripts/output.txt
Это дает мне журналы, которые выглядят как:
KeyRelease event, serial 18, synthetic NO, window 0x260000a,
root 0x1b0, subw 0x0, time 18101865, (893,683), root:(893,683),
state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
KeyPress event, serial 18, synthetic NO, window 0x260000a,
root 0x1b0, subw 0x0, time 18101865, (893,683), root:(893,683),
state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XmbLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
KeyRelease event, serial 21, synthetic NO, window 0x260000a,
root 0x1b0, subw 0x0, time 18102365, (893,683), root:(893,683),
state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
Затем я использую php, потому что у меня есть опыт работы с php, чтобы получить метку времени, нажатие клавиши и KeyRelease
или KeyPress
.
Затем я использую xdotool
для отправки нажатий клавиш, но это отдельная вещь.
Наверное, я могу обойтись и без xdotool
, но... не стал.