В большинстве файловых систем ¹, файл исключительно определяется его inode числом, таким образом, все, что необходимо проверить, - имеют ли эти два файла то же inode число и находятся в той же файловой системе.
Пепел, ksh, удар и zsh имеют конструкцию, которая делает проверку на Вас: оператор равенства файла -ef
.
[ fileA -ef fileB ] && ! [ fileA -ef fileC ]
Для более усовершенствованных случаев, ls -i /path/to/file
перечисляет inode число файла. df -P /path/to/file
шоу, какая файловая система файл идет (если два файла находятся в том же каталоге, они находятся в той же файловой системе). Если Ваша система имеет stat
команда, это может, вероятно, показать inode и числа файловой системы (stat
варьируется от системы до системы, проверьте свою документацию). Если Вы хотите быстрый взгляд жестких ссылок в каталоге, попробовать ls -i | sort
(возможно переданный по каналу к awk).
¹ Все собственные файловые системы Unix и немногие другие, такие как NTFS, но возможно не экзотические случаи как CramFS.
Существует действительно простой способ сделать это использование awful
дополнительный пакет. Некоторые дистрибутивы связывают это автоматически, у других есть он как подпакет. После того как у Вас есть он, можно просто использовать встроенный awful.client.movetoscreen
. Например, у меня есть привязка, которая похожа на это:
awful.key({modkey}, "o", awful.client.movetoscreen)
Это означает с одним нажатием клавиши, которое я могу отправить окну в в настоящее время активный тег на любом экране, это не в настоящее время включено. Если у Вас только будет два экрана, то это переключит их или если Вы будете иметь больше, то это циклически повторится через них.
Это зависит от версии потрясающих, которые Вы используете:
Установите screen
переменная в правиле:
{ rule =
{ class = "URxvt" },
properties = { tag = tags[1][1] },
screen = 1
}
Установите screen
свойство на клиенте в hook_manage
функция:
if c.class == "URxvt" then
awful.client.movetotag(tags[1][1], c)
c.screen = 1
end
Кажется из Вашего примера кода, что Вы используете потрясающий 1.x; как заметка на полях, 1.x теперь действительно старо, таким образом, Вы могли бы хотеть изучить обновление до 2.x, который использует Lua вместо формата пользовательской конфигурации
Не точно ответ, но развитие.
Это, должно быть, было ошибкой в потрясающем. С awesome-3.4.10
это работает, как Вы хотели это. Теперь, чтобы иметь приложение, открытое на предопределенном, наклеивают текущий экран, используют что-то вроде этого:
{ rule = { instance = "urxb" },
callback = function(c)
c.screen = mouse.screen
c:tags({tags[c.screen][3]})
end }