Первые вещи сначала, Вы действительно заменяете if
со списком. На самом деле я даже заменил бы [[]]
s с []
s, и затем выполненный в dash
или другая зажигалка sh
. Это даже кажется достаточно простым угробить все for
, и выполненный с xargs
(всегда мое предпочтение, лучшая производительность) Так, например, возможно, что-то вроде этого...
grep ^[0-9] keys | xargs -P0 -I '{id}' \
sh -c '[ -z "$(sqlite3 db.sqlite =\"select id from main where id = '{id}'\")" ] && \
echo '{id}' >> file'
Мой выход, скорее всего, выключен, но это должно указать на Вас в правильном направлении. Я подозревал бы, что это будет работать НАМНОГО быстрее, наименьшее, потому что Вы шли бы параллельно через -P
.
Если по некоторым причинам даже это сканирования, Вы могли бы всегда изучать что-то, что выводит sqlite дб. Вы, вероятно, записали бы сценарий, если бы Вы проявили тот подход. Я только рассмотрел бы это, если бы это было необходимо.
pts/0
говорит Вам, на каком "псевдотерминале" пользователь зарегистрирован. В этом случае это - терминал № 0." (:0.0)" говорит Вам, какое имя хоста и дисплей Вы используете.
who am i
псевдоним команды who -m
. См. страницу справочника для кто. Можно также читать о who
управляйте здесь.
Вывод может определенно сбивать с толку новичка Unix.
-m
то же как am i
[root@grinch]$ who am i
root pts/4 2013-04-12 07:10 (greeneggs.mydom.net)
[root@grinch]$ who -m
root pts/4 2013-04-12 07:10 (greeneggs.mydom.net)
[sam@munger ~]$ who am i
sam pts/0 2013-04-12 07:19 (192.168.1.7)
[saml@greeneggs ~]$ who am i
saml pts/1 2013-04-11 16:41 (:0.0)
Последний бит, который все еще мог бы смущать Вас, :0.0
. Это - то, как X-окна представляют "дисплей", пользователь идет. Первое "0" говорит, какой монитор/устройство Вы идете, второе "0" говорит, какой виртуальный дисплей Вы идете.
Это возвращается ко дням, когда компьютеры были дорогими и таким образом, несколько человек могли бы работать над тем же компьютером все одновременно. Я не волновался бы об этом, просто помнить, что это или собирается быть ":0.0" или возможно ":0". Переменная среды "ДИСПЛЕЙ" и команда xhost
используйте эти ":0.0" значение.
Можно читать больше об удаленном отображении в Unix здесь.
whoami
по сравнению с. who am i
Разве они не та же команда? Нет они отличаются:
[saml@grinchy ~]$ ls -l /usr/bin/who /usr/bin/whoami
-rwxr-xr-x 1 root root 49432 Nov 3 2010 /usr/bin/who
-rwxr-xr-x 1 root root 26280 Nov 3 2010 /usr/bin/whoami
Также их вывод полностью отличается; whoami
просто шоу Вы Ваш эффективный идентификатор пользователя, в то время как who am i
шоу Вы информация о соединении о Вашем терминале:
[saml@grinchy ~]$ who am i
saml pts/0 2013-04-11 16:41 (:0.0)
[saml@grinchy ~]$ whoami
saml
Посмотрите whoami
страница справочника здесь.
Заключение в кавычки отсюда.
pts обозначает ведомое устройство псевдотерминала. Терминал (или консоль) является традиционно комбинацией клавиатуры/экрана, в которой Вы сидите и вводите. Старые поля UNIX имели бы десятки из них зависающий от спины, все соединенный с милями кабеля. Псевдотерминал предоставляет просто ту же услугу только без аппаратных средств. Другими словами, это - xterm окно или консольное окно, или безотносительно утилиты, которую Вы используете. Они появляются в жизнь, как Вы просите их и получаете данные порядковые номера: pts/0, затем pts/1 и так далее. Физическая консоль является аппаратными средствами, которые на самом деле присоединены к Вашему полю - у Вас, вероятно, только есть тот. Это маркировано ":0" и названо фактической "консолью".
Вы найдете PTS / 0, перечисленные в , которые
вывод, если есть удаленное подключение к SSH :
Я один и единственный на мой Машина:
$ who
me :0 2015-02-02 14:06 (:0)
me pts/7 2015-02-02 14:07 (:0)
me pts/12 2015-02-02 14:07 (:0)
Я связан с другой машины к SSH-серверу, поэтому я открыл удаленный терминал:
$ who
me :0 2015-02-02 14:06 (:0)
me pts/7 2015-02-02 14:07 (:0)
me pts/12 2015-02-02 14:07 (:0)
me pts/0 2015-02-02 14:31 (x.server.something.com)
sudo whoami
вывод не будет соответствоватьsudo who am i
. – ulidtko 09.07.2014, 16:51