Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
grep -r указать *.cpp — он не зайдёт в подкаталоги (если только они не имеют окончания .cpp), а если указать просто звёздочку — он будет искать вообще во всех файлах, а не только в исходниках. Нет?и на мой взгляд про zsh в топике упоминать не стоило, PowerShell это как планета в галактике zsh
я не понимаю, вы идеолог или ИТ-спец? Мне совершенно параллельно кто какую парадигму изменил, или наоборот не изменил. Мне удобно — я пользуюсь, не удобно — соответственно. Я сильно сомневаюсь, что теми идеями, которые вы сейчас изложили, вы пользуетесь в жизни…
New-Window "$root\app.exe" | Get-Window -Name "Next >" -ControlType Button | Send-Window -Click $window | Wait-Window -Name "Some question?" -ControlType CheckBox | Send-Window -Toggle $window | Get-Window -ControlType Tree | Get-Window -ControlType TreeItem -Name "Folder" | Send-Window -Expand | Find-Window -ControlType TreeItem -Name "Item" | Send-Window -MouseClick
И еще, вы вот упоминаете про объекты, а для чего они мне? Какая полезная нагрузка? Чего я не мог делать раньше, когда у меня не было объектов? Такое ощущение, что это спасительная гавань в диалоге.
Ну и еще, PowerShell это безусловно новое и полезное явление на win платформах, но я думаю что относиться надо к этому соответственно, а не кричать о революциях и попытках изменить орбиту Земли :-)
Единственный тезис, в котором я полностью с вами согласен, это тезис про карму :-)
все просто и понятно, текста нет, есть звуковые данные, с ними получается довольно нормально работать и без объекта
по-моему здесь нет ничего, чего нет в UNIX shell, во-первых всем ясно откуда пошел PowerShell, пресловутые «алиасы» лишнее тому доказательство, во-вторых некоторые программы (команды) существуют по 30 лет, логично что они не оперируют объектами
по-моему здесь нет ничего, чего нет в UNIX shell, во-первых всем ясно откуда пошел PowerShell, пресловутые «алиасы» лишнее тому доказательство, во-вторых некоторые программы (команды) существуют по 30 лет, логично что они не оперируют объектами
PS:\>alias: PS:\>copy ls sometarget PS:\>del somealias PS:\>move -include somemask sometarget
cat /proc/modules|grep sata_sis|awk '{ print $6 }'$a = gi ls #получил объект алиаса для ls $a.ResolvedCommand.DLL
Объекты во вполне открытых форматах, более того, для их изучения даже не требуется документация (хотя есть и она), спасибо Reflection.
А как насчет управления например Nix'ами через WS-Man (открытый стандарт, являющийся родным для PS)? ;)
Согласен, у PowerShell это всё впереди. Сравнивать его стоит скорее с 3х-летним башем :)
Хотя конечно сравнение какой шелл лучше — несколько надуманное.
управлять удалённо с помощью rexec и rsh
Это вы сравнили блокнот с вордом.… и мы опять выходим на классическую описанную выше MS-стезю :) Говорят, есть люди, которые используют Word как текстовый редактор для программирования…
управлять удалённо с помощью rexec и rsh
Это вы сравнили блокнот с вордом.
Да, действительно, неверно выразился. Скорее с sh с набором утилит накопленных за 3 года :)
Вы так говорите будто в наше время передача данных открытым текстом — это что то хорошее.
Скажите, чем вам лично не угодили «собственные объекты в собственном внутреннем формате»? Боитесь, что объекты начнут следить за вами?
cat access.log | grep GET | perl -e "..."Вы пробовали вообще писать на PowerShell
Т.е. вы не пробовали. Ну ок, чо.
Самое простое — красивый доступ к буферу обмена Windows, пожалуйста. На Python. Буду премного благодарен.
import win32clipboard
import win32con
def getText():
w.OpenClipboard()
d=w.GetClipboardData(win32con.CF_TEXT)
w.CloseClipboard()
return d
#!/usr/bin/python
import win32clipboard as w
if __name__ == "__main__":
w.OpenClipboard()
d=w.GetClipboardData(w.CF_TEXT)
w.CloseClipboard()
print d
#!/usr/bin/python
import win32clipboard as w
if __name__ == "__main__":
w.OpenClipboard()
d=w.GetClipboardData(w.CF_TEXT)
w.CloseClipboard()
print d
python -c "from PyQt4 import QtGui; print QtGui.QApplication([]).clipboard().text()"bash/прочие консоли используют пайпы и передают через них текст. PowerShell использует пайпы, и передаёт через них какие-то собственные объекты в каком-то собственном внутреннем формате. По-моему, на этом сравнение уже можно закончить, уже после этих слов станет понятно, что PowerShell — это типовое образцовое MS-решение, полностью в MS-духе, основанное на ключевых MS-идеях разработки и маркетинга. Разве нет?
В другом — мы имеем несколько десятков лет эволюции, полную прозрачность спецификаций, кроссплатформенность и кросссистемность
В оригинале большинство информации является объектами. Будь то файл, картинка, XML-документ или что-либо еще.
В этом и главное преимущество пайпа — мы можем передавать некоторую информацию, не имеющую конкретного представление в машинном виде, но имеет представление в голове автора скрипта. При этом текстовая сериализация обладает рядом качеств:
1) Прозрачность — все что передается по пайпу, можно вывести на экран и ничего более, так же как и ничего менее не будет передано на вход другой программе. Облегчает поиск ошибок и мест их возникновения.
2) Гибкость — сущность, которая передается по пайпу, может меняться очень быстро, например список_пользователей -> e-mail -> md5hash -> url -> avatar.png -> vCard. Для полноценного обьектного пайпа вам пришлось бы реализовать каждую из этих сущностей отдельно и заставить каждую программу понимать эти сущности. Более того, вам придется сохранять обратную совместимость с текстовым представлением сущности. Это накладно, нудно, менее надежно.
3) Совместимость. Проблемы обмена информацией с машинами, работающими под другой версией системы/другой архитектурой, проблемы бинарной несовместимости старых версий программ или отсутствуют, или решаются ещё одной командой.
С другой стороны, современные *nix шеллы не заточены под работу со сложными структурами данных. Эта задача разрешима либо grep/sed/awk в простых случаях, либо программой на perl/python/your-favorite-language в пайпе.
-A NUM, --after-context=NUM
Print NUM lines of trailing context after matching lines. Places a line containing -- between contiguous groups of matches.
-a, --text
Process a binary file as if it were text; this is equivalent to the --binary-files=text option.
-B NUM, --before-context=NUM
Print NUM lines of leading context before matching lines. Places a line containing -- between contiguous groups of matches.
-C NUM, --context=NUM
Print NUM lines of output context. Places a line containing -- between contiguous groups of matches.
-b, --byte-offset
Print the byte offset within the input file before each line of output.
-D ACTION, --devices=ACTION
If an input file is a device, FIFO or socket, use ACTION to process it. By default, ACTION is read, which means that devices are read just as if they were
ordinary files. If ACTION is skip, devices are silently skipped.
-I Process a binary file as if it did not contain matching data; this is equivalent to the --binary-files=without-match option.
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines. If the input is standard input from a regular file, and NUM matching lines are output, grep ensures that the
standard input is positioned to just after the last matching line before exiting, regardless of the presence of trailing context lines. This enables a call-
ing process to resume a search. When grep stops after NUM matching lines, it outputs any trailing context lines. When the -c or --count option is also
used, grep does not output a count greater than NUM. When the -v or --invert-match option is also used, grep stops after outputting NUM non-matching lines.
--label=LABEL
Displays input actually coming from standard input as input coming from file LABEL. This is especially useful for tools like zgrep, e.g. gzip -cd foo.gz
|grep -H --label=foo something
-R, -r, --recursive
Read all files under each directory, recursively; this is equivalent to the -d recurse option.
-Z, --null
Output a zero byte (the ASCII NUL character) instead of the character that normally follows a file name. For example, grep -lZ outputs a zero byte after
each file name instead of the usual newline. This option makes the output unambiguous, even in the presence of file names containing unusual characters like
newlines. This option can be used with commands like find -print0, perl -0, sort -z, and xargs -0 to process arbitrary file names, even those that contain
newline characters.
grep -a -R "test.ru" * |hexdump -C для выяснения, в каком из бинарников хранится ссылка на test.ru
Замена для FIND и GREP