Учитывая, что Вы хотите отследить все пользовательские команды, необходимо посмотреть на acct
пакет в Вашей системе (в некоторых системах это также называют "учетом процесса" или psacct
). Затем после того, как это было включено, можно работать lastcomm
управляйте для показа, какие программы были запущены, кого, когда и как долго. От Google, поисковый "Linux acct" для получения дополнительной информации.
http://beginlinux.com/blog/2010/01/monitoring-user-activity-with-psacct-or-acct/
http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html
Нет никакого ограничения на названия команды на Unix. Любой файл может быть командой. И имя файла может быть любой последовательностью одного или нескольких (до предела хотя) символов кроме ASCII NUL или ASCII /
. zsh
даже лифты, что ограничение для функций, где у Вас может быть любая строка как имя функции.
Несколько примечаний, хотя:
.
или ..
;-).bash
, zsh
, tcsh
или ksh
). В том отношении символы верхнего регистра могут помочь, поскольку они обычно не используются стандартными командами.|
, =
, &
и многих других должны были бы оставить в оболочках, если Вы используете :
, Ваша команда не может использоваться в качестве оболочки входа в систему...). Можно даже хотеть исключить .
и -
которые не позволяются на имена функций во многих оболочках, в случае, если Вы хотите позволить пользователям переносить свою команду в функцию оболочки.zsh
функции от систем завершения запускаются с _
), и команды все-цифры могут быть проблемой в вещах как cmd>output.log
. Файлы, имя которых запускается с точки, будут скрыты вещами как ls
или globbings оболочки и много файловых менеджеров.Да это может, и уже существуют некоторые. Такой как /usr/bin/X
:)
dennis@lightning:~$ ls {/usr{/local,},}/{s,}bin | grep '[A-Z]'
MAKEDEV
amuFormat.sh
GET
HEAD
Mail
POST
X
X11
Xephyr
Xnest
Xorg
NetworkManager
dennis@lightning:~$ zcat ~/.cache/apt-file /archive.ubuntu.com_ubuntu_dists_precise_Contents-i386.gz | tail -n +33 | cut -f1 | grep -P '^(usr/)?s?bin/.*[A-Z]' | wc -l
758
Таким образом, это 758 во всей Ubuntu 12.04. Полный список: https://gist.github.com/5264777
Xdialog
?: o И необходимо заключить в кавычки grep
параметр для предотвращения оболочки, расширяющей его в текущем каталоге перед выполнением.
– manatwork
28.03.2013, 18:34
grep
параметр: pastebin.com/Gak7x9rN (Да, я могу отредактировать его сам, но я предпочитаю, чтобы Вы поняли почему.)
– manatwork
29.03.2013, 10:28
bash
в моем корневом каталоге на самом деле расходует [A-Z]
к “c d f h j m p q r t”. Так нечувствительно к регистру.
– manatwork
29.03.2013, 11:11
zsh
или удар failglob
опция. Я лично обычно называю свои временные файлы (в ~
) a
, b
, c
... и мои временные директора A
, B
, C
...
– Stéphane Chazelas
30.03.2013, 02:15
Самая известная команда stty
, который был также доступен как STTY
. Было очень удобно задержать терминал к нормальному поведению с STTY SANE
.
/bin/stty
но ничто иное. Хотеть разработать свой ответ немного?
– Emanuel Berg
29.03.2013, 12:25
a
и терминал видел бы A
. Для восстановления исправности Вы использовали бы stty sane
команда. За исключением того, что это теперь невозможно, поэтому имея stty
доступный как STTY
очень приветствовалось. Я не могу даже помнить прошлый раз, когда мне было нужно это хотя :)
– Dennis Kaarsemaker
29.03.2013, 12:29
На Fedora 18 здесь:
amuFormat.sh
chkrootkitX
enum_chmLib
enumdir_chmLib
extract_chmLib
fakeCMY
GET
HEAD
Mail
oLschema2ldif
POST
smoltDeleteProfile
smoltGui
smoltSendProfile
smp_conf_zone_man_pass.#prelink#.coLtYv
Terminal
test_chmLib
Thunar
X
Xephyr
xfig-Xaw3d
Xorg
Xvnc
MAKEDEV
NetworkManager
amuFormat.sh
chkrootkitX
enum_chmLib
enumdir_chmLib
extract_chmLib
fakeCMY
GET
HEAD
Mail
oLschema2ldif
POST
smoltDeleteProfile
smoltGui
smoltSendProfile
smp_conf_zone_man_pass.#prelink#.coLtYv
Terminal
test_chmLib
Thunar
X
Xephyr
xfig-Xaw3d
Xorg
Xvnc
MAKEDEV
NetworkManager
Для в общей сложности 50 (о которых я не знал больше всего).
На Debian sid, с zsh, и ls -1 $path | grep '[A-Z]'
, Я добираюсь
GET
HEAD
HtFileType
Mail
POST
Pnews
Rnmail
X
X11
Xephyr
Xorg
ircII
amuFormat.sh
hpljP1005
hpljP1006
hpljP1007
hpljP1008
hpljP1505
Править: Обратите внимание, что, в команде выше, это - цифра один, не буква l
. Тот как в одном столбце.
$path
не находится в ударе, на этот раз. Ну, чем больше информации, тем лучше.
– Emanuel Berg
30.03.2013, 15:56
$path
не zsh конкретный. Это прибывает из csh/tcsh
где Ваша команда также работает.
– Stéphane Chazelas
30.03.2013, 19:02
-m
для "соответствия".)
– Emanuel Berg
31.03.2013, 19:54
Несколько примечаний по историческому STTY
команда для разъяснения некоторых погрешностей в другом ответе и связанных комментариях:
Более ранние терминалы как DEC VT05 или VT50 и телепринтеры перед этим только поддерживаемые символы верхнего регистра. То, что это означало, - то, что никакой символ нижнего регистра никогда не мог вводиться от них или что они не смогут отобразить любую другую букву, чем прописные.
Так как Unix чувствителен к регистру и большинство команд, являющихся нижним регистром, Вы видите, что там существует проблема. Вот почему существуют специальные termio/termios режимы (и которые находятся все еще там в современных Нельдах даже при том, что те терминалы давно в прошлом) обработать их.
termio/termios являются соответственно более старыми и более новыми интерфейсами для управления tty драйвером на Unix. В termio (s) ioctl
, Вы указываете вход, производите, управляете флагами..., которые указывают, как электрические сигналы на последовательной линии состоят в том, чтобы быть обработаны во входные и выходные символы и внутреннее поведение драйвера wrt вещи как эхо, строчный редактор... Большинство из тех обращается к виртуальным терминалам как современные консоли Unix VGA или псевдотерминалам.
Интерфейс командной строки к termio(s)
stty
команда.
Для обработки прописных терминалов существует три termio(s)
флаги включили:
IUCLC
(Введите Верхний регистр к Нижнему регистру): входящие символы преобразовываются в нижний регистр, когда введено. Это означает A
отправленный терминалом рассматривается как a a
. Это означает, что с этим на, я могу теперь ввести LS
на моем VT50 и оболочке будет читать ls
от /dev/ttyX
. Я могу также теперь работать stty
команда.IUCLC
один и терминальный echo
, в то время как я ввожу LS
, драйвер отправил бы ls
назад к терминалу (таким образом, я вижу то, что я ввожу), который он не может отобразить, таким образом, нам также нужно OLCUC
(Произведите Нижний регистр к Верхнему регистру), который является, мы должны преобразовать любую строчную букву в верхний регистр прежде, чем отправить к терминалу.xcase
локальный флаг входит. Это позволяет (только в каноническом режиме ввода) отправку верхнего регистра A
путем ввода \A
, и на выводе, верхнем регистре A
представляется как \A
. (что каждый не реализован на Linux), stty
команда имеет соответствие iuclc
, olcuc
и xcase
настройки и псевдоним для всех трех: lcase
. Настройка по умолчанию и что Вы получаете после stty sane
lcase
прочь.
Так, когда Вы находитесь на VT50, все, что необходимо сделать, выполняется:
stty lcase
смочь сделать что-либо. Но держитесь, как дела это, когда можно будет только отправить прописные буквы? Это - то, где Вам нужен a STTY
управляйте как псевдоним для stty
, и вот почему stty
поддержки LCASE
как псевдоним для lcase
.
Существует не такой SANE
исказите, потому что Вы не хотите делать stty sane
когда Ваш терминал все-прописной.
Если Вы работаете stty lcase
или stty olcuc
по ошибке на нормальном терминале (пробуют его в xterm
или любой современный терминал), это - то, где необходимо войти stty sane
возвращаться к нормальному. Но Вам не нужен a STTY
команда для этого. Если Вы вводите stty sane
, Вы будете видеть STTY SANE
отреагировавший, но это - только отображаемый текст (не вводимая команда), который будет переведен, это все еще stty sane
команда, которая будет выполнена.
Они iuclc
, olcuc
, xcase
флаги раньше указывались POSIX (и это, вероятно, почему он реализован на Linux даже при том, что я серьезно сомневаюсь, что кто-либо когда-либо подключал любой из тех старых терминалов к системе Linux (кроме для забавы)), но были удалены в POSIX:2001.
zsh_with_some_funky_option
(вместоZSH
)? – Emanuel Berg 29.03.2013, 12:40alias .="echo Hello"
.-) (ну,sudo vim /bin/.
было более твердым, хотя...) – Alois Mahdal 30.03.2013, 00:11.() echo Hello
. Также - pdksh, но.
особенный встроенный имеет приоритет там. – Stéphane Chazelas 30.03.2013, 00:22