<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF142%3ADrBrown2</id>
		<title>LXF142:DrBrown2 - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF142%3ADrBrown2"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF142:DrBrown2&amp;action=history"/>
		<updated>2026-05-13T00:03:10Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF142:DrBrown2&amp;diff=14120&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF142:DrBrown2&amp;diff=14120&amp;oldid=prev"/>
				<updated>2012-06-13T07:52:51Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Прикрыться эк­ра­ном==&lt;br /&gt;
&lt;br /&gt;
: Ин­тер­вью с ме­та­сим­во­ла­ми № 3: об­рат­ный слэш.&lt;br /&gt;
&lt;br /&gt;
До на­ча­ла сво­их изы­сканий я во­об­ра­жал, что при­выч­ное ам­п­луа об­рат­но­го слэ­ша – быть эк­ранирую­щим сим­во­лом. В кон­це кон­цов, он вы­пол­ня­ет имен­но эту функ­цию в обо­лоч­ке, в ре­гу­ляр­ных вы­ра­жениях, в ''Awk'' и ''Perl'' и во мно­гих дру­гих слу­ча­ях. Од­на­ко ока­за­лось, что на этом его жизнь не за­кан­чи­ва­ет­ся.&lt;br /&gt;
&lt;br /&gt;
Нач­нем с оче­вид­ных за­дач это­го сим­во­ла. С пер­вы­ми дву­мя об­рат­ны­ми слэ­ша­ми я по­встре­чал­ся в про­стой ко­ман­де обо­лоч­ки:&lt;br /&gt;
&lt;br /&gt;
 $ cp January\ Sales\ Figures ~/summaries&lt;br /&gt;
&lt;br /&gt;
«Мы обыч­ные эк­ранирую­щие сим­во­лы, – объ­яснили они. – Мы ней­тра­ли­зу­ем ма­ги­че­­ское зна­чение про­бе­лов, и они ста­но­вят­ся про­сто ча­стью имени фай­ла. Без нас обо­лоч­ка по­счи­та­ла бы, что здесь три от­дель­ных ар­гу­мен­та».&lt;br /&gt;
&lt;br /&gt;
Сле­дую­щий при­мер скры­вал­ся в са­мом кон­це длин­ной стро­ки, как не­по­слуш­ный ре­бе­нок, ко­то­ро­го по­ста­ви­ли в угол:&lt;br /&gt;
&lt;br /&gt;
 $ slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s \&lt;br /&gt;
 “cn={12}kerberos,cn=schema,cn=config” &amp;gt; /tmp/cn=kerberos.ldif&lt;br /&gt;
&lt;br /&gt;
«Я сим­вол про­дол­жения стро­ки, – по­хва­стал­ся он. – Бла­го­да­ря мне ко­ман­да мо­жет длить­ся несколь­ко строк». Жаль про­ка­лы­вать его мыль­ный пу­зырь, но… он – все тот же сим­вол эк­раниро­вания, ней­тра­ли­зую­щий дей­ст­вие сле­дую­ще­го за ним сим­во­ла пе­ре­во­да стро­ки, точ­но так же, как в пре­ды­ду­щем при­ме­ре бы­ло с про­бе­ла­ми.&lt;br /&gt;
&lt;br /&gt;
Сле­дую­щий при­мер неожи­дан­но поя­вил­ся в клас­си­че­­ской про­грам­ме ''Hello World''. Это при­мер на ''C'', но поч­ти во всех ос­таль­ных язы­ках он бу­дет вы­гля­деть при­мер­но так же:&lt;br /&gt;
&lt;br /&gt;
 printf(“Hello World!\n”);&lt;br /&gt;
&lt;br /&gt;
Я пы­тал­ся по­го­во­рить с об­рат­ным слэ­шем на­едине, но он на­сто­ял на при­сут­ст­вии '''n'''. «Мы escape-по­сле­до­ва­тель­ность, – ска­за­ли оба хо­ром. – Мы пред­став­ля­ем сим­вол но­вой стро­ки». Су­ще­ст­ву­ют и дру­гие: '''\t''' – сим­вол та­бу­ля­ции, а '''\a''' — сим­вол сиг­на­ла или звон­ка. (Кста­ти, кто-нибудь помнит те вре­ме­на, когда в те­ле­тай­пах был на­стоя­щий ко­ло­коль­чик, звонив­ший при прие­ме сим­во­ла с ASCII-ко­дом 007? Се­го­дня ваш тер­ми­нал ско­рее все­го лишь по­хо­дя пи­скнет.) Так­же есть по­сле­до­ва­тель­ность '''\\''', ко­то­рая со­от­вет­ст­ву­ет оди­ноч­но­му об­рат­но­му слэ­шу и ил­лю­ст­ри­ру­ет за­гон са­мо­го се­бя в син­так­си­че­­ский угол.&lt;br /&gt;
&lt;br /&gt;
Впро­чем, вернем­ся к на­шей те­ме. Из беседы с '''\n''' я уз­нал, что ро­лей у об­рат­но­го слэ­ша две: ней­тра­ли­зо­вать зна­чение сле­дую­ще­го сим­во­ла или ак­ти­ви­зи­ро­вать его. Кое-что в лю­бом слу­чае ста­ло яс­но. Об­рат­ный слэш сам по се­бе прак­ти­че­­ски ниче­го не оз­на­ча­ет. Поч­ти всегда он свя­зан со сле­дую­щим за ним сим­во­лом.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF142_47_1.jpg|300px]] Ран­ний при­мер об­рат­но­го слэ­ша на кла­виа­ту­ре те­ле­тай­па ASR33. Он не на сво­ем со­вре­мен­ном мес­те, как и боль­шин­ст­во дру­гих зна­ков пунк­туа­ции.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Дру­гой при­мер это­го из­ме­не­ния в по­ве­де­нии я встре­тил в сле­дую­щем ре­гу­ляр­ном вы­ра­же­нии:&lt;br /&gt;
&lt;br /&gt;
 $ grep ‘\&amp;lt;ram\&amp;gt;’ literature.txt&lt;br /&gt;
&lt;br /&gt;
Здесь, по словам об­рат­ных слэ­шей, они ак­ти­ви­зи­ру­ют спе­ци­аль­ное зна­чение сим­во­лов '''&amp;lt;''' и '''&amp;gt;''' – «на­ча­ло сло­ва» и «конец сло­ва» со­от­вет­ст­вен­но. Та­ким об­ра­зом, это­му ре­гу­ляр­но­му вы­ра­жению со­от­вет­ст­вуют стро­ки, со­дер­жа­щие от­дель­ное сло­во ram, а не “program” или “ramble”.&lt;br /&gt;
&lt;br /&gt;
Ре­гу­ляр­ные вы­ра­жения от­кры­ва­ют для об­рат­ных слэ­шей боль­шие воз­мож­но­сти. Взгля­ни­те на этот при­мер:&lt;br /&gt;
&lt;br /&gt;
 $ grep ‘^\([a-z]\)\([a-z]\)[a-z]\2\1$’ /usr/share/dict/words&lt;br /&gt;
&lt;br /&gt;
Здесь пер­вые че­ты­ре слэ­ша ак­ти­ви­ру­ют круг­лые скоб­ки, '''(''' и ''')''', об­рам­ляю­щие час­ти ре­гу­ляр­но­го вы­ра­жения. Два по­следних об­рат­ных слэ­ша соз­да­ют об­рат­ные ссыл­ки, так что '''\n''' от­ве­ча­ет то­му, че­му со­от­вет­ст­ву­ет n-я сгруп­пи­ро­ван­ная часть ре­гу­ляр­но­го вы­ра­жения. Дан­ный при­мер на­хо­дит па­лин­дро­мы из пя­ти букв, та­кие как “level ” и “solos”.&lt;br /&gt;
&lt;br /&gt;
===Слож­ные ро­ки­ров­ки===&lt;br /&gt;
&lt;br /&gt;
А те­перь – о дей­ст­ви­тель­но хит­рых шту­ках. В ба­зо­вых ре­гу­ляр­ных вы­ра­жениях, как в пре­ды­ду­щем при­ме­ре, са­ма скоб­ка '''(''' оз­на­ча­ет соб­ст­вен­но скоб­ку, а '''\(''' про­из­во­дит груп­пи­ров­ку. А в рас­ши­рен­ных ре­гу­ляр­ных вы­ра­жениях са­ма скоб­ка '''(''' про­из­во­дит груп­пи­ров­ку, а '''\(''' оз­на­ча­ет соб­ст­вен­но скоб­ку. Ес­ли вас это не сму­ща­ет, то вы не понимае­те, что про­ис­хо­дит!&lt;br /&gt;
&lt;br /&gt;
Итак, су­ще­ст­ву­ют «де­ак­ти­ва­то­ры» и «ак­ти­ва­то­ры». Но ка­ж­дый по­пав­ший­ся мне об­рат­ный слэш был при­кре­п­лен к сле­дую­ще­му за ним дру­го­му сим­во­лу. Оди­но­чек я не встре­чал.&lt;br /&gt;
&lt;br /&gt;
На­конец я за­брел в клуб в со­мнитель­ной час­ти го­ро­да, где об­на­ру­жил об­рат­ных слэ­шей, ко­то­рые ра­бо­та­ли са­ми по се­бе. Сгор­бив­шись за стой­кой ба­ра, они то­пи­ли свою пе­чаль в син­так­си­че­­ском са­ха­ре. Раз­го­во­рить их бы­ло нелег­ко, но один в ре­зуль­та­те рас­ко­лол­ся. «У нас бы­ла бла­го­род­ная ра­бо­та, – всхлип­нул он, – ввод тэ­гов раз­мет­ки в ''Tex''. Но нас со­кра­ти­ли. Мы пы­та­лись най­ти ра­бо­ту в URL-ад­ре­сах и раз­мет­ке HTML и XML, но всё са­мое луч­шее за­бра­ли пря­мые слэ­ши. Те­перь мы про­сто раз­де­ли­те­ли. Ра­бо­та­ем на М Боль­шое».&lt;br /&gt;
&lt;br /&gt;
В са­мом тем­ном уг­лу ба­ра си­дел осо­бо мрач­ный субъ­ект – он на­нял­ся в ''Visual Basic'' опе­ра­то­ром це­ло­чис­лен­но­го де­ления. Впро­чем, не су­ди­те его слиш­ком стро­го. Всем на­до как-то за­ра­ба­ты­вать на жизнь.&lt;br /&gt;
&lt;br /&gt;
===От­ку­да он, об­рат­ный слэш?===&lt;br /&gt;
&lt;br /&gt;
Об­рат­ный слэш – один из тех сим­во­лов, ко­то­рые по­па­да­ют­ся в ком­пь­ю­тер­ном ко­де, но не в пись­мен­ном анг­лий­ском язы­ке. Это сравнитель­но но­вый па­цан в на­шем дво­ре. В на­бор ком­пь­ю­тер­ных сим­во­лов – в ча­ст­но­сти, в ASCII – его (вме­сте с круг­лы­ми скоб­ка­ми) до­ба­вил по­кой­ный Боб Бе­мер [Bob Bemer] в 1961 го­ду (см. http://www.bobbemer.com/BAC-SLASH.HTM). За­то пря­мой слэш яв­но восхо­дит ко вре­ме­нам Древнего Ри­ма.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>