1 00:00:00,000 --> 00:00:02,320 >> [Seminar - Kerang Unix, Persekitaran] 2 00:00:02,320 --> 00:00:04,180 [Douglas Kline - Harvard University] 3 00:00:04,180 --> 00:00:07,160 [Ini adalah CS50. - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> Topik hari ini adalah shell Unix. 5 00:00:12,770 --> 00:00:20,600 Saya Douglas Kline, pakar, atau sekurang-kurangnya munasabah pengguna yang cekap, shell. 6 00:00:20,600 --> 00:00:25,280 Shell adalah antara muka pengguna untuk sistem operasi komputer. 7 00:00:25,280 --> 00:00:29,580 Nama ini mengelirukan kerana, tidak seperti shell binatang, 8 00:00:29,580 --> 00:00:34,890 yang sukar dan perlindungan, shell komputer membolehkan komunikasi. 9 00:00:34,890 --> 00:00:39,120 Jadi membran berliang mungkin akan menjadi metafora yang lebih baik. 10 00:00:39,120 --> 00:00:44,500 >> Shell asal untuk Unix adalah shell Bourne. 11 00:00:44,500 --> 00:00:46,450 Bourne dieja B-O-U-R-N-E. 12 00:00:46,450 --> 00:00:49,770 Bourne adalah salah satu pengarang asal Unix, 13 00:00:49,770 --> 00:00:51,700 dan sebagainya shell dinamakan sempena nama beliau. 14 00:00:51,700 --> 00:00:54,850 Nama shell bahawa perintah hanya semata-mata sh. 15 00:00:54,850 --> 00:00:57,400 Itu arahan yang anda boleh melaksanakan. 16 00:00:57,400 --> 00:01:00,810 Shell daftar masuk bermula pada login. 17 00:01:00,810 --> 00:01:04,459 Apabila anda log masuk ke komputer, shell hanya mula berjalan untuk anda, 18 00:01:04,459 --> 00:01:06,820 dan itulah yang mengambil arahan anda. 19 00:01:06,820 --> 00:01:09,790 Ia boleh bermula pada masa yang lain juga. 20 00:01:09,790 --> 00:01:16,780 Jika anda membawa tetingkap tanpa petunjuk lain, ia akan mula shell untuk anda. 21 00:01:16,780 --> 00:01:20,450 Itulah bagaimana ia adalah bahawa anda boleh pergi ke tingkap dan mula menaip arahan 22 00:01:20,450 --> 00:01:23,960 dan sebagainya ada walaupun anda tidak log masuk ke tingkap itu. 23 00:01:23,960 --> 00:01:26,670 Di samping itu, jika anda melakukan login jauh, 24 00:01:26,670 --> 00:01:30,250 maka ia akan mula shell pada komputer jauh. 25 00:01:30,250 --> 00:01:44,310 Dan ia mungkin untuk menjalankan arahan tanpa shell interaktif. 26 00:01:44,310 --> 00:01:48,990 Yang boleh bermakna dalam operasi semasa anda, 27 00:01:48,990 --> 00:01:50,700 dan ia juga boleh bermakna operasi jauh. 28 00:01:50,700 --> 00:01:52,900 Anda boleh menghantar arahan ke komputer lain, 29 00:01:52,900 --> 00:01:55,460 termasuk memulakan shell di sana. 30 00:01:55,460 --> 00:01:57,760 Malah, ia mempunyai untuk memasukkan memulakan shell di sana 31 00:01:57,760 --> 00:02:01,740 walaupun itu bukan tujuan akhir anda. 32 00:02:05,310 --> 00:02:12,350 Apabila sesuatu yang dimulakan seperti ini, ia tidak semestinya memulakan shell baru. 33 00:02:12,350 --> 00:02:17,430 Jika anda membawa tetingkap baru, ia mungkin untuk beritahu kepada membawa penyunting 34 00:02:17,430 --> 00:02:18,940 atau beberapa arahan lain. 35 00:02:18,940 --> 00:02:20,560 Dalam kes itu, editor akan bermula dari bawah. 36 00:02:20,560 --> 00:02:22,930 Apabila editor berakhir, tingkap berakhir. 37 00:02:22,930 --> 00:02:24,620 Ini adalah sedikit luar biasa tetapi ia boleh dilakukan. 38 00:02:24,620 --> 00:02:27,140 Dalam kes tersebut, ia tidak akan cangkerang. 39 00:02:27,140 --> 00:02:31,890 Jadi ia tidak semestinya kes itu bahawa tingkap atau beberapa permohonan itu akan membawa cangkerang. 40 00:02:31,890 --> 00:02:34,030 >> Shell mem-parsing arahan. 41 00:02:34,030 --> 00:02:40,900 Parsing bermakna mengenal pasti pelbagai elemen dan mengelaskan mereka. 42 00:02:40,900 --> 00:02:43,470 Dalam perintah, tali yang lengkap yang anda menaip, 43 00:02:43,470 --> 00:02:47,310 akan ada 1 atau lebih arahan tunggal yang akan dilaksanakan. 44 00:02:47,310 --> 00:02:50,050 Elemen-elemen lain boleh menjadi hujah. 45 00:02:50,050 --> 00:02:55,020 Terdapat juga boleh aksara khas yang menyentuh pelaksanaan perintah. 46 00:02:55,020 --> 00:02:59,710 Mereka boleh menghantar output di tempat lain selain skrin 47 00:02:59,710 --> 00:03:01,750 jika perintah itu pada lazimnya akan hantar ke skrin. 48 00:03:01,750 --> 00:03:04,390 Ia boleh mengarahkan input, ia boleh melakukan perkara-perkara lain juga. 49 00:03:04,390 --> 00:03:08,120 Terdapat pelbagai simbol-simbol lain, watak-watak, dan sebagainya. 50 00:03:08,120 --> 00:03:13,600 Parsing melibatkan mengesan dan mentafsir perkara-perkara. 51 00:03:13,600 --> 00:03:19,560 >> Sekarang jika terdapat tidak lebih soalan, yang agak mungkin kerana tidak ada lebih ramai orang, 52 00:03:19,560 --> 00:03:24,620 kita akan pergi ke laman saya seterusnya di sini. 53 00:03:24,620 --> 00:03:29,170 >> Saya katakan sebelum ini bahawa Bourne shell shell adalah awal. 54 00:03:29,170 --> 00:03:31,550 Ada orang lain. 55 00:03:31,550 --> 00:03:34,520 Satu adalah C-shell. Arahan ini adalah csh. 56 00:03:34,520 --> 00:03:36,830 Nama C-shell hanya mainan kata. 57 00:03:36,830 --> 00:03:41,260 Shell ini telah diperkenalkan dengan Berkeley Unix pada pertengahan 1970-an. 58 00:03:41,260 --> 00:03:44,830 Berkeley Unix adalah satu acara mani dalam pembangunan Unix. 59 00:03:44,830 --> 00:03:48,770 Ia adalah satu revolusi yang besar dan termasuk pengenalan shell ini. 60 00:03:48,770 --> 00:03:50,790 Sebab bagi yang mainan kata, C-shell, 61 00:03:50,790 --> 00:03:56,490 adalah bahawa C-shell mempunyai beberapa ciri-ciri di dalamnya yang menyerupai bahasa C, 62 00:03:56,490 --> 00:03:59,740 mana Bourne shell tidak mempunyai - 63 00:03:59,740 --> 00:04:02,140 atau ia tidak mempunyai pada masa itu. 64 00:04:02,140 --> 00:04:05,190 Terdapat juga TC-shell. 65 00:04:05,190 --> 00:04:07,360 Ini adalah superset C-shell. 66 00:04:07,360 --> 00:04:11,470 Ia mempunyai ciri-ciri tambahan, banyak yang berguna untuk penggunaan interaktif, 67 00:04:11,470 --> 00:04:16,050 seperti menarik balik arahan dalam mekanisme sejarah, 68 00:04:16,050 --> 00:04:18,459 yang saya akan menggambarkan agak lewat - 69 00:04:18,459 --> 00:04:23,120 dengan cara yang mudah, dimodelkan selepas editor. 70 00:04:23,120 --> 00:04:29,170 Ia juga mempunyai pengikatan yang membolehkan anda untuk mengikat tali utama pendek untuk arahan yang lebih lama. 71 00:04:29,170 --> 00:04:31,440 Kami tidak akan masuk ke bahawa hari ini. 72 00:04:31,440 --> 00:04:33,650 Ia mempunyai beberapa ciri-ciri yang berguna untuk pengaturcaraan. 73 00:04:33,650 --> 00:04:37,020 Walau bagaimanapun, C-shell tidak sering digunakan untuk pengaturcaraan shell. 74 00:04:37,020 --> 00:04:39,080 Program Shell, jika anda tidak sudah tahu, 75 00:04:39,080 --> 00:04:41,690 adalah program yang terdiri daripada ciri-ciri shell. 76 00:04:41,690 --> 00:04:43,220 Anda boleh menjalankan ini sebagai program. 77 00:04:43,220 --> 00:04:46,760 Anda menulis sekumpulan arahan shell ke dalam fail dan melaksanakan fail. 78 00:04:46,760 --> 00:04:49,760 Anda tidak perlu untuk menyusun ia. Ini adalah satu bahasa tafsiran. 79 00:04:49,760 --> 00:04:57,320 Ungkapan C-shell kini samar-samar kerana ia mungkin hanya merujuk kepada asal C-shell, csh, 80 00:04:57,320 --> 00:05:01,200 atau semua C-cengkerang, termasuk tcsh. Ia sedikit kabur. 81 00:05:01,200 --> 00:05:08,250 >> A shell kemudian adalah Korn shell, KSH, dinamakan selepas pengaturcara, Korn. 82 00:05:08,250 --> 00:05:14,160 Shell ini cuba untuk memasukkan ke dalam 1 shell 83 00:05:14,160 --> 00:05:16,960 kelebihan C-shell untuk kegunaan interaktif 84 00:05:16,960 --> 00:05:19,230 dan Bourne shell untuk pengaturcaraan. 85 00:05:19,230 --> 00:05:25,440 Ia telah digunakan sebagai shell interaktif oleh sesetengah orang - minoriti. 86 00:05:25,440 --> 00:05:32,050 Kemudian walaupun, terdapat pengenalan yang lain, shell Bash itu, BASH, 87 00:05:32,050 --> 00:05:35,290 lagi mainan kata, Bourne-lagi shell. 88 00:05:35,290 --> 00:05:43,830 Ia merupakan satu lanjutan shell Bourne. Korn shell juga. Kedua-dua mereka berada. 89 00:05:43,830 --> 00:05:48,100 Ia mempunyai tujuan yang sama daripada Korn shell daripada bercantum C-shell ini 90 00:05:48,100 --> 00:05:50,980 dan kelebihan Bourne shell dalam 1 shell. 91 00:05:50,980 --> 00:05:56,810 Banyak penambahbaikan shell Korn yang juga termasuk di dalam Bash. 92 00:05:56,810 --> 00:06:00,710 Bash, bagaimanapun, mempunyai lebih dan kerana itu lebih baik. 93 00:06:00,710 --> 00:06:05,180 The Bourne-lagi shell dan shell Korn dipanggil peluru Bourne-jenis 94 00:06:05,180 --> 00:06:07,730 kerana mereka termasuk ciri-ciri yang Bourne shell ini, 95 00:06:07,730 --> 00:06:11,180 yang serasi dalam beberapa hal dengan C-kerang. 96 00:06:11,180 --> 00:06:15,520 Terdapat cengkerang lain selain mereka, ada yang dimaksudkan untuk penggunaan yang terhad, 97 00:06:15,520 --> 00:06:20,670 mungkin terhad kepada beberapa arahan, mungkin tujuan khusus, tidak sering digunakan. 98 00:06:20,670 --> 00:06:24,240 >> Okay. Item seterusnya di sini. 99 00:06:31,300 --> 00:06:38,970 The Bash shell telah dikaitkan dengan pelbagai bentuk Linux. 100 00:06:38,970 --> 00:06:41,550 Saya tidak pasti jika itu benar bagi setiap bentuk. 101 00:06:41,550 --> 00:06:43,280 Terdapat banyak bentuk di luar sana dan saya tidak menggunakan mereka semua, 102 00:06:43,280 --> 00:06:46,870 tetapi dalam orang-orang yang saya telah menggunakan ia telah menjadi yang berkaitan dengannya. 103 00:06:46,870 --> 00:06:49,670 Setakat yang saya tahu, ada apa-apa tentang Bash 104 00:06:49,670 --> 00:06:52,210 yang menjadikan ia lagi serasi dengan Linux 105 00:06:52,210 --> 00:06:55,020 daripada mana-mana kombinasi lain shell dan sistem operasi. 106 00:06:55,020 --> 00:06:59,690 Saya rasa ini mungkin hanya mencerminkan kecenderungan pengaturcara. 107 00:06:59,690 --> 00:07:07,500 Bahawa ia telah menjadi yang berkaitan dengan Linux adalah satu lagi sebab untuk suka Bash untuk KSH 108 00:07:07,500 --> 00:07:11,820 sejak benda itu mungkin ditulis di dalamnya dan kemungkinan untuk merebak. 109 00:07:11,820 --> 00:07:15,410 Saya akan memberikan sebab-sebab lain untuk itu di kemudian hari. 110 00:07:15,410 --> 00:07:21,330 Skrip shell Bourne perlu dijalankan di bawah shell Korn atau Bash. 111 00:07:21,330 --> 00:07:22,650 Jika anda menulis sesuatu untuk shell Bourne, 112 00:07:22,650 --> 00:07:26,180 anda mungkin boleh melaksanakannya di bawah KSH atau Bash. 113 00:07:26,180 --> 00:07:30,610 Skrip shell Korn mungkin akan berjalan di bawah Bash, tetapi saya tidak dapat menjamin bahawa. 114 00:07:30,610 --> 00:07:36,040 Kemudian di sini, skrip C-shell perlu dijalankan di bawah TC-shell. 115 00:07:38,850 --> 00:07:41,690 C-shell sebenarnya tidak pernah digunakan secara meluas untuk skrip 116 00:07:41,690 --> 00:07:48,110 sejak Bourne shell dan kemudian kerang Bourne-jenis adalah lebih baik untuk tujuan itu. 117 00:07:48,110 --> 00:07:50,620 Jadi yang benar-benar tidak semua yang penting. 118 00:07:50,620 --> 00:07:53,480 Terdapat cukup banyak skrip shell Bourne yang telah ditulis lama dahulu, 119 00:07:53,480 --> 00:07:56,860 sebelum shell Korn atau Bourne-lagi shell telah diperkenalkan. 120 00:07:56,860 --> 00:07:59,300 Mereka masih digunakan, sebahagian daripada sistem operasi, 121 00:07:59,300 --> 00:08:01,590 dan supaya anda akan mendapati mereka jika anda melihat ke dalam sistem operasi 122 00:08:01,590 --> 00:08:03,760 atau beberapa pakej pengaturcaraan lama. 123 00:08:03,760 --> 00:08:12,840 >> Bash adalah sedikit menjadi sejenis lingua franca untuk sistem operasi. 124 00:08:12,840 --> 00:08:17,580 Ia telah pun dipanjangkan kepada Windows dan VMS. 125 00:08:17,580 --> 00:08:20,440 VMS, sekiranya anda tidak tahu, adalah sistem operasi proprietari 126 00:08:20,440 --> 00:08:25,480 Digital Equipment Corporation yang masih digunakan, sebahagian besarnya di belakang tabir. 127 00:08:25,480 --> 00:08:29,250 Dan jika ia akan berjalan di beberapa sistem operasi yang berbeza, 128 00:08:29,250 --> 00:08:31,110 mungkin rakyat cenderung untuk beralih untuk itu. 129 00:08:31,110 --> 00:08:33,840 Tetapi perkembangan ini adalah agak baru-baru ini. 130 00:08:33,840 --> 00:08:39,490 Ia hanya bermula, jadi saya tidak boleh meramalkan jika ini akan berubah untuk benar-benar menjadi yang jenis lingua franca. 131 00:08:39,490 --> 00:08:43,539 Juga, kerana nama laluan fail dan perpustakaan berbeza 132 00:08:43,539 --> 00:08:46,210 antara sistem operasi yang berbeza, 133 00:08:46,210 --> 00:08:50,250 anda mungkin tidak dapat untuk menulis skrip Bash pada satu sistem operasi 134 00:08:50,250 --> 00:08:51,840 dan kemudian berjalan pada satu sama lain. 135 00:08:51,840 --> 00:08:54,440 Anda akan dapat untuk menggerakkannya antara yang berbeza Unix, Linux 136 00:08:54,440 --> 00:08:59,020 Sistem operasi Mac OS tetapi tidak semestinya untuk Windows atau VMS. 137 00:08:59,020 --> 00:09:01,390 Anda mungkin perlu menukar penerangan fail pathname, 138 00:09:01,390 --> 00:09:03,180 dan beberapa perpustakaan mungkin berbeza, 139 00:09:03,180 --> 00:09:05,230 yang boleh menjejaskan cara bahawa beberapa arahan kerja 140 00:09:05,230 --> 00:09:09,730 atau bagaimana mereka memproses hujah-hujah dan sebagainya. 141 00:09:09,730 --> 00:09:19,230 Di samping itu, berhati-hati lain di sini ialah tidak ada jaminan 142 00:09:19,230 --> 00:09:23,570 bahawa semua peluru yang berbeza yang saya sebutkan - Bourne shell, C-shell, 143 00:09:23,570 --> 00:09:29,880 TC-shell, Korn shell, Bourne-lagi shell - boleh didapati di bawah mana-mana Unix 144 00:09:29,880 --> 00:09:33,750 atau Linux atau Mac OS komputer. 145 00:09:33,750 --> 00:09:35,620 Mereka hanya mungkin tidak berada di sana. 146 00:09:35,620 --> 00:09:38,300 Itulah salah satu amaran di sini. 147 00:09:38,300 --> 00:09:41,490 Ia merupakan satu had malang di sini kerana anda ingin perkara untuk bekerja di mana-mana, 148 00:09:41,490 --> 00:09:44,380 tetapi malangnya, anda tidak boleh bergantung kepada itu. 149 00:09:44,380 --> 00:09:47,230 >> Okay. Satu seterusnya di sini. 150 00:09:50,280 --> 00:09:54,370 Katakan anda mahu menulis skrip shell, 151 00:09:54,370 --> 00:09:57,170 program yang terdiri daripada arahan shell. 152 00:09:57,170 --> 00:10:01,200 Anda menulis arahan anda, memasukkannya ke dalam fail, dan melaksanakan fail. 153 00:10:01,200 --> 00:10:04,230 Bagaimana jika anda mahu termasuk hujah? 154 00:10:04,230 --> 00:10:09,650 Dalam kes operasi shell, hujah-hujah yang dipanggil parameter atau parameter kedudukan 155 00:10:09,650 --> 00:10:15,940 dan mereka akan dipanggil dengan tanda dolar dan angka, $ 1, $ 2. 156 00:10:15,940 --> 00:10:27,000 Jadi, jika skrip mempunyai nama ini, hujah pertama saya mungkin hujah 1 157 00:10:27,000 --> 00:10:30,540 dan kedua saya mungkin hujah 2, 158 00:10:30,540 --> 00:10:34,110 dan di dalam skrip saya jika saya ingin merujuk kepada perkara-perkara ini - 159 00:10:34,110 --> 00:10:36,810 mari kita memadam ini kerana saya tidak benar-benar akan menjalankannya - 160 00:10:36,810 --> 00:10:42,160 di dalam skrip saya, saya mungkin mempunyai $ 1 untuk merujuk kepada arg1, 161 00:10:42,160 --> 00:10:45,890 $ 2, yang akan keluar dengan cara itu, arg2. 162 00:10:45,890 --> 00:10:50,080 Jadi mereka simbol yang tersedia untuk merujuk kepada hujah-hujah, 163 00:10:50,080 --> 00:10:52,390 dan mereka memohon kepada semua cengkerang. 164 00:10:52,390 --> 00:10:56,520 Di samping itu, terdapat watak-watak lain. 165 00:10:56,520 --> 00:11:01,700 $ * Merujuk kepada senarai hujah keseluruhan, mereka semua. 166 00:11:01,700 --> 00:11:05,390 $ # Merujuk kepada bilangan hujah. 167 00:11:05,390 --> 00:11:07,910 Sekali lagi, ini terpakai kepada semua cengkerang. 168 00:11:07,910 --> 00:11:15,540 Simbol-simbol, * dan #, boleh digunakan dengan mereka makna di tempat-tempat lain juga. 169 00:11:15,540 --> 00:11:17,940 Kami tidak akan mendapat ke dalam itu. 170 00:11:17,940 --> 00:11:20,460 >> Talian specifier Shell. Apa yang untuk? 171 00:11:20,460 --> 00:11:27,760 Katakan anda telah menulis skrip dan ia untuk shell tertentu dan anda ingin menjalankannya. 172 00:11:27,760 --> 00:11:33,500 Bagaimana anda tahu apa yang shell sistem operasi anda akan gunakan untuk menjalankan skrip anda? 173 00:11:33,500 --> 00:11:37,230 Pada satu ketika anda boleh menganggap bahawa ia akan menjalankannya di shell Bourne 174 00:11:37,230 --> 00:11:39,440 jika anda tidak mengatakan sebaliknya, 175 00:11:39,440 --> 00:11:41,730 tetapi orang yang tidak menulis skrip di Bourne shell bahawa banyak lagi 176 00:11:41,730 --> 00:11:43,750 dan anda tidak dapat bergantung kepada itu lagi. 177 00:11:43,750 --> 00:11:48,740 Jadi di sini kita mempunyai garis specifier shell di sini. 178 00:11:48,740 --> 00:11:52,450 Yang menentukan Bash. 179 00:11:52,450 --> 00:11:56,750 Perhatikan bahawa ia menyatakan ia di pathname itu, / bin / Bash. 180 00:11:56,750 --> 00:12:02,870 Jika komputer mempunyai shell Bash tetapi tidak di dalam direktori tong, / bin, ini tidak akan berfungsi. 181 00:12:02,870 --> 00:12:06,870 Itulah kelayakan yang lain, berhati-hati lain di sini. 182 00:12:06,870 --> 00:12:09,500 Tanda pound adalah aksara baris komen. 183 00:12:09,500 --> 00:12:12,300 Yang terpakai kepada semua cengkerang. 184 00:12:12,300 --> 00:12:18,610 Kes tertentu di sini, #! pada awal skrip, adalah kes khas. 185 00:12:18,610 --> 00:12:23,410 Yang menentukan shell di mana untuk menjalankan skrip. 186 00:12:23,410 --> 00:12:30,230 Seperti yang saya telah berkata, ia mungkin tidak yang sama tempat / bin. 187 00:12:30,230 --> 00:12:34,880 Di samping itu, ada perkara lain di sini. 188 00:12:34,880 --> 00:12:41,250 Jika anda hanya menggunakan tanda pound tanpa tanda seru dan pathname, 189 00:12:41,250 --> 00:12:44,640 yang perlu menunjukkan C-shell. 190 00:12:44,640 --> 00:12:48,300 Walau bagaimanapun, saya tidak mencadangkan melakukannya kerana saya tidak dapat menjamin 191 00:12:48,300 --> 00:12:49,750 bahawa yang akan selalu bekerja. 192 00:12:49,750 --> 00:12:52,220 Jika anda mahu C-shell, ia akan menjadi lebih baik untuk mengatakan demikian. 193 00:12:52,220 --> 00:12:58,450 Kemudian ada sesuatu yang agak mengelirukan di sini. 194 00:12:58,450 --> 00:13:03,940 Jika anda menggunakan talian shell specifier seperti / bin / Bash 195 00:13:03,940 --> 00:13:07,070 dan tempurung yang tidak ada di sana, 196 00:13:07,070 --> 00:13:10,680 tidak ada perkara seperti / bin / Bash pada komputer tersebut, 197 00:13:10,680 --> 00:13:14,330 sama ada kerana ia tidak mempunyai Bash atau kerana ia di lokasi yang berbeza, 198 00:13:14,330 --> 00:13:17,450 anda akan mendapat ralat memberitahu anda bahawa skrip anda berlari tidak wujud. 199 00:13:17,450 --> 00:13:21,510 Dan sudah tentu skrip anda wujud, supaya mesej ralat adalah mengelirukan. 200 00:13:21,510 --> 00:13:24,810 Alasan bahawa sistem operasi memberikan anda ralat yang 201 00:13:24,810 --> 00:13:28,370 atau, lebih tepat lagi, yang shell interaktif anda di mana anda menjalankan ini memberikan ralat yang, 202 00:13:28,370 --> 00:13:33,510 ialah ia melaporkan arahan yang anda digunakan, yang adalah nama skrip. 203 00:13:33,510 --> 00:13:36,920 Perintah yang berkesan dipanggil shell dengan nama skrip. 204 00:13:36,920 --> 00:13:39,330 Itulah di mana anda mendapat mesej ralat yang mengelirukan. 205 00:13:39,330 --> 00:13:42,980 Satu lagi cara untuk memanggil skrip shell 206 00:13:42,980 --> 00:13:45,910 adalah dengan menyatakan shell pada baris arahan, seperti di sini. 207 00:13:45,910 --> 00:13:52,510 Ini adalah perintah. Ini mengatakan menjalankan Bash dan kemudian menjalankan skrip saya dalam Bash. 208 00:13:52,510 --> 00:13:55,680 Yang akan mengatasi garis specifier, 209 00:13:55,680 --> 00:14:02,090 dan ini mempunyai ciri yang membolehkan anda untuk mengadakan peruntukan bagi nama laluan yang berbeza-beza. 210 00:14:02,090 --> 00:14:04,840 Jika anda hanya memberi perintah, sistem operasi akan mencari arahan yang 211 00:14:04,840 --> 00:14:06,410 di pelbagai tempat. 212 00:14:06,410 --> 00:14:08,820 Jika ia ada, ia perlu menemuinya. 213 00:14:08,820 --> 00:14:12,290 Komputer akan mendapati Bash mana-mana jua terletak dan menjalankan, 214 00:14:12,290 --> 00:14:15,470 jadi anda tidak perlu kemudian untuk mengambil berat tentang di mana ia mendapati ia. 215 00:14:15,470 --> 00:14:17,360 Terdapat kebimbangan yang berpotensi lain di sini, 216 00:14:17,360 --> 00:14:20,830 seolah-olah terdapat lebih dari 1 versi Bash, yang mungkin walaupun tidak mungkin. 217 00:14:20,830 --> 00:14:23,540 Jadi, itu satu lagi cara untuk menangani perkara-perkara ini. 218 00:14:23,540 --> 00:14:30,480 Garis specifier boleh memanggil mana-mana shell. 219 00:14:30,480 --> 00:14:34,480 Mereka juga boleh menghubungi perkara-perkara lain daripada cengkerang. 220 00:14:34,480 --> 00:14:37,940 Contoh saya ada di sini adalah sed, yang merupakan editor aliran; 221 00:14:37,940 --> 00:14:39,900 awk, yang merupakan bahasa pemprosesan corak; 222 00:14:39,900 --> 00:14:43,680 dan perl, bahasa skrip yang sangat maju. 223 00:14:43,680 --> 00:14:47,570 Jika anda meletakkan garis specifier menunjukkan salah satu daripada program-program pada permulaan, 224 00:14:47,570 --> 00:14:51,270 ia akan pergi terus ke dalam program yang bukannya bermula cangkerang. 225 00:14:51,270 --> 00:14:54,030 Program-program mempunyai had dengan kebolehan mereka. 226 00:14:54,030 --> 00:14:58,790 Perl adalah sangat mampu. Sed adalah editor. Ia boleh melakukan perkara-perkara di luar hanya mengedit. 227 00:14:58,790 --> 00:15:03,300 Tetapi ia boleh menjadi sukar untuk program itu. 228 00:15:03,300 --> 00:15:09,670 Di samping itu, lulus hujah-hujah dan barangan untuk skrip adalah sama ada mustahil atau mengelirukan. 229 00:15:09,670 --> 00:15:15,030 Jadi dalam kes-kes, dengan awk atau sed, ia, sekurang-kurangnya dalam pengalaman saya, 230 00:15:15,030 --> 00:15:18,910 lebih baik untuk menulis shell skrip dan panggilan awk atau sed dari skrip shell 231 00:15:18,910 --> 00:15:24,660 bukannya memanggil awk atau sed sebagai garis skrip specifier. 232 00:15:24,660 --> 00:15:26,980 Perl adalah bahasa yang pelbagai, seperti yang saya katakan. 233 00:15:26,980 --> 00:15:30,050 Anda tidak boleh menjalankan arahan interaktif dalam perl, 234 00:15:30,050 --> 00:15:32,660 yang bermakna anda tidak boleh menguji bahagian skrip yang anda membangunkan 235 00:15:32,660 --> 00:15:33,970 dengan menjalankan mereka secara interaktif. 236 00:15:33,970 --> 00:15:36,160 Walau bagaimanapun, ia adalah satu bahasa yang sangat mampu 237 00:15:36,160 --> 00:15:40,960 dan telah berkembang menjadi alat yang digunakan secara meluas. 238 00:15:40,960 --> 00:15:45,720 Itu hanya sedikit teguran kurungan kira-kira garis specifier. 239 00:15:45,720 --> 00:15:50,610 >> Dalam semua atau kebanyakan bentuk Linux - sekali lagi, saya tidak boleh pasti bahawa semua - 240 00:15:50,610 --> 00:15:57,900 dan dalam Mac OS, jika anda menaip csh anda mendapat tcsh, 241 00:15:57,900 --> 00:16:00,570 dan jika anda menaip sh anda mendapat sambutan. 242 00:16:00,570 --> 00:16:05,020 Mereka cuba di sana untuk memberikan anda versi yang lebih maju daripada kulit ini, 243 00:16:05,020 --> 00:16:07,940 tetapi ini boleh mengelirukan. 244 00:16:07,940 --> 00:16:16,720 Jika anda menulis skrip menggunakan tcsh atau Bash mempunyai manakala memanggil csh atau sh 245 00:16:16,720 --> 00:16:22,230 dan kemudian cuba untuk menjalankannya pada komputer yang tidak mempunyai tcsh atau Bash, 246 00:16:22,230 --> 00:16:25,050 anda mungkin akan mendapat beberapa kesilapan jika terdapat arahan di sana 247 00:16:25,050 --> 00:16:27,970 mana orang-orang peluru tidak mengenali. 248 00:16:27,970 --> 00:16:34,120 Selain itu, anda mungkin telah dipanggil shell anda ke dalam komputer anda 249 00:16:34,120 --> 00:16:37,700 memanggil ia sebagai sh atau csh dan kemudian mendapat kerang lebih maju. 250 00:16:37,700 --> 00:16:41,440 Anda mungkin tidak memikirkan hakikat bahawa anda menggunakan shell yang lebih maju. 251 00:16:41,440 --> 00:16:45,670 Jadi ini adalah perangkap yang berpotensi. 252 00:16:45,670 --> 00:16:50,290 Bagaimana ia ditubuhkan bahawa jika anda taip sh anda mendapat Bash, 253 00:16:50,290 --> 00:16:55,580 jika anda menaip csh anda mendapat tsch? 254 00:16:55,580 --> 00:16:59,940 Terdapat beberapa perkara di komputer ini dipanggil pautan 255 00:16:59,940 --> 00:17:06,460 yang boleh menyambung untuk memfailkan nama untuk merujuk kepada perkara yang sama. 256 00:17:06,460 --> 00:17:12,180 Ia sama ada boleh menjadi 2 nama untuk fail yang sama atau fail yang tujuan adalah untuk merujuk kepada fail lain. 257 00:17:12,180 --> 00:17:17,550 Mereka dipanggil pautan keras dan simbolik. Kami tidak akan pergi ke itu lagi hari ini. 258 00:17:17,550 --> 00:17:21,619 Mungkin juga terdapat fail yang berasingan - 1 fail sh, 1 fail Bash - 259 00:17:21,619 --> 00:17:23,880 tetapi kedua-dua mereka berjalan Bash. 260 00:17:23,880 --> 00:17:29,350 Kemudian ada kelayakan lain di sini. 261 00:17:29,350 --> 00:17:42,640 Jika anda memanggil salah satu peluru ini dengan satu nama, 262 00:17:42,640 --> 00:17:46,640 anda mungkin fikir anda akan mendapat fungsi yang sama seperti memanggil dengan nama lain. 263 00:17:46,640 --> 00:17:49,700 Nah, yang benar-benar tidak semestinya benar. 264 00:17:49,700 --> 00:17:55,020 Arahan ini boleh memeriksa nama dengan mana mereka dipanggil 265 00:17:55,020 --> 00:18:00,020 dan mereka boleh, atas dasar nama itu, berkelakuan berbeza. 266 00:18:00,020 --> 00:18:02,740 Mungkin ada isu-isu cuba untuk menepati piawaian. 267 00:18:02,740 --> 00:18:06,060 Sebahagian daripada anda mungkin pernah mendengar standard POSIX atau yang lain, 268 00:18:06,060 --> 00:18:08,730 mungkin ciri-ciri lain. 269 00:18:08,730 --> 00:18:14,520 Ini boleh dipilih kadang-kadang dengan hujah-hujah baris arahan 270 00:18:14,520 --> 00:18:17,310 atau dengan menetapkan pembolehubah shell. 271 00:18:17,310 --> 00:18:22,170 Memanggil ia sebagai sh atau Bash sebenarnya boleh membawa kepada pelaksanaan yang berbeza 272 00:18:22,170 --> 00:18:25,300 walaupun ia fail yang sama yang anda melaksanakan. 273 00:18:25,300 --> 00:18:31,800 Satu lagi perkara yang perlu dipertimbangkan ialah bahawa walaupun komputer lain mempunyai tcsh atau Bash, 274 00:18:31,800 --> 00:18:35,310 jika mereka tidak dikaitkan kerana mereka ke dalam komputer anda 275 00:18:35,310 --> 00:18:37,990 jika anda mempunyai komputer tempatan Linux atau Mac OS, 276 00:18:37,990 --> 00:18:45,630 sekali lagi anda akan mendapat kulit yang anda memanggil sh atau csh, bukan satu yang anda mungkin lebih suka. 277 00:18:50,430 --> 00:19:01,130 The Bourne shell semasa mempunyai penambahbaikan yang kurang daripada yang di Bash 278 00:19:01,130 --> 00:19:06,100 tetapi orang-orang di masa lalu shell Bourne asal. 279 00:19:06,100 --> 00:19:09,690 Hasil daripada itu, walaupun shell Bourne semasa, sh, 280 00:19:09,690 --> 00:19:14,560 walaupun ia bukan Bash, menyerupai bahasa C lebih daripada C-shell tidak. 281 00:19:14,560 --> 00:19:20,460 Yang tidak benar apabila C-shell pertama kali diwujudkan, tetapi ia telah dibangunkan dengan cara itu. 282 00:19:20,460 --> 00:19:26,560 Anda mungkin notis di sini bahawa semua nama-nama ini shell kecuali shell Bourne 283 00:19:26,560 --> 00:19:30,640 mempunyai sesuatu untuk menunjukkan yang shell mereka - csh, Bash - 284 00:19:30,640 --> 00:19:32,550 tetapi Bourne shell hanya sh. 285 00:19:32,550 --> 00:19:34,910 Mengapa? Itu adalah shell yang asal. 286 00:19:34,910 --> 00:19:37,770 Ia adalah shell THE kemudian, tidak shell A, 287 00:19:37,770 --> 00:19:41,090 dan kerana ia adalah shell INI, tidak ada sebab untuk membezakan ia daripada shell yang lain. 288 00:19:41,090 --> 00:19:45,030 Jadi itulah sebabnya ia mempunyai nama itu dan masih tidak. 289 00:19:50,630 --> 00:19:58,990 >> Atas ini di sini adalah garis dari pangkalan data kata laluan untuk akaun saya di sana 290 00:19:58,990 --> 00:20:01,680 pada komputer lain. 291 00:20:01,680 --> 00:20:08,300 Saya akan cuba untuk mendapatkan nama yang supaya anda boleh melihat bahagian itu pada akhirnya, cengkerang. 292 00:20:09,720 --> 00:20:15,450 Pangkalan data kata laluan memegang ciri-ciri login untuk semua pengguna. 293 00:20:15,450 --> 00:20:20,330 Pada mulanya adalah nama pengguna, yang anda boleh lihat lepas 2 surat saya sekarang. 294 00:20:20,330 --> 00:20:23,970 Bidang sini dipisahkan oleh titik bertindih. 295 00:20:23,970 --> 00:20:28,210 Bidang lepas, seperti yang anda lihat, adalah bin / tcsh, shell. 296 00:20:28,210 --> 00:20:30,230 Itulah specifier shell. 297 00:20:30,230 --> 00:20:33,240 Ada sesuatu yang menarik di sini. 298 00:20:33,240 --> 00:20:36,950 Apabila Unix mula-mula dibangunkan, terdapat hanya 1 shell, 299 00:20:36,950 --> 00:20:38,350 jadi tidak ada pilihan di sana. 300 00:20:38,350 --> 00:20:45,570 Jadi mengapa mereka membenarkan satu bidang dalam pangkalan data kata laluan untuk tentukan cangkerang? 301 00:20:45,570 --> 00:20:47,920 Saya tidak tahu, tetapi ia bernasib baik kerana mereka lakukan. 302 00:20:47,920 --> 00:20:52,030 Ia agak sukar untuk membuat perubahan dalam format pangkalan data kata laluan 303 00:20:52,030 --> 00:20:54,420 kerana banyak program merujuk kepada format 304 00:20:54,420 --> 00:20:57,720 dan perlu ditulis semula. 305 00:20:57,720 --> 00:21:04,130 Ia adalah satu pembangunan yg menguntungkan atau kebetulan bahawa mereka termasuk bidang itu. 306 00:21:04,130 --> 00:21:12,780 Itu jenis garis fail kata laluan digunakan pada semua komputer Unix dan Linux setakat ini yang saya tahu. 307 00:21:12,780 --> 00:21:14,650 Mac mempunyai sistem sendiri. 308 00:21:14,650 --> 00:21:17,810 Ia sebenarnya mempunyai fail kata laluan dengan garis dalam format tersebut, 309 00:21:17,810 --> 00:21:21,060 tetapi itu tidak adalah di mana ciri-ciri pengguna ditakrifkan. 310 00:21:21,060 --> 00:21:24,200 Satu lagi kenyataan kurungan di sana. 311 00:21:36,470 --> 00:21:46,020 >> Jika anda memanggil shell, anda boleh memanggil ia sebagai sub-shell kerang anda yang sedia ada. 312 00:21:46,020 --> 00:21:50,480 Jadi jika saya pergi sini, mari kita menghilangkan perkara-perkara ini. 313 00:21:50,480 --> 00:21:53,350 Aku di sini di C-shell. 314 00:21:56,830 --> 00:22:01,200 Yang berubah-ubah, yang dengan tepat mengenal pasti shell saya, 315 00:22:01,200 --> 00:22:04,300 sebenarnya tidak selalunya cara yang boleh dipercayai untuk menentukan apa yang shell anda menjalankan, 316 00:22:04,300 --> 00:22:06,220 tetapi dalam kes ini ia adalah. 317 00:22:06,220 --> 00:22:08,040 Bagaimana jika saya hanya menaip - 318 00:22:09,970 --> 00:22:12,470 Kini saya dalam Bash. 319 00:22:12,470 --> 00:22:19,540 Beberapa perkara yang akan menjadi yang sama. ls memberitahu saya arahan saya. 320 00:22:19,540 --> 00:22:24,500 Jika saya yang menggantung kembali ke C-selnya, ls, sama. Betul? 321 00:22:24,500 --> 00:22:28,890 fg, latar depan, kembali ke shell Bash saya. 322 00:22:28,890 --> 00:22:38,290 pwd, direktori semasa, kembali ke C-shell. 323 00:22:38,290 --> 00:22:43,180 pwd, direktori yang berbeza - sebenarnya tidak direktori yang berbeza dalam kes ini. 324 00:22:43,180 --> 00:22:45,110 Ia direktori yang sama. 325 00:22:45,110 --> 00:22:50,000 Katakan saya mahu panggil arahan di sini: di mana ls. 326 00:22:50,000 --> 00:22:52,140 Apakah yang lakukan? 327 00:22:52,140 --> 00:22:53,670 Ia memberitahu saya di mana ls perintah, 328 00:22:53,670 --> 00:22:56,670 salah satu yang memberikan saya senarai direktori, terletak di ls. 329 00:22:56,670 --> 00:23:01,460 Mari kita kembali kepada Bash shell. Mari kita cuba perkara yang sama. 330 00:23:01,460 --> 00:23:05,830 Hmm, menarik di sana, di mana: arahan tidak dijumpai. 331 00:23:05,830 --> 00:23:07,400 Mengapa? 332 00:23:07,400 --> 00:23:11,570 Di mana arahan dibina untuk C-shell. 333 00:23:11,570 --> 00:23:15,630 Ini bukan satu perintah yang perlu dibaca untuk memori dari tempat lain dan dilaksanakan. 334 00:23:15,630 --> 00:23:20,310 C-shell berjalan ia dengan memindahkan pelaksanaan bagi sebahagian daripada kod sendiri 335 00:23:20,310 --> 00:23:22,790 dan ia bukan dalam Bash shell. 336 00:23:22,790 --> 00:23:25,710 Jadi Bash, tidak mempunyai apa-apa arahan terbina dalam, kelihatan untuk itu, tidak merasa, 337 00:23:25,710 --> 00:23:27,720 dan kita mendapat ralat. 338 00:23:27,720 --> 00:23:32,290 Jadi kita ada satu shell Bash berjalan di bawah C-shell, dan kami pada waktu itu sub-shell. 339 00:23:32,290 --> 00:23:38,480 Dan hanya dalam kes anda ingin tahu, Bash shell mempunyai cara tersendiri mencari arahan. 340 00:23:38,480 --> 00:23:42,590 dicincang merujuk kepada fakta bahawa ia boleh dilaksanakan dengan lebih cepat, 341 00:23:42,590 --> 00:23:44,960 didapati dengan lebih cepat. 342 00:23:44,960 --> 00:23:48,610 Itulah salah satu penambahbaikan yang dibina pada kepada beberapa peluru ini. 343 00:23:50,220 --> 00:23:54,200 >> Cengkerang Bourne-jenis disukai untuk pengaturcaraan. 344 00:23:54,200 --> 00:23:57,300 Mereka mempunyai struktur kawalan seperti gelung, kenyataan bersyarat, 345 00:23:57,300 --> 00:24:00,240 jenis arahan yang mungkin anda gunakan dalam bahasa pengaturcaraan seperti C 346 00:24:00,240 --> 00:24:04,190 atau apa sahaja bahasa. Mungkin anda dalam Java atau apa sahaja. 347 00:24:04,190 --> 00:24:06,460 Kerang mempunyai orang-orang juga. 348 00:24:06,460 --> 00:24:11,790 Kerang Bourne-jenis, terutamanya Bash, mempunyai lebih banyak 349 00:24:11,790 --> 00:24:15,730 dan ia direka dengan fleksibiliti yang lebih besar. 350 00:24:15,730 --> 00:24:20,700 The Bash shell mempunyai tatasusunan. The Bourne shell asal tidak. 351 00:24:20,700 --> 00:24:26,130 Jadi yang boleh dengan ketara berfaedah untuk pengaturcaraan. 352 00:24:26,130 --> 00:24:29,810 C-shell sebenarnya tidak mempunyai array tetapi tidak mempunyai banyak ciri-ciri lain. 353 00:24:29,810 --> 00:24:33,450 Kerang Bourne-jenis akan melaksanakan lebih cepat 354 00:24:33,450 --> 00:24:36,520 jika mereka tidak mempunyai ciri-ciri yang dimaksudkan untuk penggunaan interaktif. 355 00:24:36,520 --> 00:24:39,340 Anda memuatkan perkara turun untuk satu tujuan; ini memuatkan mereka ke bawah untuk tujuan lain. 356 00:24:39,340 --> 00:24:41,520 Ada yang keseimbangan di sana. 357 00:24:41,520 --> 00:24:44,510 Ciri-ciri yang dimaksudkan untuk digunakan interaktif 358 00:24:44,510 --> 00:24:46,920 benar-benar adalah penggunaan yang sedikit atau tidak untuk skrip. 359 00:24:46,920 --> 00:24:52,160 Ia mungkin untuk menggunakan sub-shell interaktif seperti yang saya mula ada 360 00:24:52,160 --> 00:24:57,780 menguji arahan yang hendak kamu gunakan dalam skrip. 361 00:24:57,780 --> 00:25:01,180 Itulah apa yang anda tidak boleh lakukan dengan perl. Anda boleh melakukannya dengan peluru. 362 00:25:01,180 --> 00:25:04,850 Malah struktur seperti untuk gelung dan sebagainya boleh dijalankan secara interaktif. 363 00:25:04,850 --> 00:25:07,000 Mereka kadang-kadang berguna untuk menjalankan secara interaktif, 364 00:25:07,000 --> 00:25:10,180 tetapi semakin besar kemungkinan anda menggunakan mereka untuk membangunkan skrip. 365 00:25:15,690 --> 00:25:17,400 >> Alias. 366 00:25:17,400 --> 00:25:21,630 Ini akan menjadi kira-kira C-shell. 367 00:25:23,270 --> 00:25:27,570 Mekanisme sejarah di mana anda kembali ke arahan sebelum ini 368 00:25:27,570 --> 00:25:30,340 atau bahagian-bahagian daripada mereka yang anda telah berjalan. 369 00:25:30,340 --> 00:25:33,680 Sekali lagi, kira-kira C-shell, shell Bourne dan Korn shell mempunyai perkara-perkara, 370 00:25:33,680 --> 00:25:35,620 tetapi saya tidak akan masuk ke dalam mereka. 371 00:25:35,620 --> 00:25:40,340 Jadi di sini adalah beberapa nama samaran yang berguna yang saya ada. 372 00:25:43,100 --> 00:25:44,880 Daripada menaip ls - ia adalah satu perintah yang sama - 373 00:25:44,880 --> 00:25:47,620 hanya taip l dan menyelamatkan diri 1 watak. 374 00:25:47,620 --> 00:25:50,600 ls dengan pelbagai pilihan, kerja-kerja mereka. 375 00:25:50,600 --> 00:25:54,460 Perhatikan bahawa mereka mempunyai definisi sebut harga di sekeliling mereka. 376 00:25:54,460 --> 00:25:57,520 Dalam kes ini, sebut harga yang tidak perlu. 377 00:25:57,520 --> 00:26:00,100 Jika anda boleh menentukan mereka alias tanpa pengikat kata, ia masih akan bekerja. 378 00:26:00,100 --> 00:26:02,910 Mereka adalah disyorkan. 379 00:26:02,910 --> 00:26:04,900 Terdapat situasi di mana anda tidak boleh menggunakan petikan 380 00:26:04,900 --> 00:26:08,050 kerana anda mahu sesuatu yang berlaku yang quote itu akan menghalang. 381 00:26:08,050 --> 00:26:11,210 Kadang-kadang anda boleh quote sebahagian daripada definisi tetapi tidak semua itu. 382 00:26:11,210 --> 00:26:17,010 Ia juga biasanya disyorkan untuk menggunakan tanda petikan tunggal dan bukan petikan berganda. 383 00:26:17,010 --> 00:26:19,750 Sebut harga Double mempunyai kesan ke atas takrif pemboleh ubah, 384 00:26:19,750 --> 00:26:22,950 terutamanya menyebabkan mereka dinilai bukannya berhenti ia. 385 00:26:22,950 --> 00:26:25,910 Mengapa kita akan mahu berhenti penilaian? 386 00:26:25,910 --> 00:26:28,710 Dan bagaimana sebut harga melakukannya untuk kita? 387 00:26:28,710 --> 00:26:32,600 >> Berikut adalah arahan yang mungkin menarik minat anda. 388 00:26:32,600 --> 00:26:35,470 'Ls g *' 389 00:26:35,470 --> 00:26:37,640 g *, kerana anda mungkin tahu, adalah ungkapan wildcard 390 00:26:37,640 --> 00:26:40,290 untuk semua nama-nama fail yang bermula dengan g. 391 00:26:40,290 --> 00:26:46,410 Jika saya hanya menulis dalam arahan ls g *, saya akan mendapat senarai semua nama-nama di dalam direktori semasa saya. 392 00:26:46,410 --> 00:26:50,870 Jika saya menentukan alias kerana ia adalah di sini dengan sebut harga, 393 00:26:50,870 --> 00:26:56,990 ia akan menjalankan perintah yang di dalam direktori semasa anda di mana anda menjalankan ia. 394 00:26:56,990 --> 00:27:01,250 Tetapi jika anda menjalankan definisi alias tanpa sebut harga, 395 00:27:01,250 --> 00:27:09,620 ia akan menilai wildcard g * apabila ia berjalan arahan ini menentukan. 396 00:27:09,620 --> 00:27:14,400 Jadi definisi alias akan ls diikuti dengan senarai fail dalam direktori 397 00:27:14,400 --> 00:27:16,310 di mana arahan alias dilaksanakan, 398 00:27:16,310 --> 00:27:19,180 tidak kira di mana anda benar-benar berhasrat untuk menjalankan arahan. 399 00:27:19,180 --> 00:27:26,360 Ini bukan penggunaan banyak, dan petikan tunggal menghalang penilaian asterisk. 400 00:27:26,360 --> 00:27:30,780 Jadi anda hanya mendapatkan definisi makhluk ls g *. 401 00:27:30,780 --> 00:27:35,510 Kemudian apabila anda menjalankan alias, LGS, ia kemudian meletakkan bahawa. 402 00:27:35,510 --> 00:27:40,490 Sekarang tidak ada sebut harga, dan ia akan menilai asterisk apabila anda menjalankan arahan alias. 403 00:27:40,490 --> 00:27:43,900 Jadi, itu satu perkara. 404 00:27:43,900 --> 00:27:46,590 Petikan berganda akan mempunyai kesan yang sama di sini, 405 00:27:46,590 --> 00:27:50,580 tetapi terdapat kes-kes lain di mana tanda petikan berganda tidak akan bekerja dengan baik. 406 00:27:50,580 --> 00:27:52,450 >> Berikut adalah antara satu sama lain. 407 00:27:52,450 --> 00:27:54,270 Anda mungkin tahu arahan grep ini. 408 00:27:54,270 --> 00:28:02,110 Arahan grep boleh digunakan untuk mengimbas fail untuk talian yang mempunyai tali tertentu. 409 00:28:02,110 --> 00:28:10,350 Jadi mari kita pergi ke sini dan saya akan keluar dari shell Bourne saya. 410 00:28:23,570 --> 00:28:25,450 Okay. Berikut adalah fail. 411 00:28:25,450 --> 00:28:31,490 Katakan ia rentetan abc grep. Terdapat ia. 412 00:28:31,490 --> 00:28:37,930 Jika saya zddd grep, saya mendapat apa-apa. Okay. 413 00:28:37,930 --> 00:28:40,960 Jadi ia mendapati rentetan, ia melaporkan, ia tidak mencari, ia tidak melaporkannya. 414 00:28:40,960 --> 00:28:44,930 Ia output mana-mana garis yang mempunyai tali yang di atasnya. 415 00:28:44,930 --> 00:28:49,080 Terdapat pelbagai pilihan di sini yang boleh anda dapati di dokumentasi. 416 00:28:49,080 --> 00:28:52,160 Berikut adalah satu cara untuk melakukannya. 417 00:28:52,160 --> 00:29:03,290 Apa kira-kira satu ini, alias grabc 'grep abc'? 418 00:29:03,290 --> 00:29:09,000 Itu akan termasuk 1 hujah apabila alias ditakrifkan. 419 00:29:09,000 --> 00:29:26,300 Jadi, jika saya berbuat demikian di sini, sekarang jika saya lakukan grabc, 420 00:29:26,300 --> 00:29:30,620 kini alias termasuk lebih daripada arahan yang mudah. Ia juga mempunyai hujah. 421 00:29:30,620 --> 00:29:32,190 Setakat ini yang bekerja. 422 00:29:32,190 --> 00:29:38,590 Saya mempunyai arahan lain di sini, yang satu ini, jadi mereka adalah wayang yang berbeza di sana 423 00:29:38,590 --> 00:29:46,790 dan menunjukkan bahawa ini tidak mencari apa-apa di sana kerana ia tidak sepadan. 424 00:29:46,790 --> 00:29:56,180 >> Bagaimana jika saya mahu termasuk dalam definisi alias fail yang saya akan mencari 425 00:29:56,180 --> 00:30:02,970 dan saya mahu memberi sebagai alasan untuk alias rentetan yang saya cari? 426 00:30:02,970 --> 00:30:08,040 Saya mungkin mahu mengatakan abc sebagai hujah untuk alias saya, 427 00:30:08,040 --> 00:30:10,870 tetapi alias sudah ditentukan fail. 428 00:30:10,870 --> 00:30:15,710 Dan di mana ungkapan ini datang masuk 429 00:30:20,430 --> 00:30:25,270 Perhatikan di sini kita mempunyai grep seperti dahulu. 430 00:30:25,270 --> 00:30:28,130 Kami mempunyai fail di sini, tali. 431 00:30:28,130 --> 00:30:35,610 \! ^, Jenis ungkapan ganjil, saya rasa, jika anda tidak pernah melihat ini sebelum ini. 432 00:30:35,610 --> 00:30:39,920 Tanda seru adalah sebahagian daripada mekanisme sejarah C-shell. 433 00:30:39,920 --> 00:30:45,220 Ia boleh menarik balik arahan sebelum ini, ia boleh ingat hujah-hujah kepada mereka arahan dan sebagainya. 434 00:30:46,760 --> 00:31:01,570 Mekanisme sejarah digunakan sebagai sebahagian daripada aliasing. 435 00:31:01,570 --> 00:31:07,390 Jika anda menentukan garis selepas tanda seru, ia akan merujuk kepada baris itu dalam senarai sejarah, 436 00:31:07,390 --> 00:31:11,910 yang kami tidak akan masuk ke sekarang kerana ia adalah satu topik lain secara keseluruhan. 437 00:31:11,910 --> 00:31:16,280 Ia adalah mungkin untuk menentukan sebahagian daripada garis. 438 00:31:16,280 --> 00:31:22,950 Jadi! 03:02 akan menjadi hujah kedua bilangan arahan 3. 439 00:31:22,950 --> 00:31:30,430 Tanda sisipan di sini dalam ungkapan ini bermaksud hujah pertama. 440 00:31:30,430 --> 00:31:34,410 Jika anda tidak memberikan petunjuk yang menyuruh anda merujuk kepada, 441 00:31:34,410 --> 00:31:37,300 ia merujuk kepada arahan serta-merta sebelum ini, 442 00:31:37,300 --> 00:31:41,990 dan tanda sisipan itu adalah simbol untuk perdebatan yang pertama. 443 00:31:41,990 --> 00:31:46,820 Oleh kerana ia adalah tanda sisipan dan tidak nombor, anda tidak perlu menggunakan kolon, 444 00:31:46,820 --> 00:31:52,660 begitu! ^ bermakna hujah pertama kepada perintah sebelumnya. 445 00:31:52,660 --> 00:31:55,020 Sedikit bercampur di sini. 446 00:31:55,020 --> 00:31:58,450 Dalam kes ini, apabila anda menggunakan ini sebagai definisi alias, 447 00:31:58,450 --> 00:32:04,650 rujukan sejarah merujuk kembali kepada perintah-perintah di mana alias digunakan. 448 00:32:04,650 --> 00:32:08,470 Jadi ini akan kembali 1 arahan sebagai operasi sejarah, 449 00:32:08,470 --> 00:32:11,810 tetapi sebagai operasi alias ia merujuk kepada arahan di mana anda akan menaip, 450 00:32:11,810 --> 00:32:14,780 berkata, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 Kami mempunyai petikan ini di dalamnya. Apakah garis sendeng terbalik untuk? 452 00:32:20,240 --> 00:32:30,810 Dalam kes ini, seperti di tempat lain, kita tidak mahu untuk melaksanakan mekanisme sejarah 453 00:32:30,810 --> 00:32:33,680 manakala menentukan alias. 454 00:32:33,680 --> 00:32:37,900 Jika kita tidak mempunyai garis sendeng terbalik di sana, shell itu akan menarik dalam hujah pertama 455 00:32:37,900 --> 00:32:41,870 arahan yang betul, sebelum ia berlari ini arahan alias, yang kita tidak mahu. 456 00:32:41,870 --> 00:32:47,520 Kami mahu perkara ini dimasukkan ke dalam perintah alias memanggil hujah kemudian. 457 00:32:47,520 --> 00:32:53,550 Petikan tunggal tidak melarikan diri tanda seru, rujukan sejarah. 458 00:32:53,550 --> 00:32:57,450 Mungkin anda tahu melarikan diri ungkapan bermakna untuk mengubah makna sesuatu. 459 00:32:57,450 --> 00:33:00,260 Dalam kes ini, ia bermakna untuk menghentikan sesuatu daripada mempunyai makna khas. 460 00:33:00,260 --> 00:33:03,030 Makna khas tanda seru itu adalah sejarah. 461 00:33:03,030 --> 00:33:05,790 Melarikan diri dan ia tidak mempunyai makna itu. 462 00:33:05,790 --> 00:33:08,080 Petikan tidak berbuat demikian; garis sendeng terbalik tidak. 463 00:33:08,080 --> 00:33:11,900 Jadi, kita sebenarnya menggunakan 2 tahap melepaskan diri di sini. 464 00:33:23,500 --> 00:33:29,620 Saya akan bergerak arahan ini ke dalam tetingkap yang lain tanpa menaip 465 00:33:29,620 --> 00:33:35,210 dengan menggunakan operasi penyuntingan, yang anda mungkin dapati berguna. 466 00:33:40,620 --> 00:33:42,460 Sesuatu yang lain di sini saya akan menunjukkan kepada anda. 467 00:33:42,460 --> 00:33:46,730 Jika anda hanya perlu menaip alias tanpa hujah, ia memberitahu anda semua hujah-hujah anda. 468 00:33:46,730 --> 00:33:48,640 Ini adalah sekumpulan nama samaran saya sudah mempunyai di sini 469 00:33:48,640 --> 00:33:53,400 selain orang-orang yang saya telah menggunakan di sini hari ini. 470 00:33:53,400 --> 00:34:00,220 Tetapi jika saya hanya menaip dengan nama alias, ia memberitahu saya apa yang dimaksudkan. 471 00:34:00,220 --> 00:34:03,390 Perhatikan petikan hilang dan garis sendeng terbalik itu hilang. 472 00:34:03,390 --> 00:34:08,620 Rentetan ini di sini adalah hasil daripada bahawa definisi alias, 473 00:34:08,620 --> 00:34:12,199 dan kini ia mempunyai hanya! ^ di dalamnya. 474 00:34:12,199 --> 00:34:19,150 Ini akan kelihatan dalam tali fail untuk apa-apa. 475 00:34:19,150 --> 00:34:34,900 Jadi, jika saya lakukan tali grstrings_file, saya tidak memberikan apa-apa untuk mencari di sana, 476 00:34:34,900 --> 00:34:37,429 tetapi ia mencari dalam tali. 477 00:34:37,429 --> 00:34:42,330 Ia tidak mencari tali perkataan dalam tali fail, tetapi ia mencari abc. 478 00:34:42,330 --> 00:34:46,770 Dan ia tidak mendapati bahawa. 479 00:34:46,770 --> 00:34:52,330 Jadi di sini kita memberi hujah yang hits ke dalam takrif alias, 480 00:34:52,330 --> 00:34:55,530 yang dimasukkan ke dalamnya. 481 00:34:55,530 --> 00:34:58,540 Ia adalah di mana ungkapan ini berasal dari. 482 00:34:58,540 --> 00:35:00,240 Anda boleh menggunakan lebih daripada 1. 483 00:35:00,240 --> 00:35:03,170 Tanda sisipan adalah simbol untuk perdebatan yang pertama. 484 00:35:03,170 --> 00:35:07,510 Jika anda mahu menggunakan hujah yang kedua, anda akan berkata: 2. 485 00:35:07,510 --> 00:35:11,250 Tidak ada simbol khas untuk perdebatan yang kedua. 486 00:35:11,250 --> 00:35:14,790 Dan kerana anda menggunakan angka, anda perlu menggunakan kolon. 487 00:35:14,790 --> 00:35:17,220 Terdapat, bagaimanapun, pilihan lain di sini. 488 00:35:17,220 --> 00:35:21,220 Tanda dolar bermaksud hujah lepas. 489 00:35:21,220 --> 00:35:23,320 Dan kerana ini adalah simbol, anda boleh meninggalkan kolon. 490 00:35:23,320 --> 00:35:25,870 Jadi ia akan menjadi hujah yang terakhir dalam senarai. 491 00:35:25,870 --> 00:35:27,900 Dan ada juga yang itu. 492 00:35:27,900 --> 00:35:31,380 Asterisk bermaksud semua, jadi ini adalah senarai hujah yang lengkap, 493 00:35:31,380 --> 00:35:35,150 dan sekali lagi, anda boleh meninggalkan usus besar kerana ia bukan angka yang. 494 00:35:36,970 --> 00:35:39,950 Saya harap anda semua sedang memerhatikan semua ini. 495 00:35:39,950 --> 00:35:54,100 >> Mekanisme sejarah boleh kembali ke garisan sebelum ini dalam senarai sejarah. 496 00:35:54,100 --> 00:36:01,370 Anda boleh melakukan ini dalam definisi alias. 497 00:36:01,370 --> 00:36:02,950 Saya tidak pernah melihat ini dilakukan. 498 00:36:02,950 --> 00:36:05,840 Ia akan mempunyai kesan menarik keluar arahan awal dari senarai sejarah 499 00:36:05,840 --> 00:36:08,130 apabila anda melaksanakan alias, yang boleh arahan yang berbeza 500 00:36:08,130 --> 00:36:11,240 bergantung kepada bila dan di mana anda melaksanakannya. 501 00:36:11,240 --> 00:36:14,020 Pikiran anda mungkin mahu untuk menarik keluar sebutan sedemikian 502 00:36:14,020 --> 00:36:15,900 hanya untuk mengetahui apa perintah yang lebih awal adalah. 503 00:36:15,900 --> 00:36:17,280 Saya tidak pernah melihat ini berlaku. 504 00:36:17,280 --> 00:36:19,970 Saya rasa seseorang mungkin mahu, tetapi ini adalah sangat tidak mungkin. 505 00:36:19,970 --> 00:36:26,480 Terdapat perkara lain di sini. 506 00:36:26,480 --> 00:36:33,060 Jika anda menggunakan bahawa rujukan sejarah-jenis, 507 00:36:33,060 --> 00:36:38,190 barulah hujah-hujah yang ada sebutan sedemikian digunakan. 508 00:36:38,190 --> 00:36:42,180 Jika anda mempunyai definisi alias yang tidak menggunakan rujukan sejarah-jenis, 509 00:36:42,180 --> 00:36:44,060 jika ia hanya menjadi permulaan arahan 510 00:36:44,060 --> 00:36:46,520 dan anda mempunyai hujah lagi, maka apa sahaja yang anda taip selepas itu 511 00:36:46,520 --> 00:36:48,450 akan ditambah kepada arahan. 512 00:36:48,450 --> 00:36:52,040 Dalam kes ini, contoh yang saya hanya memberikan sana, kami menggunakan hujah yang pertama; 513 00:36:52,040 --> 00:36:54,610 kami tidak menggunakan mana-mana orang lain. 514 00:36:54,610 --> 00:36:57,960 Jika hujah-hujah lain telah diberikan pada baris arahan, mereka tidak akan digunakan. 515 00:36:57,960 --> 00:37:04,630 Jadi, jika anda menggunakan rujukan sejarah sama sekali, maka anda mesti menggunakannya untuk mendapatkan mana-mana hujah. 516 00:37:04,630 --> 00:37:11,310 >> Ada satu lagi perkara di sini saya hanya mahu lagi, sebahagiannya sambil lepas, 517 00:37:11,310 --> 00:37:15,250 iaitu bahawa mekanisme sejarah ini dengan tanda seru 518 00:37:15,250 --> 00:37:18,010 kembali kepada C-shell asal. 519 00:37:18,010 --> 00:37:27,060 Tcsh telah memperkenalkan operasi sejarah 520 00:37:27,060 --> 00:37:30,910 yang menggunakan pelbagai arahan dan rentetan dari editor, 521 00:37:30,910 --> 00:37:33,650 sama ada Emacs atau vi. 522 00:37:33,650 --> 00:37:36,430 Pendapat peribadi saya adalah Emacs adalah lebih mudah untuk digunakan untuk tujuan ini 523 00:37:36,430 --> 00:37:39,390 walaupun anda menggunakan vi untuk mengedit biasa anda. 524 00:37:39,390 --> 00:37:43,900 Terdapat pelbagai arahan Emacs yang kini disesuaikan untuk sejarah. 525 00:37:43,900 --> 00:37:46,410 Kawalan P mendapat talian sebelumnya dalam senarai sejarah. 526 00:37:46,410 --> 00:37:48,840 Satu lagi Kawalan P akan membawa anda yang sebelum itu. 527 00:37:48,840 --> 00:37:50,540 Anak panah sehingga melakukan perkara yang sama. 528 00:37:50,540 --> 00:37:54,190 Kawalan N mendapat arahan seterusnya jika anda sudah menatal kembali beberapa cara. 529 00:37:54,190 --> 00:37:55,880 Arrow Down tidak itu juga. 530 00:37:55,880 --> 00:38:00,480 Anda boleh bergerak ke kiri ke kanan dengan anak panah dan pelbagai perkara lain. 531 00:38:00,480 --> 00:38:02,390 Ini boleh menggunakan mekanisme sejarah 532 00:38:02,390 --> 00:38:05,070 lebih mudah daripada menggunakan titik sintaks seru, 533 00:38:05,070 --> 00:38:07,930 tetapi anda tidak akan menggunakan bahawa dalam definisi alias. 534 00:38:17,780 --> 00:38:20,020 Kami akan pergi ke yang sedikit masa lain. 535 00:38:24,300 --> 00:38:25,810 >> Pembolehubah. 536 00:38:26,880 --> 00:38:29,510 Anda tahu apa pembolehubah adalah dalam bahasa pengaturcaraan. 537 00:38:29,510 --> 00:38:31,680 Kerang mempunyai mereka juga. 538 00:38:31,680 --> 00:38:37,350 C-shell menggunakan arahan yang ditetapkan untuk menetapkan pembolehubah, 539 00:38:37,350 --> 00:38:41,360 jadi yang menetapkan pembolehubah untuk nilai b - 540 00:38:41,360 --> 00:38:46,390 seperti yang saya katakan, definisi tidak berguna tetapi ilustrasi bagaimana ini digunakan. 541 00:38:48,790 --> 00:38:52,410 Arahan set akan mewujudkan pembolehubah jika ia tidak sudah wujud. 542 00:38:55,270 --> 00:39:02,490 Parameter kedudukan untuk skrip shell boleh dianggap pembolehubah, 543 00:39:02,490 --> 00:39:10,750 tetapi penggunaan mereka dan kaedah-kaedah bagi mereka adalah agak berbeza. 544 00:39:10,750 --> 00:39:14,320 Anda tidak boleh menetapkan nilai $ 1 dalam perjalanan skrip. 545 00:39:14,320 --> 00:39:18,340 Anda akan perlu menentukan pembolehubah baru bagi maksud itu jika ada di antara kamu mahu. 546 00:39:23,000 --> 00:39:28,470 Type ditetapkan dengan ada hujah dan anda mendapat senarai semua pembolehubah yang kini ditakrif. 547 00:39:28,470 --> 00:39:34,220 Dan mari kita ke shell saya yang lain di sini dan lihat apa yang kita dapat jika kita berbuat demikian. 548 00:39:34,220 --> 00:39:37,110 Agak senarai panjang di sana, betul? 549 00:39:37,110 --> 00:39:40,990 Tatal ke atas sedikit. Lihatlah semua itu. 550 00:39:40,990 --> 00:39:44,330 Sebahagian daripada perkara-perkara yang ditakrifkan secara automatik oleh cengkerang. 551 00:39:44,330 --> 00:39:49,320 Shell mencipta pembolehubah dan memberikan ia satu nilai. 552 00:39:49,320 --> 00:39:52,730 Sebahagian daripada mereka yang ditakrifkan oleh shell tetapi ditakrifkan semula oleh pengguna 553 00:39:52,730 --> 00:39:54,820 mengikut pilihan beliau. 554 00:39:54,820 --> 00:39:59,110 Dan sebahagian daripada mereka yang dicipta oleh pengguna bergantung kepada apa yang dia lakukan hari itu. 555 00:39:59,110 --> 00:40:01,880 Itu hanya menetapkan tanpa hujah. 556 00:40:06,920 --> 00:40:10,050 Ada ciri ganjil di sini perkara ini. 557 00:40:10,050 --> 00:40:17,980 Perlu ada sama ada tiada ruang antara simbol sama dan nama yang berubah-ubah 558 00:40:17,980 --> 00:40:23,700 dan nilai atau ruang pada kedua-dua belah sama setaraf menandatangani, 559 00:40:23,700 --> 00:40:28,940 seperti dalam satu ini. 560 00:40:35,620 --> 00:40:41,340 Ini tidak boleh berfungsi, dan ini sebenarnya adalah perintah yang sah 561 00:40:41,340 --> 00:40:43,390 tetapi ia tidak akan melakukan apa yang anda berniat. 562 00:40:43,390 --> 00:40:50,070 Perintah yang akan berfungsi kerana jika anda hanya mengatakan ditetapkan dan nama berubah-ubah 563 00:40:50,070 --> 00:40:54,890 tanpa tanda sama atau menetapkan dan nama berubah-ubah dengan simbol sama dan tiada nilai, 564 00:40:54,890 --> 00:40:57,770 ia akan menetapkan pembolehubah kepada nilai null. 565 00:40:57,770 --> 00:41:00,120 Jadi menetapkan = adalah arahan yang sah. 566 00:41:00,120 --> 00:41:04,370 Arahan set boleh menentukan lebih daripada 1 pembolehubah pada baris yang sama. 567 00:41:04,370 --> 00:41:11,240 Jadi arahan ini di sini mempunyai kesan menentukan kedua-dua a dan b untuk nol nilai-nilai. 568 00:41:11,240 --> 00:41:13,470 Mungkin apa yang anda mahu. 569 00:41:13,470 --> 00:41:17,940 Yang ini di sini, yang dinyatakan sebelum ini, akan membawa kepada kesilapan 570 00:41:17,940 --> 00:41:21,270 kerana = b bukan ungkapan yang sah. 571 00:41:21,270 --> 00:41:23,680 Nama pembolehubah tidak boleh bermula dengan tanda sama dengan. 572 00:41:26,760 --> 00:41:29,080 Dan ada perkara-perkara ini lebih lanjut di sini. 573 00:41:29,080 --> 00:41:36,820 Ini titik bertindih digunakan untuk memilih hujah-hujah dari garis sejarah, 574 00:41:36,820 --> 00:41:41,210 dan ia boleh digunakan - dan saya tidak pergi ke sebelum - untuk mengubah suai perkara-perkara. 575 00:41:41,210 --> 00:41:44,480 Mereka juga boleh digunakan untuk mengubah suai pembolehubah shell. 576 00:41:44,480 --> 00:41:49,050 Yang ini di sini, $ a, mempunyai nilai. 577 00:41:49,050 --> 00:41:55,040 : R akan bermula lanjutan. 578 00:41:55,040 --> 00:41:57,200 Lanjutan akan apa-apa berikut titik, 579 00:41:57,200 --> 00:41:59,200 titik dan apa-apa berikutnya pada akhir fail, 580 00:41:59,200 --> 00:42:03,230 hanya di akhir senarai selepas dipotong lepas. 581 00:42:03,230 --> 00:42:05,480 Jadi saya perlu di sini. 582 00:42:05,480 --> 00:42:10,730 adalah itu. Ia akan menggugurkan. O. 583 00:42:10,730 --> 00:42:16,510 Jika ada tiada sambungan, hanya nama laluan selepas dipotong lepas, ia tidak akan mempunyai kesan. 584 00:42:16,510 --> 00:42:27,480 a: h, bahawa ungkapan berubah-ubah, akan berlepas elemen terakhir senarai direktori, 585 00:42:27,480 --> 00:42:29,660 lagi, hanya selepas dipotong lepas. 586 00:42:29,660 --> 00:42:33,160 Jadi / a / b / c menjadi / a / b, 587 00:42:33,160 --> 00:42:38,870 tetapi yang satu ini berubah kerana unsur selepas senarai itu adalah batal. 588 00:42:38,870 --> 00:42:43,070 Di sini ada sesuatu yang juga saya ingin menekankan. 589 00:42:43,070 --> 00:42:46,770 Ini kelayakan tidak mencari kewujudan fail-fail ini. 590 00:42:46,770 --> 00:42:48,910 Mereka hanya mencari tali. 591 00:42:48,910 --> 00:42:54,520 Ini adalah bertujuan untuk memanipulasi nama fail, nama laluan, 592 00:42:54,520 --> 00:42:57,520 tetapi mereka boleh digunakan pada mana-mana tali walaupun ia bukan satu nama fail. 593 00:42:57,520 --> 00:42:58,920 Dan mereka tidak mencari kewujudan, 594 00:42:58,920 --> 00:43:03,550 jadi jika ada fail tersebut, / a / b / c, ini akan masih bekerja. 595 00:43:03,550 --> 00:43:06,930 Sama ada apa-apa penggunaan adalah soalan lain, tetapi ia masih akan berfungsi. 596 00:43:06,930 --> 00:43:12,850 Pemboleh ubah ini berbeza dalam cengkerang Bourne. Kami akan mendapat yang kemudian. 597 00:43:12,850 --> 00:43:18,240 Tanda dolar boleh melarikan diri sama seperti tanda seru dan asterisk. 598 00:43:18,240 --> 00:43:21,760 Tanda dolar boleh melarikan diri dengan garis sendeng terbalik atau petikan tunggal. 599 00:43:21,760 --> 00:43:24,790 Sebut harga Double mempunyai kesan yang ganjil dalam semua cengkerang 600 00:43:24,790 --> 00:43:28,690 memaksa penilaian dolar menandatangani ungkapan berubah-ubah. 601 00:43:28,690 --> 00:43:31,960 Jadi, jika ia sedang melarikan diri satu cara, memetik dua boleh mempunyai kesan yang 602 00:43:31,960 --> 00:43:34,380 menyebabkan ia perlu dinilai juga. 603 00:43:34,380 --> 00:43:37,090 Ini adalah sedikit mengelirukan. 604 00:43:37,090 --> 00:43:43,740 Jika terdapat beberapa tahap melepaskan diri, seperti petikan tunggal di dalam tanda petikan berganda 605 00:43:43,740 --> 00:43:46,770 atau petikan berganda dalam tanda petikan tunggal, anda perlu menguji untuk melihat apa yang akan berlaku 606 00:43:46,770 --> 00:43:49,520 ke pembolehubah jika anda menggunakan satu. 607 00:43:49,520 --> 00:43:53,410 Mereka 2 situasi - di dalam dua tunggal, di dalam satu daripada dua - 608 00:43:53,410 --> 00:43:55,980 tidak semestinya memberikan keputusan yang sama. 609 00:44:02,520 --> 00:44:05,600 Pembolehubah persekitaran, terikat pembolehubah C-shell. 610 00:44:05,600 --> 00:44:08,340 Pembolehubah persekitaran juga pembolehubah dalam C-shell, 611 00:44:08,340 --> 00:44:11,250 dan mereka juga adalah pembolehubah dalam cengkerang lain juga. 612 00:44:11,250 --> 00:44:15,230 Dalam C-shell, mereka adalah set yang berbeza. 613 00:44:15,230 --> 00:44:18,130 Perkara-perkara yang saya katakan sebelum ini tentang pembolehubah shell. 614 00:44:18,130 --> 00:44:21,300 Pembolehubah persekitaran adalah satu set yang berbeza pembolehubah 615 00:44:21,300 --> 00:44:28,650 kecuali beberapa pembolehubah yang kita panggil pembolehubah terikat, 616 00:44:28,650 --> 00:44:30,640 yang amat penting dan kami akan masuk ke dalam orang-orang kemudian. 617 00:44:30,640 --> 00:44:34,950 Pembolehubah persekitaran secara automatik diluluskan pada 618 00:44:34,950 --> 00:44:41,800 untuk cengkerang atau arahan yang dijalankan dari shell anda. 619 00:44:41,800 --> 00:44:46,220 Perkara-perkara lain tidak. Pembolehubah shell, alias tidak. Pembolehubah persekitaran berada. 620 00:44:46,220 --> 00:44:48,630 Itulah sebabnya kita memanggil mereka pembolehubah persekitaran, 621 00:44:48,630 --> 00:44:55,030 idea adalah bahawa alam sekitar memanjangkan lalu hanya shell semasa anda. 622 00:44:55,030 --> 00:45:00,510 Mereka boleh digunakan untuk menentukan perkara-perkara untuk arahan. 623 00:45:00,510 --> 00:45:05,470 Berikut adalah satu contoh. PRINTER, LPDEST. 624 00:45:05,470 --> 00:45:12,270 Kedua-dua mereka boleh menentukan pembolehubah pencetak yang perintah akan gunakan untuk mencetak sesuatu. 625 00:45:12,270 --> 00:45:16,500 Jika ada banyak pencetak di sekeliling, anda mungkin mahu meletakkan satu yang anda suka. 626 00:45:16,500 --> 00:45:21,320 Sebab kita mempunyai 2 pembolehubah ialah set arahan telah ditulis 627 00:45:21,320 --> 00:45:23,870 menggunakan data yang berbeza. 628 00:45:23,870 --> 00:45:25,910 Anda mungkin memberikan mereka nilai-nilai yang berbeza. 629 00:45:25,910 --> 00:45:28,860 Kemungkinan besar anda akan memberikan mereka kedua-dua nilai yang sama. 630 00:45:28,860 --> 00:45:35,840 Perkara-perkara yang bekerja kerana arahan yang melakukan percetakan 631 00:45:35,840 --> 00:45:40,740 telah diprogramkan untuk mengkaji nilai pembolehubah. 632 00:45:42,200 --> 00:45:46,150 Jika program yang tidak ditulis dengan cara itu, jika ia ditulis untuk melakukan sesuatu yang lain, 633 00:45:46,150 --> 00:45:48,280 pembolehubah akan menjadi tidak relevan. 634 00:45:48,280 --> 00:45:52,530 Jadi sistem operasi tidak mencari pembolehubah 635 00:45:52,530 --> 00:45:55,210 setiap kali anda merujuk kepada pencetak. 636 00:45:55,210 --> 00:45:59,090 Satu perintah yang tidak percetakan sedang mencari pembolehubah jika ia diprogramkan dengan cara itu. 637 00:46:11,030 --> 00:46:15,240 Pembolehubah ini sering ditakrifkan dalam fail pemula anda 638 00:46:15,240 --> 00:46:19,440 tetapi tidak semestinya. 639 00:46:19,440 --> 00:46:21,050 Anda boleh menentukan mereka pada baris arahan. 640 00:46:21,050 --> 00:46:24,090 Mereka boleh ditakrifkan dalam perintah. 641 00:46:24,090 --> 00:46:28,740 Satu perintah yang berjalan sesuatu yang mungkin pilihan sendiri pembolehubah - 642 00:46:28,740 --> 00:46:32,390 pembolehubah yang unik kepada pakej perisian tertentu, sebagai contoh. 643 00:46:32,390 --> 00:46:36,740 Mereka akan ditakrifkan apabila anda menjalankan pakej itu. 644 00:46:39,690 --> 00:46:42,680 Bagaimana pemboleh ubah ini diserahkan kepada sub-shell? 645 00:46:42,680 --> 00:46:48,210 Apabila sub-shell ditulis, tidak menulis ke dalam kawasan itu. 646 00:46:48,210 --> 00:46:53,260 Kawasan sub-shell yang dikhaskan untuk pembolehubah persekitaran 647 00:46:53,260 --> 00:46:56,450 tidak ditulis oleh sub-shell, ia ditulis dengan meniru. 648 00:46:56,450 --> 00:47:00,530 Apabila anda menjalankan arahan biasa, seperti arahan ini untuk mencetak atau apa sahaja, 649 00:47:00,530 --> 00:47:03,840 mereka memulakan dengan mewujudkan satu shell baru. 650 00:47:03,840 --> 00:47:06,190 Shell mewujudkan shell dan kemudian menulis ganti sebahagian daripadanya 651 00:47:06,190 --> 00:47:08,800 dengan arahan yang anda menjalankan, yang adalah sedikit mengelirukan, 652 00:47:08,800 --> 00:47:10,740 tetapi itulah bagaimana arahan ini mendapatkan pembolehubah persekitaran 653 00:47:10,740 --> 00:47:14,890 yang kemudiannya merujuk kepada di kemudian hari. 654 00:47:21,920 --> 00:47:28,010 Arahan di sini untuk menentukan setenv yang berubah-ubah. 655 00:47:28,010 --> 00:47:36,470 Itulah bagaimana anda menentukan ia. Ia adalah 3 unsur: setenv, berubah-ubah, nilai. 656 00:47:36,470 --> 00:47:44,710 Jika anda hanya setenv tanpa hujah, apa yang kamu dapat? 657 00:47:47,220 --> 00:47:48,810 Senarai semua orang-orang pembolehubah. 658 00:47:48,810 --> 00:47:53,190 Sekali lagi, ia satu senarai panjang yang bagus dan dalam kes ini, seperti dalam yang lain, 659 00:47:53,190 --> 00:47:57,320 pemboleh ubah ini ditakrifkan sebahagian besarnya melalui kuat login saya dengan shell itu sendiri 660 00:47:57,320 --> 00:47:59,740 bukan oleh apa-apa yang saya lakukan. 661 00:47:59,740 --> 00:48:03,580 Ada arahan lain di sini, printenv. 662 00:48:07,520 --> 00:48:10,340 Yang juga akan paparkan alam sekitar. 663 00:48:10,340 --> 00:48:15,240 Perhatikan perkara ini terakhir di sini, = EDITOR vi. 664 00:48:15,240 --> 00:48:21,120 Yang mengatakan bahawa jika saya menggunakan sesuatu yang menyeru penyunting 665 00:48:21,120 --> 00:48:25,530 dan saya tidak menentukan penyunting dan ia membolehkan saya pilihan, ia boleh memberikan saya vi. 666 00:48:25,530 --> 00:48:37,280 Bagaimana jika saya lakukan EDITOR printenv? Ia memberitahu saya apa yang ada. 667 00:48:37,280 --> 00:48:41,340 Hak sebelum itu, terdapat satu pemboleh ubah, KURANG. 668 00:48:41,340 --> 00:48:46,040 Ini adalah pilihan yang mungkir anda apabila saya jalankan arahan KURANG, 669 00:48:46,040 --> 00:48:49,360 yang memaparkan fail. 670 00:48:49,360 --> 00:48:55,910 Jadi, jika saya berbuat demikian, printenv boleh mengambil 1 hujah atau 0 hujah, 671 00:48:55,910 --> 00:48:58,070 tidak lebih daripada 1. 672 00:49:01,800 --> 00:49:05,690 Terdapat arahan lain juga, tetapi kita tidak akan masuk ke dalam semua hari ini bahawa. 673 00:49:05,690 --> 00:49:11,010 Ingat terdapat Penukar untuk pemboleh ubah shell seperti: h, 674 00:49:11,010 --> 00:49:14,350 yang akan jatuh elemen terakhir pathname yang, 675 00:49:14,350 --> 00:49:17,950 atau: r, yang akan jatuh lanjutan. 676 00:49:17,950 --> 00:49:23,110 Mereka kini memohon kepada pembolehubah persekitaran juga. Mereka tidak biasa. 677 00:49:23,110 --> 00:49:24,960 Ia digunakan untuk menjadi mereka tidak boleh diubah suai. Sekarang mereka boleh. 678 00:49:24,960 --> 00:49:29,190 Ia adalah salah satu kemajuan dengan perkembangan kerang selama ini. 679 00:49:29,190 --> 00:49:35,620 Aku hanya berkata bahawa peluru sebagai sebahagian daripada persekitaran 680 00:49:35,620 --> 00:49:43,040 dan pembolehubah shell dalam C-kerangan, dengan beberapa pengecualian, set yang berbeza. 681 00:49:43,040 --> 00:49:46,790 Anda boleh mewujudkan satu pembolehubah persekitaran dan pembolehubah shell dengan nama yang sama. 682 00:49:46,790 --> 00:49:49,220 Mereka akan pembolehubah yang berbeza, mereka boleh mempunyai nilai-nilai yang berbeza. 683 00:49:49,220 --> 00:49:53,090 Menukar nilai satu tidak akan menukar nilai yang lain. 684 00:49:53,090 --> 00:49:58,070 Pembolehubah ini semua dinilai dengan tanda dolar - $ a, $ apa sahaja. 685 00:49:58,070 --> 00:50:02,340 Jadi apa jika anda mempunyai ini? Adakah anda tahu mana yang anda dapat? 686 00:50:02,340 --> 00:50:04,520 Dalam ujian saya, saya mendapat ubah shell, 687 00:50:04,520 --> 00:50:07,240 tetapi ini tidak didokumenkan dan anda tidak boleh bergantung kepada itu. 688 00:50:07,240 --> 00:50:10,270 Jadi saya bertanya kepada anda, mewujudkan shell dan persekitaran pembolehubah 689 00:50:10,270 --> 00:50:13,490 dengan nama yang sama idea yang baik? No Okay. 690 00:50:13,490 --> 00:50:17,460 Apakah pengecualian utama di mana alam sekitar dan shell pembolehubah 691 00:50:17,460 --> 00:50:19,860 dikaitkan dengan satu sama lain? 692 00:50:19,860 --> 00:50:27,470 Terdapat ini 4. 693 00:50:32,030 --> 00:50:35,510 Huruf persekitaran JANGKA berubah-ubah, 694 00:50:35,510 --> 00:50:41,540 shell jangka ubah dalam huruf kecil, jenis emulasi terminal. 695 00:50:41,540 --> 00:50:47,430 Saya hanya akan pergi ke sini dan saya akan melakukan gema, arahan yang berguna di sini, 696 00:50:47,430 --> 00:50:52,560 $ $ JANGKA panjang. Dan di sana. 697 00:50:52,560 --> 00:51:00,570 xterm adalah sejenis terminal untuk tingkap dipaparkan dalam Sistem x Window. 698 00:51:00,570 --> 00:51:04,330 xterm-warna variasi dari yang yang membolehkan warna yang berbeza. 699 00:51:04,330 --> 00:51:06,580 Mengapa kita menentukan ini? Apakah ini baik untuk? 700 00:51:06,580 --> 00:51:09,740 Arahan yang menyusun semula skrin seperti editor 701 00:51:09,740 --> 00:51:13,680 menghantar urutan tertentu, yang dipanggil urutan melarikan diri, 702 00:51:13,680 --> 00:51:18,160 kepada terminal atau tingkap untuk menyusun semula dan sebagainya. 703 00:51:18,160 --> 00:51:20,990 Mereka urutan adalah berbeza untuk pelbagai jenis terminal. 704 00:51:20,990 --> 00:51:23,100 Ini memberitahu ia yang mana untuk digunakan. 705 00:51:23,100 --> 00:51:25,900 Kadang-kadang ada isu-isu di sana. 706 00:51:25,900 --> 00:51:28,600 Anda mungkin mahu mengubah itu. 707 00:51:28,600 --> 00:51:30,780 Jika perkara-perkara yang tidak berfungsi, kadang-kadang jenis terminal ditetapkan salah, 708 00:51:30,780 --> 00:51:36,440 anda mungkin boleh memperbaikinya dengan mentakrifkan pembolehubah istilah ini. 709 00:51:36,440 --> 00:51:43,420 Dalam kes ini, perubahan satu pembolehubah, pembolehubah persekitaran pembolehubah shell, 710 00:51:43,420 --> 00:51:45,970 perlu mengubah yang lain. 711 00:51:45,970 --> 00:51:50,970 Saya telah mendapati melalui pengalaman bahawa perubahan JANGKA dalam huruf besar 712 00:51:50,970 --> 00:51:54,060 tidak selalu menukar shell jangka ubah dalam huruf kecil. 713 00:51:54,060 --> 00:51:55,550 Ini adalah bug. 714 00:51:55,550 --> 00:51:59,400 Saya tidak tahu jika itu sentiasa benar. Kebanyakan masa ia tidak benar, tetapi ia boleh. 715 00:51:59,400 --> 00:52:02,490 Jadi jika anda membuat perubahan, hanya cek yang keluar. 716 00:52:02,490 --> 00:52:05,830 Ia tidak selalunya bahawa anda perlu menukar nilai itu, tetapi sekali-sekala anda lakukan. 717 00:52:05,830 --> 00:52:08,260 PENGGUNA pembolehubah persekitaran. 718 00:52:08,260 --> 00:52:12,070 Sekali lagi, pembolehubah persekitaran dalam huruf besar, shell ubah dalam huruf kecil. 719 00:52:12,070 --> 00:52:13,710 Ini adalah nama pengguna anda. 720 00:52:13,710 --> 00:52:16,730 Ia hanya di bawah keadaan yang sangat luar biasa 721 00:52:16,730 --> 00:52:18,420 yang anda mahu untuk mengubah itu. 722 00:52:18,420 --> 00:52:22,350 Jika nama pengguna anda adalah orang lain, ia boleh membuang segala macam perkara luar. 723 00:52:22,350 --> 00:52:26,040 Direktori rumah, direktori rumah pengguna. 724 00:52:26,040 --> 00:52:28,060 Sekali lagi, anda tidak akan mahu untuk mengubah itu. 725 00:52:28,060 --> 00:52:32,260 Perhatikan dalam semua kes-kes ini dan yang kita kira-kira untuk menutup, ubah jalan, 726 00:52:32,260 --> 00:52:37,070 pembolehubah persekitaran adalah dalam huruf besar dan shell pembolehubah terikat adalah dalam huruf kecil. 727 00:52:37,070 --> 00:52:39,240 Jika anda menukar satu, anda perlu mengubah yang lain. 728 00:52:39,240 --> 00:52:45,960 Ini jenis mengikat tidak boleh ditubuhkan kerana anda tidak boleh mengikat 2 pembolehubah, 729 00:52:45,960 --> 00:52:50,570 selain daripada ini 4, dan mengikat dalam pembolehubah ini tidak boleh dibuat asal, 730 00:52:50,570 --> 00:52:52,090 anda tidak boleh memisahkan mereka. 731 00:52:52,090 --> 00:52:55,820 Jadi ini 4 pasangan pembolehubah terikat. 732 00:52:55,820 --> 00:52:59,020 Mereka akan sentiasa. Tiada orang lain akan. 733 00:52:59,020 --> 00:53:05,720 Di samping itu, ia akan menjadi mustahil untuk mencipta pembolehubah dengan nama yang sama 734 00:53:05,720 --> 00:53:07,780 jenis bertentangan. 735 00:53:07,780 --> 00:53:11,600 Anda boleh membuat jangka ubah shell dalam huruf kecil 736 00:53:11,600 --> 00:53:14,990 atau persekitaran yang berubah-ubah JANGKA huruf besar. 737 00:53:14,990 --> 00:53:19,040 Pemboleh ubah akan bebas daripada pembolehubah berpasangan 738 00:53:19,040 --> 00:53:20,780 dan mereka akan bebas daripada satu sama lain. 739 00:53:20,780 --> 00:53:23,780 Saya tidak boleh bayangkan mengapa anda akan berbuat demikian melainkan jika anda mahu untuk mengelirukan rakyat. 740 00:53:24,600 --> 00:53:29,730 Yang ini di sini, jalan berubah-ubah, ini adalah satu yang benar-benar penting. 741 00:53:29,730 --> 00:53:35,550 Satu lagi perkara di sini adalah bahawa tidak mungkin kes-kes 742 00:53:35,550 --> 00:53:40,430 pembolehubah dengan nama-nama dipasangkan sama yang tidak terikat antara satu sama lain. 743 00:53:40,430 --> 00:53:45,000 Tidak akan pembolehubah, SHELL dan shell, di ibu dan kecil huruf. 744 00:53:45,000 --> 00:53:48,300 Berdasarkan nama itu, anda tidak tahu jika pembolehubah yang berubah-ubah shell 745 00:53:48,300 --> 00:53:51,580 atau pembolehubah persekitaran, dan mereka tidak terikat antara satu sama lain. 746 00:53:51,580 --> 00:53:55,300 Jadi yang jenis nama-nama berpasangan tidak membayangkan pembolehubah terikat. 747 00:53:55,300 --> 00:53:58,830 Pembolehubah jalan, yang saya telah menunjukkan sebelum ini, 748 00:53:58,830 --> 00:54:01,880 adalah senarai nama laluan di mana kulit kelihatan untuk arahan. 749 00:54:01,880 --> 00:54:12,320 Mari kita ke tingkap ini di sini dan kami akan melakukan $ echo PATH, huruf besar - 750 00:54:12,320 --> 00:54:20,230 pembolehubah persekitaran - echo $ jalan, surat kecil - shell berubah-ubah. 751 00:54:20,230 --> 00:54:24,980 Perhatikan bahawa senarai direktori adalah sama. Ini adalah terikat. 752 00:54:24,980 --> 00:54:26,590 Tukar satu, anda menukar lain. 753 00:54:26,590 --> 00:54:32,970 Dalam pembolehubah persekitaran unsur-unsur yang dipisahkan oleh titik bertindih. Notis itu. 754 00:54:32,970 --> 00:54:35,130 Pembolehubah shell dipisahkan oleh ruang. 755 00:54:35,130 --> 00:54:38,760 Pemboleh ubah persekitaran adalah rentetan tunggal. 756 00:54:38,760 --> 00:54:41,480 Pembolehubah shell adalah array. 757 00:54:41,480 --> 00:54:43,490 The Bourne shell tidak mempunyai tatasusunan. 758 00:54:43,490 --> 00:54:46,600 Bash tidak, tetapi ini sudah sebahagian tetap daripada cengkerang. 759 00:54:46,600 --> 00:54:48,660 Ini adalah rentetan tunggal dan tidak array. 760 00:54:48,660 --> 00:54:50,420 C-shell sentiasa mempunyai tatasusunan. 761 00:54:50,420 --> 00:54:52,630 Tatasusunan adalah lebih mudah untuk bekerja dengan. 762 00:54:52,630 --> 00:54:54,400 Anda boleh merujuk kepada bahagian-bahagian itu. 763 00:54:54,400 --> 00:55:02,350 $ Laluan Jadi echo [1] dan saya mendapat / usr / bin, elemen pertama. 764 00:55:02,350 --> 00:55:09,950 Sekali lagi, ingat dolar tanda bermaksud elemen terakhir dalam senarai sejarah. 765 00:55:09,950 --> 00:55:16,850 Apa yang berlaku di sana? Ia cuba untuk mencari tanda dolar sebagai simbol berubah-ubah. 766 00:55:16,850 --> 00:55:20,850 Saya melepaskan diri. Oops. Ia tidak akan mengambil masa yang sama ada. 767 00:55:20,850 --> 00:55:23,690 Sebahagian daripada perkara yang tidak berfungsi dengan baik. 768 00:55:23,690 --> 00:55:28,140 Mungkin kita hanya akan meninggalkan bahawa. 769 00:55:28,140 --> 00:55:36,980 Asterisk merujuk kepada perkara keseluruhan, tetapi itulah yang anda dapat jika anda tidak menentukan unsur. 770 00:55:36,980 --> 00:55:46,170 Satu lagi cara yang pelbagai pembolehubah boleh dimanipulasi, 771 00:55:46,170 --> 00:55:49,500 beberapa elemen di sana, 7 elemen. 772 00:55:49,500 --> 00:55:53,410 Di sini kita meletakkan tanda pound sebelum nama berubah-ubah. 773 00:55:53,410 --> 00:55:58,280 Berikut adalah satu sama lain. Letakkan tanda tanya di sana. 774 00:55:58,280 --> 00:56:03,170 Itulah nilai yang logik. Yang menunjukkan bahawa pemboleh ubah itu wujud. 775 00:56:03,170 --> 00:56:05,160 Ia satu lagi cara bekerja dengan pembolehubah. 776 00:56:05,160 --> 00:56:06,660 Yang, dengan cara itu, tidak perlu menjadi seorang pembolehubah array. 777 00:56:06,660 --> 00:56:08,210 Yang boleh mana-mana berubah-ubah. 778 00:56:08,210 --> 00:56:11,840 Dan jika saya lakukan, tidak ada yang berubah-ubah itu dan saya mendapat 0. 779 00:56:11,840 --> 00:56:14,990 Satu lagi perkara yang kecil di sana kira-kira penilaian berubah-ubah. 780 00:56:23,670 --> 00:56:32,950 Kembali ke sini kerana di sini, jika untuk beberapa sebab anda mahu bekerja dengan ini 781 00:56:32,950 --> 00:56:37,990 daripada bekerja dengan pelbagai, pembolehubah shell, 782 00:56:37,990 --> 00:56:41,470 terdapat arahan yang boleh memisahkan perkara-perkara ini berdasarkan kolon. 783 00:56:41,470 --> 00:56:44,080 Malah, jika anda akan melakukan ini dalam Bash shell mungkin, 784 00:56:44,080 --> 00:56:47,110 beberapa jenis skrip, yang akan mungkin bagaimana anda akan melakukannya. 785 00:56:47,110 --> 00:56:50,350 Tetapi dalam C-shell ia lebih mudah untuk digunakan array. 786 00:56:50,350 --> 00:56:58,250 Dalam Bourne shell, pemboleh ubah yang diberikan oleh ungkapan tunggal seperti ini, 787 00:56:58,250 --> 00:57:01,760 seperti cara yang anda mungkin menetapkan variable di dalam bahasa pengaturcaraan, 788 00:57:01,760 --> 00:57:05,110 dan di sini, jangan sampai ada ruang. 789 00:57:05,110 --> 00:57:09,110 Ia perlu bahawa ia hanya 1 tali. 790 00:57:09,110 --> 00:57:14,980 Dalam kerang Bourne-jenis, semua pembolehubah adalah pembolehubah shell. 791 00:57:14,980 --> 00:57:19,250 Pembolehubah persekitaran adalah subset pembolehubah shell. 792 00:57:19,250 --> 00:57:24,060 Mereka dibezakan dari pembolehubah bukan alam dengan mengeksport. 793 00:57:24,060 --> 00:57:28,860 Arahan untuk melakukannya adalah eksport, seperti PRINTER eksport. 794 00:57:28,860 --> 00:57:34,930 Jika kita untuk menentukan apa-apa pembolehubah, 795 00:57:34,930 --> 00:57:38,480 jika kita mahukan perintah percetakan untuk merasa, ia akan menjadi pembolehubah alam sekitar, 796 00:57:38,480 --> 00:57:40,730 dan bagaimana kita membuat ia satu. 797 00:57:40,730 --> 00:57:42,090 Di sini ada sesuatu jenis mengelirukan. 798 00:57:42,090 --> 00:57:50,430 Ungkapan ini, eksport kepada alam sekitar, berasal dari konsep shell Bourne, 799 00:57:50,430 --> 00:57:54,520 tetapi ungkapan itu digunakan dalam perihal C-shell, 800 00:57:54,520 --> 00:57:57,920 jika tiada arahan seperti eksport. 801 00:57:57,920 --> 00:58:06,200 Jika anda hanya berkata eksport dengan sendirinya, anda akan mendapat senarai dieksport - 802 00:58:06,200 --> 00:58:10,620 Jadi jika saya hanya mengeksport sini, tidak ada benda itu. 803 00:58:13,620 --> 00:58:15,200 Okay, ada kita pergi. 804 00:58:15,200 --> 00:58:17,010 Perkara-perkara ini, dengan cara itu, juga ditakrifkan oleh cengkerang. 805 00:58:17,010 --> 00:58:19,400 Saya tidak menentukan mana-mana oleh saya sendiri. 806 00:58:19,400 --> 00:58:23,550 Shell ini melakukan segala macam perkara dengan sendirinya. 807 00:58:23,550 --> 00:58:26,650 Ia harus melakukan perkara-perkara secara automatik. 808 00:58:30,240 --> 00:58:36,880 Dalam Bash atau Korn shell, anda boleh menjalankan arahan seperti ini, 809 00:58:36,880 --> 00:58:42,000 yang kedua-duanya akan memberi ubah nilai dan mengeksport dalam 1 arahan. 810 00:58:42,000 --> 00:58:46,150 Dalam shell Bourne yang mereka perlu arahan berasingan seperti eksport. 811 00:58:46,150 --> 00:58:48,410 Berikut adalah satu lagi aspek yang mengelirukan. 812 00:58:48,410 --> 00:58:52,220 Arahan set dalam C-shell mentakrifkan pembolehubah 813 00:58:52,220 --> 00:58:55,550 dan tanpa hujah memberitahu anda apa nilai-nilai pembolehubah 'adalah. 814 00:58:55,550 --> 00:59:01,140 Dalam Bash shell, arahan yang ditetapkan dengan ada hujah melakukan perkara yang sama, 815 00:59:01,140 --> 00:59:03,580 tetapi dengan hujah-hujah yang ia sesuatu yang agak berbeza. 816 00:59:03,580 --> 00:59:06,200 Jadi ini adalah pelbagai hujah-hujah di sini. 817 00:59:06,200 --> 00:59:10,460 Sebahagian daripada ini adalah pembolehubah alam sekitar, sebahagian daripada mereka adalah pembolehubah shell. 818 00:59:10,460 --> 00:59:13,200 Kesemua mereka adalah pembolehubah shell benar-benar. Sesetengah daripada mereka adalah pemboleh ubah persekitaran. 819 00:59:15,690 --> 00:59:23,920 Arahan set dengan hujah-hujah yang boleh digunakan untuk mengendalikan 820 00:59:23,920 --> 00:59:28,220 kepada parameter kedudukan untuk skrip, 821 00:59:28,220 --> 00:59:33,910 yang merupakan cara untuk mendapatkan mereka semua sekali gus. 822 00:59:33,910 --> 00:59:36,150 Kita tidak boleh benar-benar pergi ke hari ini bahawa. 823 00:59:36,150 --> 00:59:39,580 Ia juga boleh digunakan untuk mengubah tingkah laku shell. 824 00:59:39,580 --> 00:59:46,700 Terutamanya dalam Bash terdapat pembolehubah yang akan menentukan bagaimana shell itu berkelakuan. 825 00:59:46,700 --> 00:59:51,310 Kemudian juga hanya ini satu arahan yang mungkin anda lihat, arahan ini. 826 00:59:51,310 --> 00:59:59,050 Disettaip diikuti oleh pembolehubah dan jenis boleh ubah digunakan dalam Korn dan Bash cengkerang. 827 00:59:59,050 --> 01:00:04,970 Ia bukan wajib tetapi ia boleh digunakan untuk menyekat nilai-nilai pembolehubah, 828 01:00:04,970 --> 01:00:08,400 yang boleh berguna untuk mengelakkan kesilapan, dan ia perkara biasa. 829 01:00:08,400 --> 01:00:11,640 Jadi saya hanya menyebut bahawa sekiranya anda melihatnya di suatu tempat. 830 01:00:17,290 --> 01:00:19,160 Arahan di mana. 831 01:00:19,160 --> 01:00:22,490 Ingat saya nyatakan sebelum ini di mana arahan dalam C-shell, 832 01:00:22,490 --> 01:00:28,750 yang boleh memberitahu anda lokasi yang pathname arahan. 833 01:00:28,750 --> 01:00:32,580 Berikut adalah penggantian arahan. 834 01:00:32,580 --> 01:00:41,900 Anda perlu mencari di keyboard anda di suatu tempat watak yang kelihatan seperti ini. 835 01:00:41,900 --> 01:00:44,910 Lokasi pada keyboard akan berbeza-beza. 836 01:00:44,910 --> 01:00:47,050 Kami telah memanggilnya backquote. Ia kira-kira saiz sebut harga. 837 01:00:47,050 --> 01:00:48,720 Ia pergi dari kiri atas untuk menurunkan betul. 838 01:00:48,720 --> 01:00:52,690 Di sini pada keyboard Mac saya ia di sudut kiri sebelah. 839 01:00:52,690 --> 01:00:58,150 Watak yang boleh digunakan untuk melaksanakan arahan dalam perintah. 840 01:00:58,150 --> 01:01:03,400 Jika anda mempunyai satu ungkapan dalam backquotes, 841 01:01:03,400 --> 01:01:07,080 ungkapan itu adalah perintah, ia berjalan. 842 01:01:07,080 --> 01:01:09,010 Output arahan yang 843 01:01:09,010 --> 01:01:11,980 kemudiannya digantikan dengan ungkapan backquote keseluruhan 844 01:01:11,980 --> 01:01:16,110 di dalam arahan yang lebih lama yang kemudiannya berjalan dengan output yang 845 01:01:16,110 --> 01:01:22,010 sebagai sebahagian daripada rentetan daripada hujah-hujah dan sebagainya. 846 01:01:22,010 --> 01:01:28,640 Berikut adalah arahan yang menggunakan itu. 847 01:01:28,640 --> 01:01:32,340 Mari kita menunjukkan operasi di sini. 848 01:01:44,980 --> 01:01:49,090 Mari kita pergi di sini, mengambil yang backquotes. 849 01:01:49,090 --> 01:01:54,410 Kawalan A mendapat saya ke permulaan baris dengan Emacs editing sintaksis. 850 01:01:54,410 --> 01:02:00,380 Setakat ini nama laluan adalah apa yang mana tidak, 851 01:02:00,380 --> 01:02:05,040 tetapi apabila saya melakukannya seperti ini, ia kemudian palam dalam bahawa senarai nama laluan 852 01:02:05,040 --> 01:02:08,750 di tempat ini ungkapan backquote keseluruhan dan berjalan ls-l ke atas mereka. 853 01:02:08,750 --> 01:02:11,120 Jenis mudah, kan? 854 01:02:11,120 --> 01:02:14,860 Jadi itu satu perkara kemas. Begitulah backquotes bekerja. 855 01:02:14,860 --> 01:02:17,560 Sekarang mari kita turun ke bawah sedikit lagi. 856 01:02:17,560 --> 01:02:22,050 Ini adalah nama samaran. Saya sebenarnya menggunakan ini. 857 01:02:22,050 --> 01:02:26,410 Saya akan cuba untuk mendapatkan di ini dengan 1 operasi penyuntingan. 858 01:02:34,900 --> 01:02:36,900 Okay. 859 01:02:36,900 --> 01:02:39,630 Sekarang mari kita lihat bagaimana mereka definisi keluar. 860 01:02:39,630 --> 01:02:44,930 alias LWH memberitahu saya bagaimana ia ditakrifkan. 861 01:02:44,930 --> 01:02:51,210 Notis ia hanya ini, tetapi memetik luar telah diambil kira 862 01:02:51,210 --> 01:02:53,750 dan tanda seru itu diambil kira. 863 01:02:53,750 --> 01:02:58,940 ! *, Senarai lengkap semua hujah. 864 01:02:58,940 --> 01:03:03,580 Dalam definisi alias ia akan memohon kembali ke mana saya menggunakan ini. 865 01:03:03,580 --> 01:03:10,620 LWH KSH Bash. Okay. 866 01:03:10,620 --> 01:03:13,960 Lihat bagaimana yang bekerja? Ia menjimatkan saya beberapa menaip. 867 01:03:13,960 --> 01:03:16,440 Mari kita naik sedikit hanya untuk menyebut sesuatu yang berlainan di sini. 868 01:03:19,150 --> 01:03:23,120 Perhatikan di sini ini cengkerang yang berbeza. Saya sepatutnya disebut sebelum ini. 869 01:03:23,120 --> 01:03:36,060 Csh ini mempunyai 2 di sini dan begitu juga / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 Kita boleh menubuhkan dengan cara lain bahawa mereka adalah benar-benar fail yang sama. 871 01:03:39,870 --> 01:03:43,150 Ingat saya katakan jika anda menaip sh anda mendapat sambutan. 872 01:03:43,150 --> 01:03:47,390 Menaip ini dan anda mendapatkan ini. 873 01:03:47,390 --> 01:03:51,730 Tetapi mereka tidak dikaitkan. Mereka mempunyai yang tunggal di sana. 874 01:03:51,730 --> 01:03:54,910 Dan ini bukanlah jenis fail yang boleh memanggil satu sama lain. 875 01:03:54,910 --> 01:03:59,460 Jadi mereka adalah fail berasingan; yang C-kerangan fail yang sama. 876 01:03:59,460 --> 01:04:03,640 Kembali ke bawah di sini, yang lain di sini, alias ini, 877 01:04:03,640 --> 01:04:09,090 ambil perhatian bahawa berjalan arahan ini, fail. 878 01:04:09,090 --> 01:04:13,810 Alias ​​yang berjalan itu. Fail memberitahu anda jenis fail. 879 01:04:13,810 --> 01:04:20,330 Bash KSH Jadi FWH. Okay. 880 01:04:20,330 --> 01:04:23,230 Itulah output arahan fail. 881 01:04:23,230 --> 01:04:24,630 Saya tidak tahu jika anda tahu apa ini bermakna di sini, 882 01:04:24,630 --> 01:04:26,750 Mach-O binari sejagat dengan 2 seni bina. 883 01:04:26,750 --> 01:04:30,470 Terdapat 2 jenis pemproses mungkin dalam Mac, 884 01:04:30,470 --> 01:04:34,780 dan beberapa program ditulis untuk dapat berjalan dengan kedua-duanya, 885 01:04:34,780 --> 01:04:37,950 dan perintah fail boleh menentukan bahawa, supaya apa yang dimaksudkan. 886 01:04:37,950 --> 01:04:40,660 Kedua-dua fail-fail ini telah ditulis dengan cara itu. 887 01:04:40,660 --> 01:04:43,760 Oleh itu, kita melihat bagaimana alias kerja-kerja, kita lihat bagaimana backquote kerja-kerja, 888 01:04:43,760 --> 01:04:48,640 kita melihat bagaimana ls fail sebenar atau fail berfungsi. 889 01:04:52,050 --> 01:04:57,000 Ini mungkin tidak berfungsi. Cuba "di mana di mana" dan "LWH mana". Okay, mari kita cuba itu. 890 01:04:57,000 --> 01:05:01,040 di mana di mana. 891 01:05:01,040 --> 01:05:03,500 di mana adalah shell terbina dalam. 892 01:05:03,500 --> 01:05:06,970 Ingat sebelum ini kami menunjukkan bahawa Bash tidak mempunyai mana. 893 01:05:06,970 --> 01:05:10,080 Jika anda menaip di mana dalam Bash shell, anda akan mendapat mesej ralat. 894 01:05:10,080 --> 01:05:12,540 Ia hanya sebahagian daripada kulit dan bukannya arahan yang berasingan. 895 01:05:12,540 --> 01:05:20,000 Apakah yang akan berlaku jika saya menaip LWH mencari di mana? Lihat apa yang berlaku di sana. 896 01:05:20,000 --> 01:05:22,850 Berlari di mana mana, mendapat output ini, dan kemudian cuba melarikan ls 897 01:05:22,850 --> 01:05:25,600 sebagai l di mana adalah shell terbina dalam. 898 01:05:25,600 --> 01:05:28,790 mana ada, tetapi yang lain tidak wujud. 899 01:05:28,790 --> 01:05:32,090 Tiada seorang pun daripada ini wujud, sebenarnya. 900 01:05:32,090 --> 01:05:35,560 Supaya tidak sentiasa bekerja, dan ia juga menggambarkan bagaimana beberapa perkara 901 01:05:35,560 --> 01:05:39,580 tidak melakukan cukup apa yang anda mungkin berfikir. 902 01:05:40,930 --> 01:05:43,010 Mari kita turun sedikit lagi di sini. 903 01:05:44,890 --> 01:05:54,760 Ini di sini adalah dalam Bash. Itu juga merupakan penggantian arahan seperti backquote itu. 904 01:05:54,760 --> 01:06:05,280 Tetapi tidak seperti backquote, ia menggunakan gaya berubah-ubah ini. 905 01:06:05,280 --> 01:06:09,860 Terdapat beberapa ungkapan yang bermula dengan tanda dolar, 906 01:06:09,860 --> 01:06:16,070 dan semasa ini tidak pembolehubah, mereka meminjam penggunaan tanda dolar 907 01:06:16,070 --> 01:06:19,570 untuk menunjukkan satu ungkapan dari beberapa jenis. 908 01:06:19,570 --> 01:06:23,550 Yang boleh dikelilingi dengan kurungan atau kurungan atau kurungan berganda, 909 01:06:23,550 --> 01:06:26,320 yang mempunyai tujuan yang berbeza. 910 01:06:26,320 --> 01:06:29,500 Kurungan tunggal di sini adalah penggantian arahan sama seperti backquotes. 911 01:06:29,500 --> 01:06:32,720 Kurungan Double sebenarnya operasi aritmetik. 912 01:06:32,720 --> 01:06:35,380 Terdapat sintaks lain, operasi lain. 913 01:06:35,380 --> 01:06:41,520 Sintaks Backquote boleh didapati dalam Bash. 914 01:06:41,520 --> 01:06:46,780 Walau bagaimanapun, ini adalah lebih baik. Ia lebih mudah untuk membaca dan ia membolehkan bersarang. 915 01:06:46,780 --> 01:06:51,300 Anda boleh mempunyai di dalam (arahan) $ arahan lain, 916 01:06:51,300 --> 01:06:54,590 sesuatu seperti - 917 01:07:14,560 --> 01:07:18,210 Saya mendapat senarai di sana. 918 01:07:18,210 --> 01:07:21,670 Yang akan bekerja jika saya mempunyai backquote juga. 919 01:07:32,050 --> 01:07:38,470 Bagaimana jika saya mahu melakukan sesuatu seperti - 920 01:08:03,390 --> 01:08:06,430 Anda mungkin tidak akan benar-benar menggunakan arahan ini, 921 01:08:06,430 --> 01:08:14,160 tetapi ini penggantian arahan dalaman gema nama semua fail yang bermula dengan a, 922 01:08:14,160 --> 01:08:18,229 maka satu ini berjalan ls-l pada fail-fail, 923 01:08:18,229 --> 01:08:20,500 dan kemudian satu ini hanya gema output. 924 01:08:21,729 --> 01:08:24,479 Anda mungkin tidak akan melakukan ini, anda hanya akan melakukannya gema atau ls, 925 01:08:24,479 --> 01:08:29,450 tetapi ini menggambarkan bagaimana bersarang arahan berfungsi. 926 01:08:29,450 --> 01:08:34,380 Jadi hanya ciri lain di sini. 927 01:08:34,380 --> 01:08:37,450  Yang saya sebutkan ini lebih awal, bahawa apabila anda mempunyai jika pada C-shell, 928 01:08:37,450 --> 01:08:42,770 menaip kerja-kerja dalam cengkerang Bourne-jenis untuk mencari arahan. 929 01:08:48,939 --> 01:08:52,270 Arahan dalaman, hanya apa yang saya katakan di sana. 930 01:08:52,270 --> 01:08:54,640 Arahan adalah sebahagian daripada kulit, seperti di mana. 931 01:08:54,640 --> 01:08:59,880 Apabila shell melaksanakan arahan seperti ls, ia menempatkan ia melalui jalan yang, 932 01:08:59,880 --> 01:09:03,029 mendapati dalam beberapa direktori di suatu tempat, 933 01:09:03,029 --> 01:09:05,800 berbunyi bahawa ke dalam ingatan, mewujudkan shell baru, 934 01:09:05,800 --> 01:09:08,960 membaca arahan ls atau apa sahaja ke dalam shell 935 01:09:08,960 --> 01:09:11,450 di mana pembolehubah persekitaran sudah terletak, 936 01:09:11,450 --> 01:09:14,000 dan kemudian ia memindahkan pelaksanaan kepadanya. 937 01:09:14,000 --> 01:09:18,319 Terbina dalam arahan, kod untuk arahan yang berada di dalam shell, 938 01:09:18,319 --> 01:09:21,460 jadi shell hanya bermula melaksanakan sebahagian daripada kod sendiri. 939 01:09:21,460 --> 01:09:24,569 di mana arahan tersebut. Ia sebenarnya mendapat lebih cepat. 940 01:09:24,569 --> 01:09:28,380 Ia tidak perlu membaca apa-apa dalam ingatan; ia sudah dalam ingatan. 941 01:09:28,380 --> 01:09:32,460 Arahan dalaman sentiasa mengatasi arahan dengan nama yang sama. 942 01:09:32,460 --> 01:09:36,050 Arahan yang di direktori di jalan yang mungkin mempunyai nama yang sama, 943 01:09:36,050 --> 01:09:39,090 perintah di dalam direktori yang berbeza, files dalam direktori yang berbeza. 944 01:09:39,090 --> 01:09:41,740 Antara perkara yang berlaku sebelum ini di jalan yang adalah yang anda akan mendapat. 945 01:09:41,740 --> 01:09:43,770 Jika terdapat arahan terbina dalam, anda sentiasa mendapatkannya. 946 01:09:43,770 --> 01:09:47,890 Tidak ada cara untuk memberikan keutamaan yang lebih rendah daripada arahan di jalan. 947 01:09:47,890 --> 01:09:54,140 Jika anda ingin mendapatkan bahawa perintah jalan, anda boleh menaip pathname penuh. 948 01:09:54,140 --> 01:09:55,850 Jika terdapat arahan di mana di jalan di suatu tempat, 949 01:09:55,850 --> 01:09:58,440 anda boleh menaip / bin / di mana dan anda akan mendapatkannya. 950 01:09:58,440 --> 01:10:01,800 Jika anda tidak mahu untuk menaip keseluruhan pathname, anda boleh menentukan alias. 951 01:10:01,800 --> 01:10:06,310 Malah, jika anda memberikan alias nama yang sama seperti arahan terbina dalam, ia akan bekerja 952 01:10:06,310 --> 01:10:08,790 kerana definisi alias dinilai 953 01:10:08,790 --> 01:10:13,220 sebelum shell menentukan bahawa itu arahan terbina dalam yang perlu dilaksanakan. 954 01:10:18,810 --> 01:10:23,440 Maka ini mendapat sedikit lebih rumit dengan beberapa arahan di sini. 955 01:10:23,440 --> 01:10:29,880 Kes beberapa arahan sebenarnya arahan dalaman dan di jalan. 956 01:10:29,880 --> 01:10:34,140 Salah seorang daripada mereka adalah gema, arahan yang hanya menggunakan sedikit masa lalu di contoh-contoh. 957 01:10:34,140 --> 01:10:37,410 Echo adalah arahan di jalan dan ia dalam setiap shell. 958 01:10:37,410 --> 01:10:40,580 Mereka tidak semestinya semua berkelakuan dengan cara yang sama. 959 01:10:40,580 --> 01:10:42,970 Ia pada asalnya arahan sahaja di jalan. 960 01:10:42,970 --> 01:10:45,280 Ia dibina pada kepada cengkerang kemudian. 961 01:10:45,280 --> 01:10:48,080 Oleh kerana terdapat pilihan yang bergantung kepada alam sekitar 962 01:10:48,080 --> 01:10:52,970 dan pilihan baris arahan, arahan terbina dalam 963 01:10:52,970 --> 01:10:57,030 ditulis untuk berfungsi yang sama seperti arahan yang telah berada di jalan yang benar, 964 01:10:57,030 --> 01:10:59,670 ia tidak mungkin mereka akan telah ditulis dengan cara yang 965 01:10:59,670 --> 01:11:01,720 jika perintah itu tidak pun ditulis untuk jalan. 966 01:11:01,720 --> 01:11:06,180 Jadi ini mempunyai kesan sampingan. Sejarahnya mempunyai kesan di sini. 967 01:11:06,180 --> 01:11:08,380 Terdapat pilihan yang ada. 968 01:11:14,280 --> 01:11:23,060 Terdapat juga satu pilihan yang ditakrifkan oleh pembolehubah dalam tcsh yang dipanggil echo_style. 969 01:11:23,060 --> 01:11:27,700 Itulah salah satu pembolehubah yang boleh mengubah cara yang echo kerja-kerja. 970 01:11:27,700 --> 01:11:30,910 Terdapat kes-kes lain di mana anda boleh menetapkan pembolehubah 971 01:11:30,910 --> 01:11:36,290 yang mengubah cara bahawa operasi shell, termasuk arahan terbina dalam, kerja-kerja. 972 01:11:36,290 --> 01:11:38,130 Ia tidak akan menjejaskan apa-apa lagi 973 01:11:38,130 --> 01:11:40,640 sejak arahan lain tidak mempunyai akses kepada pembolehubah shell, 974 01:11:40,640 --> 01:11:42,090 hanya pembolehubah persekitaran. 975 01:11:42,090 --> 01:11:45,360 Tetapi operasi shell boleh membaca pembolehubah shell. 976 01:11:45,360 --> 01:11:50,710 Itu tidak akan bekerja untuk csh. Itu hanya tcsh. Itulah salah satu tambahan-tambahannya. 977 01:11:58,540 --> 01:12:04,620 Parsing mempunyai urutan apabila ia menilai metacharacters, 978 01:12:04,620 --> 01:12:08,140 apabila ia menilai pembolehubah, alias, rujukan sejarah. 979 01:12:08,140 --> 01:12:11,830 Ada aturan tertentu untuk projek ini. 980 01:12:11,830 --> 01:12:13,730 Jika ia perkara dalam urutan tertentu 981 01:12:13,730 --> 01:12:16,080 dan mendapat kepada sesuatu yang merupakan ungkapan yang amat 982 01:12:16,080 --> 01:12:20,650 yang telah dinilai, ia tidak akan menilainya semula. 983 01:12:20,650 --> 01:12:24,520 Jika ia mendapatnya, maka ia hanya akan menyampaikan watak-watak. 984 01:12:24,520 --> 01:12:29,920 Jadi, jika penilaian beberapa ungkapan seperti penggantian arahan 985 01:12:29,920 --> 01:12:36,850 atau boleh ubah atau apa sahaja yang menimbulkan ungkapan 986 01:12:36,850 --> 01:12:39,240 yang anda mahu dinilai, 987 01:12:39,240 --> 01:12:42,510 yang akan bekerja hanya jika penilaian yang berlaku kemudian dalam urutan itu. 988 01:12:42,510 --> 01:12:45,010 Saya berharap saya menjadi jelas di sana. 989 01:12:45,010 --> 01:12:50,460 Urutan parsing, satu operasi di C-shell, 990 01:12:50,460 --> 01:12:56,490 tidak sama untuk arahan dalaman kerana ia adalah untuk bukan arahan dalaman. 991 01:12:56,490 --> 01:12:58,890 Saya tidak pasti mengenai Bash sana. 992 01:12:58,890 --> 01:13:02,450 Sebagai contoh, jika pembolehubah shell menghasilkan rujukan sejarah, 993 01:13:02,450 --> 01:13:04,230 ia mungkin tidak akan kembali dalam sejarah. 994 01:13:04,230 --> 01:13:06,010 Ia hanya akan mendapat tanda seru. 995 01:13:06,010 --> 01:13:08,840 Malah, kita boleh mencuba yang keluar sekarang. 996 01:13:09,720 --> 01:13:18,240 menetapkan = dan kami akan mempunyai untuk meletakkan ini di sana. 997 01:13:30,690 --> 01:13:34,580 Oh, tunggu. Maaf. Saya melakukan ini dalam Bash. Yang saya mahu lakukan di sini. 998 01:13:53,470 --> 01:13:56,080 Lihat, jadi ia tidak menilai bahawa rujukan sejarah 999 01:13:56,080 --> 01:14:00,520 kerana ia sudah melalui titik menilai ungkapan sejarah 1000 01:14:00,520 --> 01:14:02,720 apabila ia dinilai pembolehubah. 1001 01:14:02,720 --> 01:14:05,550 Jadi, itu 1 kesan parsing. 1002 01:14:05,550 --> 01:14:08,760 Dan sekali lagi, arahan dalaman tidak dilakukan dengan cara yang sama. 1003 01:14:08,760 --> 01:14:11,230 Baiklah. Mari kita pergi kepada yang seterusnya di sini. 1004 01:14:11,230 --> 01:14:16,060 Ini adalah bertujuan untuk menjadi 1 line, tetapi ia menjadikannya lebih mudah untuk dibaca. 1005 01:14:19,130 --> 01:14:21,530 Apakah yang lakukan? 1006 01:14:21,530 --> 01:14:28,640 Anda masih ingat bahawa kita boleh menilai tanda bintang sebagai wildcard nama fail, 1007 01:14:28,640 --> 01:14:33,890 dan ada wildcard nama fail lain seperti tanda tanya dan ungkapan kurungan. 1008 01:14:33,890 --> 01:14:39,000 Itu jenis penilaian dipanggil globbing. 1009 01:14:39,000 --> 01:14:46,290 ditetapkan noglob pada awal perintah ini mengatakan tidak melakukannya. 1010 01:14:46,290 --> 01:14:53,370 noglob belum berikat berkata kembali untuk melakukan itu. 1011 01:14:53,370 --> 01:14:56,440 Perhatikan bahawa set kelompok tidak akan mempunyai kesan yang. 1012 01:14:56,440 --> 01:15:00,800 Dalam bahasa biasa, tetapkan kelompok atau noglob belum berikat akan kelihatan setara, 1013 01:15:00,800 --> 01:15:03,290 tetapi di sini ia tidak. Ia noglob belum berikat. 1014 01:15:05,120 --> 01:15:07,910 Sekarang tset. tset berdiri set terminal. 1015 01:15:07,910 --> 01:15:11,840 Ia tidak digunakan yang sering sekarang, tetapi sebelum sistem windowing menjadi tersedia 1016 01:15:11,840 --> 01:15:15,760 dan anda mempunyai terminal tunggal, anda mungkin perlu menentukan jenis. 1017 01:15:15,760 --> 01:15:18,700 Dan jika ada sesuatu yang akan datang ke atas Ethernet atau daripada rangkaian, 1018 01:15:18,700 --> 01:15:21,120 anda mungkin mahu untuk mengatakan ia vt100 a. 1019 01:15:21,120 --> 01:15:26,630 VT100 adalah jenis standard dalam perniagaan terminal. Ia datang dari terminal Disember ini. 1020 01:15:26,630 --> 01:15:35,270 Jika anda hanya melakukan dialup - melihat bahawa? Ini kembali cara, kan? 1021 01:15:35,270 --> 01:15:39,520 Jadi, jika kita hanya tset di sini, 1022 01:15:39,520 --> 01:15:45,250 jika saya hanya melakukan tset, ia menetapkan semula terminal saya, tetapi anda tidak melihat apa-apa. 1023 01:15:45,250 --> 01:15:47,340 Ia tidak benar-benar mengubah apa-apa. 1024 01:15:47,340 --> 01:15:48,620 -S 1025 01:15:49,900 --> 01:15:51,480 Okay. 1026 01:15:51,480 --> 01:15:53,350 JANGKA setenv xterm-warna. 1027 01:15:53,350 --> 01:15:57,080 Kita sudah tahu bahawa istilah itu ditetapkan dengan cara itu, supaya tidak berubah. 1028 01:15:57,080 --> 01:15:58,860 Itulah cara kita akan mahu melakukannya. 1029 01:15:58,860 --> 01:16:07,080 Tetapi notis bahawa perintah, tset-s, output hanya ini arahan ini. Ia tidak menjalankannya. 1030 01:16:07,080 --> 01:16:09,770 Ia tidak menjalankan perintah ini, yang mengeluarkannya. 1031 01:16:09,770 --> 01:16:13,650 Jadi ini adalah bertujuan untuk menghasilkan arahan yang kemudiannya akan dijalankan. 1032 01:16:13,650 --> 01:16:16,360 Anda ingat arahan dalam fail yang saya hanya menunjukkan anda mempunyai Q di dalamnya. 1033 01:16:16,360 --> 01:16:18,910 Jadi mari kita buat itu. 1034 01:16:18,910 --> 01:16:23,750 Q menyekat beberapa output, tetapi itu tidak kira di sini, seperti yang anda lihat. 1035 01:16:23,750 --> 01:16:27,980 Saya hanya melakukan yang menunjukkan bahawa ia tidak perkara itu. 1036 01:16:27,980 --> 01:16:31,870 Ini adalah backquote sintaksis. 1037 01:16:31,870 --> 01:16:35,340 Nota backquote di sini, backquote sini. 1038 01:16:35,340 --> 01:16:37,680 Saya meninggalkan perkara-perkara ini di sini. 1039 01:16:37,680 --> 01:16:39,570 Ini adalah kes memberitahu ia apa yang perlu dilakukan 1040 01:16:39,570 --> 01:16:42,050 dalam kes jenis tertentu terminal - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, rangkaian, dialup, golongan berada. 1042 01:16:45,400 --> 01:16:48,050 Tidak kira di sini kerana kita tidak benar-benar melakukan apa-apa perkara-perkara ini. 1043 01:16:48,050 --> 01:16:49,720 Saya hanya menggambarkan arahan. 1044 01:16:49,720 --> 01:16:55,170 Jika saya melakukan ini dengan backquote yang, apa yang saya akan dapat? 1045 01:16:55,170 --> 01:17:00,210 Juga notis di sini bahawa ini termasuk noglob set dan noglob yang tanpa ditetapkan, 1046 01:17:00,210 --> 01:17:02,630 Maka orang-orang kini diperlukan dalam takrif. 1047 01:17:02,630 --> 01:17:05,380 Yang tidak selalunya benar, tetapi sekarang mereka termasuk dalam arahan ini. 1048 01:17:05,380 --> 01:17:08,890 Tetapi mari kita lihat apa yang berlaku jika saya berbuat demikian 1049 01:17:08,890 --> 01:17:12,570 dan pergi ke permulaan baris dengan Kawalan A dan saya berbuat demikian. 1050 01:17:14,380 --> 01:17:18,040 Okay, ditetapkan: Arahan tidak dijumpai. Itu jenis ganjil, bukan? 1051 01:17:18,040 --> 01:17:20,570 set adalah arahan yang terkenal. Ia adalah sebahagian daripada cengkerang. 1052 01:17:20,570 --> 01:17:24,040 ditetapkan: Arahan tidak dijumpai? Mengapa? 1053 01:17:24,040 --> 01:17:26,790 Hmm. Nah, mari kita berfikir tentang perkara ini. 1054 01:17:26,790 --> 01:17:31,100 Ia menjalankan penggantian arahan backquote, 1055 01:17:31,100 --> 01:17:37,430 dan yang berlaku pada bahagian tertentu urutan menghuraikan arahan. 1056 01:17:37,430 --> 01:17:40,360 set adalah arahan terbina dalam. 1057 01:17:40,360 --> 01:17:43,900 Jadi dengan masa yang dilakukan yang penggantian perintah, 1058 01:17:43,900 --> 01:17:48,280 ia sudah mendapat melalui titik mengenal pasti arahan dalaman. 1059 01:17:48,280 --> 01:17:51,900 Jadi ia merawat ditetapkan sebagai olah ia suatu perintah di jalan. 1060 01:17:51,900 --> 01:17:55,440 Tidak perlu dikatakan, ia tidak merasa dan anda mendapat ralat. 1061 01:17:55,440 --> 01:17:59,300 Juga. Ada satu contoh urutan parsing. 1062 01:17:59,300 --> 01:18:01,460 Dan apa yang kita lakukan itu? 1063 01:18:01,460 --> 01:18:04,800 Notis arahan ini sangat menarik di sini, eval. 1064 01:18:04,800 --> 01:18:06,530 Saya tertanya-tanya apa yang tidak. 1065 01:18:06,530 --> 01:18:08,760 Jika anda melihat manual - dan mari kita hanya berbuat demikian 1066 01:18:08,760 --> 01:18:12,000 untuk menunjukkan bagaimana mengelirukan panduan tersebut adalah - 1067 01:18:12,000 --> 01:18:19,400 tcsh lelaki, manual keliru, mencari perkara di sini tidak mudah sama ada. 1068 01:18:19,400 --> 01:18:31,850 Di sini kita pergi, eval Arg, supaya kita boleh mempunyai 1 atau lebih hujah-hujah 1069 01:18:31,850 --> 01:18:34,090 dan ada senarai benda yang ada. 1070 01:18:34,090 --> 01:18:37,730 Merawat hujah-hujah sebagai input kepada shell 1071 01:18:37,730 --> 01:18:43,600 dan melaksanakan perintah-perintah yang menyebabkan konteks shell semasa. 1072 01:18:43,600 --> 01:18:46,900 Ini biasanya digunakan untuk melaksanakan arahan yang dihasilkan sebagai hasil daripada arahan 1073 01:18:46,900 --> 01:18:51,310 atau penggantian pembolehubah kerana parsing berlaku sebelum penggantian ini. 1074 01:18:51,310 --> 01:18:52,580 Sangat baik. 1075 01:18:52,580 --> 01:18:54,740 Dan di sini mereka juga merujuk kepada arahan tset bagi penggunaan sampel 1076 01:18:54,740 --> 01:18:57,700 seperti yang saya hanya menunjukkan anda. 1077 01:18:57,700 --> 01:19:00,440 Sekarang saya perlu mendapatkan tingkap belakang ke tempat yang berguna. 1078 01:19:03,150 --> 01:19:07,800 Mari kita di sini dan kita akan melihat eval yang digunakan sebelum itu. 1079 01:19:07,800 --> 01:19:14,010 Jadi mari kita lihat apa yang berlaku jika kita meletakkan - di sini kita pergi dengan anak panah untuk arahan yang 1080 01:19:14,010 --> 01:19:20,940 dan Kawalan A ke permulaan, eval. 1081 01:19:20,940 --> 01:19:22,850 Okay, jadi ia berfungsi. 1082 01:19:22,850 --> 01:19:26,440 Apabila anda melakukan eval, ia mengambil apa yang datang selepas itu dan menjadikannya perintah. 1083 01:19:26,440 --> 01:19:29,460 Ini membolehkan anda untuk dasarnya menghurai dua kali. 1084 01:19:29,460 --> 01:19:33,710 Seksyen di sini berjalan arahan ini di dalam backquotes, 1085 01:19:33,710 --> 01:19:36,210 mendapat output. 1086 01:19:36,210 --> 01:19:42,850 Output sepatutnya dijalankan seperti yang arahan di sini seperti ini 1087 01:19:42,850 --> 01:19:45,890 pada satu ini dan yang satu ini. 1088 01:19:45,890 --> 01:19:50,100 Maka orang-orang arahan kini di sini di urutan ini, 1089 01:19:50,100 --> 01:19:58,950 tetapi ini arahan dalaman dan ia tidak boleh mendapatkan mereka dengan segera. 1090 01:19:58,950 --> 01:20:06,440 Jadi kita pergi ke eval, eval picks bahawa sehingga, bermula segala-galanya sekali lagi, dan ia berfungsi. 1091 01:20:06,440 --> 01:20:18,460 Contoh kedua-backquoting, eval, parsing, akibat parsing, 1092 01:20:18,460 --> 01:20:21,910 dan arahan yang mungkin penggunaan yang sangat sedikit kepada anda pada masa kini. 1093 01:20:21,910 --> 01:20:25,540 Okay. Baiklah, umask. 1094 01:20:25,540 --> 01:20:32,160 Mari kita lihat arahan ini di sini, umask 022. Saya tertanya-tanya apa yang tidak. 1095 01:20:32,160 --> 01:20:38,420 Mari kita menaip umask dengan apa-apa selepas itu. 22. Okay. 1096 01:20:38,420 --> 01:20:44,350 022 dan melakukannya sekali lagi. 1097 01:20:44,350 --> 01:20:48,580 Seperti yang anda mungkin telah meneka, umask tanpa hujah memberitahu anda topeng semasa; 1098 01:20:48,580 --> 01:20:51,760 umask dengan hujah-hujah yang menjadikannya itu, tetapi itu yang saya sudah mempunyai. 1099 01:20:51,760 --> 01:20:53,800 Apakah 022 bermakna? 1100 01:21:01,650 --> 01:21:07,080 Ini adalah di sini perlindungan untuk fail. 1101 01:21:07,080 --> 01:21:11,440 Mereka menentukan yang dibenarkan untuk membaca atau menulis atau melaksanakan fail. 1102 01:21:11,440 --> 01:21:16,560 Perlindungan juga dikenali sebagai kebenaran. 1103 01:21:16,560 --> 01:21:21,390 R bermaksud membaca, w untuk menulis, 1104 01:21:21,390 --> 01:21:25,500 dan x, yang tidak hadir di sana, bermaksud melaksanakan. 1105 01:21:25,500 --> 01:21:27,260 Terdapat 3 kategori di sana. 1106 01:21:27,260 --> 01:21:33,540 3 elemen terakhir adalah dalam kategori pengguna. Mereka memohon kepada saya, pengguna. 1107 01:21:33,540 --> 01:21:36,870 Ini 3 di sini memohon kepada kumpulan. 1108 01:21:36,870 --> 01:21:41,590 Fail itu adalah milik 1 kumpulan, pengguna boleh dimiliki beberapa kumpulan, 1109 01:21:41,590 --> 01:21:47,150 tetapi jika pengguna adalah dalam kumpulan yang fail ini merdeka, 1110 01:21:47,150 --> 01:21:51,090 maka perlindungan ini akan terpakai baginya jika dia tidak pengguna. 1111 01:21:51,090 --> 01:21:54,230 Dan yang ini adalah orang lain. 1112 01:21:55,540 --> 01:21:57,690 Kategori-kategori ini adalah saling eksklusif. 1113 01:21:57,690 --> 01:21:59,750 Perlindungan pengguna terpakai baginya, 1114 01:21:59,750 --> 01:22:03,780 perlindungan kumpulan terpakai bagi anggota kumpulan yang lain daripada pengguna, 1115 01:22:03,780 --> 01:22:08,110 dan perlindungan yang lain hanya terpakai kepada orang-orang selain daripada pengguna dan ahli-ahli kumpulan. 1116 01:22:08,110 --> 01:22:12,320 Jika ada r atau aw atau x, ia bermakna bahawa perlindungan diberikan. 1117 01:22:12,320 --> 01:22:13,950 Jika ada tanda penghubung, ia bermakna ia tidak. 1118 01:22:13,950 --> 01:22:16,690 Terdapat sebenarnya adalah perkara-perkara lain yang boleh diletakkan di sini selain dari, 1119 01:22:16,690 --> 01:22:18,350 yang saya tidak akan masuk ke dalam sekarang. 1120 01:22:18,350 --> 01:22:24,450 Umask Polis mentakrifkan lalai untuk fail yang anda buat. 1121 01:22:24,450 --> 01:22:28,580 Dan sebagai topeng, pada dasarnya ia berkata bit bahawa anda tidak ditetapkan. 1122 01:22:28,580 --> 01:22:30,450 Bagaimana ini menjadi bit? 1123 01:22:30,450 --> 01:22:33,240 Jika anda memikirkan setiap sebagai nombor perlapanan, 1124 01:22:33,240 --> 01:22:42,120 ini adalah sedikit 1s, ini adalah 2s, ini adalah 4s. 1125 01:22:42,120 --> 01:22:45,840 Jadi 0 melalui 7 1126 01:22:45,840 --> 01:22:51,770 akan menerangkan apa gabungan r ini, w, dan x ini anda ada untuk ini 3 1127 01:22:51,770 --> 01:22:53,710 dan kemudian nombor yang sama untuk ini dan kemudian untuk ini. 1128 01:22:53,710 --> 01:23:12,030 Jadi 022 bermakna 0 untuk yang lain, 2 bagi kumpulan, 2 untuk pengguna. 1129 01:23:12,030 --> 01:23:15,870 Tetapi ini adalah topeng. Topeng itu adalah apa yang anda tidak mempunyai. 1130 01:23:19,380 --> 01:23:20,610 Saya minta maaf. Saya hanya memberikan anda perkara-perkara dalam perintah itu salah. 1131 01:23:20,610 --> 01:23:25,620 Ia yang pertama 3. Ini 3 adalah pengguna, ini 3 adalah kumpulan, ini 3 adalah lain. 1132 01:23:25,620 --> 01:23:27,970 Maaf saya berikan anda ini dalam perintah itu salah. 1133 01:23:27,970 --> 01:23:31,910 0, yang merupakan pertama daripada mereka, tidak memaparkan nilai, 1134 01:23:31,910 --> 01:23:35,430 tetapi jika satu nombor tidak ada, ia adalah 0. 1135 01:23:35,430 --> 01:23:38,370 Ini bermakna semua 3 daripada dibenarkan. 1136 01:23:38,370 --> 01:23:41,550 Perhatikan bahawa dalam satu tertentu x adalah tidak dibenarkan. 1137 01:23:41,550 --> 01:23:44,090 Sebabnya ialah shell mampu menentukan 1138 01:23:44,090 --> 01:23:46,260 sama ada fail yang perlu dilaksanakan atau tidak. 1139 01:23:46,260 --> 01:23:49,800 Oleh kerana ini bukan fail boleh laku, ia tidak menetapkan x. 1140 01:23:49,800 --> 01:23:54,000 2 cara yang menulis kebenaran, kategori yang kedua di sini, 1141 01:23:54,000 --> 01:23:56,500 yang di tengah, ditolak. 1142 01:23:56,500 --> 01:23:58,500 Jadi sekali lagi, ini adalah perkara-perkara yang ia dinafikan. 1143 01:23:58,500 --> 01:24:02,080 Nah, x dibenarkan tetapi ia bukan di sini kerana ia bukan boleh laku 1144 01:24:02,080 --> 01:24:04,260 dan begitu juga bagi orang lain. 1145 01:24:04,260 --> 01:24:08,880 Jadi itu adalah satu umask biasa. 1146 01:24:08,880 --> 01:24:14,630 Satu lagi yang biasa ialah 700 - memberi diri anda segala-galanya dan tidak ada orang lain apa-apa. 1147 01:24:14,630 --> 01:24:17,040 Dan ada kemungkinan lain. 1148 01:24:21,340 --> 01:24:27,110 Saya akan kembali ke itu. Menggunakan sejarah yang saya boleh mencari kembali untuk itu, LWH ke sana. 1149 01:24:27,110 --> 01:24:30,210 Okay. Jadi di sini, ini adalah kerang. 1150 01:24:30,210 --> 01:24:36,020 Bash, pemilik yang akaun sistem, boleh melakukan segala-galanya. 1151 01:24:36,020 --> 01:24:41,210 Kumpulan dan semua orang boleh membacanya atau melaksanakan tetapi tidak menulis. 1152 01:24:41,210 --> 01:24:44,570 Yang ini juga tidak membenarkan pemilik untuk menulis kepadanya. 1153 01:24:44,570 --> 01:24:46,460 Jika pemilik mahu menulis kepadanya, akaun sistem, 1154 01:24:46,460 --> 01:24:48,020 beliau akan mempunyai untuk menukar perlindungan pertama. 1155 01:24:48,020 --> 01:24:53,940 Tetapi sekali lagi, umask menetapkan lalai dengan pelekat itu, 1156 01:24:53,940 --> 01:24:57,160 dengan menunjukkan bit yang tidak akan ditetapkan. 1157 01:24:57,160 --> 01:25:04,380 Ini biasanya dalam salah satu fail pemula anda, yang merupakan. Cshrc untuk C-shell 1158 01:25:04,380 --> 01:25:07,500 atau. profil bagi kerang Bourne-jenis. 1159 01:25:07,500 --> 01:25:12,520 Ia boleh berada di tempat lain juga jika terdapat fail pemula lain pada sistem. 1160 01:25:12,520 --> 01:25:14,610 Bagaimanapun, itu umask. 1161 01:25:14,610 --> 01:25:18,180 Ada jenis sesuatu yang ganjil di sini, 1162 01:25:18,180 --> 01:25:22,800 dan itu adalah, mengapa ada arahan tunggal untuk ini? 1163 01:25:22,800 --> 01:25:28,690 Jika saya menulis ini, saya akan membuat ia satu pemboleh ubah, umask = beberapa nilai. 1164 01:25:28,690 --> 01:25:31,100 Kenapa ada arahan keseluruhan hanya untuk tujuan ini? 1165 01:25:31,100 --> 01:25:34,560 Sebabnya ialah ini hanya kembali kepada asal-usul Unix. 1166 01:25:34,560 --> 01:25:41,050 Unix adalah hanya beberapa projek pengaturcaraan di Bell Labs pada awal tahun 1970. 1167 01:25:41,050 --> 01:25:42,610 Orang hanya mendapat bersama-sama untuk program. 1168 01:25:42,610 --> 01:25:45,290 Mereka tidak pernah dimaksudkan untuk menjadi satu sistem operasi di seluruh dunia. 1169 01:25:45,290 --> 01:25:47,250 Orang yang berlainan menulis bahagian yang berlainan tanpa berfikir banyak 1170 01:25:47,250 --> 01:25:49,790 bagaimana mereka akan digunakan - bukan lengkap. 1171 01:25:49,790 --> 01:25:53,290 Dan ia datang bersama-sama seperti itu, dan ia masih seperti itu dalam beberapa hal. 1172 01:25:53,290 --> 01:25:57,930 Jadi yang mencerminkan sejarah, dan masih ada ini tidak konsisten dan unsur-unsur ganjil itu. 1173 01:25:57,930 --> 01:26:00,750 Okay. Satu seterusnya di sini. 1174 01:26:08,170 --> 01:26:11,000 Seperti yang saya tulis sebelum ini, C-shell tidak benar-benar digunakan sangat banyak untuk pengaturcaraan, 1175 01:26:11,000 --> 01:26:12,420 walaupun ia boleh. 1176 01:26:12,420 --> 01:26:15,080 Ia melaksanakan lebih perlahan, sekali lagi pertentangan di antara penggunaan interaktif, 1177 01:26:15,080 --> 01:26:17,820 yang mempunyai lebih pemprosesan yang terlibat daripada kelajuan, 1178 01:26:17,820 --> 01:26:20,710 yang boleh melakukan tanpa pemprosesan. 1179 01:26:20,710 --> 01:26:28,320 Ciri-ciri tambahan ditambah kepada shell Bourne oleh Korn dan Bourne-lagi cengkerang 1180 01:26:28,320 --> 01:26:32,120 seolah-olah tidak melambatkan mereka, dan saya tidak tahu mengapa yang. 1181 01:26:32,120 --> 01:26:36,310 Ia mungkin pengaturcaraan yang lebih baik, tetapi saya tidak dalam kedudukan untuk tahu. 1182 01:26:36,310 --> 01:26:40,420 Mempercepatkan sini sebenarnya tidak seperti masalah besar, walaupun ia disebut. 1183 01:26:40,420 --> 01:26:43,690 Sebabnya ialah skrip shell sebenarnya mendapat agak cepat. 1184 01:26:43,690 --> 01:26:46,450 Jika terdapat banyak perintah seperti dalam program calculational, 1185 01:26:46,450 --> 01:26:49,110 anda mungkin tidak akan melakukannya dalam skrip shell. 1186 01:26:49,110 --> 01:26:51,450 Operasi di sana adalah agak mudah dan mudah. 1187 01:26:51,450 --> 01:26:53,960 Orang-orang yang aku alami yang terlalu perlahan 1188 01:26:53,960 --> 01:26:57,110 melibatkan aplikasi berulang arahan perlahan. 1189 01:26:57,110 --> 01:27:00,480 Terdahulu saya sebutkan editor aliran sed. Perintah yang tersebut ialah perlahan. 1190 01:27:00,480 --> 01:27:03,760 Jika anda melaksanakan banyak kali sed, anda akan mendapat skrip yang perlahan, tetapi ia bukan shell itulah perlahan. 1191 01:27:03,760 --> 01:27:07,920 Berjalan ia di Bourne shell tidak akan banyak lebih cepat daripada berjalan dalam C-shell, 1192 01:27:07,920 --> 01:27:10,070 walaupun ada mungkin beberapa kelebihan di sana. 1193 01:27:10,070 --> 01:27:12,760 Keupayaan pengaturcaraan tambahan, di sisi lain, 1194 01:27:12,760 --> 01:27:17,920 sebab-sebab penting mengapa anda akan menggunakan kerang Bourne-jenis. 1195 01:27:17,920 --> 01:27:21,390 C-shell mempunyai ciri-ciri ganjil kepadanya - 1196 01:27:21,390 --> 01:27:25,250 hakikat bahawa anda tidak tahu jika pembolehubah adalah pembolehubah shell atau pembolehubah persekitaran. 1197 01:27:25,250 --> 01:27:27,440 Ia boleh menjadi sangat mengelirukan. 1198 01:27:27,440 --> 01:27:32,170 Ia tidak begitu mudah untuk menulis 1199 01:27:32,170 --> 01:27:35,930 hanya berdasarkan kepada pengalaman anda pengaturcaraan dalam bahasa lain. 1200 01:27:35,930 --> 01:27:41,350 Saya fikir anda mungkin mendapati kerang Bourne-jenis yang lebih konsisten dengan pengalaman anda. 1201 01:27:43,730 --> 01:27:49,270 Skript, walaupun, boleh beribu-ribu garis-garis panjang. 1202 01:27:49,270 --> 01:27:52,450 Mereka yang saya lihat adalah digunakan untuk menampal sistem operasi. 1203 01:27:52,450 --> 01:27:55,450 Mereka boleh melaksanakan dengan perlahan-lahan, tetapi anda tidak lari mereka sangat kerap. 1204 01:27:55,450 --> 01:27:57,180 Ia hanya apabila anda lakukan penampalan, 1205 01:27:57,180 --> 01:27:59,450 dan ia hanya pengurus sistem yang melakukan perkara-perkara, 1206 01:27:59,450 --> 01:28:01,840 jadi ia tidak benar-benar banyak isu. 1207 01:28:01,840 --> 01:28:06,980 Mereka yang beratus-ratus barisan panjang sebenarnya melaksanakan agak cepat. 1208 01:28:06,980 --> 01:28:10,540 Menyebut ini di sini, apa yang adalah mereka penambahbaikan? 1209 01:28:10,540 --> 01:28:13,170 Saya telah disebutkan sebahagian kecil dari mereka - tatasusunan, pengiraan, 1210 01:28:13,170 --> 01:28:20,540 yang () ungkapan untuk pengiraan dalam Bash shell, $ 1211 01:28:20,540 --> 01:28:23,050 jenis lain penggantian arahan. 1212 01:28:23,050 --> 01:28:25,360 Terdapat pelbagai jenis arahan ujian 1213 01:28:25,360 --> 01:28:29,350 di mana anda boleh melakukan ujian bersyarat kepada kewujudan fail atau perkara-perkara lain. 1214 01:28:29,350 --> 01:28:34,790 Terakhir di sini, arahan ini di sini. 1215 01:28:34,790 --> 01:28:38,480 Apakah ini lakukan, dan mengapa orang akan menggunakannya? 1216 01:28:51,170 --> 01:28:52,990 variablename printenv. 1217 01:28:52,990 --> 01:28:56,130 Kita tahu apa yang printenv tidak. Ia memberitahu kita nilai pembolehubah. 1218 01:28:56,130 --> 01:29:00,850 Dan variablename printenv tidak akan memberitahu kita sangat banyak kerana tidak ada pembolehubah tersebut. 1219 01:29:03,550 --> 01:29:05,120 Kosong. 1220 01:29:05,120 --> 01:29:08,440 Tetapi mari kita memberikan sesuatu yang bermakna. 1221 01:29:13,420 --> 01:29:16,800 Itu bukan sana sama ada. Okay. Saya rasa saya tidak pernah ditakrifkan itu. 1222 01:29:16,800 --> 01:29:18,020 Mari kita lihat persekitaran saya. 1223 01:29:18,020 --> 01:29:20,900 Ini merupakan satu lagi arahan mana anda boleh memeriksa persekitaran anda. 1224 01:29:20,900 --> 01:29:24,470 Terdapat EDITOR tua yang baik, yang kita lihat sebelum ini. 1225 01:29:42,360 --> 01:29:44,120 Apakah yang lakukan? 1226 01:29:44,120 --> 01:29:48,050 Di sini kita mempunyai ungkapan backquote. 1227 01:29:48,050 --> 01:29:50,370 Ingat ini adalah C-shell. 1228 01:29:50,370 --> 01:29:54,850 Jadi EDITOR printenv akan memberikan kita nilai EDITOR. Ia vi. 1229 01:29:54,850 --> 01:29:59,790 Dan kemudian ia akan menetapkan nilai tersebut kepada pembolehubah, arahan yang ditetapkan. 1230 01:29:59,790 --> 01:30:02,860 Jadi sekarang jika saya lakukan echo $ a, saya mendapat vi. 1231 01:30:02,860 --> 01:30:05,850 Yang tidak kelihatan sangat berguna. 1232 01:30:05,850 --> 01:30:08,080 Walau bagaimanapun, ia sebenarnya tidak mempunyai tujuan. 1233 01:30:08,080 --> 01:30:12,260 Oleh kerana kita tidak tahu sama ada pembolehubah adalah pembolehubah shell atau pembolehubah persekitaran 1234 01:30:12,260 --> 01:30:16,280 dengan menggunakan tanda dollar penilaian sintaks, kita boleh menggunakan printenv 1235 01:30:16,280 --> 01:30:19,460 memastikan bahawa ia adalah satu pembolehubah persekitaran. 1236 01:30:19,460 --> 01:30:22,550 Jadi, jika terdapat shell editor berubah-ubah, ini tidak akan mendapat ia. 1237 01:30:22,550 --> 01:30:25,640 Ini hanya dengan pembolehubah alam sekitar. 1238 01:30:25,640 --> 01:30:28,370 Jika terdapat pembolehubah shell dan saya mahu nilai, 1239 01:30:28,370 --> 01:30:29,980 Saya perlu mencari cara lain untuk melakukannya. 1240 01:30:29,980 --> 01:30:33,530 Salah satu cara untuk berbuat demikian akan menjadi dengan melakukan set dan paip. 1241 01:30:33,530 --> 01:30:36,130 Ini adalah salah satu metacharacters, watak-watak khas. 1242 01:30:36,130 --> 01:30:38,370 Ia menghantar output bersedia untuk sesuatu yang lain. 1243 01:30:38,370 --> 01:30:40,650 Mari kita lihat apa yang kita dapati di sana. 1244 01:30:40,650 --> 01:30:49,340 Tiada apa-apa. Okay. Mari kita melihat apa yang di sana semua bersama-sama. 1245 01:30:49,340 --> 01:30:53,580 Ia adalah echo_style, yang saya nyatakan sebelum ini. Baiklah, mari kita buat itu. 1246 01:31:02,460 --> 01:31:06,230 Ingat saya nyatakan sebelum ini, echo_style 1247 01:31:06,230 --> 01:31:08,410 menentukan cara arahan echo akan berjalan. 1248 01:31:08,410 --> 01:31:10,940 BSD bermaksud Pengagihan Berkeley Standard. 1249 01:31:10,940 --> 01:31:13,200 Ini adalah Berkeley Unix dari tahun 1970-an. 1250 01:31:13,200 --> 01:31:16,630 Itulah salah satu cara yang echo boleh berjalan. 1251 01:31:16,630 --> 01:31:22,310 Menetapkan echo_style kepada nilai yang di TC-shell akan menyebabkan gema berkelakuan dengan cara itu. 1252 01:31:22,310 --> 01:31:27,670 Jadi tidak ditetapkan itu, tetapi menetapkan hanya mendapat pembolehubah shell. 1253 01:31:27,670 --> 01:31:35,430 Ia tidak akan mencari EDITOR, yang tidak berubah-ubah shell. 1254 01:31:36,870 --> 01:31:38,050 Tiada apa-apa. 1255 01:31:38,050 --> 01:31:39,660 Jadi, itu salah satu cara untuk membezakan mereka. 1256 01:31:39,660 --> 01:31:42,000 Tetapi hakikat bahawa anda perlu melalui beberapa arahan pelik seperti itu 1257 01:31:42,000 --> 01:31:45,500 untuk membezakan antara pembolehubah shell atau pembolehubah persekitaran 1258 01:31:45,500 --> 01:31:49,970 menunjukkan jenis sifat praktikal C-shell untuk tujuan-tujuan. 1259 01:31:52,290 --> 01:31:57,960 Dan sekarang, lepas dan mungkin kurangnya, ini adalah halaman manusia. 1260 01:31:57,960 --> 01:32:03,190 Orang-orang yang anda tahu, lelaki itu adalah pendek arahan untuk manual. 1261 01:32:03,190 --> 01:32:08,610 Halaman lelaki untuk cengkerang adalah sukar untuk dibaca. Mereka sangat panjang. 1262 01:32:08,610 --> 01:32:14,060 Mereka yang dianjurkan dengan cara yang boleh membuat ia sukar untuk mencari apa yang anda cari. 1263 01:32:14,060 --> 01:32:15,980 Jadi, jika anda mencari sesuatu dengan maksud, 1264 01:32:15,980 --> 01:32:20,050 anda mungkin tidak tahu jika maksud itu adalah pembolehubah shell atau sesuatu yang lain, 1265 01:32:20,050 --> 01:32:21,630 jadi anda mungkin tidak tahu di mana untuk mencari ia. 1266 01:32:21,630 --> 01:32:25,030 Anda boleh mencari pelbagai tali, tetapi tali sering berulang. 1267 01:32:25,030 --> 01:32:27,640 Jadi ia biasanya sukar untuk dibaca. 1268 01:32:27,640 --> 01:32:33,810 Kami hanya melihat halaman TC-shell seorang lelaki sedikit sebelum untuk mencari arahan eval itu. 1269 01:32:33,810 --> 01:32:36,610 Beberapa perkara yang lebih pantas. 1270 01:32:36,610 --> 01:32:38,860 Satu pendekatan adalah untuk mencari rentetan. 1271 01:32:38,860 --> 01:32:40,360 Anda boleh menggunakan alat kelui itu. 1272 01:32:40,360 --> 01:32:49,080 Pager mempunyai palang untuk mencari arahan atau rentetan di dalam operasi alat kelui. 1273 01:32:49,080 --> 01:32:52,830 Man secara lalai akan menggunakan alat kelui, sama ada lebih atau kurang. 1274 01:32:52,830 --> 01:32:56,560 Saya tidak tahu jika anda biasa dengan mereka, tetapi mereka boleh menunjukkan fail sedikit demi sedikit. 1275 01:32:56,560 --> 01:33:00,550 Saya telah menggunakan KURANG untuk memaparkan fail-fail tertentu yang kami ada di sini. 1276 01:33:00,550 --> 01:33:03,300 Anda boleh mencari di dalam sana. 1277 01:33:03,300 --> 01:33:04,880 Anda boleh cuba menggunakan tali carian yang berbeza. 1278 01:33:04,880 --> 01:33:08,420 Juga laman lelaki dalam sistem operasi yang berbeza mungkin sama. 1279 01:33:08,420 --> 01:33:11,130 Mereka boleh menjadi laman yang berasingan untuk csh dan tcsh. 1280 01:33:11,130 --> 01:33:14,500 Mereka tidak berada di Mac, tetapi mereka mungkin jika mereka adalah arahan yang berasingan. 1281 01:33:14,500 --> 01:33:19,000 Jika sh tidak benar-benar memanggil Bash, terdapat mungkin akan menjadi halaman lelaki yang berasingan. 1282 01:33:19,000 --> 01:33:25,820 Sesetengah sistem mempunyai halaman lelaki berasingan hanya untuk C-shell arahan dalaman. 1283 01:33:25,820 --> 01:33:30,250 Kadang-kadang jika anda mahu membaca perihal arahan terbina dalam 1284 01:33:30,250 --> 01:33:35,350 yang juga dalam jalan yang benar, seperti gema, anda perlu membaca halaman lelaki itu pada bahawa perintah di echo 1285 01:33:35,350 --> 01:33:37,610 untuk menentukan bagaimana ia akan bekerja sebagai arahan terbina dalam 1286 01:33:37,610 --> 01:33:39,760 walaupun anda tidak memanggil arahan terbina dalam. 1287 01:33:41,630 --> 01:33:46,090 Itu merupakan kelemahan sistem operasi secara umum, bukan sahaja untuk cengkerang, 1288 01:33:46,090 --> 01:33:50,710 walaupun untuk cengkerang khususnya halaman lelaki agak panjang, 1289 01:33:50,710 --> 01:33:56,180 sebahagiannya kerana mereka telah menambah ciri-ciri berguna kepada mereka, yang boleh menjadi positif. 1290 01:33:56,180 --> 01:34:00,290 Okay. Adakah terdapat apa-apa soalan? Mana-mana topik yang anda mahu untuk membawa? 1291 01:34:00,290 --> 01:34:03,390 Apa-apa yang berkaitan di sini? 1292 01:34:04,540 --> 01:34:07,100 Nah, ia telah sangat bagus bercakap dengan anda semua. 1293 01:34:07,100 --> 01:34:09,690 Saya harap anda mendapat sesuatu daripada seminar ini 1294 01:34:09,690 --> 01:34:13,080 yang akan berguna untuk anda dalam usaha masa depan anda. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]