[Семинар - Уник Гранате, окружења] [Даглас Клајн - Универзитет Харвард] [Ово је ЦС50. - ЦС50.ТВ] Данашња тема је Уник љуска. Ја сам Даглас Клајн, стручњак, или барем разумно надлежни корисник, од гранате. Схелл је интерфејс за корисника на оперативни систем рачунара. Име је погрешно као, за разлику од љуске животиње, који је тешко и заштитна, компјутер граната омогућава комуникацију. Дакле, порозна мембрана ће вероватно бити боља метафора. Оригинални шкољка за Уник је Боурне схелл. Боурне је написана Б-О-У-Р-Н-Е. Боурне је био један од оригиналних аутора Уник, и тако шкољка је названа по њему. Име тог гранате као команда је једноставно сх. То је команда можете извршити. Љуска покреће у току пријављивања. Када се пријавите на рачунар, шкољка само почне да за вас, и то је оно што узима своје команде. Она може почети у другим приликама такодје. Ако би се прозор са назнаком без друге, она ће почети гранату за тебе. Тако је то је да можете да одете на прозор и почните да куцате команде и тако даље тамо, иако нисте пријавили на том прозору. Поред тога, ако радите даљински пријављивање, онда ће почети гранату на удаљеном рачунару. И то је могуће да се покрене команде без интерактивном љусци. То може да значи у вашем тренутном раду, и она такође може да значи даљински операцију. Могао би да пошаљете команду на други рачунар, који укључује покретање гранату тамо. У ствари, мора да садржи покретање схелл тамо чак и ако то није ваш коначан циљ. Када се нешто покреће овако, то не мора нужно започети нови шкољку. Ако се донесе нови прозор, могуће је да га кажем да доведе до уредника или неки други команда. У том случају, уредник ће почети од нуле. Када уредник завршава, завршава прозор. Ово је мало необично, али то може да се уради. У тим случајевима, то неће бити граната. Дакле, то није нужно случај да ће прозор или неки такав захтев довести до гранату. Схелл парсес команде. Парсирање значи идентификовање различитих елемената и да их класификације. У оквиру команде, комплетан стринг који куцате, тамо ће бити 1 или више самохраних команде да се изврши. Остали елементи могу бити аргументи. Ту такође може бити специјални знакови који утичу на извршење команде. Они могу послати излаз негде осим екрана ако команда би обично га пошаље на екран. То може преусмерити улаз, то може да уради и друге ствари такође. Постоје разни други симболи, ликови, и тако даље. Парсирање подразумева откривање и тумачење те ствари. Сада, ако нема више питања, што је прилично вероватно, јер нема више људи, ћемо ићи на мојој следећој страници овде. Раније рекао сам да Боурне схелл је почетна шкољка. Постоје и други. Један је Ц-схелл. Команда је цсх. Назив Ц-шкољка је само игра речи. Ова шкољка је уведен са Беркелеи Уник у средином 1970-их. Беркли Уникс је била догадјај у развоју Уник. То је био огроман револуција и обухватила увођење ове гранате. Разлог за ту игру на речима, Ц-схелл, је да Ц-љуска има неке карактеристике у њему који личе на језик Ц, који Боурне схелл нема - или није имала у то време. Ту је ТЦ-граната. Ово је надскуп Ц-схелл. Она има додатне функције, од којих су многи корисни за интерактивну употребу, као што су подсјећајући команде у историји механизам, који ћу описати нешто касније - на једноставан начин, по узору уредника. Она такође има везове које вам омогућавају да се везује кратак низ кључа на дужи команду. Нећемо да се улази у то данас. Она има неке карактеристике које су корисне за програмирање. Међутим, Ц-љуска се не користе често за схелл програмирање. Схелл програми, ако нисте већ знате, су програми који се састоје од љуске карактеристика. Ти би могао покренути ове програме као. Пишеш гомилу љуске команди у датотеку и изврши датотеку. Не морате да га компајлирате. Ово је интерпретативна језик. Фраза Ц-љуска је сада двосмислен, јер то може односити само на оригиналном Ц-Схелл, цсх, или да све Ц-граната, укључујући тцсх. То је мало двосмислено. Касније граната је Корн схелл, КСХ, назван по програмера, Корн. Ова шкољка је покушао да уграде у 1 љуске предности Ц-схелл за интерактивну употребу и Боурне схелл за програмирање. То је користи као интерактивни схелл стране неких људи - мањина. Касније ипак, био је још један увод, басх схелл, БАСХ, поново игра речи, Боурне-Агаин Схелл. То је продужетак Боурне схелл. Корн схелл је такође. Обојица су. Она има исте циљеве Корн љуске од амалгаматинг Ц-љуска је и предности у љусци 1 Боурне Схелл. Многи од побољшања на Корн омотача су такође укључени у Басх. Басх, међутим, има више и због тога је пожељно. Боурне-Агаин Схелл и Корн схелл називају Борнов типа гранате јер они укључују Тхе Боурне схелл-а карактеристике, који су неспојиви у неким аспектима са Ц-граната. Постоје и други гранате поред оних, неки намењен за ограничену употребу, можда ограничен на неких команди, можда специјализоване намене, не користе често. Реду. Следећа ставка овде. Басх схелл је постао повезан са различитим облицима Линук. Нисам сигуран да ли је то истина од сваког облика. Постоје многи облици тамо и нисам их све користи, али у оне које сам користио је постало у вези са њим. Колико ја знам, не постоји ништа о Басх што га чини више компатибилан са Линук него било коју другу комбинацију љуске и оперативног система. Мислим да је ово вероватно само одражава склоности од стране програмера. Да је постала повезана са Линуком је још један разлог да се воле басх да КСХ јер ствари су вероватно да ће бити написано у њему, а то је вероватно да се шири. Даћу вам друге разлоге за то касније. Боурне схелл скрипте треба да раде под Корн љуске или Басх. Ако пишете нешто за Боурне схелл, вероватно да га изврши под КСХ или басх. Корн схелл скрипте ће вероватно покренути под Басх, али ја не могу да гарантујем. Касније овде, Ц-схелл скрипте треба да раде под ТЦ-шкољке. Ц-љуска је заправо никада није интензивно користи за скриптовање пошто Боурне схелл и касније Борнов типа гранате су биле боље за ту сврху. Тако да заиста није толико важно. Постоји доста Боурне схелл скрипти које су написане давно, пре Корн схелл или Боурне-Агаин Схелл уведене су. Они су и даље у употреби, део оперативних система, и тако да ћете их наћи ако погледате у оперативни систем или неки стари програмирање пакети. Басх је у извесној мери постане нека врста лингуа франца за оперативне системе. То је већ проширен на Виндовс и на ВМС. ВМС, у случају да не знате, је власнички оперативни систем од Дигитал Екуипмент Цорпоратион која је још увек у употреби, углавном иза сцене. И ако то ће бити покренут на неколико различитим оперативним системима, вероватно људи имају тенденцију да се пребаци на њу. Али овај развој је релативно недавно. То је само почетак, тако да не могу предвидети да ли ће се испоставити да заиста буде та врста лингуа франца. Такође, зато што датотека Путање и библиотеке разликују између ових различитих оперативних система, можда нећете бити у стању да напише сценарио басх на једном оперативном систему а затим га покрените на другом. Требало би да будете у стању да га преместите између различитих Уник, Линук Мац ОС оперативни системи, али не нужно на Виндовс или ВМС. Можда ћете морати да промените фајл путању описе, и неке библиотеке могу бити различити, који могу да утичу на начин на који раде неке команде или како они обрађују аргументе и слично. Поред тога, други опрез овде је да нема гаранција да све различите гранате сам поменуо - Боурне схелл, Ц-схелл, ТЦ-љуска, Корн схелл, Боурне-Агаин Схелл - биће доступан у оквиру једног Уник или Линук или Мац ОС рачунар. Они једноставно не могу бити тамо. То је један од упозорења овде. То је несрећна ограничење овде, јер желите да се ствари раде свуда, али нажалост, не можете ослонити на то. Реду. Даље овде. Рецимо да желите да напишете скрипту, Програм се састоји од љуске. Можете написати ваше команде, ставите их у фајл, и изврши датотеку. Шта ако желите да укључите аргументе? У случају љуске операција, аргументи се називају параметри или позиционе параметре и они ће се звати по знак за долар и бројевима, $ 1, $ 2. Дакле, ако скрипта има ово име, мој први аргумент може бити аргумент 1 и мој други могу бити аргумент 2, и у мом писму, ако желим да се односи на те ствари - хајде да обришете ово јер нисам стварно да га покренете - у мом писму ја можда $ 1 да се односи на Арг1, $ 2, који ће доћи на тај начин, Арг2. Дакле, ови симболи су на располагању да се односи на аргументе, и они који се односе на све граната. Поред тога, постоје други карактера. $ * Се односи на целу листе аргумената, све њих. $ # Се односи на број аргумената. Опет, ово се односи на све граната. Ти симболи, * и #, може се користити са тим значења у другим местима такође. Нећемо добити у то. Схелл Спецификатор линија. Шта је то? Рецимо да сте написали сценарио и то је за одређену љусци и желите да га покренете. Како знаш шта гранатирати ваш оперативни систем ће користити да покренете свој сценарио? У једном тренутку сте могли претпоставити да ће га покренути у Боурне схелл ако нисте рекли другачије, али људи не пишу скрипте у Боурне гранате која много више а ви не можете ни више ослонити на то. Дакле, овде имамо схелл Спецификатор линију овде. То прецизира басх. Имајте на уму да је то прецизира у путање, / бин / басх. Ако рачунар има басх схелл, али не у бин директоријум, / бин, то неће радити. То је још један квалификант, други опрез овде. Знак фунта је коментар линија карактер. То се односи на све граната. Посебно овде случај, #! на почетку писма, је посебан случај. То означава омотач у који би покренули скрипту. Као што сам рекао, то не може бити исто место / бин. Поред тога, ту је још једна ствар овде. Ако само користите знак за фунту без узвика и путање, који би требало да указују на Ц-схелл. Међутим, ја не препоручујем да радим јер нисам у стању да гарантују да ће то увек радити. Ако желите царски љуску, било би боље да тако кажем. Затим, ту је нешто прилично збуњујуће овде. Ако користите граната Спецификатор линију као што је / бин / басх и та граната није доступан тамо, не постоји таква ствар као / бин / басх на том рачунару, било зато што нема басх или зато што је то на некој другој локацији, ћете добити грешку са обавештењем да сте покренули скрипт не постоји. И наравно твој сценарио постоји, тако да је порука о грешци је збуњујуће. Разлог да оперативни систем вам даје ту грешку или, тачније, да је ваш интерактивна конзола у којој радите то даје ту грешку, је да извештава команду сте користили, што је име скрипте. Та команда се зове ефикасно љуску по имену скрипте. То је место где можете добити ту збуњујућу поруку о грешци. Други начин да се позове скрипту је навођењем гранату на командној линији, као овде. Ово је команда. Овај каже покренути басх и затим покрените мој сценарио у Басх. То ће имати предност над спецификатором линије, и овај има функцију која вам омогућава да обезбеди различите путањама. Ако само дати команду, оперативни систем ће тражити ту команду у различитим местима. Ако је на располагању, треба да га пронађе. Рачунар ће наћи басх где год је то налази и покренути га, тако да не треба онда да се брине о томе где се налази то. Постоје потенцијално други проблеми овде, као да има више од 1 верзија Басх, што је могуће, мада мало вероватно. Дакле, то је још један начин да се баве тим стварима. Специфиер линије могу да се јаве било какву шкољку. Они такође могу да се јаве и друге ствари од граната. Примери сам овде имају су сед, који је ток уредник; авк, који је језик обрада образац; и перл, врло високо развијена скриптинг језик. Ако сте ставили Спецификатор линију која показује један од тих програма на почетку, она ће ићи директно у тај програм уместо покретања љуске. Ови програми имају ограничења на њихове способности. Перл је веома способан. Сед је уредник. То могу да раде ствари изван једноставно уређивање. Али, то може да буде тешко да се програмира да. Поред тога, пролазећи аргументе и ствари на сценарију је било немогуће или збуњујуће. Дакле, у тим случајевима, са авк или сед, то је, барем у мом искуству, боље да напише схелл сцрипт и позива авк или сед из схелл скрипта уместо позивања авк или сед као скрипта спецификатором линије. Перл је веома разноврсна језик, као што сам рекао. Ви не можете да покренете интерактивне команде у Перл, што значи да не можете да тестирате делове скрипти да сте у развоју покретањем их интерактивно. Међутим, то је изузетно способан језик и развио у веома широко користи алат. То је само мало од загради напомену о пројектанта линије. У свим или већини облика Линук - опет, ја не могу да будем сигуран да је све - и у Мац ОС, ако откуцате цсх добијате тцсх, и ако откуцате сх ти басх. Они су ту да ти дам напредније верзије ових граната, али то може бити збуњујуће. Ако пишете сценарио користећи тцсх или басх собе док називајући цсх или сх а затим покушајте да га покренете на рачунару који нема тцсх или басх, можда добити неке грешке ако постоје команде у ту који те гранате не препознају. Поред тога, можда сте позвали вашу шкољку на локалном рачунару називајући га као сх или цсх а затим добијање напредније гранате. Ви не можете чак ни размишљати о томе да ли користите напредније шкољку. Дакле, ово је потенцијал замка. Како је утврђено да ако откуцате сх ти басх, ако откуцате цсх ти Тсцх? Постоје ствари у ових рачунара се називају линкови који може да се повеже поднесе имена односе на исту ствар. То може бити или 2 имена за исти или датотеку чија је сврха да се односи на други фајл. Зову хард и симболичке везе. Нећемо ићи у то више данас. Такође може бити одвојени фајлови - 1 фајл сх, 1 фајл басх - али су обоје раде басх. Затим, ту је још један квалификант овде. Ако зовете један од тих граната по једном имену, Ви можда мислите да би добили исту функционалност као и називајући га под другим именом. Па, то заправо није нужно истина. Ове команде могу испитати име којим су се зове и они могу да, на основу тог имена, понашају различито. Могу постојати питања покушава да се прилагоди на стандард. Неки од вас су можда чули за ПОСИКС стандард или други, можда друге функције. Ово може да се понекад бира аргументе командне линије или постављањем схелл променљиве. Позивање га као сх или басх може заправо довести до другачијег извршење чак и ако је то исти фајл који сте извршење. Још једна ствар коју треба узети у обзир је да чак и ако други рачунар има тцсх или басх, ако нису повезани, јер су на локалном рачунару ако имате Линук или Мац ОС локални рачунар, онда опет ћете добити гранату коју зову СХ или цсх, а не онај који можда више волите. Садашњи Боурне схелл има побољшања мањи од оних у Басх али поред оних у оригиналном Боурне схелл. Као резултат тога, чак и струја Боурне схелл, сх, чак и када то није басх, подсећа Ц језик више него Ц-схелл ради. То није била истина, када је први пут створио Ц-љуска, али она се развила на тај начин. Ви ћете приметити овде да сви ови називи љуске осим за Боурне схелл Имам нешто да укаже који су љуска - цсх, басх - али Боурне схелл је само ш. Зашто? То је био оригинални граната. Било је граната тада, не граната, и јер је граната, није било разлога да би се разликовала од друге шкољке. Зато она има то име и даље ради. Ово овде је врх линија из базе података лозинком за налог сам тамо имао на другом рачунару. Ја ћу покушати да се то име, тако да можете видети тај део на крају, љуску. База података лозинком држи карактеристике пријављивање за све кориснике. На почетку је корисничко име, које можете видети сада последња 2 слова моје. Поља овде су одвојени колонама. Последње поље, као што можете да видите, је Бин / тцсх, граната. То је граната Спецификатор. Има нешто занимљиво овде. Када Уникс је прво развијен, било је само 1 граната, тако да није било избора тамо. Па зашто су дозволили поље у бази података за лозинку да наведете љуску? Ја не знам, али то је срећа што су урадили. То је прилично тешко да се направе промене у формату базе података лозинком јер многи програми односе на њеном формату и да ће морати да буде поново написана. То је умесан или случајна развој који су укључени то поље. Та врста лозинка фајла линија је колико ја знам користи на свим Уник и Линук рачунарима. Мац има свој систем. Она заправо има фајл лозинке са линијама у том формату, али то није тамо где су дефинисани карактеристике корисник. Још једна напомена у загради тамо. Ако зовете гранату, можете га назвати као под-шкољке од постојећих граната. Дакле, ако ја одем одавде, хајде да се отараси тих ствари. Овде сам у Ц-схелл. То променљива, који прецизно идентификује своју шкољку, заправо није увек поуздан начин да се утврди шта се унајми бежиш, али у овом случају то је. Шта ако сам само укуцајте - Сада сам у Басх. Неке ствари ће бити исти. Да ли ми говори моје команде. Ако ја не суспендује вратим у Ц-љуске, лс, исто. Зар не? ФГ, првом плану, назад на моју Басх схелл. пвд, текући директоријум, назад у Ц-схелл. пвд, различит именик - заправо не разликује директоријум у овом случају. То је исти директоријум. Рецимо ја желим да овде позове команду: где ли. Шта да радим? То ми говори где командују ЛС, онај који ми даје листинг директоријума, налази се у лс. Вратимо се басх схелл. Хајде да покушамо исту ствар. Хм, занимљиво тамо, где: команда није пронађен. Зашто је то тако? Где команда је уграђена у Ц-схелл. Ово није команда која треба да се чита у меморију од негде другде и погубљен. Ц-љуска га води преносом извршење на делу своје кода и то није у басх схелл. Дакле басх, немају такав уграђен у команду, тражи се, то не пронађе, и добијамо грешку. Дакле, ту имамо басх схелл који ради под Ц-схелл, а ми то зовемо под-граната. И само у случају да сте радознали, басх схелл има свој начин лоцирања команде. хеширане се односи на чињеницу да се може изведено брже, се нашао брже. То је један од побољшања изграђених у неким од тих граната. Боурне типа шкољке су пожељни за програмирање. Они имају контролне структуре као што су петље, условне исказе, врста команди које можете да користите у програмским језицима као што су Ц или било ком језику. Можда сте програмирање у Јави или шта год. Гранате имају они превише. Борнов типа гранате су, нарочито басх, има више и они су дизајнирани са већу флексибилност. Басх схелл има низове. Оригинални Боурне схелл не. Тако да може бити знатно повољније за програмирање. Ц-љуска заправо има низове, али нема много ових других функција. Борнов типа гранате Тхе извршава брже ако немају функције намењене за интерактивну употребу. Можете учитати ствари доле за једну сврху, а то их учитава доле за другу намену. Има да компромис тамо. Те особине које су намењене за интерактивну употребу стварно су од мале или никакве користи за скриптовање. То је могуће користити интерактивну под-гранату баш као оног тамо сам почео да тестирате команде које намеравате да користите у писму. То је оно што ви не можете да урадите са Перл. Можете то урадити са љускама. Чак и структуре као што су петље за и тако даље могу да се извршавају интерактивно. Они су повремено корисна за покретање интерактивно, али вероватније да сте их користе да развију скрипту. Игрока. Ово ће бити о Ц-схелл. Историја механизам где се вратиш у ранијим командама или делове њих које сте већ покренули. Опет, о Ц-схелл, Боурне Схелл и Корн схелл имати ове ствари, али ја не идем да се у њих. Дакле овде су неке корисне алиас који имам. Уместо да куцате лс - то је заједничка команда - само укуцајте л и уштедећете 1 карактер. Јел са различитим опцијама, сви они раде. Имајте на уму да су те дефиниције имају наводнике око њих. У овим случајевима, цитати нису неопходне. Ако можете да дефинишете те псеудониме без наводника, и даље ће радити. Они се препоручују. Постоје ситуације у којима не можете да користите цитат јер желите нешто да се деси што би спречило цитат. Понекад можете да цитирам део дефиниције, али не све. То је такође генерално препоручује да користе једноструке наводнике уместо двоструке наводнике. Двоструки наводници имати ефекте на варијабилним дефиницијама, нарочито изазива их да се процени, уместо да га заустави. Зашто би желимо да зауставимо евалуацију? А како то наводи урадио за нас? Ево команда која можда наћи занимљиво. 'Да ли је г *' г *, као што вероватно знате, је џокер израз за све називе датотека почињу са г. Ако ја пишем само у командној ли г *, ја ћу добити листу свих тих имена у мом тренутном директоријуму. Ако дефинишем тај псеудоним јер је овде са наводницима, то ће покренути ту команду у тренутном директоријуму где сте га користите. Али ако наиђете дефиницију алиас без наводника, она ће оценити џокер г * када се покреће ову команду дефинише. Дакле, дефиниција псеудоним ће ли следи списак фајлова у директоријуму у којој се извршава команда псеудоним, без обзира на то где сте заправо намеравате да покренете команду. Ово није од велике користи, а појединачни цитати спречити евалуацију звездицом. Тако да само се дефинисање биће лс г *. Онда када покренете псеудоним, ЛГС, то онда ставља да је од. Сада не постоје квоте, а она ће проценити звездицу када покренете команду алиас. Дакле, то је једна ствар. Двоструки наводници би имао тај исти ефекат овде, али постоје и други случајеви у којима двоструки наводници не би радили тако добро. Ево још један. Можда знате команду греп. Команда греп може да се користи за скенирање фајл за линије које имају одређене жице. Дакле, идемо овамо, а ја ћу изаћи из мог Боурне схелл. Ок. Ево фајл. Рецимо да је то греп АБЦ жице. Ту је. Ако урадим греп зддд, ја добити ништа. Ок. Тако да пронађе стринг, извештаји, не пронађе, то не пријављују. Она излази све линије која има ту серију на њему. Постоје све врсте опција овде које можете пронаћи у документацији. Ево један од начина да се то уради. Шта је са овом једном, алиас Грабц 'греп АБЦ'? То ће укључити 1. аргумент када је дефинисан псеудоним. Дакле, ако сам то да урадим овде, сад ако ја радим Грабц, сада псеудоним обухвата више од једноставног команде. Она такође има аргумент. До сада то ради. Имам још једну команду овде, овај, па то су различити низови тамо и показати да то не пронађе ништа нема, јер не одговара. Шта ако желим да укључите у дефиницији алиас датотеку да ја идем за претрагу и ја желим да дам као аргумент за псеудоним гудачки да тражим? Можда желим да кажем абц као аргумент за мој псеудоним, али псеудоним већ одређује датотеку. И то је где је овај израз долази унутра Приметимо овде имамо греп баш као и пре. Имамо овде фајл, конце. \! ^, Некако чудно израз, претпостављам, ако нисте видели раније. Знак узвика је део историје Ц-схелл механизма. То могу да се сетим раније команде, она могу да се сетим да те аргументе команди и тако даље. Историја механизам се користи као део алиасинг. Ако наведете линију после знака узвика, то ће се односити на тој линији на листи историје, које нећемо добити у сада, јер је то сасвим друга тема. То је могуће навести део линије. Дакле, 3:2! Би други аргумент командне број 3. Уметање овде у овом изразу представља први аргумент. Ако не дају индикацију о којим командама мислите, то се односи на одмах претходне наредбе, и уметање је симбол за први аргумент. Зато што је уметање и не број, не морате да користите дебелог црева, тако ^! значи први аргумент на претходну команду. Мало помешао овде. У овом случају, када користите ово као дефиницију алиас, историја референца односи назад на командама у којима се користи псеудоним. Дакле, ово ће вратити 1 команду као операције историје, али као алиас операције се односи на команду у којој би укуцате, кажу, грстрингс_филе. Имамо цитате овде у њему. Шта је обрнута коса црта за? У овом случају, као и другде, ми не желимо да се изврши историје механизам док дефинисање алијаса. Ако нисмо имали тамо обрнуту косу црту, граната ће повући у првом аргументу команде у праву пре него што је водио ову команду алиас, који ми не желе. Ми желимо то да се гради у команди алиас да се позива на аргумент касније. Појединачне цитати не могу избећи узвичника, историја референцу. Можда знате израз бекства значи да промени значење нечега. У овом случају, то значи да се заустави нешто да имају посебно значење. Посебно значење знак узвика је историја. Бекство и нема то значење. Цитати немој то да радиш, обрнута коса црта ради. Дакле, ми смо у ствари користећи 2 нивоа беже овде. Ја ћу прећи ову команду у други прозор, без да је куцање помоћу ових уређивање операције, које можете наћи корисне. Нешто друго овде ћу вам показати. Ако сте само укуцајте алиас без аргумената, то вам говори све своје аргументе. То је гомила псеудонимима сам већ имао овде осим оних које сам користио овде данас. Али ако сам само укуцајте са именом псеудоним, то ми говори шта то значи. Обратите пажњу да су цитати отишли ​​и обрнута коса црта је нестала. Овај стринг овде је резултат те дефиниције алиас, а сада само има! ^ у њему. Ово ће изгледати у жицама фајл за било шта. Дакле, ако ја урадим грстрингс_филе жице, нисам му дати ништа да траже тамо, али изгледа у жице. Није пронађе реч конце у жице фајл, али то не наћи АБЦ. И то не пронађе то. Дакле, овде дајемо аргумент који погађа у дефинисању псеудоним, која је уметнута у њега. То је место где овај израз долази из. Можете да користите више од 1. Уметање је симбол за први аргумент. Ако сте желели да користите други аргумент, онда би рекли: 2. Нема посебан симбол за други аргумент. И зато користите цифру, морали бисте да користите дебело црево. Постоји, међутим, други избор овде. Знак долар представља последњи аргумент. И зато што је ово симбол, можете изоставити дебелог црева. Дакле, било би последњи аргумент у листи. И ту је тај један. Астериск значи све, тако да је ово комплетна листа аргумената, и опет, можете изоставити дебело црево, јер то није нумерички. Надам се да сви ви посматрали све ово. Историја механизам може да се вратимо на раније линије на листи историје. Можете да урадите то у дефиницији алиас. Никад нисам видео ово урадили. То би имало ефекат извлачење раније команде из листе историје када извршите псеудоним, која би могла бити различите команде у зависности од тога када и где сте га изврши. Замислити можда ћете желети да извуче такву референцу само да знате шта је раније била команда. Никад нисам видео ово десити. Претпостављам неко желети да, али је то мало вероватно. Постоји још једна ствар овде. Ако користите тај историја типа референцу, онда се користе само аргументи на којима постоји таква референца. Ако имате дефиницију алиас који не користи се историја типа референцу, ако је то само постаје почетак команде а имате додатних аргумената, онда све што откуцате након тога ће бити додат у команду. У овом случају, пример сам дао тамо, користили смо први аргумент; нисмо користили никакве друге. Ако други аргументи су дати на командној линији, они не би да се користе. Дакле, ако користите референцу историје уопште, онда морате да га користите да бисте добили никакав аргумент. Има још једна ствар овде само желим да поменем, делимично узгред, наиме да је ова историја механизам са знаком узвика враћа на првобитни Ц-схелл. Тцсх увео историја операције који користе врсте команди и низова из уредника, или Емацс или ВИ. Моје лично мишљење је Емацс је много лакше користити у ту сврху чак и ако сте ви користите за редовне уређивање. Постоје разне Емацс команде које су сада прилагођене за историју. Контрола П добија претходну линију у листи историје. Још једна контрола П ће ти онај пре тога. Стрелица нагоре ради исту ствар. Контрола Н добија следећу команду ако сте већ скролујете вратио неке начине. Довн Арров то ради превише. Можете да кретање лево-десно са стрелицама и разним другим стварима. Ово може да користи од историје механизма много лакше него користећи синтаксу тачке узвичник, али ви не би користили да у дефиницији алиас. Ми ћемо ићи преко које неки други пут. Променљиве. Знаш шта су променљиве у програмским језицима. Гранате их такође. Ц-љуска користи команду сет за додељивање променљиве, тако да поставља променљиву А на вредност б - као што сам рекао, али бескористан дефиницију илустрацију како се то користи. Сет команда ће креирати променљиву уколико већ не постоји. Позициону параметри за скриптама може сматрати варијабле, али употреба од њих и правила за њих су нешто другачија. Ви не можете да доделите вредност за $ 1 у току скрипту. Ти би морао да дефинише нову променљиву за ту сврху, ако неко од вас хтео да. Тип сет без аргумената и добићете списак свих тренутно дефинисаних варијабли. И хајдемо у моју другу схелл овде и видети шта смо добили ако то урадимо. Прилично дуга листа тамо, зар не? Крећите се мало. Погледајте све то. Неке од тих ствари су аутоматски дефинисани су гранате. Шкољка ствара променљиву и даје јој вредност. Неки од њих су дефинисани љусци али тада редефинисана од стране корисника према његовим жељама. А неки од њих су створени од стране корисника у зависности од тога шта ради тај дан. То је само сет без аргумената. Има чудан карактеристика ове ствари овде. Ту морају да буду или без размака између знака једнакости и име променљиве и вредности или простори на обе стране потпишу једнакима, као у овој. Ово неће радити, а то је заправо важи команда али то неће урадити оно што намеравате. Та команда ће радити, јер ако само кажете подесите и Име променљиве са но знак једнакости или подесити и променљива име са знаком једнакости и без вредности, она ће поставити променљиву на нулл вредност. Дакле, сет а = је валидан команда. Сет команда може дефинисати више од 1 променљиву на истој линији. Дакле, ова команда овде има ефекат дефинисања и а и б на нулте вредности. Вероватно није оно што желите. Овај овде, што је раније поменуто, ће довести до грешке јер = Б није важећи израз. Име променљиве не може да почне са знаком једнакима. А ту су и ови додатни ствари овде. Црева су коришћени за избор аргументе из историје линије, и они могу да се користе - а ја нисам улазио у пре - да измени те ствари. Они се такође могу користити за модификовање љуске променљиве. Овај овде, $, има вредност. : Р ће скинути екстензију. Проширење ће бити нешто после тачке, тачка и нешто након га на крају датотеке, само на крају листе након последње црте. Па ја га имам овде. је то. То ће пасти О.. Ако нема екстензију, само Путање после задње косе црте, то неће имати ефекта. : ч, то променљива израз, ће скинути последњи елемент листе директоријума, опет, тек после задње косе црте. Дакле, / / ​​Б / Ц постаје / / Б, али ово је промењен јер елеменат после листи нулл. Овде постоји нешто што такође желим да нагласим. Ове квалификације не тражи за постојање тих фајлова. Они само траже гудаче. Они имају за циљ да манипулишу имена датотека, путањама, али они могу да се користе на било жицу, чак и ако то није име датотеке. И они не траже постојање, па ако постоји таква датотека, / / ​​Б / Ц, то ће и даље радити. Било да је то од користи је друго питање, али ће и даље радити. Променљиве су различите у Тхе Боурне граната. Доћи ћемо до тога касније. Долар знак се може побегао баш као и узвика и звездицом. Долар знак може бити побегао са обрнуту косу црту или једноструким наводницима. Двоструки наводници имају чудан ефекат у свим граната од присиљавајући евалуацију долара потпише променљиву израз. Дакле, ако се то буде побегао на један начин, знакова навода могу имати за последицу од цега он се ионако оцењен. Ово је мало збуњујуће. Ако постоји више нивоа бекства, као што су самохране наводницима унутар двоструких наводника или двоструки наводници унутар апострофа, треба тестирати да видимо шта ће се десити променљивој ако користите један. Те ситуације 2 - двокреветна унутар јединственог, једне унутрашње двоструко - не морају вам дати исти резултат. Енвиронмент променљиве, везане Ц-схелл променљиве. Енвиронмент променљиве су такође променљиве у Ц-схелл, и они су такође променљиве у другим граната превише. У Ц-схелл, они су различита комплета. У ствари сам пре саиинг су око љуске варијабли. Енвиронмент променљиве су посебан скуп варијабли са изузетком неколико варијабли које називамо Боунд променљиве, који су веома важни и ми ћемо ући у оне касније. Енвиронмент променљиве аутоматски преноси на на граната или командама које се покрећу из љуске. Друге ствари нису. Тхе схелл променљиве су псеудоними нису. Енвиронмент променљиве су. Зато смо их зовемо променљиве окружења, Идеја је да окружење протеже прошлост само ваш тренутни схелл. Они се могу користити за дефинисање ствари за команде. Ево примера. ПРИНТЕР, ЛПДЕСТ. Оба ова променљивих може дефинисати штампач који ће команда користи за штампање ствари. Ако имате више штампача око, можда ћете желети да ставите ону која вам се допада. Разлог имамо 2 променљиве је да су различити скупови команди написан користећи ове различите променљиве. Можда им различите вредности. Највероватније ћете им дати оба исту вредност. Те ствари раде, јер су команде које раде штампање су програмирани да испита вредности ових променљивих. Ако програм није написан на тај начин, ако су написане да раде нешто друго, променљива ће бити ирелевантно. Дакле, оперативни систем се не тражи ове варијабле сваки пут када се односе на штампач. Команда која ради штампање је у потрази за ове променљиве ако је програмиран на тај начин. Ове променљиве су често дефинисани у вашим фајловима иницијалне али не нужно. Можете их дефинисати на командној линији. Они могу бити дефинисани у команди. Команда која покреће нешто може имати свој избор варијабли - варијабле који су јединствени за одређени софтверског пакета, на пример. Они ће се дефинисати када покренете тај пакет. Како се ове променљиве прошао на под-шкољке? Када се пише под-граната, то не пише у том подручју. Површина под-схелл који је посвећен променљиве окружења није написан од стране под-љусци, то је написао копирање. Када покренете обичан команду, као што су ове команде да одштампате или шта год, они кренути стварањем новог шкољку. Шкољка ствара љуску, а затим замењује део тога са командом да сте покренут, што је мало збуњујуће, али то је како се ове команде се променљиве окружења да су тада односи на касније. Команда овде за дефинисање променљиву сетенв. Тако се то дефинисати. То је 3 елемента: сетенв, променљиве, вредност. Ако само не сетенв без аргумената, шта добијате? Списак свих тих променљивих. Опет, то је леп дугачак списак и у овом случају, као иу другима, ове варијабле су у великој мери дефинише мог пријављивања рад од стране саме љуске пре него било чега што сам урадио. Постоји још једна команда овде, принтенв. То такође исписује животне средине. Обратите пажњу на ову последњу ствар овде, ЕДИТОР = ви. То каже да ако ја користим нешто што назива уредника и ја не прецизира уредника и то ми омогућава избор, може ми дати ви. Шта ако ја урадим принтенв ЕДИТОР? То ми говори шта је то. Непосредно пре тога, постојао је променљива, МАЊЕ. То су ваше опције дефаултс када сам покренете МАЊЕ команду, који приказује фајлове. Дакле, ако то урадим, могу да принтенв 1 аргумент или 0 аргументе, не више од 1. Постоје и друге команде такође, али ми не идемо да се у све то данас. Запамтите било модификатора за љусци варијабли као што су: х, која ће пасти последњи елемент путање, или: р, који ће пасти продужетак. Они сада примењују на променљиве окружења превише. Нису навикли. Некада се они не могу бити модификовани. Сада они могу бити. То је један од аванса са кретањем граната током година. Ја сам рекао да су гранате као део окружења и схелл променљиве у Ц-схелл су, уз неке изузетке, различитих скупова. Можете успоставити променљиву окружења и схелл променљиве са истим именом. Они ће бити различите променљиве, они могу имати различите вредности. Промена вредности једне неће променити вредност другог. Ове променљиве се све оцењује са знаком долара - $, $ год. Па шта ако имате ово? Да ли знате који сте добили? У мојим тестовима сам добио схелл променљиве, али то није документовано, а ви не можете ослонити на то. Па ја вас питам, је стварање љуске и променљиве окружења са истим именима добра идеја? Но реду. Које су то главне изузеци у којима окружење и схелл променљиве су међусобно повезани? Постоје они 4. Велико слово РОК променљиву окружења, схелл променљиву термин у малим словима, тип терминала емулацију. Само ћу да одем овде и ја ћу да урадим ехо, корисну команду овде, $ $ ТЕРМ термин. И тамо. ктерм је тип терминала за прозоре приказане у Кс Виндов система. ктерм-боја је варијација која омогућава да различите боје. Зашто ми дефинишемо ово? Шта је ово добро за? Команде које преуредите екран као уредника послати одређени секвенце, који се зове есцапе секвенце, на терминалу или прозор да га преуредили и тако даље. Те секвенце су различити за различите типове терминала. Ово је оне које се користе говори. Понекад постоје проблеми постоје. Можда ћете желети да промените то. Ако се ствари не раде, понекад терминала типа је постављен наопако, можда ћете моћи да га поправи редефинисањем термин променљиву. У овим случајевима, промена једне променљиве, променљиве околине или љуске променљиву, треба да промени ону другу. Открио сам кроз искуство које мења термин у словима не увек не мења схелл варијабилни термин у малим словима. То је грешка. Ја не знам да ли је то увек истина. Већину времена то није истина, али то може бити. Дакле, ако направите промену, само проверите да ли се. Није често да морате да промените ту вредност, али с времена на време радите. Животна средина променљива КОРИСНИК. Опет, променљиве окружења словима, схелл променљиве у малим словима. То је ваше корисничко име. То је само под изузетним околностима да би желите да промените то. Уколико ваше корисничко име је неко други, то може бацити разне ствари ван. Почетна директоријум, хоме директоријум корисника. Опет, не желите да се то промени. Обратите пажњу у свим овим случајевима и оног који смо о томе да покрије, ПАТХ променљиву, променљиву окружења је у словима и границе шкољка променљива је у малим словима. Ако промените један, требало би да промените друге. Ова врста везивања не може се успоставити као што не може да се веже 2 променљиве, осим ових 4, а везивање у ових варијабли не може се опозвати, Ви не можете да их раздвоје. Дакле, ова 4 пара варијабли су везани. Они ће увек бити. Нема други ће бити. Поред тога, било би могуће створити променљиве са истим именима од супротних типова. Ти би могао направити схелл варијабилни термин у малим словима или променљиве окружења ТЕРМИН словима. Те варијабле би бити независна од ових упарених варијабли и они ће бити независни један од другог. Ја не могу да замислим зашто би то урадио осим ако не желите да збуни људе. Овај овде, пут променљива, ово је заиста важна. Још једна ствар овде је да не може бити случајева варијабли са сличним Упарени именима које нису везане међусобно. Не може бити променљиве, Схелл и граната, у великим и малим словима. На основу тог имена, ви не знате да ли је променљива је променљива граната или променљиве окружења, а они нису у обавези да једни друге. Дакле, та врста упарених имена не подразумева Боунд променљиве. Променљива пут, који сам био пре приказивања, је списак путањама у којима граната изгледа за команде. Идемо у овом прозору овде, а ми ћемо урадити ецхо $ ПАТХ, великих слова - променљиву окружења - ехо $ путу, мала слова - схелл променљиве. Обратите пажњу да листа директоријума је исти. Они су обавезни. Промените један, промените ти други. У променљиве окружења елементи су раздвојени колонама. Обратите пажњу на то. У схелл променљиве су раздвојени размацима. Ово окружење променљива је један стринг. Шкољка променљива је низ. Боурне схелл није имао низове. Басх ради, али то је већ фиксни део љуске. Ово је један стринг и не низ. Ц-љуска увек имали низове. Низови су много лакше да раде са. Можете да се односе на делове. Дакле ецхо $ путања [1] и ја добити / уср / бин, први елемент. Опет, запамтите долар знак стоји за последњи елемент листе историје. Шта се дешава тамо? Он је покушао да пронађе знак за долар као симбол променљиве. Ја га побегнем. Упс. То не би било да узме. Неке од ових ствари не раде тако добро. Можда ћемо само оставити да се. Астериск се односи на целу ствар, али то је оно што добијате ако не наведете елемент. Још један начин да се арраи варијабле може манипулисати, број елемената тамо, 7 елемената. Овде смо ставили знак фунту пре име променљиве. Ево га још један. Ставите знак питања тамо. То је логичка вредност. То указује да постоји променљива. То је још један начин рада са променљивих. То, узгред, не мора да буде променљива низ. То би могао бити било променљива. А ако то урадим, не постоји таква променљива и ја добијем 0.. Још једна мала ствар има око варијабилним оцена. Назад на овај овде, ако из неког разлога желели да раде са овим него рад са низом, шкољка променљива, постоје команде које могу раздвајају ове ствари на основу дебелог црева. У ствари, ако идете да се ово ради у Басх схелл евентуално, некаква писма, који би вероватно како би ти то урадио. Али у Ц-схелл то је много лакше да користе низ. У Боурне схелл, променљиве се додељују од стране једног израза као што је овај, као начин можете да доделите променљиву у програмском језику, и ту не сме бити без размака. То је неопходно да то буде само 1 низ. У Боурне типа гранате у, све променљиве су променљиве љуске. Енвиронмент променљиве су подскуп варијабли љуске. Они се разликују од варијабли нису окружења од извоза. Команда за то је извоз, као извозној ПРИНТЕР. Ако бисмо дефинисали такву променљиву, ако смо хтели команду за штампање да га пронађе, она би морала да буде окружење променљива, и тако смо се једно направити. Ево има нешто мало збуњујуће. Овај израз, извоз на животну средину, произилази из овог Боурне схелл концепта, и ипак да израз се користи у описима Ц-љуске, где не постоји таква команда као извоз. Ако само кажеш извоз по себи, добијате листу извози - Дакле, ако сам не извозе овде, не постоји таква ствар. Ок, ево га. Ове ствари, узгред, такође су дефинисани од стране гранате. Нисам дефинисати било који од њих сама. Љуска чини свакакве ствари по себи. То би требало да раде ствари аутоматски. У Басх или Корн љуске, можете да покренете команду овако, који ће дати оба променљива вредност и извози га у 1 команди. У Боурне схелл они морају да буду одвојене команде као што су извоз. Овде је још један аспект који је збуњујуће. Сет команда у Ц-схелл дефинише променљиве и без аргумената ти каже шта Вредности променљивих су. У Басх љусци, комплет команда без аргумената ради исту ствар, али са аргументима она ради нешто сасвим другачије. Дакле, ово су различити аргументи овде. Неки од њих су променљиве окружења, неки од њих су љуске променљиве. Сви они су заиста схелл променљиве. Неки од оних који су променљиве окружења. Сет команда са аргументима може да се користи за рад на позиционих параметара сценарију, који је начин да их све одједном. Ми стварно не могу ићи у ту данас. Такође се може користити да се промени схелл понашање. Посебно у Басх постоје променљиве које ће утврдити како се понаша граната. Тада је такође само ова команда да можете да видите, ова команда. Прелом затим променљивих и променљивих типова се користи у Корн и БАСХ граната. То није обавезно, али се може користити за ограничавање вредности променљивих, што може бити корисно да спречи грешке, и то је прилично уобичајено. Па ја само напоменути да у случају да га видиш негде. Где команда. Запамти сам поменуо раније, где команда у Ц-схелл, који могу да вам кажем локацију командне путање. Овде је замена команда. Требало би наћи на тастатури негде знакова да изгледа овако. Локација на тастатури ће се разликовати. Ми смо га звали бацккуоте. То је отприлике величине цитат. Она иде од горњег левог до доњег десног. Ево на мом Мац тастатури то је у горњем левом углу. Тај лик може да се користи да изврши команду у оквиру команде. Ако имате израз унутар бацккуотес, да израз је команда, то је покрените. Излаз тог команде је затим замењен за цео бацккуоте израза у дужем команде које затим води са тим излазом као део свог низ аргумената и тако даље. Овде је команда која користи то. Хајде да демонстрирање рада овде. Идемо горе, извади бацккуотес. Контрола ме добија на почетак линије са Емацс уређивање синтаксе. До сада Путање је оно где ради, али кад то радим овако, онда се лако тој листи путањама уместо целог овог бацккуоте изражавања и истрчавања лс-л о њима. Врста згодно, зар не? Дакле, то је једна ствар уредан. Тако бацккуотес раде. Сада идемо доле мало даље. То су псеудоними. Ја заправо користим ово. Ја ћу покушати да се ово у са 1 уређивање рада. Ок. Хајде сада да видимо како се те дефиниције изашао. псеудоним ДШВ говорећи ми како је дефинисано. Обратите пажњу да је ово само, али спољашњи цитати су скинути и знак узвика је скинут. ! *, Комплетна листа свих аргумената. У дефиницији алиас она ће се примењивати тамо где ја користим ово. ДШВ КСХ басх. Ок. Погледајте како то ради? То ми штеди куцање. Идемо се мало само да поменем нешто друго овде. Приметимо овде те различите шкољке. Требало је да сам раније поменуо ово. Цсх има 2 овамо и тако се / бин / тцсх. Могли би успоставити на други начин да они који су заправо исти фајл. Запамтите сам рекао ако откуцате сх ти басх. Упишите то и добијете ово. Али они нису повезани. Они имају појединачне оне тамо. И то није врста фајл који можете позвати још једну. Дакле, они су одвојени фајлови, они су Ц-љуске су исти фајл. Назад овде доле, друга овде, ово звани, напоменути да води ову команду, датотеку. То псеудоним ради то. Фајл вам говори тип датотеке. Дакле ФВХ КСХ басх. Ок. То је излаз команде датотеке. Ја не знам да ли знате шта то значи овде, Мацх-О универзални бинарни са 2 архитектурама. Постоје 2 могућа типа процесора у Мац, и неки програми су писани да би могли да раде са оба, и командна датотека може одредити да, па то је оно што то значи. Обе ове датотеке су написане на тај начин. Дакле, видимо како функционише псеудоним, видимо како функционише бацккуоте, видимо како су стварни ли фајл или фајл ради. То можда неће радити. Пробајте "где где" и "ДШВ где". Ок, хајде да покушамо да. где где. где је граната уграђени. Запамтите раније смо показали да басх није имао где. Ако откуцате где у Басх схелл, добијате поруку о грешци. То је само део од гранате, а не као посебна команда. Шта се дешава ако ДШВ тип потрази за где? Погледајте шта се дешава тамо. Ран где где, добио овај излаз, а затим покушао да покрене лс као л о где је граната уграђени. где је ту, али они други не постоје. Ниједан од њих постоје, заправо. Дакле, да не ради увек, и то такође показује како неке ствари не ради баш оно што сте можда мислили. Идемо доле мало даље овде. Ово овде је у Басх. То је такође команда замена као бацккуоте. Али за разлику од бацккуоте, она користи ову променљиву стил. Постоји велики број израза који почињу са знаком долара, и док то нису променљиве, они позајмили коришћење знака долара да укаже израз неке врсте. То може бити окружени заградама или заградама или двоструким заградама, који има различиту намену. Појединачне заграде овде су команда замена баш као и бацккуотес. Дупли заграде је заправо аритметичка операција. Постоје и други синтакси, остале операције. Бацккуоте синтакса је доступан у Басх. Међутим, ово је пожељно. То је много лакше за читање и омогућава гнезда. Можете имати унутра $ (команда) другу команду, нешто као - Ја добијем списак тамо. То би радити ако сам имао такође бацккуоте. Шта ако желим да урадим нешто као - Ви вероватно не би заправо користили ову команду, али ова унутрашња замена команда одјекује имена свих фајлова који почињу са, онда овај један ради лс-л на тим фајловима, а онда овај само понавља излаз. Ви вероватно не би то урадили, само бих одјек или лс, али ово илуструје како гнезде команди ради. Дакле, само још једна карактеристика овде.  Споменуо сам ово раније, да када имате где у Ц-схелл, укуцајте радове у Борнов типа гранате на за лоцирање команде. Уграђене команде, само оно што сам тамо кажу. Команде су део омотача, као и где. Када шкољка извршава команду као лс, она га лоцира кроз пут, проналази га у неком директоријуму негде, наводи да је у меморији, креира нову шкољку, чита лс команда или шта год у љусци где се већ налази променљиве окружења, а онда се преноси извршење на њега. Уграђени команде, код за те команде је у љусци, тако граната управо почиње извршавање део сопственог кода. где је таква команда. То је заправо добија брже. То не мора да чита ништа у меморији, већ је у меморији. Уграђене команде увек имају предност над командама са истим именом. Команде које су у директоријуме на путу могу имати исто име, команде у различитим директоријумима, датотеке у различитим директоријумима. Онај који се јавља раније у путу је један ћете добити. Ако постоји уграђен у команду, увек га добити. Не постоји начин да га дају мању предност од команде у путу. Ако желите да добијете ту команду путање, можете да упишете пуну путању. Ако било где команда на путу негде, можете да откуцате / бин / и где ћеш га добити. Ако не желите да куцате целу путању, можете да дефинишете псеудоним. У ствари, ако сте дали псеудоним исто име као и уграђеним у команду, да ће радити јер дефиниција псеудоним вреднује пре граната утврди да је уграђен у команду која треба да се изврши. Онда то постаје мало компликованије са неким командама овде. Случај неких команди се заправо уграђен у командама и на путу. Један од њих је ехо, команда сам користио пре мало у тим примерима. Ехо је команда на путу и ​​то је у сваком љусци. Они не морају сви понашају на исти начин. То је првобитно био команда само у путу. Изграђен је у на граната касније. Зато што постоје опције које зависе од окружења и опције командне линије, уграђене команде су написане да функционише исто као команде који је био на путу, то је мало вероватно да би било написано на тај начин ако команда није већ написан за пут. Дакле, ово има споредне ефекте. Његова историја има ефекте овде. Постоје опције постоје. Ту је опција дефинише променљиве у тцсх зове ецхо_стиле. То је један од ових варијабли које могу да промене начин на који ехо радова. Постоје и други случајеви у којима можете доделити променљиву који мења начин на који се операција граната, укључујући и уграђеном командом, ради. То неће утицати на било шта друго од других команди немају приступ љуске варијабли, само променљиве окружења. Али схелл операције може да чита љуске променљиве. То неће радити за цсх. То је само тцсх. То је један од побољшања. Парсирање има секвенце када оцијени метацхарацтерс, када оцијени променљивих, псеудониме, референце историје. Постоји посебна секвенца за ове ствари. Ако ради ствари у одређеном редоследу и добија се нешто што је израз једне врсте који је већ оцењен, то неће оценити поново. Ако га добије, онда је то само ће проћи на ликовима. Дакле, ако процена неких израза као замену командне или променљива или било шта доводи до израз који бисте желели да се процени, који ће радити само ако је процена јавља касније у низу. Надам се да сам био јасан тамо. То парсирање секвенце, операција у Ц-схелл, није исти за уграђених команди, као што је за не-уграђених команди. Нисам сигуран о Басх тамо. На пример, ако граната променљива произвео историје референцу, вероватно не би да се вратимо у историји. Само би добили знак узвика. У ствари, можемо само да покушамо да се одмах. сет а = а ми ћемо морати да стави ово у тамо. Ох, чекај. Извините. Урадио сам то у Басх. Желео сам да то урадим овде. Види, па то није оценити да је историја референцу јер је већ било преко границе вредновања историје изразе када је оцењен променљиву. Дакле, то је 1 ефекат анализи. И опет, уграђене команде се не врши на исти начин. У реду. Идемо на следећу овде. Ово је требало да буде 1 линија, али то што је лакше за читање. Шта да радим? Можда се сећате да можемо оценити као звездицу Име датотеке џокере, а ту су и други филенаме џокер као знак питања и носача израза. Та врста евалуације се зове задавању. сет ноглоб на почетку ове команде, каже, не ради то. невезаног ноглоб каже се вратимо на то ради. Имајте на уму да скуп Глоб неће имати такав ефекат. У обичном језику, постављен Глоб или ресетовање ноглоб је изгледа еквивалент, али овде то није. То је унсет ноглоб. Сада Тсет. тсет стајао на терминалу сет. То се не користи тако често сада, али пре него што је постао доступан прозора системи и ви имали једну терминал, можда ћете морати да се одреди тип. А ако нешто долази преко Етхернет или из мреже, можда ћете желети да кажем да је вт100. ВТ100 је врста стандарда у пословању терминала. Она долази из ДЕЦ терминала. Ако само урадите диал-уп - то приметили? Ово иде уназад начине, а? Дакле, ако ми само немој Тсет овамо, ако ја само радим Тсет, то је мој ресетовање терминала, али ви нисте видели ништа. То није баш ништа променити. -С Ок. сетенв ТЕРМ ктерм-боја. Ми већ знамо да је термин постављен на тај начин, тако да није променио. То је начин на који смо хтели да то урадимо. Али приметите да ова команда, тсет-а, само излаз ове команде. Није их покрене. Није покренете ове команде, то им излаз. Дакле, ово је циљ да произведе команде које ће се покренути. Сећаш команду у том фајлу сам само показао да си имао К у њему. Дакле, хајде да урадимо то. П потискује неки излаз, али то није битно овде, као што можете видети. Ја само радим то да вам покажем да то није било важно. Ово је у бацккуоте синтаксе. Обратите пажњу на бацккуоте овде, бацккуоте овде. Ја изостављајући те ствари овде. То су случајеви говоре да је шта да радим у случају одређених врста терминала - Етхернет, мреже, диал-уп, оно што имате. Није битно овде, јер ми нисмо заправо радите било коју од ових ствари. Ја само илуструје команду. Ако то урадим са бацккуоте, шта ћу ја добити? Такође приметите да ово укључује подешену ноглоб и унсет ноглоб, па они су сада некорисна у дефиницији. То није било увек истина, али сада су они укључени у ову команду. Али, хајде да видимо шта ће се десити ако то урадим и иди на почетак линије са контролише и ја то да урадим. Ок, сет: команда није пронађен. То је врста чудно, зар не? Скуп је позната команда. То је део гранате. сет: Цомманд нот фоунд? Зашто је то тако? Хм. Па, хајде да размислимо о овоме. То је ради Измена бацккуоте командни, и који се јавља на одређеном делу секвенце рашчлањивању команду. Скуп је уграђена команда. Дакле, у време када то чини замену командни, то је већ стечен преко границе идентификације уграђене команде. Тако да третира сет као да је команда у путу. Непотребно је рећи, не наћи и добијете грешку. Па. Постоји пример анализатора секвенце. А шта ћемо са тим? Приметимо овде ову веома занимљиву команду, евал. Питам се шта то ради. Ако погледате упутству - и хајде да урадимо то да покаже како ове збуњујуће приручници - човек тцсх, збуњен мануелни, проналажење ствари овде није лако било. Идемо, евал АРГ, тако да можемо имати 1 или више аргумената и ту је списак ствари тамо. Третира као аргументе улаза у љусци и извршава команде настале у контексту тренутне гранате. Ово се обично користи за извршавање команди генерисаних као резултат команде или променљива замена јер парсирање јавља пре ових замена. Врло добро. И овде су чак односе на команду Тсет за коришћење узорка попут оног управо сам вам показао. Сада морам да се вратим на прозор користан месту. Идемо овамо, па ћемо видети да се користи само евал пре тога. Дакле, хајде да видимо шта се дешава ако ставимо - идемо у корак са стрелицама у том командом и контрола на почетак, евал. Ок, тако то ради. Када то урадите евал, потребно је оно што долази после њега и чини му команду. То вам омогућава да у суштини то рашчланити два пута. Секција овде води ову команду унутар бацккуотес, добија излаз. Излаз би требало да се покрене као оне команде овде као ови на овај и овај. Дакле, те команде су сада овде у овом низу, али они су уграђени у команде и не могу да их добију одмах. Дакле, идемо на евал, евал узима да се, почиње целу ствар изнова, и то ради. Пример оба бацккуотинг, евал, парсирање, последице анализи, и команда која је вероватно веома мале користи за вас данас. Ок. У реду, умаск. Погледајмо ове команде овде, умаск 022. Питам се шта то ради. Хајде само укуцајте умаск са ништа после тога. 22.. Ок. 022 и то поново. Као што сте можда погодили, умаск без аргумената ти говори тренутну маску; умаск са аргументима чини да, али то је био један сам већ имао. Шта значи 022? То су овде су заштита за датотеку. Они одређују који је дозвољено да читају или пишу или изврши датотеку. Заштита се такође назива дозволе. Р стоји за читање, на В за пишу, и к, који није присутан, значи извршити. Постоје 3 категорије тамо. Последње 3 елементи су у категорији корисника. Они се односе на мене, корисника. Овде Ови 3 се односе на групу. Фајл припада групи 1, корисник може припадати у више група, али ако је корисник у групи којој припада овај фајл, онда ова заштита ће се односити на њега, ако он није корисник. И ово је један и сви остали. Ове категорије се међусобно искључују. У заштита корисничких важе за њега, су заштита група се односе на чланове групе осим корисника, и друге заштите примењују се само на људе, осим корисника и чланова групе. Ако постоји р или в, или к, то значи да је заштита одобрена. Ако има цртица, то значи да није. Постоје ствари и друге ствари које се могу ставити у ту поред њих, које нећу ући сада. Умаск дефинише подразумевани за датотеке које креирате. И као маска, у основи стоји битове да не подесите. Како је ово постало бита? Ако мислите да сваки од њих као октални, ово је 1с бит, ово је 2с, ово је 4с. Дакле 0 до 7 ће описати шта је комбинација Р, В је, а к је имате за ове 3 а затим сличан број за ове и онда за ово. Дакле, 022 значи 0 за друге, 2 за групу, 2 за корисника. Али ово је маска. Маска је оно што немате. Жао ми је. Дала сам ти ствари у погрешним редоследом. То је прва 3. То 3 су корисник, то 3 су група, то су 3 други. Извини што сам ти дао ово у погрешним редоследом. 0, која је први од оних, не приказује вредност, али ако број не постоји, то је 0. То значи да све 3 од њих ће бити дозвољено. Приметите да у овом једном к није дозвољено. Разлог је да је граната способан одређивања да ли фајл треба да буде погубљен или не. Пошто ово није извршна датотека, то није подесите к. У 2 значи да пишу дозволу, друга категорија овде, један у средини, је одбијен. Дакле опет, то су ствари које је ускраћено. Па, к је дозвољено, али то није овде јер није извршна и слично за друге. Дакле, то је уобичајена умаск. Још једна честа једна је 700 - дајте себи све и нико други ништа. А постоје и друге могућности. Ја ћу се вратити на то. Коришћење историје могу тражимо назад за то, ДШВ тамо. Ок. Дакле овде, ово су гранате. Басх, власник који је систем рачун, може да уради све. Група и сви остали могу да ураде читати или писати, али не изврши. Ово не дозвољава ни власник да пишу на њему. Ако власник жели да напише на њега, системски налог, он би морао да прво промените заштиту. Али опет, умаск поставља подразумевану тако да је маскирање, указујући битове који неће бити постављени. То је типично у једној од ваших фајлова иницијалне, који је Цсхрц за Ц-схелл. или профил за Борнов типа граната у.. То може бити на другом месту и ако постоје друге иницијализацију датотеке у систему. У сваком случају, то је умаск. Има нешто мало чудно овде, и то је, зашто је један команда за ово? Ако сам се ово писање, ја би то променљива, умаск = нека вредност. Зашто постоји читава команда само за ту сврху? Разлог је то само иде назад на порекло Уник. Уникс је био само неки програмски пројекат у Белл Лабс у раним 1970-их. Људи само сам заједно на програму. Они никад намеравао да постане светски оперативни систем. Различити људи писали различите делове без размишљања веома много како ће да се користи - прилично недоречена. И то заједно је тако, и то је још увек као да је у неким аспектима. Тако да одражава историју, а још увек постоје ови недоследности и непарне елементе њега. Ок. Даље овде. Као што сам раније писао, Ц-љуска се не користи баш много за програмирање, иако може бити. Она извршава спорије, опет компромис између интерактивну употребу, који има више од брзине обраде укључени, који може да уради без обраде. Додатни особине додају Боурне схелл по Корн и Борнов-опет граната не изгледа да их успори, а ја не знам зашто је то. То само може бити боље програмирање, али ја нисам у позицији да то зна. Убрзајте овде заправо није тако страшно, мада се помиње. Разлог је тај што схелл скрипте заправо добити прилично брзо. Ако постоји много команди као у цалцулатионал програму, Ви вероватно не би то урадио у схелл скрипту. Операције постоје прилично једноставна и јасна. Оне које сам доживео да су сувише споро укључују поновљене примене спорих команди. Раније сам поменуо стреам едитор сед. То је команда споро. Ако извршите Сед много пута, ви ћете добити спор сценарио, али то није граната која је споро. Руннинг га у љусци Боурне неће бити много брже него ради га у Ц-схелл, иако можда има неке предности тамо. Додатне могућности програмирање, с друге стране, су значајни разлози зашто би користили Борнов типа гранате су. Ц-љуска има непарне функције на њега - Чињеница да ви не знате да ли је променљива граната променљива или променљиве окружења. То може бити веома збуњујуће. То није тако лако написати Само на основу вашег искуства програмирања у другим језицима. Мислим да можете наћи Борнов типа гранате су више у складу са вашим искуством. Неке скрипте, мада, може бити на хиљаде линија у дужини. Они који сам видела се користе за крпљење оперативне системе. Они могу извршити веома споро, али ви не покренете оне врло често. То је само када радите закрпа, и то је само менаџер систем који ради те ствари, па то није баш много питања. Они који су на стотине линија дуга заправо извршава прилично брзо. Помињање ово овде, шта су то побољшања? Већ сам поменуо неке од њих - низови, калкулације, су $ () израз за прорачуне у Басх схелл, друга врста супституције командне. Постоје различите врсте команди тестирања по којима можете урадити тестове на условне постојању фајл или другим стварима. Ласт овде, ова команда овде. Шта ово ради, и зашто би неко то користи? принтенв вариабленаме. Ми знамо шта принтенв ради. То нам говори вредност променљиве. И принтенв вариабленаме неће нам веома много, јер не постоји таква променљива. Празно. Али, хајде да му дам нешто смислено. То не постоји ни. Ок. Мислим да никада нисам дефинисано да. Хајде само да проверим моју околину. Ово је још једна команда по којима можете прегледати ваше окружење. Постоји добра стара УРЕДНИК, један смо раније видели. Шта да радим? Овде имамо бацккуоте израз. Запамтите ово је Ц-схелл. Дакле принтенв УРЕДНИК ће нам дати вредност ЕДИТОР. То је ви. И онда ће поставити ту вредност у променљиве А, постављеном командом. Тако да сада, ако ја урадим ехо $ а, ја ви добити. То не изгледа страшно корисно. Међутим, то је заправо има сврху. Пошто не знамо да ли је променљива је променљива граната или променљиве окружења помоћу синтаксе долар знак евалуације, можемо користити принтенв да се уверите да је то променљиве окружења. Дакле, ако је било променљива уредник граната, то не би га добио. Ово ради само са променљиве окружења. Ако је било граната променљива и желео сам своју вредност, Ја бих да пронађе неки други начин да то урадите. Један од начина да се то уради био би тиме сет и цевовода. Ово је један од метацхарацтерс, специјалне карактере. Она шаље излаз скупа на нешто друго. Хајде да видимо шта можемо да нађемо тамо. Ништа. Ок. Хајде да видимо шта је унутра све заједно. То је био ецхо_стиле, један сам раније поменуо. Ок, хајде да урадимо то. Запамти сам раније поменуо, ецхо_стиле одређује начин одјек команда ће покренути. БСД стоји за Беркли Стандард дистрибуцију. Ово је Беркли Уникс из 1970. То је један од начина који може да ради ехо. Постављање ецхо_стиле да те вредности у ТЦ-схелл ће изазвати ехо да се понашају на тај начин. Дакле, сет то ради, али сет добија само схелл променљиве. То не би пронашли уредник, која није граната променљива. Ништа. Дакле, то је један од начина да их разликује. Али, чињеница да морате да прође кроз неки чудан команде као што да се направи разлика између љуске променљиве или променљиве окружења показује врсту непрактично природе Ц-шкољке за неке сврхе. И сада, последњи и можда најмање, то је човек странице. Они који можда знате, човек је команда кратак за употребу. Ман странице за гранате су тешко прочитати. Они су веома дуго. Они су организовани на начин који може отежати да пронађете оно што тражите. Дакле, ако сте у потрази за нечим са сврхом, Ви не знате да ли је сврха граната променљива или нешто друго, па ви не знате где да га потражим. Можете тражити разне жице, али жице су често понавља. Тако да генерално је тешко прочитати. Управо смо гледали ТЦ-схелл ман странице мало пре да пронађе команду евал. Неке ствари иду брже. Један од приступа је да тражи стринг. Можете да користите пејџер. Пејџер има косу црту да траже команде или стринг унутар пејџера операције. Човек по дефаулту ће користити пејџера, или бити мање или више. Ја не знам да ли сте упознати са онима, али они могу да покажу филес мало по мало. Ја сам користио мање да прикаже ове посебне фајлове имамо овде. Можете претраживати унутра. Можете да покушате да користите различите претраге конце. Такође ман странице у различитим оперативним системима не могу бити исти. Они могу бити одвојене странице за цсх и тцсх. Они нису на Мац, али они могу бити ако су то одвојене команде. Ако СХ заправо не зовем басх, вероватно ће бити посебан човек страна. Неки системи имају засебне ман странице само за уграђене команде Ц-схелл. Понекад, ако желите да прочитате опис уграђеном командом који је такође на путу, као ехо, морате да прочитате ман страницу о тој команди на ехо да се утврди како ће радити као уграђеном командом чак и ако не зовете уграђену команду. То је мана оперативног система у целини, не само за гранате, иако за гранате посебно ман странице су прилично дуго, делом због тога што смо додали корисне функције у њима, што може бити позитиван. Ок. Има ли питања? Све теме које желите да се појави? Све релевантне овде? Па, то је било веома лепо разговара са вама. Надам се да имаш нешто од овог семинара да ће бити корисно за вас у вашим будућим подухватима. [ЦС50.ТВ]