1 00:00:00,000 --> 00:00:02,320 >> [Seminar - Shells Unix, Lingkungan] 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 Aku Douglas Kline, ahli, atau setidaknya cukup pengguna yang kompeten, dari shell. 6 00:00:20,600 --> 00:00:25,280 Sebuah shell adalah antarmuka bagi pengguna untuk sistem operasi komputer. 7 00:00:25,280 --> 00:00:29,580 Nama ini menyesatkan karena, tidak seperti shell hewan, 8 00:00:29,580 --> 00:00:34,890 yang keras dan pelindung, shell komputer memungkinkan untuk komunikasi. 9 00:00:34,890 --> 00:00:39,120 Jadi membran berpori mungkin akan menjadi metafora yang lebih baik. 10 00:00:39,120 --> 00:00:44,500 >> Shell asli 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 penulis asli dari Unix, 13 00:00:49,770 --> 00:00:51,700 dan sebagainya shell dinamai menurut namanya. 14 00:00:51,700 --> 00:00:54,850 Nama yang shell sebagai perintah hanya cukup sh. 15 00:00:54,850 --> 00:00:57,400 Itulah perintah yang dapat mengeksekusi. 16 00:00:57,400 --> 00:01:00,810 Shell dimulai saat login. 17 00:01:00,810 --> 00:01:04,459 Ketika Anda login ke komputer, shell hanya mulai berjalan untuk Anda, 18 00:01:04,459 --> 00:01:06,820 dan itulah yang mengambil perintah Anda. 19 00:01:06,820 --> 00:01:09,790 Hal ini dapat dimulai pada waktu lain juga. 20 00:01:09,790 --> 00:01:16,780 Jika Anda membuka jendela dengan tidak ada indikasi lain, akan memulai shell untuk Anda. 21 00:01:16,780 --> 00:01:20,450 Begitulah adalah bahwa Anda dapat pergi ke jendela dan mulai mengetik perintah 22 00:01:20,450 --> 00:01:23,960 dan sebagainya di sana meskipun Anda tidak masuk ke jendela itu. 23 00:01:23,960 --> 00:01:26,670 Selain itu, jika Anda melakukan remote login, 24 00:01:26,670 --> 00:01:30,250 maka akan memulai shell pada komputer remote. 25 00:01:30,250 --> 00:01:44,310 Dan itu mungkin untuk menjalankan perintah tanpa shell interaktif. 26 00:01:44,310 --> 00:01:48,990 Itu bisa berarti dalam operasi Anda saat ini, 27 00:01:48,990 --> 00:01:50,700 dan juga dapat berarti operasi remote. 28 00:01:50,700 --> 00:01:52,900 Anda bisa mengirim perintah ke komputer lain, 29 00:01:52,900 --> 00:01:55,460 yang meliputi memulai shell di sana. 30 00:01:55,460 --> 00:01:57,760 Bahkan, ia harus menyertakan memulai shell ada 31 00:01:57,760 --> 00:02:01,740 bahkan jika itu tidak tujuan akhir Anda. 32 00:02:05,310 --> 00:02:12,350 Ketika sesuatu dijalankan seperti ini, itu tidak selalu memulai shell baru. 33 00:02:12,350 --> 00:02:17,430 Jika Anda membuka jendela baru, mungkin untuk menceritakannya untuk membuka editor 34 00:02:17,430 --> 00:02:18,940 atau beberapa perintah lain. 35 00:02:18,940 --> 00:02:20,560 Dalam hal ini, editor akan mulai dari awal. 36 00:02:20,560 --> 00:02:22,930 Ketika editor berakhir, jendela berakhir. 37 00:02:22,930 --> 00:02:24,620 Ini sedikit tidak biasa tetapi bisa dilakukan. 38 00:02:24,620 --> 00:02:27,140 Dalam kasus tersebut, itu tidak akan menjadi shell. 39 00:02:27,140 --> 00:02:31,890 Jadi hal itu belum tentu terjadi bahwa jendela atau aplikasi tersebut akan memunculkan shell. 40 00:02:31,890 --> 00:02:34,030 >> Shell mem-parsing perintah. 41 00:02:34,030 --> 00:02:40,900 Parsing berarti mengidentifikasi berbagai elemen dan mengklasifikasikan mereka. 42 00:02:40,900 --> 00:02:43,470 Dalam perintah, string lengkap yang Anda ketik, 43 00:02:43,470 --> 00:02:47,310 akan ada 1 atau lebih perintah tunggal yang akan dieksekusi. 44 00:02:47,310 --> 00:02:50,050 Unsur-unsur lain dapat argumen. 45 00:02:50,050 --> 00:02:55,020 Ada juga bisa menjadi karakter khusus yang mempengaruhi pelaksanaan perintah. 46 00:02:55,020 --> 00:02:59,710 Mereka dapat mengirim output di tempat lain selain layar 47 00:02:59,710 --> 00:03:01,750 jika perintah biasanya akan mengirimkannya ke layar. 48 00:03:01,750 --> 00:03:04,390 Hal ini dapat mengarahkan input, yang dapat melakukan hal-hal lain juga. 49 00:03:04,390 --> 00:03:08,120 Ada berbagai simbol lainnya, karakter, dan sebagainya. 50 00:03:08,120 --> 00:03:13,600 Parsing melibatkan mendeteksi dan menafsirkan hal-hal. 51 00:03:13,600 --> 00:03:19,560 >> Sekarang jika tidak ada lagi pertanyaan, yang agak mungkin karena tidak ada lebih banyak orang, 52 00:03:19,560 --> 00:03:24,620 kita akan pergi ke halaman berikutnya saya di sini. 53 00:03:24,620 --> 00:03:29,170 >> Saya katakan sebelumnya bahwa Bourne shell adalah shell awal. 54 00:03:29,170 --> 00:03:31,550 Ada orang lain. 55 00:03:31,550 --> 00:03:34,520 Salah satunya adalah C-shell. Perintah adalah csh. 56 00:03:34,520 --> 00:03:36,830 Nama C-shell hanya permainan kata-kata. 57 00:03:36,830 --> 00:03:41,260 Shell ini diperkenalkan dengan Berkeley Unix di pertengahan 1970-an. 58 00:03:41,260 --> 00:03:44,830 Berkeley Unix adalah peristiwa mani dalam pengembangan Unix. 59 00:03:44,830 --> 00:03:48,770 Ini adalah sebuah revolusi besar dan termasuk pengenalan shell ini. 60 00:03:48,770 --> 00:03:50,790 Alasan untuk itu permainan kata, C-shell, 61 00:03:50,790 --> 00:03:56,490 adalah bahwa C-shell memiliki beberapa karakteristik di dalamnya yang menyerupai bahasa C, 62 00:03:56,490 --> 00:03:59,740 yang Bourne shell tidak memiliki - 63 00:03:59,740 --> 00:04:02,140 atau tidak memiliki pada saat itu. 64 00:04:02,140 --> 00:04:05,190 Ada juga TC-shell. 65 00:04:05,190 --> 00:04:07,360 Ini adalah superset dari C-shell. 66 00:04:07,360 --> 00:04:11,470 Ini memiliki fitur tambahan, banyak yang berguna untuk penggunaan interaktif, 67 00:04:11,470 --> 00:04:16,050 seperti mengingat perintah dalam mekanisme sejarah, 68 00:04:16,050 --> 00:04:18,459 yang saya akan menjelaskan sedikit kemudian - 69 00:04:18,459 --> 00:04:23,120 dengan cara yang sederhana, model setelah editor. 70 00:04:23,120 --> 00:04:29,170 Ini juga memiliki binding yang memungkinkan Anda untuk mengikat string kunci pendek untuk perintah lagi. 71 00:04:29,170 --> 00:04:31,440 Kami tidak akan masuk ke hari ini. 72 00:04:31,440 --> 00:04:33,650 Ini memiliki beberapa fitur yang berguna untuk pemrograman. 73 00:04:33,650 --> 00:04:37,020 Namun, C-shell tidak sering digunakan untuk pemrograman 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 dari karakteristik shell. 76 00:04:41,690 --> 00:04:43,220 Anda bisa menjalankan ini sebagai program. 77 00:04:43,220 --> 00:04:46,760 Anda menulis sekelompok perintah shell ke dalam sebuah file dan menjalankan file tersebut. 78 00:04:46,760 --> 00:04:49,760 Anda tidak perlu melakukan kompilasi. Ini adalah bahasa interpretatif. 79 00:04:49,760 --> 00:04:57,320 Ungkapan C-shell sekarang ambigu karena mungkin hanya mengacu pada asli C-shell, csh, 80 00:04:57,320 --> 00:05:01,200 atau untuk semua C-kerang, termasuk tcsh. Ini sedikit ambigu. 81 00:05:01,200 --> 00:05:08,250 >> Sebuah shell kemudian adalah Korn shell, ksh, dinamai programmer, Korn. 82 00:05:08,250 --> 00:05:14,160 Shell ini mencoba untuk memasukkan ke dalam 1 shell 83 00:05:14,160 --> 00:05:16,960 keuntungan dari C-shell untuk penggunaan interaktif 84 00:05:16,960 --> 00:05:19,230 dan Bourne shell untuk pemrograman. 85 00:05:19,230 --> 00:05:25,440 Telah digunakan sebagai shell interaktif oleh beberapa orang - minoritas. 86 00:05:25,440 --> 00:05:32,050 Kemudian meskipun, ada pengantar lain, shell Bash, BASH, 87 00:05:32,050 --> 00:05:35,290 lagi permainan kata, Bourne-lagi shell. 88 00:05:35,290 --> 00:05:43,830 Ini adalah perpanjangan dari shell Bourne. Korn shell juga. Keduanya. 89 00:05:43,830 --> 00:05:48,100 Ini memiliki tujuan yang sama dari Korn shell amalgamating C-shell 90 00:05:48,100 --> 00:05:50,980 dan keuntungan Bourne shell dalam 1 shell. 91 00:05:50,980 --> 00:05:56,810 Banyak perangkat tambahan dari shell Korn juga termasuk dalam Bash. 92 00:05:56,810 --> 00:06:00,710 Bash, bagaimanapun, memiliki lebih dan karena itu lebih baik. 93 00:06:00,710 --> 00:06:05,180 The Bourne-lagi shell dan shell Korn disebut Bourne-jenis kerang 94 00:06:05,180 --> 00:06:07,730 karena mereka termasuk karakteristik Bourne shell, 95 00:06:07,730 --> 00:06:11,180 yang tidak kompatibel dalam beberapa hal dengan C-kerang. 96 00:06:11,180 --> 00:06:15,520 Ada kerang lain selain mereka, sebagian ditujukan untuk penggunaan terbatas, 97 00:06:15,520 --> 00:06:20,670 mungkin terbatas pada beberapa perintah, mungkin tujuan khusus, tidak sering digunakan. 98 00:06:20,670 --> 00:06:24,240 >> Oke. Item berikutnya di sini. 99 00:06:31,300 --> 00:06:38,970 The Bash shell telah menjadi terkait dengan berbagai bentuk Linux. 100 00:06:38,970 --> 00:06:41,550 Saya tidak yakin apakah itu benar dari setiap bentuk. 101 00:06:41,550 --> 00:06:43,280 Ada banyak bentuk di luar sana dan saya belum pernah menggunakan mereka semua, 102 00:06:43,280 --> 00:06:46,870 tetapi pada mereka bahwa saya telah digunakan itu telah menjadi terkait dengan itu. 103 00:06:46,870 --> 00:06:49,670 Sejauh yang saya tahu, tidak ada tentang Bash 104 00:06:49,670 --> 00:06:52,210 yang membuatnya lebih kompatibel dengan Linux 105 00:06:52,210 --> 00:06:55,020 daripada kombinasi lain dari shell dan sistem operasi. 106 00:06:55,020 --> 00:06:59,690 Saya pikir ini mungkin hanya mencerminkan kecenderungan dari para programer. 107 00:06:59,690 --> 00:07:07,500 Itu memiliki menjadi terkait dengan Linux adalah alasan lain untuk memilih Bash ksh 108 00:07:07,500 --> 00:07:11,820 karena hal-hal yang mungkin tertulis di dalamnya dan itu mungkin menyebar. 109 00:07:11,820 --> 00:07:15,410 Saya akan memberikan alasan lain untuk itu nanti. 110 00:07:15,410 --> 00:07:21,330 Skrip Bourne shell harus berjalan 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 dapat mengeksekusi bawah ksh atau bash. 113 00:07:26,180 --> 00:07:30,610 Korn shell script mungkin akan berjalan di bawah Bash, tapi aku tidak bisa menjamin bahwa. 114 00:07:30,610 --> 00:07:36,040 Kemudian di sini, skrip C-shell harus berjalan di bawah TC-shell. 115 00:07:38,850 --> 00:07:41,690 The C-shell sebenarnya pernah banyak digunakan untuk scripting 116 00:07:41,690 --> 00:07:48,110 sejak Bourne shell dan kemudian kerang Bourne-type yang 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 Ada cukup banyak Bourne shell script yang ditulis lama, 119 00:07:53,480 --> 00:07:56,860 sebelum shell Korn atau Bourne-lagi shell diperkenalkan. 120 00:07:56,860 --> 00:07:59,300 Mereka masih digunakan, bagian dari sistem operasi, 121 00:07:59,300 --> 00:08:01,590 dan Anda akan menemukan mereka jika Anda melihat ke dalam sistem operasi 122 00:08:01,590 --> 00:08:03,760 atau beberapa paket program lama. 123 00:08:03,760 --> 00:08:12,840 >> Bash sampai batas tertentu menjadi lingua franca semacam untuk sistem operasi. 124 00:08:12,840 --> 00:08:17,580 Ini sudah diperpanjang ke Windows dan VMS. 125 00:08:17,580 --> 00:08:20,440 VMS, dalam kasus Anda tidak tahu, adalah sistem operasi proprietary 126 00:08:20,440 --> 00:08:25,480 dari Digital Equipment Corporation yang masih digunakan, sebagian besar di belakang layar. 127 00:08:25,480 --> 00:08:29,250 Dan jika itu akan berjalan pada beberapa sistem operasi yang berbeda, 128 00:08:29,250 --> 00:08:31,110 kemungkinan orang cenderung bergeser untuk itu. 129 00:08:31,110 --> 00:08:33,840 Tapi pembangunan ini relatif baru. 130 00:08:33,840 --> 00:08:39,490 Ini baru saja dimulai, jadi saya tidak bisa memprediksi apakah ini akan benar-benar berubah menjadi semacam lingua franca. 131 00:08:39,490 --> 00:08:43,539 Juga, karena nama path berkas dan perpustakaan berbeda 132 00:08:43,539 --> 00:08:46,210 antara sistem operasi yang berbeda, 133 00:08:46,210 --> 00:08:50,250 Anda mungkin tidak dapat menulis naskah Bash pada satu sistem operasi 134 00:08:50,250 --> 00:08:51,840 dan kemudian menjalankannya pada satu sama lain. 135 00:08:51,840 --> 00:08:54,440 Anda harus dapat bergerak di antara Unix yang berbeda, Linux 136 00:08:54,440 --> 00:08:59,020 Sistem operasi Mac OS tetapi belum tentu untuk Windows atau VMS. 137 00:08:59,020 --> 00:09:01,390 Anda mungkin harus mengubah deskripsi berkas pathname, 138 00:09:01,390 --> 00:09:03,180 dan beberapa perpustakaan mungkin berbeda, 139 00:09:03,180 --> 00:09:05,230 yang dapat mempengaruhi cara bahwa beberapa perintah bekerja 140 00:09:05,230 --> 00:09:09,730 atau bagaimana mereka memproses argumen dan sejenisnya. 141 00:09:09,730 --> 00:09:19,230 Selain itu, hati-hati lain di sini adalah bahwa tidak ada jaminan 142 00:09:19,230 --> 00:09:23,570 bahwa semua kerang yang berbeda yang telah saya sebutkan - Bourne shell, C-shell, 143 00:09:23,570 --> 00:09:29,880 TC-shell, Korn shell, Bourne shell-lagi - akan tersedia di bawah setiap Unix 144 00:09:29,880 --> 00:09:33,750 atau Linux atau komputer Mac OS. 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 peringatan di sini. 147 00:09:38,300 --> 00:09:41,490 Ini adalah pembatasan disayangkan di sini karena Anda ingin sesuatu untuk bekerja di mana-mana, 148 00:09:41,490 --> 00:09:44,380 tapi sayangnya, Anda tidak dapat bergantung pada itu. 149 00:09:44,380 --> 00:09:47,230 >> Oke. Berikutnya satu di sini. 150 00:09:50,280 --> 00:09:54,370 Katakanlah bahwa Anda ingin menulis sebuah shell script, 151 00:09:54,370 --> 00:09:57,170 sebuah program yang terdiri dari perintah shell. 152 00:09:57,170 --> 00:10:01,200 Anda menulis perintah Anda, menempatkan mereka dalam sebuah file, dan menjalankan file tersebut. 153 00:10:01,200 --> 00:10:04,230 Bagaimana jika Anda ingin menyertakan argumen? 154 00:10:04,230 --> 00:10:09,650 Dalam kasus operasi shell, argumen disebut parameter atau parameter posisi 155 00:10:09,650 --> 00:10:15,940 dan mereka akan dipanggil oleh tanda dolar dan angka, $ 1, $ 2. 156 00:10:15,940 --> 00:10:27,000 Jadi jika script memiliki nama ini, argumen pertama saya mungkin argumen 1 157 00:10:27,000 --> 00:10:30,540 dan kedua saya mungkin argumen 2, 158 00:10:30,540 --> 00:10:34,110 dan di dalam naskah saya jika saya ingin merujuk pada hal-hal ini - 159 00:10:34,110 --> 00:10:36,810 mari kita menghapus ini karena aku tidak benar-benar akan menjalankannya - 160 00:10:36,810 --> 00:10:42,160 dalam naskah saya, saya mungkin memiliki $ 1 untuk merujuk Arg1, 161 00:10:42,160 --> 00:10:45,890 $ 2, yang akan keluar seperti itu, arg2. 162 00:10:45,890 --> 00:10:50,080 Jadi simbol-simbol yang tersedia untuk merujuk pada argumen, 163 00:10:50,080 --> 00:10:52,390 dan mereka berlaku untuk semua kerang. 164 00:10:52,390 --> 00:10:56,520 Selain itu, ada karakter lain. 165 00:10:56,520 --> 00:11:01,700 $ * Mengacu pada seluruh daftar argumen, semua dari mereka. 166 00:11:01,700 --> 00:11:05,390 $ # Mengacu pada jumlah argumen. 167 00:11:05,390 --> 00:11:07,910 Sekali lagi, ini berlaku untuk semua kerang. 168 00:11:07,910 --> 00:11:15,540 Simbol-simbol, * dan #, dapat digunakan dengan arti mereka di tempat-tempat lain juga. 169 00:11:15,540 --> 00:11:17,940 Kami tidak akan masuk ke itu. 170 00:11:17,940 --> 00:11:20,460 >> Shell garis specifier. Apa itu? 171 00:11:20,460 --> 00:11:27,760 Katakanlah Anda sudah menulis naskah dan itu untuk shell tertentu dan Anda ingin menjalankannya. 172 00:11:27,760 --> 00:11:33,500 Bagaimana Anda tahu apa shell sistem operasi Anda akan digunakan untuk menjalankan script Anda? 173 00:11:33,500 --> 00:11:37,230 Pada satu titik Anda bisa berasumsi bahwa itu akan berjalan dalam 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 tidak menulis skrip di Bourne shell yang banyak lagi 176 00:11:41,730 --> 00:11:43,750 dan Anda bahkan tidak bisa mengandalkan itu lagi. 177 00:11:43,750 --> 00:11:48,740 Jadi di sini kita memiliki 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 bahwa menentukan dalam pathname, / bin / bash. 180 00:11:56,750 --> 00:12:02,870 Jika komputer memiliki shell Bash tapi tidak di direktori bin, / bin, ini tidak akan bekerja. 181 00:12:02,870 --> 00:12:06,870 Itu kualifikasi lain, hati-hati lain di sini. 182 00:12:06,870 --> 00:12:09,500 Tanda pound adalah karakter baris komentar. 183 00:12:09,500 --> 00:12:12,300 Itu berlaku untuk semua kerang. 184 00:12:12,300 --> 00:12:18,610 Kasus tertentu di sini, #! pada awal naskah, adalah kasus khusus. 185 00:12:18,610 --> 00:12:23,410 Yang menentukan shell di mana untuk menjalankan script. 186 00:12:23,410 --> 00:12:30,230 Seperti saya katakan, tidak mungkin sama tempat / bin. 187 00:12:30,230 --> 00:12:34,880 Selain itu, ada hal 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 harus menunjukkan C-shell. 190 00:12:44,640 --> 00:12:48,300 Namun, saya tidak menyarankan melakukan hal itu karena aku tidak bisa menjamin 191 00:12:48,300 --> 00:12:49,750 bahwa akan selalu bekerja. 192 00:12:49,750 --> 00:12:52,220 Jika Anda ingin C-shell, akan lebih baik untuk mengatakan begitu. 193 00:12:52,220 --> 00:12:58,450 Lalu ada sesuatu yang agak membingungkan di sini. 194 00:12:58,450 --> 00:13:03,940 Jika Anda menggunakan baris specifier shell seperti / bin / bash 195 00:13:03,940 --> 00:13:07,070 dan shell yang tidak tersedia di sana, 196 00:13:07,070 --> 00:13:10,680 tidak ada hal seperti / bin / bash pada komputer tertentu, 197 00:13:10,680 --> 00:13:14,330 baik karena tidak memiliki Bash atau karena itu di lokasi yang berbeda, 198 00:13:14,330 --> 00:13:17,450 Anda akan mendapatkan error yang mengatakan bahwa script Anda berlari tidak ada. 199 00:13:17,450 --> 00:13:21,510 Dan tentu saja naskah Anda ada, sehingga pesan kesalahan membingungkan. 200 00:13:21,510 --> 00:13:24,810 Alasan bahwa sistem operasi memberi Anda kesalahan yang 201 00:13:24,810 --> 00:13:28,370 atau, lebih tepatnya, bahwa shell interaktif Anda di mana Anda menjalankan ini memberikan kesalahan itu, 202 00:13:28,370 --> 00:13:33,510 adalah bahwa laporan perintah yang Anda gunakan, yang merupakan nama dari script. 203 00:13:33,510 --> 00:13:36,920 Perintah tersebut secara efektif disebut shell dengan nama script. 204 00:13:36,920 --> 00:13:39,330 Di situlah Anda mendapatkan pesan kesalahan membingungkan. 205 00:13:39,330 --> 00:13:42,980 Cara lain untuk memanggil shell script 206 00:13:42,980 --> 00:13:45,910 adalah dengan menentukan shell pada baris perintah, seperti di sini. 207 00:13:45,910 --> 00:13:52,510 Ini adalah perintah. Ini mengatakan menjalankan Bash dan kemudian jalankan script saya di Bash. 208 00:13:52,510 --> 00:13:55,680 Itu akan lebih diutamakan daripada garis specifier, 209 00:13:55,680 --> 00:14:02,090 dan ini memiliki fitur yang memungkinkan Anda untuk memberikan nama path untuk berbagai. 210 00:14:02,090 --> 00:14:04,840 Jika Anda hanya memberikan perintah, sistem operasi akan mencari perintah yang 211 00:14:04,840 --> 00:14:06,410 di berbagai tempat. 212 00:14:06,410 --> 00:14:08,820 Jika tersedia, harus menemukannya. 213 00:14:08,820 --> 00:14:12,290 Komputer akan menemukan Bash dimanapun itu terletak dan menjalankannya, 214 00:14:12,290 --> 00:14:15,470 sehingga Anda tidak perlu kemudian khawatir tentang di mana ia menemukan itu. 215 00:14:15,470 --> 00:14:17,360 Ada kekhawatiran berpotensi lain di sini, 216 00:14:17,360 --> 00:14:20,830 seolah-olah ada lebih dari 1 versi Bash, yang mungkin meskipun tidak mungkin. 217 00:14:20,830 --> 00:14:23,540 Jadi itulah cara lain untuk menangani hal-hal ini. 218 00:14:23,540 --> 00:14:30,480 Baris specifier dapat memanggil shell apapun. 219 00:14:30,480 --> 00:14:34,480 Mereka juga dapat memanggil hal-hal lain selain kerang. 220 00:14:34,480 --> 00:14:37,940 Contoh yang saya miliki di sini sed, yang merupakan editor stream; 221 00:14:37,940 --> 00:14:39,900 awk, yang merupakan bahasa pengolahan pola; 222 00:14:39,900 --> 00:14:43,680 dan perl, bahasa scripting yang sangat sangat maju. 223 00:14:43,680 --> 00:14:47,570 Jika Anda meletakkan baris specifier yang menunjukkan salah satu dari program-program di awal, 224 00:14:47,570 --> 00:14:51,270 itu akan langsung masuk ke program yang bukan dimulai shell. 225 00:14:51,270 --> 00:14:54,030 Program-program memiliki batas kemampuan mereka. 226 00:14:54,030 --> 00:14:58,790 Perl sangat mampu. Sed adalah editor. Hal ini dapat melakukan hal-hal lebih dari sekedar mengedit. 227 00:14:58,790 --> 00:15:03,300 Tapi mungkin sulit untuk program itu. 228 00:15:03,300 --> 00:15:09,670 Selain itu, lewat argumen dan hal-hal untuk script tidak mungkin atau membingungkan. 229 00:15:09,670 --> 00:15:15,030 Jadi dalam kasus-kasus, dengan awk atau sed, itu, setidaknya dalam pengalaman saya, 230 00:15:15,030 --> 00:15:18,910 lebih baik untuk menulis sebuah shell skrip dan panggilan awk atau sed dari shell script 231 00:15:18,910 --> 00:15:24,660 daripada memanggil awk atau sed sebagai garis naskah specifier. 232 00:15:24,660 --> 00:15:26,980 Perl adalah bahasa yang sangat beragam, seperti yang saya katakan. 233 00:15:26,980 --> 00:15:30,050 Anda tidak dapat menjalankan perintah interaktif di perl, 234 00:15:30,050 --> 00:15:32,660 yang berarti bahwa Anda tidak dapat menguji bagian dari script yang Anda sedang mengembangkan 235 00:15:32,660 --> 00:15:33,970 dengan menjalankan mereka secara interaktif. 236 00:15:33,970 --> 00:15:36,160 Namun, itu bahasa yang sangat mampu 237 00:15:36,160 --> 00:15:40,960 dan telah berkembang menjadi sebuah alat yang sangat banyak digunakan. 238 00:15:40,960 --> 00:15:45,720 Itu hanya sedikit pernyataan sisipan tentang garis specifier. 239 00:15:45,720 --> 00:15:50,610 >> Dalam semua atau sebagian besar bentuk Linux - lagi, saya tidak bisa memastikan itu saja - 240 00:15:50,610 --> 00:15:57,900 dan di Mac OS, jika Anda mengetik csh Anda mendapatkan tcsh, 241 00:15:57,900 --> 00:16:00,570 dan jika Anda mengetik sh Anda mendapatkan bash. 242 00:16:00,570 --> 00:16:05,020 Mereka mencoba ada untuk memberikan versi yang lebih canggih dari kerang ini, 243 00:16:05,020 --> 00:16:07,940 tetapi hal ini dapat membingungkan. 244 00:16:07,940 --> 00:16:16,720 Jika Anda menulis naskah menggunakan tcsh atau Bash fitur sambil menelepon csh atau sh 245 00:16:16,720 --> 00:16:22,230 dan kemudian mencoba untuk menjalankannya pada komputer yang tidak memiliki tcsh atau Bash, 246 00:16:22,230 --> 00:16:25,050 Anda mungkin mendapatkan beberapa error jika ada perintah dalam sana 247 00:16:25,050 --> 00:16:27,970 yang kerang yang tidak Anda kenal. 248 00:16:27,970 --> 00:16:34,120 Selain itu, Anda mungkin telah dipanggil shell Anda pada komputer lokal Anda 249 00:16:34,120 --> 00:16:37,700 menyebutnya sebagai sh atau csh dan kemudian mendapatkan kerang lebih maju. 250 00:16:37,700 --> 00:16:41,440 Anda mungkin tidak berpikir tentang fakta bahwa Anda menggunakan shell yang lebih maju. 251 00:16:41,440 --> 00:16:45,670 Jadi ini adalah perangkap potensial. 252 00:16:45,670 --> 00:16:50,290 Bagaimana itu ditetapkan bahwa jika Anda mengetik sh Anda mendapatkan Bash, 253 00:16:50,290 --> 00:16:55,580 jika Anda mengetik csh Anda mendapatkan Tsch? 254 00:16:55,580 --> 00:16:59,940 Ada hal-hal di komputer ini disebut link 255 00:16:59,940 --> 00:17:06,460 yang dapat terhubung ke nama file untuk merujuk pada hal yang sama. 256 00:17:06,460 --> 00:17:12,180 Hal ini dapat menjadi 2 nama untuk file yang sama atau file yang tujuannya adalah untuk merujuk ke file lain. 257 00:17:12,180 --> 00:17:17,550 Mereka disebut hard link dan simbolik. Kami tidak akan masuk ke itu lagi hari ini. 258 00:17:17,550 --> 00:17:21,619 Mungkin juga ada file terpisah - 1 file sh, 1 file Bash - 259 00:17:21,619 --> 00:17:23,880 tapi mereka berdua menjalankan Bash. 260 00:17:23,880 --> 00:17:29,350 Lalu ada kualifikasi lain di sini. 261 00:17:29,350 --> 00:17:42,640 Jika Anda menelepon salah satu kerang ini dengan satu nama, 262 00:17:42,640 --> 00:17:46,640 Anda mungkin berpikir Anda akan mendapatkan fungsi yang sama dengan menyebutnya dengan nama lain. 263 00:17:46,640 --> 00:17:49,700 Nah, yang benar-benar belum tentu benar. 264 00:17:49,700 --> 00:17:55,020 Perintah-perintah ini dapat memeriksa nama yang mereka disebut 265 00:17:55,020 --> 00:18:00,020 dan mereka dapat, atas dasar nama itu, berperilaku berbeda. 266 00:18:00,020 --> 00:18:02,740 Mungkin ada masalah mencoba untuk menyesuaikan diri dengan standar. 267 00:18:02,740 --> 00:18:06,060 Beberapa dari Anda mungkin pernah mendengar tentang standar POSIX atau yang lain, 268 00:18:06,060 --> 00:18:08,730 mungkin fitur lainnya. 269 00:18:08,730 --> 00:18:14,520 Ini dapat dipilih kadang-kadang dengan argumen baris perintah 270 00:18:14,520 --> 00:18:17,310 atau dengan pengaturan variabel shell. 271 00:18:17,310 --> 00:18:22,170 Menyebutnya sebagai sh atau pesta benar-benar dapat menyebabkan eksekusi yang berbeda 272 00:18:22,170 --> 00:18:25,300 bahkan jika itu file yang sama yang Anda mengeksekusi. 273 00:18:25,300 --> 00:18:31,800 Hal lain yang perlu dipertimbangkan adalah bahwa bahkan jika komputer lain memiliki tcsh atau Bash, 274 00:18:31,800 --> 00:18:35,310 jika mereka tidak terhubung seperti pada komputer lokal Anda 275 00:18:35,310 --> 00:18:37,990 jika Anda memiliki komputer lokal Linux atau Mac OS, 276 00:18:37,990 --> 00:18:45,630 sekali lagi Anda akan mendapatkan shell bahwa Anda menelepon sh atau csh, bukan salah satu yang mungkin Anda inginkan. 277 00:18:50,430 --> 00:19:01,130 Saat Bourne shell memiliki perangkat yang lebih rendah dibandingkan dengan Bash 278 00:19:01,130 --> 00:19:06,100 tapi masa lalu mereka di Bourne shell asli. 279 00:19:06,100 --> 00:19:09,690 Sebagai hasil dari itu, bahkan saat Bourne shell, sh, 280 00:19:09,690 --> 00:19:14,560 bahkan ketika itu tidak Bash, menyerupai bahasa C lebih dari C-shell tidak. 281 00:19:14,560 --> 00:19:20,460 Itu tidak benar ketika C-shell pertama kali diciptakan, tetapi telah dikembangkan dengan cara itu. 282 00:19:20,460 --> 00:19:26,560 Anda mungkin melihat di sini bahwa semua nama shell ini kecuali untuk shell Bourne 283 00:19:26,560 --> 00:19:30,640 memiliki sesuatu untuk menunjukkan shell mereka - csh, bash - 284 00:19:30,640 --> 00:19:32,550 tapi Bourne shell hanya sh. 285 00:19:32,550 --> 00:19:34,910 Mengapa? Itu adalah shell asli. 286 00:19:34,910 --> 00:19:37,770 Itu THE shell kemudian, bukan A shell, 287 00:19:37,770 --> 00:19:41,090 dan karena itu shell THE, tidak ada alasan untuk membedakannya dari shell lain. 288 00:19:41,090 --> 00:19:45,030 Jadi itulah mengapa ia memiliki nama itu dan masih tidak. 289 00:19:50,630 --> 00:19:58,990 >> Atas ini di sini adalah garis dari database password untuk account saya telah ada 290 00:19:58,990 --> 00:20:01,680 di komputer lain. 291 00:20:01,680 --> 00:20:08,300 Aku akan mencoba untuk mendapatkan nama itu sehingga Anda dapat melihat bagian yang pada akhirnya, shell. 292 00:20:09,720 --> 00:20:15,450 Database password memegang karakteristik Login untuk semua pengguna. 293 00:20:15,450 --> 00:20:20,330 Pada awalnya adalah username, yang dapat Anda lihat 2 huruf terakhir saya sekarang. 294 00:20:20,330 --> 00:20:23,970 Bidang sini dipisahkan oleh titik dua. 295 00:20:23,970 --> 00:20:28,210 Bidang terakhir, 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 Ketika Unix pertama kali dikembangkan, hanya ada 1 shell, 299 00:20:36,950 --> 00:20:38,350 sehingga tidak ada pilihan di sana. 300 00:20:38,350 --> 00:20:45,570 Jadi, mengapa mereka mengijinkan lapangan dalam database password untuk menentukan shell? 301 00:20:45,570 --> 00:20:47,920 Aku tidak tahu, tapi beruntung bahwa mereka lakukan. 302 00:20:47,920 --> 00:20:52,030 Ini agak sulit untuk membuat perubahan dalam format database password 303 00:20:52,030 --> 00:20:54,420 karena banyak program mengacu pada format 304 00:20:54,420 --> 00:20:57,720 dan harus ditulis ulang. 305 00:20:57,720 --> 00:21:04,130 Ini adalah perkembangan sangat tepat atau kebetulan bahwa mereka termasuk bidang tersebut. 306 00:21:04,130 --> 00:21:12,780 Semacam itu garis file password yang digunakan pada semua komputer Unix dan Linux sejauh yang saya tahu. 307 00:21:12,780 --> 00:21:14,650 The Mac memiliki sistem sendiri. 308 00:21:14,650 --> 00:21:17,810 Ini benar-benar memiliki file password dengan garis-garis dalam format tersebut, 309 00:21:17,810 --> 00:21:21,060 tapi itu tidak di mana karakteristik pengguna didefinisikan. 310 00:21:21,060 --> 00:21:24,200 Komentar kurung lain di sana. 311 00:21:36,470 --> 00:21:46,020 >> Jika Anda menelepon shell, Anda dapat menyebutnya sebagai sub-shell kerang yang ada. 312 00:21:46,020 --> 00:21:50,480 Jadi jika saya pergi di sini, mari kita menyingkirkan hal-hal ini. 313 00:21:50,480 --> 00:21:53,350 Di sini saya di C-shell. 314 00:21:56,830 --> 00:22:01,200 Variabel yang, yang secara akurat mengidentifikasi shell saya, 315 00:22:01,200 --> 00:22:04,300 sebenarnya tidak selalu merupakan cara yang dapat diandalkan untuk menentukan apa shell Anda menjalankan, 316 00:22:04,300 --> 00:22:06,220 tetapi dalam kasus ini itu. 317 00:22:06,220 --> 00:22:08,040 Bagaimana jika saya hanya mengetik - 318 00:22:09,970 --> 00:22:12,470 Sekarang aku di Bash. 319 00:22:12,470 --> 00:22:19,540 Beberapa hal akan menjadi sama. ls memberitahu saya perintah saya. 320 00:22:19,540 --> 00:22:24,500 Jika saya melakukan suspend kembali ke saya C-shell, ls, yang sama. Benar? 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 saat ini, kembali ke C-shell. 323 00:22:38,290 --> 00:22:43,180 pwd, berbeda direktori - sebenarnya bukan direktori yang berbeda dalam kasus ini. 324 00:22:43,180 --> 00:22:45,110 Ini direktori yang sama. 325 00:22:45,110 --> 00:22:50,000 Katakanlah saya ingin memanggil perintah di sini: mana ls. 326 00:22:50,000 --> 00:22:52,140 Apa artinya itu lakukan? 327 00:22:52,140 --> 00:22:53,670 Ini memberitahu saya di mana perintah ls, 328 00:22:53,670 --> 00:22:56,670 salah satu yang memberi saya daftar direktori, terletak di ls. 329 00:22:56,670 --> 00:23:01,460 Mari kita kembali ke Bash shell. Mari kita mencoba hal yang sama. 330 00:23:01,460 --> 00:23:05,830 Hmm, menarik di sana, di mana: Perintah tidak ditemukan. 331 00:23:05,830 --> 00:23:07,400 Mengapa demikian? 332 00:23:07,400 --> 00:23:11,570 The dimana perintah dibangun ke dalam C-shell. 333 00:23:11,570 --> 00:23:15,630 Ini bukan perintah yang harus dibaca ke memori dari tempat lain dan dieksekusi. 334 00:23:15,630 --> 00:23:20,310 The C-shell berjalan dengan mentransfer eksekusi ke bagian kode sendiri 335 00:23:20,310 --> 00:23:22,790 dan itu tidak di Bash shell. 336 00:23:22,790 --> 00:23:25,710 Jadi Bash, tidak memiliki perintah seperti built-in, terlihat untuk itu, tidak menemukannya, 337 00:23:25,710 --> 00:23:27,720 dan kita mendapatkan error. 338 00:23:27,720 --> 00:23:32,290 Jadi ada kita memiliki shell Bash berjalan di bawah C-shell, dan kita sebut bahwa sub-shell. 339 00:23:32,290 --> 00:23:38,480 Dan hanya dalam kasus Anda penasaran, Bash shell memiliki cara sendiri untuk mencari perintah. 340 00:23:38,480 --> 00:23:42,590 hash mengacu pada fakta bahwa hal itu dapat dilaksanakan lebih cepat, 341 00:23:42,590 --> 00:23:44,960 yang ditemukan lebih cepat. 342 00:23:44,960 --> 00:23:48,610 Itulah salah satu perangkat tambahan dibangun untuk beberapa kerang ini. 343 00:23:50,220 --> 00:23:54,200 >> Bourne-jenis kerang lebih disukai untuk pemrograman. 344 00:23:54,200 --> 00:23:57,300 Mereka memiliki struktur kontrol seperti loop, pernyataan bersyarat, 345 00:23:57,300 --> 00:24:00,240 jenis perintah yang mungkin Anda gunakan dalam bahasa pemrograman seperti C 346 00:24:00,240 --> 00:24:04,190 atau bahasa apa pun. Mungkin Anda pemrograman di Jawa atau apa pun. 347 00:24:04,190 --> 00:24:06,460 Kerang memiliki orang-orang juga. 348 00:24:06,460 --> 00:24:11,790 Kerang Bourne-jenis, khususnya Bash, memiliki lebih 349 00:24:11,790 --> 00:24:15,730 dan mereka dirancang dengan fleksibilitas yang lebih besar. 350 00:24:15,730 --> 00:24:20,700 The Bash shell memiliki array. Asli Bourne shell tidak. 351 00:24:20,700 --> 00:24:26,130 Sehingga dapat jauh menguntungkan untuk pemrograman. 352 00:24:26,130 --> 00:24:29,810 The C-shell sebenarnya memiliki array tetapi tidak memiliki banyak fitur-fitur lainnya. 353 00:24:29,810 --> 00:24:33,450 The Bourne-jenis kerang akan mengeksekusi lebih cepat 354 00:24:33,450 --> 00:24:36,520 jika mereka tidak memiliki fitur yang ditujukan untuk penggunaan interaktif. 355 00:24:36,520 --> 00:24:39,340 Anda memuat segalanya untuk satu tujuan, ini beban mereka turun untuk tujuan lain. 356 00:24:39,340 --> 00:24:41,520 Ada yang trade-off di sana. 357 00:24:41,520 --> 00:24:44,510 Fitur-fitur yang ditujukan untuk penggunaan interaktif 358 00:24:44,510 --> 00:24:46,920 benar-benar sedikit atau tidak digunakan untuk scripting. 359 00:24:46,920 --> 00:24:52,160 Ini mungkin untuk menggunakan sub-shell interaktif seperti yang saya mulai ada 360 00:24:52,160 --> 00:24:57,780 untuk menguji perintah yang ingin Anda gunakan dalam script. 361 00:24:57,780 --> 00:25:01,180 Itulah yang tidak dapat Anda lakukan dengan perl. Anda dapat melakukannya dengan kerang. 362 00:25:01,180 --> 00:25:04,850 Bahkan struktur seperti untuk loop dan sebagainya dapat 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 tapi lebih mungkin Anda menggunakan mereka untuk mengembangkan naskah. 365 00:25:15,690 --> 00:25:17,400 >> Alias. 366 00:25:17,400 --> 00:25:21,630 Ini akan menjadi tentang C-shell. 367 00:25:23,270 --> 00:25:27,570 Mekanisme sejarah di mana Anda kembali ke perintah sebelumnya 368 00:25:27,570 --> 00:25:30,340 atau bagian dari mereka bahwa Anda sudah menjalankan. 369 00:25:30,340 --> 00:25:33,680 Sekali lagi, tentang C-shell, shell Bourne dan Korn shell memiliki hal-hal ini, 370 00:25:33,680 --> 00:25:35,620 tapi aku tidak akan masuk ke mereka. 371 00:25:35,620 --> 00:25:40,340 Jadi di sini adalah beberapa alias berguna yang saya miliki. 372 00:25:43,100 --> 00:25:44,880 Daripada mengetik ls - itu adalah perintah umum - 373 00:25:44,880 --> 00:25:47,620 cukup ketik l dan menyelamatkan diri 1 karakter. 374 00:25:47,620 --> 00:25:50,600 ls dengan berbagai pilihan, semua pekerjaan tersebut. 375 00:25:50,600 --> 00:25:54,460 Perhatikan bahwa definisi tersebut memiliki kutipan di sekitar mereka. 376 00:25:54,460 --> 00:25:57,520 Dalam kasus ini, tanda kutip tidak diperlukan. 377 00:25:57,520 --> 00:26:00,100 Jika Anda dapat menentukan orang-orang alias tanpa tanda kutip, itu akan tetap bekerja. 378 00:26:00,100 --> 00:26:02,910 Mereka dianjurkan. 379 00:26:02,910 --> 00:26:04,900 Ada situasi di mana Anda tidak dapat menggunakan kutipan 380 00:26:04,900 --> 00:26:08,050 karena Anda ingin sesuatu terjadi yang akan mencegah kutipan. 381 00:26:08,050 --> 00:26:11,210 Kadang-kadang Anda dapat mengutip bagian dari definisi, tetapi tidak semuanya. 382 00:26:11,210 --> 00:26:17,010 Ini juga umumnya dianjurkan untuk menggunakan tanda kutip tunggal daripada tanda kutip ganda. 383 00:26:17,010 --> 00:26:19,750 Tanda kutip ganda memiliki efek pada definisi variabel, 384 00:26:19,750 --> 00:26:22,950 terutama menyebabkan mereka untuk dievaluasi daripada menghentikannya. 385 00:26:22,950 --> 00:26:25,910 Mengapa kita ingin menghentikan evaluasi? 386 00:26:25,910 --> 00:26:28,710 Dan bagaimana kutipan melakukannya untuk kami? 387 00:26:28,710 --> 00:26:32,600 >> Berikut adalah perintah 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 *, karena Anda mungkin tahu, adalah ekspresi wildcard 390 00:26:37,640 --> 00:26:40,290 untuk semua nama file yang dimulai dengan g. 391 00:26:40,290 --> 00:26:46,410 Jika saya hanya menulis dalam perintah ls g *, saya akan mendapatkan daftar semua nama mereka dalam direktori saya saat ini. 392 00:26:46,410 --> 00:26:50,870 Jika saya mendefinisikan alias yang seperti itu di sini dengan tanda kutip, 393 00:26:50,870 --> 00:26:56,990 itu akan menjalankan perintah yang di direktori saat ini di mana Anda menjalankannya. 394 00:26:56,990 --> 00:27:01,250 Tapi jika Anda menjalankan definisi alias tanpa tanda kutip, 395 00:27:01,250 --> 00:27:09,620 itu akan mengevaluasi wildcard g * ketika berjalan perintah mendefinisikan ini. 396 00:27:09,620 --> 00:27:14,400 Jadi definisi alias akan ls diikuti dengan daftar file dalam direktori 397 00:27:14,400 --> 00:27:16,310 di mana perintah alias dijalankan, 398 00:27:16,310 --> 00:27:19,180 terlepas dari di mana Anda benar-benar berniat untuk menjalankan perintah. 399 00:27:19,180 --> 00:27:26,360 Hal ini tidak banyak berguna, dan tanda kutip tunggal mencegah evaluasi tanda bintang. 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 ketika Anda menjalankan alias, Pemda, kemudian menempatkan yang keluar. 402 00:27:35,510 --> 00:27:40,490 Sekarang tidak ada tanda kutip, dan akan mengevaluasi tanda bintang ketika Anda menjalankan perintah alias. 403 00:27:40,490 --> 00:27:43,900 Jadi itu satu hal. 404 00:27:43,900 --> 00:27:46,590 Tanda kutip ganda akan memiliki efek yang sama di sini, 405 00:27:46,590 --> 00:27:50,580 tetapi ada kasus lain di mana tanda kutip ganda tidak akan bekerja dengan baik. 406 00:27:50,580 --> 00:27:52,450 >> Berikut ini adalah satu sama lain. 407 00:27:52,450 --> 00:27:54,270 Anda mungkin tahu perintah grep. 408 00:27:54,270 --> 00:28:02,110 Perintah grep dapat digunakan untuk memindai file untuk baris yang memiliki string 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 Oke. Berikut adalah file. 411 00:28:25,450 --> 00:28:31,490 Katakanlah itu grep string abc. Ada itu. 412 00:28:31,490 --> 00:28:37,930 Jika saya melakukan zddd grep, saya mendapatkan apa-apa. Oke. 413 00:28:37,930 --> 00:28:40,960 Jadi menemukan string, itu laporan, ia tidak menemukan, itu tidak melaporkannya. 414 00:28:40,960 --> 00:28:44,930 Ini output setiap baris yang memiliki string yang di atasnya. 415 00:28:44,930 --> 00:28:49,080 Ada berbagai macam pilihan di sini yang dapat Anda temukan dalam dokumentasi. 416 00:28:49,080 --> 00:28:52,160 Berikut ini salah satu cara untuk melakukannya. 417 00:28:52,160 --> 00:29:03,290 Bagaimana dengan yang satu ini, alias grabc 'grep abc'? 418 00:29:03,290 --> 00:29:09,000 Itu akan mencakup 1 argumen ketika alias didefinisikan. 419 00:29:09,000 --> 00:29:26,300 Jadi jika saya melakukannya di sini, jika saya lakukan grabc, 420 00:29:26,300 --> 00:29:30,620 sekarang alias mencakup lebih dari perintah sederhana. Ia juga memiliki argumen. 421 00:29:30,620 --> 00:29:32,190 Sejauh ini yang bekerja. 422 00:29:32,190 --> 00:29:38,590 Saya memiliki perintah lain di sini, yang satu ini, sehingga mereka adalah string yang berbeda di sana 423 00:29:38,590 --> 00:29:46,790 dan menunjukkan bahwa ini tidak menemukan apa pun di sana karena tidak cocok. 424 00:29:46,790 --> 00:29:56,180 >> Bagaimana jika saya ingin memasukkan dalam definisi alias file yang aku akan mencari 425 00:29:56,180 --> 00:30:02,970 dan saya ingin memberikan sebagai argumen ke alias string yang saya cari? 426 00:30:02,970 --> 00:30:08,040 Saya mungkin ingin mengatakan abc sebagai argumen ke alias saya, 427 00:30:08,040 --> 00:30:10,870 tapi alias sudah ditentukan file. 428 00:30:10,870 --> 00:30:15,710 Dan di situlah ungkapan ini masuk 429 00:30:20,430 --> 00:30:25,270 Perhatikan di sini kita memiliki grep seperti sebelumnya. 430 00:30:25,270 --> 00:30:28,130 Kami memiliki file di sini, string. 431 00:30:28,130 --> 00:30:35,610 \ ^, Jenis ekspresi aneh, saya kira, jika Anda belum melihat ini sebelumnya. 432 00:30:35,610 --> 00:30:39,920 Tanda seru adalah bagian dari mekanisme sejarah C-shell. 433 00:30:39,920 --> 00:30:45,220 Hal ini dapat mengingat perintah sebelumnya, dapat mengingat argumen untuk perintah-perintah dan sebagainya. 434 00:30:46,760 --> 00:31:01,570 Mekanisme sejarah digunakan sebagai bagian dari aliasing. 435 00:31:01,570 --> 00:31:07,390 Jika Anda menentukan baris setelah tanda seru, itu akan mengacu pada garis yang dalam daftar sejarah, 436 00:31:07,390 --> 00:31:11,910 yang kita tidak akan masuk ke sekarang karena itu seluruh topik lainnya. 437 00:31:11,910 --> 00:31:16,280 Hal ini dimungkinkan untuk menentukan bagian dari sebuah garis. 438 00:31:16,280 --> 00:31:22,950 Jadi! 03:02 akan menjadi argumen kedua dari perintah nomor 3. 439 00:31:22,950 --> 00:31:30,430 Tanda sisipan di sini dalam ekspresi ini singkatan dari argumen pertama. 440 00:31:30,430 --> 00:31:34,410 Jika Anda tidak memberikan indikasi yang perintah yang Anda maksud, 441 00:31:34,410 --> 00:31:37,300 mengacu pada perintah segera sebelumnya, 442 00:31:37,300 --> 00:31:41,990 dan tanda sisipan adalah simbol argumen pertama. 443 00:31:41,990 --> 00:31:46,820 Karena itu adalah tanda sisipan dan tidak nomor tersebut, Anda tidak perlu menggunakan usus besar, 444 00:31:46,820 --> 00:31:52,660 begitu! ^ berarti argumen pertama dengan 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 hal ini, ketika Anda menggunakan ini sebagai definisi alias, 447 00:31:58,450 --> 00:32:04,650 referensi sejarah mengacu kembali ke perintah di mana alias digunakan. 448 00:32:04,650 --> 00:32:08,470 Jadi ini akan kembali 1 perintah sebagai operasi sejarah, 449 00:32:08,470 --> 00:32:11,810 tetapi sebagai sebuah operasi alias mengacu pada perintah di mana Anda akan ketik, 450 00:32:11,810 --> 00:32:14,780 mengatakan, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 Kami memiliki tanda kutip di sini di dalamnya. Apa backslash untuk? 452 00:32:20,240 --> 00:32:30,810 Dalam hal ini, seperti di tempat lain, kita tidak ingin menjalankan mekanisme sejarah 453 00:32:30,810 --> 00:32:33,680 sementara mendefinisikan alias. 454 00:32:33,680 --> 00:32:37,900 Jika kita tidak memiliki backslash ada, shell akan menarik argumen pertama 455 00:32:37,900 --> 00:32:41,870 perintah tepat sebelum menjalankan perintah alias ini, yang tidak kita inginkan. 456 00:32:41,870 --> 00:32:47,520 Kami ingin hal ini dibangun untuk perintah alias untuk memanggil argumen kemudian. 457 00:32:47,520 --> 00:32:53,550 Tanda kutip tunggal tidak melarikan diri tanda seru, referensi sejarah. 458 00:32:53,550 --> 00:32:57,450 Mungkin Anda tahu ekspresi melarikan diri berarti mengubah makna sesuatu. 459 00:32:57,450 --> 00:33:00,260 Dalam hal ini, itu berarti untuk menghentikan sesuatu dari memiliki arti khusus. 460 00:33:00,260 --> 00:33:03,030 Arti khusus seru titik adalah sejarah. 461 00:33:03,030 --> 00:33:05,790 Melarikan diri dan tidak memiliki makna itu. 462 00:33:05,790 --> 00:33:08,080 Kutipan tidak melakukan itu, backslash tidak. 463 00:33:08,080 --> 00:33:11,900 Jadi kita benar-benar menggunakan 2 tingkat melarikan diri di sini. 464 00:33:23,500 --> 00:33:29,620 Aku akan memindahkan perintah ini ke jendela lain tanpa mengetik 465 00:33:29,620 --> 00:33:35,210 dengan menggunakan operasi pengeditan ini, yang Anda mungkin menemukan 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 mengetik alias tanpa argumen, ia memberitahu Anda semua argumen Anda. 468 00:33:46,730 --> 00:33:48,640 Ini adalah sekelompok alias saya sudah punya di sini 469 00:33:48,640 --> 00:33:53,400 selain orang-orang yang telah saya gunakan di sini hari ini. 470 00:33:53,400 --> 00:34:00,220 Tapi jika saya hanya mengetik dengan nama alias, ia memberitahu saya apa artinya. 471 00:34:00,220 --> 00:34:03,390 Perhatikan bahwa tanda kutip hilang dan backslash itu hilang. 472 00:34:03,390 --> 00:34:08,620 String ini di sini adalah hasil dari definisi alias, 473 00:34:08,620 --> 00:34:12,199 dan sekarang baru saja! ^ di dalamnya. 474 00:34:12,199 --> 00:34:19,150 Hal ini akan terlihat dalam string berkas untuk apa pun. 475 00:34:19,150 --> 00:34:34,900 Jadi jika saya melakukan string grstrings_file, saya tidak memberikan apa-apa untuk mencari di sana, 476 00:34:34,900 --> 00:34:37,429 tapi itu terlihat dalam string. 477 00:34:37,429 --> 00:34:42,330 Itu tidak menemukan string kata dalam string berkas, tetapi tidak menemukan abc. 478 00:34:42,330 --> 00:34:46,770 Dan tidak menemukan bahwa. 479 00:34:46,770 --> 00:34:52,330 Jadi di sini kita memberikan argumen yang hits dalam definisi alias, 480 00:34:52,330 --> 00:34:55,530 yang dimasukkan ke dalamnya. 481 00:34:55,530 --> 00:34:58,540 Ini di mana ungkapan ini berasal dari. 482 00:34:58,540 --> 00:35:00,240 Anda dapat menggunakan lebih dari 1. 483 00:35:00,240 --> 00:35:03,170 Tanda sisipan adalah simbol argumen pertama. 484 00:35:03,170 --> 00:35:07,510 Jika Anda ingin menggunakan argumen kedua, maka Anda akan berkata: 2. 485 00:35:07,510 --> 00:35:11,250 Tidak ada simbol khusus untuk argumen kedua. 486 00:35:11,250 --> 00:35:14,790 Dan karena Anda menggunakan angka, Anda harus menggunakan usus besar. 487 00:35:14,790 --> 00:35:17,220 Ada, bagaimanapun, pilihan lain di sini. 488 00:35:17,220 --> 00:35:21,220 Tanda dolar singkatan argumen terakhir. 489 00:35:21,220 --> 00:35:23,320 Dan karena ini adalah sebuah simbol, Anda dapat menghilangkan usus besar. 490 00:35:23,320 --> 00:35:25,870 Jadi itu akan menjadi argumen terakhir dalam daftar. 491 00:35:25,870 --> 00:35:27,900 Dan ada juga yang satu itu. 492 00:35:27,900 --> 00:35:31,380 Asterisk berarti semua, jadi ini adalah daftar argumen yang lengkap, 493 00:35:31,380 --> 00:35:35,150 dan sekali lagi, Anda dapat menghilangkan usus besar karena itu bukan angka yang. 494 00:35:36,970 --> 00:35:39,950 Saya harap Anda semua mengamati semua ini. 495 00:35:39,950 --> 00:35:54,100 >> Mekanisme sejarah dapat kembali ke garis awal dalam daftar sejarah. 496 00:35:54,100 --> 00:36:01,370 Anda bisa melakukan hal ini dalam sebuah definisi alias. 497 00:36:01,370 --> 00:36:02,950 Aku belum pernah melihat ini dilakukan. 498 00:36:02,950 --> 00:36:05,840 Ini akan memiliki efek menarik keluar perintah sebelumnya dari daftar sejarah 499 00:36:05,840 --> 00:36:08,130 ketika Anda mengeksekusi alias, yang bisa menjadi perintah yang berbeda 500 00:36:08,130 --> 00:36:11,240 tergantung kapan dan di mana Anda jalankan. 501 00:36:11,240 --> 00:36:14,020 Dapat dibayangkan Anda mungkin ingin mencabut referensi seperti 502 00:36:14,020 --> 00:36:15,900 hanya untuk mengetahui apa perintah sebelumnya adalah. 503 00:36:15,900 --> 00:36:17,280 Aku belum pernah melihat hal ini terjadi. 504 00:36:17,280 --> 00:36:19,970 Saya kira seseorang mungkin ingin, tapi ini sangat tidak mungkin. 505 00:36:19,970 --> 00:36:26,480 Ada hal lain di sini. 506 00:36:26,480 --> 00:36:33,060 Jika Anda menggunakan referensi sejarah-jenis, 507 00:36:33,060 --> 00:36:38,190 maka hanya argumen yang ada referensi seperti digunakan. 508 00:36:38,190 --> 00:36:42,180 Jika Anda memiliki definisi alias yang tidak menggunakan referensi sejarah-jenis, 509 00:36:42,180 --> 00:36:44,060 jika hanya menjadi awal perintah 510 00:36:44,060 --> 00:36:46,520 dan Anda memiliki argumen lebih lanjut, maka apa pun yang Anda ketik setelah itu 511 00:36:46,520 --> 00:36:48,450 akan ditambahkan ke perintah. 512 00:36:48,450 --> 00:36:52,040 Dalam hal ini, contoh yang saya hanya memberi sana, kami menggunakan argumen pertama; 513 00:36:52,040 --> 00:36:54,610 kita tidak menggunakan orang lain. 514 00:36:54,610 --> 00:36:57,960 Jika argumen lain telah diberikan pada baris perintah, mereka tidak akan digunakan. 515 00:36:57,960 --> 00:37:04,630 Jadi jika Anda menggunakan referensi sejarah sama sekali, maka Anda harus menggunakannya untuk mendapatkan argumen apapun. 516 00:37:04,630 --> 00:37:11,310 >> Ada hal lain di sini saya hanya ingin menyebutkan, sebagian sambil lalu, 517 00:37:11,310 --> 00:37:15,250 yaitu bahwa mekanisme ini sejarah dengan tanda seru 518 00:37:15,250 --> 00:37:18,010 kembali ke asli C-shell. 519 00:37:18,010 --> 00:37:27,060 Tcsh memperkenalkan operasi sejarah 520 00:37:27,060 --> 00:37:30,910 yang menggunakan macam perintah dan string dari editor, 521 00:37:30,910 --> 00:37:33,650 baik Emacs atau vi. 522 00:37:33,650 --> 00:37:36,430 Pendapat pribadi saya adalah Emacs adalah jauh lebih mudah digunakan untuk tujuan ini 523 00:37:36,430 --> 00:37:39,390 bahkan jika Anda menggunakan vi untuk mengedit biasa. 524 00:37:39,390 --> 00:37:43,900 Ada berbagai perintah Emacs yang sekarang diadaptasi untuk sejarah. 525 00:37:43,900 --> 00:37:46,410 Kontrol P mendapat baris sebelumnya dalam daftar sejarah. 526 00:37:46,410 --> 00:37:48,840 Lain Kontrol P akan membuat Anda mendapatkan satu sebelum itu. 527 00:37:48,840 --> 00:37:50,540 Panah atas melakukan hal yang sama. 528 00:37:50,540 --> 00:37:54,190 Kontrol N mendapat perintah selanjutnya jika Anda sudah menggulir kembali beberapa cara. 529 00:37:54,190 --> 00:37:55,880 Panah bawah apakah itu juga. 530 00:37:55,880 --> 00:38:00,480 Anda dapat bergerak ke kiri ke kanan dengan panah dan berbagai hal lainnya. 531 00:38:00,480 --> 00:38:02,390 Hal ini dapat menggunakan mekanisme sejarah 532 00:38:02,390 --> 00:38:05,070 jauh lebih mudah daripada menggunakan sintaks tanda seru, 533 00:38:05,070 --> 00:38:07,930 tetapi Anda tidak akan menggunakan bahwa dalam definisi alias. 534 00:38:17,780 --> 00:38:20,020 Kita akan pergi lebih dari itu beberapa waktu lain. 535 00:38:24,300 --> 00:38:25,810 >> Variabel. 536 00:38:26,880 --> 00:38:29,510 Kau tahu apa variabel dalam bahasa pemrograman. 537 00:38:29,510 --> 00:38:31,680 Kerang memiliki mereka juga. 538 00:38:31,680 --> 00:38:37,350 The C-shell menggunakan perintah set untuk menetapkan variabel, 539 00:38:37,350 --> 00:38:41,360 sehingga menetapkan variabel dengan nilai b - 540 00:38:41,360 --> 00:38:46,390 seperti yang saya katakan, definisi berguna tapi sebuah ilustrasi tentang bagaimana ini digunakan. 541 00:38:48,790 --> 00:38:52,410 Set perintah akan menciptakan variabel jika tidak sudah ada. 542 00:38:55,270 --> 00:39:02,490 Parameter posisi untuk script shell dapat dianggap variabel, 543 00:39:02,490 --> 00:39:10,750 tetapi penggunaan mereka dan aturan untuk mereka agak berbeda. 544 00:39:10,750 --> 00:39:14,320 Anda tidak dapat memberikan nilai ke $ 1 dalam perjalanan naskah. 545 00:39:14,320 --> 00:39:18,340 Anda harus mendefinisikan sebuah variabel baru untuk tujuan itu jika beberapa dari Anda ingin. 546 00:39:23,000 --> 00:39:28,470 Ketik ditetapkan tanpa argumen dan Anda mendapatkan daftar semua variabel yang didefinisikan saat ini. 547 00:39:28,470 --> 00:39:34,220 Dan mari kita ke shell saya yang lain di sini dan melihat apa yang kita dapatkan jika kita melakukan itu. 548 00:39:34,220 --> 00:39:37,110 Cukup daftar panjang di sana, kan? 549 00:39:37,110 --> 00:39:40,990 Gulir ke atas sedikit. Lihatlah semua itu. 550 00:39:40,990 --> 00:39:44,330 Beberapa hal-hal ini didefinisikan secara otomatis oleh shell. 551 00:39:44,330 --> 00:39:49,320 Shell menciptakan variabel dan memberikan nilai. 552 00:39:49,320 --> 00:39:52,730 Beberapa dari mereka didefinisikan oleh shell tapi kemudian didefinisikan ulang oleh pengguna 553 00:39:52,730 --> 00:39:54,820 sesuai dengan preferensi nya. 554 00:39:54,820 --> 00:39:59,110 Dan beberapa dari mereka yang dibuat oleh pengguna tergantung pada apa yang dia lakukan hari itu. 555 00:39:59,110 --> 00:40:01,880 Itu hanya diatur tanpa argumen. 556 00:40:06,920 --> 00:40:10,050 Ada fitur yang aneh di sini hal ini. 557 00:40:10,050 --> 00:40:17,980 Ada harus baik tanpa spasi antara tanda sama dan nama variabel 558 00:40:17,980 --> 00:40:23,700 dan nilai atau ruang di kedua sisi tanda sama dengan, 559 00:40:23,700 --> 00:40:28,940 seperti yang satu ini. 560 00:40:35,620 --> 00:40:41,340 Ini tidak akan bekerja, dan ini sebenarnya adalah perintah yang valid 561 00:40:41,340 --> 00:40:43,390 tetapi tidak akan melakukan apa yang Anda inginkan. 562 00:40:43,390 --> 00:40:50,070 Perintah tersebut akan berhasil karena jika Anda hanya mengatakan mengatur dan nama variabel 563 00:40:50,070 --> 00:40:54,890 tanpa tanda sama dengan atau mengatur dan nama variabel dengan tanda sama dengan dan tidak ada nilai, 564 00:40:54,890 --> 00:40:57,770 itu akan mengatur variabel ke nilai null. 565 00:40:57,770 --> 00:41:00,120 Jadi menetapkan = adalah perintah yang valid. 566 00:41:00,120 --> 00:41:04,370 Set perintah dapat menentukan lebih dari 1 variabel pada baris yang sama. 567 00:41:04,370 --> 00:41:11,240 Jadi perintah ini di sini memiliki efek mendefinisikan a dan b ke nilai null. 568 00:41:11,240 --> 00:41:13,470 Mungkin tidak apa yang Anda inginkan. 569 00:41:13,470 --> 00:41:17,940 Yang satu ini di sini, disebutkan sebelumnya, akan menyebabkan kesalahan 570 00:41:17,940 --> 00:41:21,270 karena = b bukan merupakan ekspresi yang valid. 571 00:41:21,270 --> 00:41:23,680 Sebuah nama variabel tidak dapat dimulai dengan tanda sama dengan. 572 00:41:26,760 --> 00:41:29,080 Dan ada hal-hal lebih lanjut di sini. 573 00:41:29,080 --> 00:41:36,820 Titik dua digunakan untuk memilih argumen dari garis sejarah, 574 00:41:36,820 --> 00:41:41,210 dan mereka dapat digunakan - dan saya tidak pergi ke sebelumnya - untuk mengubah hal-hal. 575 00:41:41,210 --> 00:41:44,480 Mereka juga dapat digunakan untuk memodifikasi variabel shell. 576 00:41:44,480 --> 00:41:49,050 Yang satu ini di sini, $ a, memiliki nilai. 577 00:41:49,050 --> 00:41:55,040 : R akan melepas perpanjangan. 578 00:41:55,040 --> 00:41:57,200 Perpanjangan akan menjadi apa-apa setelah dot, 579 00:41:57,200 --> 00:41:59,200 titik dan apa pun mengikutinya pada akhir file, 580 00:41:59,200 --> 00:42:03,230 hanya pada akhir dari daftar setelah garis miring terakhir. 581 00:42:03,230 --> 00:42:05,480 Jadi saya memilikinya di sini. 582 00:42:05,480 --> 00:42:10,730 adalah bahwa. Ini akan drop. O. 583 00:42:10,730 --> 00:42:16,510 Jika tidak ada perpanjangan, hanya nama path setelah slash terakhir, tidak akan berpengaruh. 584 00:42:16,510 --> 00:42:27,480 a: h, bahwa ekspresi variabel, akan melepas elemen terakhir dari daftar direktori, 585 00:42:27,480 --> 00:42:29,660 lagi, hanya setelah slash terakhir. 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 tapi yang satu ini berubah karena unsur setelah daftar adalah null. 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 Kualifikasi ini tidak mencari keberadaan file ini. 590 00:42:46,770 --> 00:42:48,910 Mereka hanya mencari string. 591 00:42:48,910 --> 00:42:54,520 Ini dimaksudkan untuk memanipulasi nama file, nama path, 592 00:42:54,520 --> 00:42:57,520 tetapi mereka dapat digunakan pada tali apapun, bahkan jika itu bukan nama file. 593 00:42:57,520 --> 00:42:58,920 Dan mereka tidak mencari keberadaan, 594 00:42:58,920 --> 00:43:03,550 jadi jika tidak ada seperti file, / a / b / c, ini akan tetap bekerja. 595 00:43:03,550 --> 00:43:06,930 Entah itu gunanya adalah pertanyaan lain, tapi akan tetap bekerja. 596 00:43:06,930 --> 00:43:12,850 Variabel yang berbeda pada kulit Bourne. Kita akan sampai ke itu nanti. 597 00:43:12,850 --> 00:43:18,240 Dollar tanda dapat melarikan diri seperti tanda seru dan tanda bintang. 598 00:43:18,240 --> 00:43:21,760 Dollar tanda dapat lolos dengan backslash atau tanda kutip tunggal. 599 00:43:21,760 --> 00:43:24,790 Tanda kutip ganda memiliki efek aneh dalam semua kerang 600 00:43:24,790 --> 00:43:28,690 memaksa evaluasi dolar tanda ekspresi variabel. 601 00:43:28,690 --> 00:43:31,960 Jadi jika itu sedang melarikan diri salah satu cara, tanda kutip ganda dapat memiliki efek 602 00:43:31,960 --> 00:43:34,380 menyebabkan itu harus dievaluasi pula. 603 00:43:34,380 --> 00:43:37,090 Ini sedikit membingungkan. 604 00:43:37,090 --> 00:43:43,740 Jika ada beberapa tingkatan melarikan diri, seperti tanda kutip tunggal dalam tanda kutip ganda 605 00:43:43,740 --> 00:43:46,770 atau tanda kutip ganda dalam tanda kutip tunggal, Anda harus menguji untuk melihat apa yang akan terjadi 606 00:43:46,770 --> 00:43:49,520 ke variabel jika Anda menggunakan salah satu. 607 00:43:49,520 --> 00:43:53,410 Mereka 2 situasi - dalam dua tunggal, dalam satu ganda - 608 00:43:53,410 --> 00:43:55,980 tidak selalu memberikan hasil yang sama. 609 00:44:02,520 --> 00:44:05,600 Variabel lingkungan, variabel terikat C-shell. 610 00:44:05,600 --> 00:44:08,340 Variabel lingkungan juga variabel dalam C-shell, 611 00:44:08,340 --> 00:44:11,250 dan mereka juga variabel dalam kerang lain juga. 612 00:44:11,250 --> 00:44:15,230 Dalam C-shell, mereka adalah set yang berbeda. 613 00:44:15,230 --> 00:44:18,130 Hal-hal yang saya katakan sebelumnya sekitar variabel shell. 614 00:44:18,130 --> 00:44:21,300 Variabel lingkungan adalah seperangkat berbeda variabel 615 00:44:21,300 --> 00:44:28,650 dengan pengecualian dari beberapa variabel yang kita sebut variabel terikat, 616 00:44:28,650 --> 00:44:30,640 yang sangat penting dan kami akan masuk ke orang-orang kemudian. 617 00:44:30,640 --> 00:44:34,950 Variabel lingkungan secara otomatis diteruskan 618 00:44:34,950 --> 00:44:41,800 untuk kerang atau perintah yang dijalankan dari shell Anda. 619 00:44:41,800 --> 00:44:46,220 Hal-hal lain tidak. Variabel shell, alias tidak. Variabel lingkungan adalah. 620 00:44:46,220 --> 00:44:48,630 Itulah mengapa kami menyebutnya variabel lingkungan, 621 00:44:48,630 --> 00:44:55,030 gagasan bahwa lingkungan meluas melewati hanya shell Anda saat ini. 622 00:44:55,030 --> 00:45:00,510 Mereka dapat digunakan untuk menentukan hal-hal untuk perintah. 623 00:45:00,510 --> 00:45:05,470 Berikut adalah contoh. PRINTER, LPDEST. 624 00:45:05,470 --> 00:45:12,270 Kedua variabel tersebut dapat menentukan printer yang akan menggunakan perintah untuk mencetak sesuatu. 625 00:45:12,270 --> 00:45:16,500 Jika Anda memiliki beberapa printer sekitar, Anda mungkin ingin menempatkan yang Anda sukai. 626 00:45:16,500 --> 00:45:21,320 Alasan kami memiliki 2 variabel adalah bahwa set yang berbeda dari perintah yang ditulis 627 00:45:21,320 --> 00:45:23,870 menggunakan variabel-variabel yang berbeda. 628 00:45:23,870 --> 00:45:25,910 Anda mungkin memberi mereka nilai yang berbeda. 629 00:45:25,910 --> 00:45:28,860 Kemungkinan besar Anda akan memberi mereka baik nilai yang sama. 630 00:45:28,860 --> 00:45:35,840 Hal-hal bekerja karena perintah yang melakukan pencetakan 631 00:45:35,840 --> 00:45:40,740 diprogram untuk memeriksa nilai-nilai variabel tersebut. 632 00:45:42,200 --> 00:45:46,150 Jika program tidak ditulis seperti itu, jika ditulis untuk melakukan sesuatu yang lain, 633 00:45:46,150 --> 00:45:48,280 variabel akan menjadi tidak relevan. 634 00:45:48,280 --> 00:45:52,530 Jadi sistem operasi tidak mencari variabel-variabel ini 635 00:45:52,530 --> 00:45:55,210 setiap kali Anda merujuk ke printer. 636 00:45:55,210 --> 00:45:59,090 Perintah yang melakukan pencetakan mencari variabel-variabel ini jika diprogram seperti itu. 637 00:46:11,030 --> 00:46:15,240 Variabel ini sering didefinisikan dalam file inisialisasi Anda 638 00:46:15,240 --> 00:46:19,440 tetapi tidak harus. 639 00:46:19,440 --> 00:46:21,050 Anda dapat mendefinisikan mereka pada baris perintah. 640 00:46:21,050 --> 00:46:24,090 Mereka dapat didefinisikan dalam perintah. 641 00:46:24,090 --> 00:46:28,740 Perintah yang berjalan sesuatu mungkin memiliki pilihan sendiri variabel - 642 00:46:28,740 --> 00:46:32,390 variabel yang unik untuk paket perangkat lunak tertentu, misalnya. 643 00:46:32,390 --> 00:46:36,740 Mereka akan didefinisikan ketika Anda menjalankan paket tersebut. 644 00:46:39,690 --> 00:46:42,680 Bagaimana variabel-variabel ini dilewatkan ke sub-shell? 645 00:46:42,680 --> 00:46:48,210 Ketika sub-shell ditulis, tidak menulis ke daerah itu. 646 00:46:48,210 --> 00:46:53,260 Luas sub-shell yang dikhususkan untuk variabel lingkungan 647 00:46:53,260 --> 00:46:56,450 tidak ditulis oleh sub-shell, melainkan ditulis oleh menyalin. 648 00:46:56,450 --> 00:47:00,530 Bila Anda menjalankan perintah biasa, seperti perintah ini untuk mencetak atau apa pun, 649 00:47:00,530 --> 00:47:03,840 mereka memulai dengan membuat shell baru. 650 00:47:03,840 --> 00:47:06,190 Shell menciptakan shell dan kemudian menimpa bagian dari itu 651 00:47:06,190 --> 00:47:08,800 dengan perintah yang Anda jalankan, yang sedikit membingungkan, 652 00:47:08,800 --> 00:47:10,740 tapi itulah cara perintah ini mendapatkan variabel lingkungan 653 00:47:10,740 --> 00:47:14,890 bahwa mereka kemudian merujuk nanti. 654 00:47:21,920 --> 00:47:28,010 Perintah di sini untuk mendefinisikan variabel setenv. 655 00:47:28,010 --> 00:47:36,470 Itulah cara Anda mendefinisikannya. Ini 3 elemen: setenv, variabel, nilai. 656 00:47:36,470 --> 00:47:44,710 Jika Anda hanya setenv tanpa argumen, apa yang Anda dapatkan? 657 00:47:47,220 --> 00:47:48,810 Daftar semua variabel tersebut. 658 00:47:48,810 --> 00:47:53,190 Sekali lagi, itu adalah daftar panjang yang bagus dan dalam hal ini, seperti dalam yang lain, 659 00:47:53,190 --> 00:47:57,320 variabel-variabel ini didefinisikan terutama oleh operasi login saya oleh shell sendiri 660 00:47:57,320 --> 00:47:59,740 bukan oleh apapun yang saya lakukan. 661 00:47:59,740 --> 00:48:03,580 Ada perintah lain di sini, printenv. 662 00:48:07,520 --> 00:48:10,340 Itu juga mencetak lingkungan. 663 00:48:10,340 --> 00:48:15,240 Perhatikan hal terakhir ini di sini, EDITOR = vi. 664 00:48:15,240 --> 00:48:21,120 Yang mengatakan bahwa jika saya menggunakan sesuatu yang disebut editor 665 00:48:21,120 --> 00:48:25,530 dan saya tidak menentukan editor dan memungkinkan saya pilihan, mungkin memberikan saya vi. 666 00:48:25,530 --> 00:48:37,280 Bagaimana jika saya melakukan EDITOR printenv? Ini memberitahu saya apa itu. 667 00:48:37,280 --> 00:48:41,340 Tepat sebelum itu, ada variabel, KURANG. 668 00:48:41,340 --> 00:48:46,040 Ini adalah pilihan default Anda ketika saya menjalankan perintah KURANG, 669 00:48:46,040 --> 00:48:49,360 yang menampilkan file. 670 00:48:49,360 --> 00:48:55,910 Jadi jika saya melakukan itu, printenv dapat mengambil 1 argumen atau 0 argumen, 671 00:48:55,910 --> 00:48:58,070 tidak lebih dari 1. 672 00:49:01,800 --> 00:49:05,690 Ada perintah lain juga, tapi kami tidak akan masuk ke semua itu hari ini. 673 00:49:05,690 --> 00:49:11,010 Ingat ada pengubah untuk variabel shell seperti: h, 674 00:49:11,010 --> 00:49:14,350 yang akan menjatuhkan elemen terakhir dari sebuah pathname, 675 00:49:14,350 --> 00:49:17,950 atau: r, yang akan turun perpanjangan. 676 00:49:17,950 --> 00:49:23,110 Mereka sekarang berlaku untuk variabel lingkungan juga. Mereka tidak terbiasa. 677 00:49:23,110 --> 00:49:24,960 Dulu mereka tidak bisa diubah. Sekarang mereka dapat. 678 00:49:24,960 --> 00:49:29,190 Ini salah satu kemajuan dengan perkembangan dari kerang selama bertahun-tahun. 679 00:49:29,190 --> 00:49:35,620 Saya mengatakan bahwa kerang sebagai bagian dari lingkungan 680 00:49:35,620 --> 00:49:43,040 dan variabel shell di C-shell, dengan beberapa pengecualian, set yang berbeda. 681 00:49:43,040 --> 00:49:46,790 Anda dapat membuat variabel lingkungan dan variabel shell dengan nama yang sama. 682 00:49:46,790 --> 00:49:49,220 Mereka akan menjadi variabel yang berbeda, mereka dapat memiliki nilai yang berbeda. 683 00:49:49,220 --> 00:49:53,090 Mengubah nilai dari satu tidak akan mengubah nilai yang lain. 684 00:49:53,090 --> 00:49:58,070 Variabel-variabel ini semua dievaluasi dengan tanda dolar - $ a, $ apapun. 685 00:49:58,070 --> 00:50:02,340 Jadi bagaimana jika Anda memiliki ini? Apakah Anda tahu mana yang Anda dapatkan? 686 00:50:02,340 --> 00:50:04,520 Dalam tes saya, saya punya variabel shell, 687 00:50:04,520 --> 00:50:07,240 tapi ini tidak didokumentasikan dan Anda tidak dapat bergantung pada itu. 688 00:50:07,240 --> 00:50:10,270 Jadi saya meminta Anda, menciptakan shell dan variabel lingkungan 689 00:50:10,270 --> 00:50:13,490 dengan nama yang sama ide yang baik? Tidak Oke. 690 00:50:13,490 --> 00:50:17,460 Apa itu pengecualian utama di mana lingkungan dan shell variabel 691 00:50:17,460 --> 00:50:19,860 dihubungkan satu sama lain? 692 00:50:19,860 --> 00:50:27,470 Ada 4 ini. 693 00:50:32,030 --> 00:50:35,510 Huruf kapital variabel lingkungan TERM, 694 00:50:35,510 --> 00:50:41,540 shell istilah variabel dalam huruf kecil, jenis emulasi terminal. 695 00:50:41,540 --> 00:50:47,430 Aku hanya akan pergi di sini dan aku akan melakukan gema, perintah yang berguna di sini, 696 00:50:47,430 --> 00:50:52,560 $ $ JANGKA istilah. Dan ada. 697 00:50:52,560 --> 00:51:00,570 xterm adalah jenis terminal untuk windows ditampilkan di System x Jendela. 698 00:51:00,570 --> 00:51:04,330 xterm-warna adalah variasi yang yang memungkinkan warna berbeda. 699 00:51:04,330 --> 00:51:06,580 Mengapa kita mendefinisikan ini? Apa ini baik untuk? 700 00:51:06,580 --> 00:51:09,740 Perintah yang mengatur ulang layar seperti editor 701 00:51:09,740 --> 00:51:13,680 mengirim urutan tertentu, yang disebut escape sequence, 702 00:51:13,680 --> 00:51:18,160 ke terminal atau jendela untuk mengatur ulang dan sebagainya. 703 00:51:18,160 --> 00:51:20,990 Mereka urutan yang berbeda untuk berbagai jenis terminal. 704 00:51:20,990 --> 00:51:23,100 Ini memberitahu itu mana yang akan digunakan. 705 00:51:23,100 --> 00:51:25,900 Kadang-kadang ada masalah di sana. 706 00:51:25,900 --> 00:51:28,600 Anda mungkin ingin mengubah itu. 707 00:51:28,600 --> 00:51:30,780 Jika hal-hal yang tidak bekerja, kadang-kadang jenis terminal diatur salah, 708 00:51:30,780 --> 00:51:36,440 Anda mungkin dapat memperbaikinya dengan mendefinisikan variabel panjang. 709 00:51:36,440 --> 00:51:43,420 Dalam kasus ini, mengubah satu variabel, variabel lingkungan atau variabel shell, 710 00:51:43,420 --> 00:51:45,970 harus mengubah yang lain. 711 00:51:45,970 --> 00:51:50,970 Saya telah menemukan melalui pengalaman yang mengubah TERM dalam huruf kapital 712 00:51:50,970 --> 00:51:54,060 tidak selalu mengubah shell istilah variabel 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 apakah itu selalu benar. Sebagian besar waktu itu tidak benar, tetapi bisa. 715 00:51:59,400 --> 00:52:02,490 Jadi, jika Anda membuat perubahan, hanya memeriksa yang keluar. 716 00:52:02,490 --> 00:52:05,830 Hal ini tidak sering bahwa Anda perlu mengubah nilai itu, tapi sesekali Anda lakukan. 717 00:52:05,830 --> 00:52:08,260 Lingkungan PENGGUNA variabel. 718 00:52:08,260 --> 00:52:12,070 Sekali lagi, variabel lingkungan dalam huruf kapital, shell variabel dalam huruf kecil. 719 00:52:12,070 --> 00:52:13,710 Ini adalah nama pengguna. 720 00:52:13,710 --> 00:52:16,730 Ini hanya dalam keadaan yang sangat luar biasa 721 00:52:16,730 --> 00:52:18,420 bahwa Anda akan ingin mengubah itu. 722 00:52:18,420 --> 00:52:22,350 Jika username Anda adalah orang lain, hal itu dapat membuang segala macam hal off. 723 00:52:22,350 --> 00:52:26,040 Direktori home, direktori home pengguna. 724 00:52:26,040 --> 00:52:28,060 Sekali lagi, Anda tidak ingin mengubah itu. 725 00:52:28,060 --> 00:52:32,260 Perhatikan dalam semua kasus ini dan salah satu yang kita akan menutupi, variabel path, 726 00:52:32,260 --> 00:52:37,070 variabel lingkungan dalam huruf kapital dan variabel shell terikat dalam huruf kecil. 727 00:52:37,070 --> 00:52:39,240 Jika Anda mengubah satu, Anda harus mengubah yang lain. 728 00:52:39,240 --> 00:52:45,960 Semacam ini mengikat tidak dapat dibangun karena Anda tidak dapat mengikat 2 variabel, 729 00:52:45,960 --> 00:52:50,570 selain ini 4, dan mengikat variabel-variabel ini tidak dapat dibatalkan, 730 00:52:50,570 --> 00:52:52,090 Anda tidak bisa memisahkan mereka. 731 00:52:52,090 --> 00:52:55,820 Jadi ini 4 pasang variabel terikat. 732 00:52:55,820 --> 00:52:59,020 Mereka selalu akan. Tidak ada orang lain akan. 733 00:52:59,020 --> 00:53:05,720 Selain itu, akan ada kemungkinan untuk membuat variabel dengan nama yang sama 734 00:53:05,720 --> 00:53:07,780 dari jenis yang berlawanan. 735 00:53:07,780 --> 00:53:11,600 Anda bisa membuat istilah variabel shell dalam huruf kecil 736 00:53:11,600 --> 00:53:14,990 atau lingkungan TERM variabel dalam huruf kapital. 737 00:53:14,990 --> 00:53:19,040 Variabel tersebut akan menjadi independen dari variabel-variabel dipasangkan 738 00:53:19,040 --> 00:53:20,780 dan mereka akan independen satu sama lain. 739 00:53:20,780 --> 00:53:23,780 Aku tidak bisa membayangkan mengapa Anda akan melakukan hal itu kecuali jika Anda ingin membingungkan orang. 740 00:53:24,600 --> 00:53:29,730 Yang satu ini di sini, variabel path, ini adalah salah satu yang benar-benar penting. 741 00:53:29,730 --> 00:53:35,550 Hal lain di sini adalah bahwa bisa ada kasus 742 00:53:35,550 --> 00:53:40,430 variabel dengan nama Paduan sama yang tidak terikat satu sama lain. 743 00:53:40,430 --> 00:53:45,000 Ada dapat variabel, SHELL dan shell, dalam huruf besar dan kecil. 744 00:53:45,000 --> 00:53:48,300 Berdasarkan nama itu, Anda tidak tahu apakah variabel itu adalah variabel shell 745 00:53:48,300 --> 00:53:51,580 atau variabel lingkungan, dan mereka tidak terikat satu sama lain. 746 00:53:51,580 --> 00:53:55,300 Sehingga jenis nama dipasangkan tidak berarti variabel terikat. 747 00:53:55,300 --> 00:53:58,830 Variabel path, yang saya menunjukkan sebelumnya, 748 00:53:58,830 --> 00:54:01,880 adalah daftar nama path dimana shell akan mencari perintah. 749 00:54:01,880 --> 00:54:12,320 Mari kita ke jendela ini di sini dan kami akan melakukan echo $ PATH, huruf kapital - 750 00:54:12,320 --> 00:54:20,230 variabel lingkungan - echo $ path, huruf kecil - shell variabel. 751 00:54:20,230 --> 00:54:24,980 Perhatikan bahwa daftar direktori adalah sama. Ini terikat. 752 00:54:24,980 --> 00:54:26,590 Mengubah satu, Anda mengubah lain. 753 00:54:26,590 --> 00:54:32,970 Dalam variabel lingkungan elemen dipisahkan oleh titik dua. Perhatikan bahwa. 754 00:54:32,970 --> 00:54:35,130 Variabel shell dipisahkan oleh spasi. 755 00:54:35,130 --> 00:54:38,760 Variabel lingkungan ini adalah string tunggal. 756 00:54:38,760 --> 00:54:41,480 Variabel shell adalah array. 757 00:54:41,480 --> 00:54:43,490 The Bourne shell tidak memiliki array. 758 00:54:43,490 --> 00:54:46,600 Bash tidak, tapi ini sudah menjadi bagian tetap dari shell. 759 00:54:46,600 --> 00:54:48,660 Ini adalah string tunggal dan bukan array. 760 00:54:48,660 --> 00:54:50,420 The C-shell selalu memiliki array. 761 00:54:50,420 --> 00:54:52,630 Array jauh lebih mudah untuk bekerja dengan. 762 00:54:52,630 --> 00:54:54,400 Anda dapat merujuk ke bagian itu. 763 00:54:54,400 --> 00:55:02,350 $ Path Jadi gema [1] dan saya mendapatkan / usr / bin, elemen pertama. 764 00:55:02,350 --> 00:55:09,950 Sekali lagi, ingat dollar tanda singkatan dari elemen terakhir dari daftar sejarah. 765 00:55:09,950 --> 00:55:16,850 Apa yang terjadi di sana? Ia mencoba untuk menemukan tanda dolar sebagai simbol variabel. 766 00:55:16,850 --> 00:55:20,850 Aku menghindarinya. Oops. Itu tidak akan mengambil yang baik. 767 00:55:20,850 --> 00:55:23,690 Beberapa hal-hal ini tidak bekerja dengan baik. 768 00:55:23,690 --> 00:55:28,140 Mungkin kita hanya akan meninggalkan hal itu. 769 00:55:28,140 --> 00:55:36,980 Asterisk mengacu pada semuanya, tapi itulah apa yang Anda dapatkan jika Anda tidak menentukan elemen. 770 00:55:36,980 --> 00:55:46,170 Cara lain bahwa variabel array dapat dimanipulasi, 771 00:55:46,170 --> 00:55:49,500 jumlah elemen di sana, 7 elemen. 772 00:55:49,500 --> 00:55:53,410 Di sini kita menempatkan tanda pound sebelum nama variabel. 773 00:55:53,410 --> 00:55:58,280 Ini satu lagi. Pasang tanda tanya di sana. 774 00:55:58,280 --> 00:56:03,170 Itu adalah nilai logis. Itu menunjukkan bahwa variabel yang ada. 775 00:56:03,170 --> 00:56:05,160 Ini cara lain untuk bekerja dengan variabel. 776 00:56:05,160 --> 00:56:06,660 Itu, by the way, tidak harus menjadi variabel array. 777 00:56:06,660 --> 00:56:08,210 Itu bisa menjadi variabel apapun. 778 00:56:08,210 --> 00:56:11,840 Dan jika saya lakukan, tidak ada variabel tersebut dan saya mendapatkan 0. 779 00:56:11,840 --> 00:56:14,990 Lain hal kecil di sana tentang evaluasi variabel. 780 00:56:23,670 --> 00:56:32,950 Kembali ke satu ini di sini, jika karena alasan tertentu Anda ingin bekerja dengan ini 781 00:56:32,950 --> 00:56:37,990 daripada bekerja dengan array, variabel shell, 782 00:56:37,990 --> 00:56:41,470 ada perintah yang dapat memisahkan hal-hal ini didasarkan pada usus besar. 783 00:56:41,470 --> 00:56:44,080 Bahkan, jika Anda akan melakukan hal ini di Bash shell mungkin, 784 00:56:44,080 --> 00:56:47,110 semacam script, yang akan mungkin bagaimana Anda akan melakukannya. 785 00:56:47,110 --> 00:56:50,350 Tapi di C-shell itu jauh lebih mudah untuk menggunakan array. 786 00:56:50,350 --> 00:56:58,250 Di Bourne shell, variabel ditugaskan oleh ekspresi tunggal seperti ini, 787 00:56:58,250 --> 00:57:01,760 seperti cara Anda dapat menetapkan variabel dalam bahasa pemrograman, 788 00:57:01,760 --> 00:57:05,110 dan di sini tidak boleh ada spasi. 789 00:57:05,110 --> 00:57:09,110 Ini penting bahwa itu hanya 1 string. 790 00:57:09,110 --> 00:57:14,980 Dalam kerang Bourne-type, semua variabel adalah variabel shell. 791 00:57:14,980 --> 00:57:19,250 Variabel lingkungan adalah subset dari variabel shell. 792 00:57:19,250 --> 00:57:24,060 Mereka dibedakan dari variabel non-lingkungan dengan mengekspor. 793 00:57:24,060 --> 00:57:28,860 Perintah untuk melakukannya adalah ekspor, seperti ekspor PRINTER. 794 00:57:28,860 --> 00:57:34,930 Jika kita mendefinisikan variabel tersebut, 795 00:57:34,930 --> 00:57:38,480 jika kita ingin perintah pencetakan untuk menemukan itu, itu akan menjadi variabel lingkungan, 796 00:57:38,480 --> 00:57:40,730 dan itulah bagaimana kita membuat satu. 797 00:57:40,730 --> 00:57:42,090 Di sini ada sesuatu yang agak membingungkan. 798 00:57:42,090 --> 00:57:50,430 Ungkapan ini, ekspor ke lingkungan, berasal dari konsep shell Bourne ini, 799 00:57:50,430 --> 00:57:54,520 namun ekspresi yang digunakan dalam deskripsi dari C-shell, 800 00:57:54,520 --> 00:57:57,920 dimana tidak ada perintah seperti ekspor. 801 00:57:57,920 --> 00:58:06,200 Jika Anda hanya mengatakan ekspor dengan sendirinya, Anda mendapatkan daftar diekspor - 802 00:58:06,200 --> 00:58:10,620 Jadi jika saya hanya melakukan ekspor di sini, tidak ada hal seperti itu. 803 00:58:13,620 --> 00:58:15,200 Oke, di sana kita pergi. 804 00:58:15,200 --> 00:58:17,010 Hal-hal ini, by the way, juga didefinisikan oleh shell. 805 00:58:17,010 --> 00:58:19,400 Saya tidak menentukan semua ini sendiri. 806 00:58:19,400 --> 00:58:23,550 Shell melakukan segala macam hal dengan sendirinya. 807 00:58:23,550 --> 00:58:26,650 Ini harus melakukan hal-hal secara otomatis. 808 00:58:30,240 --> 00:58:36,880 Dalam Bash atau Korn shell, Anda dapat menjalankan perintah seperti ini, 809 00:58:36,880 --> 00:58:42,000 yang keduanya akan memberikan variabel nilai dan mengekspornya dalam 1 perintah. 810 00:58:42,000 --> 00:58:46,150 Dalam shell Bourne mereka harus perintah yang terpisah seperti ekspor a. 811 00:58:46,150 --> 00:58:48,410 Berikut ini adalah aspek lain yang membingungkan. 812 00:58:48,410 --> 00:58:52,220 Perintah set di C-shell mendefinisikan variabel 813 00:58:52,220 --> 00:58:55,550 dan tanpa argumen memberitahu Anda apa nilai-nilai variabel 'adalah. 814 00:58:55,550 --> 00:59:01,140 Dalam Bash shell, perintah set tanpa argumen melakukan hal yang sama, 815 00:59:01,140 --> 00:59:03,580 tetapi dengan argumen itu tidak sesuatu yang sangat berbeda. 816 00:59:03,580 --> 00:59:06,200 Jadi ini adalah berbagai argumen di sini. 817 00:59:06,200 --> 00:59:10,460 Beberapa di antaranya adalah variabel lingkungan, beberapa dari mereka adalah variabel shell. 818 00:59:10,460 --> 00:59:13,200 Semua dari mereka adalah variabel shell sebenarnya. Beberapa dari mereka adalah variabel lingkungan. 819 00:59:15,690 --> 00:59:23,920 Set perintah dengan argumen dapat digunakan untuk mengoperasikan 820 00:59:23,920 --> 00:59:28,220 pada parameter posisi ke script, 821 00:59:28,220 --> 00:59:33,910 yang merupakan cara untuk mendapatkan semuanya sekaligus. 822 00:59:33,910 --> 00:59:36,150 Kita tidak bisa benar-benar masuk ke hari ini. 823 00:59:36,150 --> 00:59:39,580 Hal ini juga dapat digunakan untuk mengubah perilaku shell. 824 00:59:39,580 --> 00:59:46,700 Khususnya di Bash ada variabel yang akan menentukan bagaimana shell berperilaku. 825 00:59:46,700 --> 00:59:51,310 Kemudian juga hanya satu perintah ini yang mungkin Anda lihat, perintah ini. 826 00:59:51,310 --> 00:59:59,050 Mengeset diikuti oleh variabel dan jenis variabel yang digunakan dalam shell Korn dan Bash. 827 00:59:59,050 --> 01:00:04,970 Ini tidak wajib tetapi dapat digunakan untuk membatasi nilai-nilai variabel, 828 01:00:04,970 --> 01:00:08,400 yang dapat berguna untuk mencegah kesalahan, dan itu cukup umum. 829 01:00:08,400 --> 01:00:11,640 Jadi aku hanya menyebutkan bahwa dalam kasus Anda melihatnya di suatu tempat. 830 01:00:17,290 --> 01:00:19,160 Perintah mana. 831 01:00:19,160 --> 01:00:22,490 Ingat saya sebutkan sebelumnya di mana perintah dalam C-shell, 832 01:00:22,490 --> 01:00:28,750 yang dapat memberitahu Anda lokasi pathname perintah. 833 01:00:28,750 --> 01:00:32,580 Berikut adalah substitusi perintah. 834 01:00:32,580 --> 01:00:41,900 Anda harus menemukan pada keyboard Anda di suatu tempat karakter yang terlihat seperti ini. 835 01:00:41,900 --> 01:00:44,910 Lokasi di keyboard akan bervariasi. 836 01:00:44,910 --> 01:00:47,050 Kami telah menyebutnya backquote. Ini tentang ukuran penawaran. 837 01:00:47,050 --> 01:00:48,720 It goes dari kiri atas ke kanan bawah. 838 01:00:48,720 --> 01:00:52,690 Di sini pada keyboard Mac saya itu di sudut kiri atas. 839 01:00:52,690 --> 01:00:58,150 Karakter yang dapat digunakan untuk mengeksekusi perintah dalam perintah. 840 01:00:58,150 --> 01:01:03,400 Jika Anda memiliki ekspresi dalam backquotes, 841 01:01:03,400 --> 01:01:07,080 ungkapan itu adalah perintah, itu berjalan. 842 01:01:07,080 --> 01:01:09,010 Output dari perintah yang 843 01:01:09,010 --> 01:01:11,980 kemudian diganti untuk seluruh ekspresi backquote 844 01:01:11,980 --> 01:01:16,110 dalam perintah lagi yang kemudian berjalan dengan output yang 845 01:01:16,110 --> 01:01:22,010 sebagai bagian dari string nya argumen dan sebagainya. 846 01:01:22,010 --> 01:01:28,640 Berikut adalah perintah 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 backquotes. 849 01:01:49,090 --> 01:01:54,410 Kontrol A mendapatkan saya ke awal baris dengan sintaks editing Emacs. 850 01:01:54,410 --> 01:02:00,380 Sejauh ini nama path adalah apa yang mana tidak, 851 01:02:00,380 --> 01:02:05,040 tapi ketika saya melakukannya seperti ini, kemudian tancapkan bahwa daftar nama path 852 01:02:05,040 --> 01:02:08,750 di tempat ini seluruh ekspresi backquote dan berjalan ls-l pada mereka. 853 01:02:08,750 --> 01:02:11,120 Jenis nyaman, ya? 854 01:02:11,120 --> 01:02:14,860 Jadi itu satu hal yang rapi. Begitulah backquotes bekerja. 855 01:02:14,860 --> 01:02:17,560 Sekarang mari kita turun sedikit lebih jauh. 856 01:02:17,560 --> 01:02:22,050 Ini adalah alias. Saya benar-benar menggunakan ini. 857 01:02:22,050 --> 01:02:26,410 Saya akan mencoba untuk mendapatkan ini dengan 1 operasi editing. 858 01:02:34,900 --> 01:02:36,900 Oke. 859 01:02:36,900 --> 01:02:39,630 Sekarang mari kita lihat bagaimana definisi tersebut keluar. 860 01:02:39,630 --> 01:02:44,930 alias LWH menceritakan bagaimana hal itu didefinisikan. 861 01:02:44,930 --> 01:02:51,210 Perhatikan itu hanya ini, tapi tanda kutip luar telah diambil off 862 01:02:51,210 --> 01:02:53,750 dan tanda seru diambil off. 863 01:02:53,750 --> 01:02:58,940 ! *, Daftar lengkap dari semua argumen. 864 01:02:58,940 --> 01:03:03,580 Dalam definisi alias itu akan berlaku kembali ke tempat saya menggunakan ini. 865 01:03:03,580 --> 01:03:10,620 LWH ksh bash. Oke. 866 01:03:10,620 --> 01:03:13,960 Lihat bagaimana yang bekerja? Ini menghemat saya beberapa mengetik. 867 01:03:13,960 --> 01:03:16,440 Mari kita naik sedikit hanya untuk menyebutkan sesuatu yang lain di sini. 868 01:03:19,150 --> 01:03:23,120 Perhatikan di sini ini kerang yang berbeda. Aku seharusnya disebutkan ini sebelumnya. 869 01:03:23,120 --> 01:03:36,060 Csh memiliki 2 di sini dan begitu juga / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 Kita bisa membangun dengan cara lain bahwa mereka sebenarnya file yang sama. 871 01:03:39,870 --> 01:03:43,150 Ingat saya katakan jika Anda mengetik sh Anda mendapatkan bash. 872 01:03:43,150 --> 01:03:47,390 Ketik ini dan Anda mendapatkan ini. 873 01:03:47,390 --> 01:03:51,730 Tetapi mereka tidak terkait. Mereka memiliki orang-orang tunggal di sana. 874 01:03:51,730 --> 01:03:54,910 Dan ini bukan jenis file yang dapat memanggil satu sama lain. 875 01:03:54,910 --> 01:03:59,460 Jadi mereka adalah file terpisah, yang C-shell adalah file yang sama. 876 01:03:59,460 --> 01:04:03,640 Kembali di sini, yang lain di sini, alias ini, 877 01:04:03,640 --> 01:04:09,090 perhatikan yang menjalankan perintah ini, berkas. 878 01:04:09,090 --> 01:04:13,810 Alias ​​yang berjalan itu. File memberitahu Anda jenis file. 879 01:04:13,810 --> 01:04:20,330 Jadi FWH pesta ksh. Oke. 880 01:04:20,330 --> 01:04:23,230 Itulah output dari perintah berkas. 881 01:04:23,230 --> 01:04:24,630 Saya tidak tahu apakah Anda tahu apa artinya ini di sini, 882 01:04:24,630 --> 01:04:26,750 Mach-O biner universal dengan 2 arsitektur. 883 01:04:26,750 --> 01:04:30,470 Ada 2 jenis prosesor mungkin dalam Mac, 884 01:04:30,470 --> 01:04:34,780 dan beberapa program ditulis untuk dapat berjalan dengan baik, 885 01:04:34,780 --> 01:04:37,950 dan perintah file yang dapat menentukan itu, jadi itulah apa artinya ini. 886 01:04:37,950 --> 01:04:40,660 Kedua file ini ditulis dengan cara itu. 887 01:04:40,660 --> 01:04:43,760 Jadi kita melihat bagaimana alias bekerja, kita melihat bagaimana backquote bekerja, 888 01:04:43,760 --> 01:04:48,640 kita melihat bagaimana ls file yang sebenarnya atau file bekerja. 889 01:04:52,050 --> 01:04:57,000 Ini mungkin tidak bekerja. Coba "di mana mana" dan "LWH mana". Oke, mari kita coba itu. 890 01:04:57,000 --> 01:05:01,040 di mana mana. 891 01:05:01,040 --> 01:05:03,500 di mana adalah shell built-in. 892 01:05:03,500 --> 01:05:06,970 Ingat sebelumnya kita menunjukkan bahwa Bash tidak memiliki mana. 893 01:05:06,970 --> 01:05:10,080 Jika Anda mengetik di mana di Bash shell, Anda mendapatkan pesan error. 894 01:05:10,080 --> 01:05:12,540 Itu hanya bagian dari shell bukannya perintah terpisah. 895 01:05:12,540 --> 01:05:20,000 Apa yang terjadi jika saya ketik LWH mencari di mana? Lihat apa yang terjadi di sana. 896 01:05:20,000 --> 01:05:22,850 Ran di mana mana, mendapat output ini, dan kemudian mencoba untuk menjalankan ls 897 01:05:22,850 --> 01:05:25,600 sebagai l pada di mana adalah shell built-in. 898 01:05:25,600 --> 01:05:28,790 mana ada, tapi yang lain tidak ada. 899 01:05:28,790 --> 01:05:32,090 Tak satu pun dari ini ada, sebenarnya. 900 01:05:32,090 --> 01:05:35,560 Sehingga tidak selalu bekerja, dan juga menggambarkan bagaimana beberapa hal 901 01:05:35,560 --> 01:05:39,580 tidak melakukan cukup apa yang Anda mungkin berpikir. 902 01:05:40,930 --> 01:05:43,010 Mari kita turun sedikit lebih jauh di sini. 903 01:05:44,890 --> 01:05:54,760 Ini di sini adalah dalam Bash. Itu juga perintah substitusi seperti backquote tersebut. 904 01:05:54,760 --> 01:06:05,280 Tapi tidak seperti backquote, menggunakan gaya variabel ini. 905 01:06:05,280 --> 01:06:09,860 Ada beberapa ekspresi yang dimulai dengan tanda dolar, 906 01:06:09,860 --> 01:06:16,070 dan sementara ini tidak variabel, mereka meminjam penggunaan tanda dollar 907 01:06:16,070 --> 01:06:19,570 untuk menunjukkan ekspresi dari beberapa jenis. 908 01:06:19,570 --> 01:06:23,550 Itu bisa dikelilingi dengan tanda kurung atau tanda kurung atau tanda kurung ganda, 909 01:06:23,550 --> 01:06:26,320 yang memiliki tujuan yang berbeda. 910 01:06:26,320 --> 01:06:29,500 Kurung tunggal di sini adalah substitusi perintah seperti backquotes. 911 01:06:29,500 --> 01:06:32,720 Kurung ganda sebenarnya merupakan operasi aritmatika. 912 01:06:32,720 --> 01:06:35,380 Ada sintaks lain, operasi lainnya. 913 01:06:35,380 --> 01:06:41,520 Sintaks backquote tersedia dalam Bash. 914 01:06:41,520 --> 01:06:46,780 Namun, yang satu ini adalah lebih baik. Ini jauh lebih mudah untuk membaca dan memungkinkan bersarang. 915 01:06:46,780 --> 01:06:51,300 Anda dapat memiliki di dalam $ (command) perintah lain, 916 01:06:51,300 --> 01:06:54,590 sesuatu seperti - 917 01:07:14,560 --> 01:07:18,210 Saya mendapatkan daftar di sana. 918 01:07:18,210 --> 01:07:21,670 Itu akan bekerja jika saya punya backquote juga. 919 01:07:32,050 --> 01:07:38,470 Bagaimana jika saya ingin melakukan sesuatu seperti - 920 01:08:03,390 --> 01:08:06,430 Anda mungkin tidak akan benar-benar menggunakan perintah ini, 921 01:08:06,430 --> 01:08:14,160 tetapi substitusi perintah internal ini menggemakan nama semua file yang dimulai dengan, 922 01:08:14,160 --> 01:08:18,229 maka yang satu ini berjalan ls-l pada file-file, 923 01:08:18,229 --> 01:08:20,500 dan kemudian yang satu ini hanya gema output. 924 01:08:21,729 --> 01:08:24,479 Anda mungkin tidak akan melakukan ini, Anda hanya akan melakukan gema atau ls, 925 01:08:24,479 --> 01:08:29,450 tapi ini menggambarkan bagaimana bersarang perintah bekerja. 926 01:08:29,450 --> 01:08:34,380 Jadi hanya fitur lain di sini. 927 01:08:34,380 --> 01:08:37,450  Saya sebutkan ini sebelumnya, bahwa ketika Anda memiliki tempat di C-shell, 928 01:08:37,450 --> 01:08:42,770 ketik bekerja pada kulit Bourne-type untuk mencari perintah. 929 01:08:48,939 --> 01:08:52,270 Built-in perintah, hanya apa yang saya katakan di sana. 930 01:08:52,270 --> 01:08:54,640 Perintah merupakan bagian dari shell, seperti di mana. 931 01:08:54,640 --> 01:08:59,880 Ketika shell mengeksekusi perintah seperti ls, ini menempatkan melalui jalan, 932 01:08:59,880 --> 01:09:03,029 menemukannya dalam beberapa direktori di suatu tempat, 933 01:09:03,029 --> 01:09:05,800 membaca bahwa ke dalam memori, menciptakan shell baru, 934 01:09:05,800 --> 01:09:08,960 membaca perintah ls atau apa pun ke shell 935 01:09:08,960 --> 01:09:11,450 dimana variabel lingkungan sudah berada, 936 01:09:11,450 --> 01:09:14,000 dan kemudian transfer eksekusi untuk itu. 937 01:09:14,000 --> 01:09:18,319 Built-in command, kode perintah yang ada di dalam shell, 938 01:09:18,319 --> 01:09:21,460 sehingga shell hanya mulai mengeksekusi bagian dari kode sendiri. 939 01:09:21,460 --> 01:09:24,569 dimana perintah tersebut. Ini benar-benar mendapatkan lebih cepat. 940 01:09:24,569 --> 01:09:28,380 Tidak perlu membaca apa pun di memori, itu sudah di memori. 941 01:09:28,380 --> 01:09:32,460 Built-in perintah selalu lebih diutamakan daripada perintah dengan nama yang sama. 942 01:09:32,460 --> 01:09:36,050 Perintah yang ada di direktori di jalan mungkin memiliki nama yang sama, 943 01:09:36,050 --> 01:09:39,090 perintah dalam direktori yang berbeda, file dalam direktori yang berbeda. 944 01:09:39,090 --> 01:09:41,740 Salah satu yang terjadi sebelumnya di jalan adalah salah satu yang akan mendapatkan. 945 01:09:41,740 --> 01:09:43,770 Jika ada perintah built-in, Anda selalu mendapatkannya. 946 01:09:43,770 --> 01:09:47,890 Tidak ada cara untuk memberikan prioritas lebih rendah dari perintah di jalan. 947 01:09:47,890 --> 01:09:54,140 Jika Anda ingin mendapatkan perintah jalan, Anda dapat mengetik nama path penuh. 948 01:09:54,140 --> 01:09:55,850 Jika ada perintah mana di jalan di suatu tempat, 949 01:09:55,850 --> 01:09:58,440 Anda bisa mengetik / bin / di mana dan Anda akan mendapatkannya. 950 01:09:58,440 --> 01:10:01,800 Jika Anda tidak ingin mengetikkan seluruh pathname, Anda bisa mendefinisikan sebuah alias. 951 01:10:01,800 --> 01:10:06,310 Bahkan, jika Anda memberi alias nama yang sama dengan perintah built-in, itu akan berhasil 952 01:10:06,310 --> 01:10:08,790 karena definisi alias dievaluasi 953 01:10:08,790 --> 01:10:13,220 sebelum shell menentukan bahwa itu adalah built-in perintah yang harus dieksekusi. 954 01:10:18,810 --> 01:10:23,440 Maka ini menjadi sedikit lebih rumit dengan beberapa perintah di sini. 955 01:10:23,440 --> 01:10:29,880 Kasus beberapa perintah yang benar-benar built-in perintah dan di jalan. 956 01:10:29,880 --> 01:10:34,140 Salah satunya adalah gema, perintah saya hanya menggunakan beberapa waktu yang lalu dalam contoh-contoh. 957 01:10:34,140 --> 01:10:37,410 Echo adalah perintah di jalan dan di setiap shell. 958 01:10:37,410 --> 01:10:40,580 Mereka tidak tentu semua berperilaku dengan cara yang sama. 959 01:10:40,580 --> 01:10:42,970 Itu awalnya perintah hanya di jalan. 960 01:10:42,970 --> 01:10:45,280 Itu dibangun untuk kerang kemudian. 961 01:10:45,280 --> 01:10:48,080 Karena ada pilihan yang tergantung pada lingkungan 962 01:10:48,080 --> 01:10:52,970 dan opsi baris perintah, perintah built-in 963 01:10:52,970 --> 01:10:57,030 ditulis berfungsi sama dengan perintah yang telah di jalan, 964 01:10:57,030 --> 01:10:59,670 itu tidak mungkin mereka akan telah ditulis seperti itu 965 01:10:59,670 --> 01:11:01,720 jika perintah itu tidak sudah ditulis untuk jalan. 966 01:11:01,720 --> 01:11:06,180 Jadi ini memiliki efek samping. Sejarahnya memiliki efek di sini. 967 01:11:06,180 --> 01:11:08,380 Ada pilihan di sana. 968 01:11:14,280 --> 01:11:23,060 Ada juga pilihan didefinisikan oleh variabel dalam tcsh disebut echo_style. 969 01:11:23,060 --> 01:11:27,700 Itu salah satu dari variabel-variabel ini yang dapat mengubah cara yang echo bekerja. 970 01:11:27,700 --> 01:11:30,910 Ada kasus lain di mana Anda dapat menetapkan variabel 971 01:11:30,910 --> 01:11:36,290 yang mengubah cara bahwa operasi shell, termasuk perintah built-in, bekerja. 972 01:11:36,290 --> 01:11:38,130 Ini tidak akan mempengaruhi apa-apa lagi 973 01:11:38,130 --> 01:11:40,640 karena perintah lain tidak memiliki akses ke variabel shell, 974 01:11:40,640 --> 01:11:42,090 hanya variabel lingkungan. 975 01:11:42,090 --> 01:11:45,360 Tapi operasi shell dapat membaca variabel shell. 976 01:11:45,360 --> 01:11:50,710 Itu tidak akan bekerja untuk csh. Itu hanya tcsh. Itulah salah satu perangkat tambahan. 977 01:11:58,540 --> 01:12:04,620 Parsing memiliki urutan ketika mengevaluasi metakarakter, 978 01:12:04,620 --> 01:12:08,140 ketika mengevaluasi variabel, alias, sejarah referensi. 979 01:12:08,140 --> 01:12:11,830 Ada urutan tertentu untuk hal-hal ini. 980 01:12:11,830 --> 01:12:13,730 Jika melakukan hal-hal dalam urutan tertentu 981 01:12:13,730 --> 01:12:16,080 dan sampai ke sesuatu yang merupakan ekspresi semacam sebuah 982 01:12:16,080 --> 01:12:20,650 yang telah dievaluasi, itu tidak akan mengevaluasi lagi. 983 01:12:20,650 --> 01:12:24,520 Jika mendapatkannya, maka hanya akan lulus pada karakter. 984 01:12:24,520 --> 01:12:29,920 Jadi, jika evaluasi beberapa ekspresi seperti substitusi perintah 985 01:12:29,920 --> 01:12:36,850 atau variabel atau apa pun menimbulkan ekspresi 986 01:12:36,850 --> 01:12:39,240 yang akan Anda ingin dievaluasi, 987 01:12:39,240 --> 01:12:42,510 yang akan bekerja hanya jika evaluasi yang terjadi kemudian dalam urutan. 988 01:12:42,510 --> 01:12:45,010 Saya harap saya menjadi jelas di sana. 989 01:12:45,010 --> 01:12:50,460 Itu urutan parsing, operasi di C-shell, 990 01:12:50,460 --> 01:12:56,490 tidak sama untuk built-in perintah seperti itu untuk non-built-in perintah. 991 01:12:56,490 --> 01:12:58,890 Saya tidak yakin tentang Bash sana. 992 01:12:58,890 --> 01:13:02,450 Sebagai contoh, jika sebuah variabel shell menghasilkan referensi sejarah, 993 01:13:02,450 --> 01:13:04,230 mungkin tidak akan kembali dalam sejarah. 994 01:13:04,230 --> 01:13:06,010 Itu hanya akan mendapatkan tanda seru. 995 01:13:06,010 --> 01:13:08,840 Bahkan, kita bisa mencoba yang keluar sekarang. 996 01:13:09,720 --> 01:13:18,240 menetapkan = dan kita harus menempatkan ini dalam sana. 997 01:13:30,690 --> 01:13:34,580 Oh, tunggu. Maaf. Saya melakukan ini di Bash. Saya ingin melakukannya di sini. 998 01:13:53,470 --> 01:13:56,080 Lihat, sehingga tidak mengevaluasi bahwa referensi sejarah 999 01:13:56,080 --> 01:14:00,520 karena itu sudah melewati titik mengevaluasi ekspresi sejarah 1000 01:14:00,520 --> 01:14:02,720 ketika dievaluasi variabel. 1001 01:14:02,720 --> 01:14:05,550 Jadi itulah 1 pengaruh parsing. 1002 01:14:05,550 --> 01:14:08,760 Dan lagi, built-in perintah tidak dilakukan dengan cara yang sama. 1003 01:14:08,760 --> 01:14:11,230 Baik. Mari kita pergi ke yang berikutnya di sini. 1004 01:14:11,230 --> 01:14:16,060 Hal ini dimaksudkan untuk menjadi 1 garis, tapi itu membuatnya lebih mudah untuk dibaca. 1005 01:14:19,130 --> 01:14:21,530 Apa artinya itu lakukan? 1006 01:14:21,530 --> 01:14:28,640 Anda mungkin ingat bahwa kita dapat mengevaluasi tanda bintang sebagai wildcard nama file, 1007 01:14:28,640 --> 01:14:33,890 dan ada wildcard nama file lain seperti tanda tanya dan ekspresi braket. 1008 01:14:33,890 --> 01:14:39,000 Semacam itu evaluasi disebut globbing. 1009 01:14:39,000 --> 01:14:46,290 mengatur noglob pada awal perintah ini mengatakan jangan lakukan itu. 1010 01:14:46,290 --> 01:14:53,370 noglob unset mengatakan kembali untuk melakukan hal itu. 1011 01:14:53,370 --> 01:14:56,440 Perhatikan bahwa set glob tidak akan memiliki efek tersebut. 1012 01:14:56,440 --> 01:15:00,800 Dalam bahasa biasa, mengatur gumpal atau noglob unset tampaknya akan menjadi setara, 1013 01:15:00,800 --> 01:15:03,290 tapi di sini tidak. Ini noglob diset. 1014 01:15:05,120 --> 01:15:07,910 Sekarang uji di. uji di berdiri untuk set terminal. 1015 01:15:07,910 --> 01:15:11,840 Ini tidak digunakan yang sering sekarang, tapi sebelum sistem windowing menjadi tersedia 1016 01:15:11,840 --> 01:15:15,760 dan Anda memiliki terminal tunggal, Anda mungkin harus menentukan jenis. 1017 01:15:15,760 --> 01:15:18,700 Dan jika ada sesuatu yang datang melalui Ethernet atau dari jaringan, 1018 01:15:18,700 --> 01:15:21,120 Anda mungkin ingin mengatakan itu vt100 a. 1019 01:15:21,120 --> 01:15:26,630 VT100 adalah jenis standar dalam bisnis terminal. Ini berasal dari terminal Desember. 1020 01:15:26,630 --> 01:15:35,270 Jika Anda hanya melakukan dialup - melihat bahwa? Ini kembali cara, ya? 1021 01:15:35,270 --> 01:15:39,520 Jadi, jika kita hanya uji di atas sini, 1022 01:15:39,520 --> 01:15:45,250 jika saya hanya melakukan uji di, itu ulang terminal saya, tapi Anda tidak melihat apa-apa. 1023 01:15:45,250 --> 01:15:47,340 Itu tidak benar-benar mengubah apa pun. 1024 01:15:47,340 --> 01:15:48,620 -S 1025 01:15:49,900 --> 01:15:51,480 Oke. 1026 01:15:51,480 --> 01:15:53,350 JANGKA setenv xterm-color. 1027 01:15:53,350 --> 01:15:57,080 Kita sudah tahu bahwa istilah itu ditetapkan seperti itu, sehingga tidak berubah. 1028 01:15:57,080 --> 01:15:58,860 Itulah cara kita ingin melakukannya. 1029 01:15:58,860 --> 01:16:07,080 Tetapi perhatikan bahwa perintah, uji di-s, hanya output ini perintah ini. Itu tidak menjalankannya. 1030 01:16:07,080 --> 01:16:09,770 Itu tidak menjalankan perintah-perintah ini, melainkan output mereka. 1031 01:16:09,770 --> 01:16:13,650 Jadi ini dimaksudkan untuk menghasilkan perintah yang kemudian akan dijalankan. 1032 01:16:13,650 --> 01:16:16,360 Anda ingat perintah dalam file yang saya hanya menunjukkan Anda memiliki Q di dalamnya. 1033 01:16:16,360 --> 01:16:18,910 Jadi mari kita lakukan itu. 1034 01:16:18,910 --> 01:16:23,750 The Q menekan beberapa output, tapi itu tidak masalah di sini, seperti yang Anda lihat. 1035 01:16:23,750 --> 01:16:27,980 Aku hanya melakukan itu untuk menunjukkan bahwa itu tidak masalah. 1036 01:16:27,980 --> 01:16:31,870 Hal ini sintaks backquote. 1037 01:16:31,870 --> 01:16:35,340 Catatan backquote di sini, backquote sini. 1038 01:16:35,340 --> 01:16:37,680 Aku mengabaikan hal-hal ini di sini. 1039 01:16:37,680 --> 01:16:39,570 Ini adalah kasus memberitahu apa yang harus dilakukan 1040 01:16:39,570 --> 01:16:42,050 dalam kasus jenis tertentu terminal - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, jaringan, dialup, apa yang telah Anda. 1042 01:16:45,400 --> 01:16:48,050 Tidak peduli di sini karena kita tidak benar-benar melakukan hal-hal itu. 1043 01:16:48,050 --> 01:16:49,720 Aku hanya menggambarkan perintah. 1044 01:16:49,720 --> 01:16:55,170 Jika saya melakukan ini dengan backquote, apa yang akan saya dapatkan? 1045 01:16:55,170 --> 01:17:00,210 Juga perhatikan di sini bahwa ini termasuk noglob set dan noglob diset, 1046 01:17:00,210 --> 01:17:02,630 sehingga mereka sekarang redundan dalam definisi. 1047 01:17:02,630 --> 01:17:05,380 Itu tidak selalu benar, tapi sekarang mereka termasuk dalam perintah ini. 1048 01:17:05,380 --> 01:17:08,890 Tapi mari kita lihat apa yang terjadi jika saya melakukan itu 1049 01:17:08,890 --> 01:17:12,570 dan pergi ke awal baris dengan Control A dan aku melakukan itu. 1050 01:17:14,380 --> 01:17:18,040 Oke, set: Perintah tidak ditemukan. Itu agak aneh, bukan? 1051 01:17:18,040 --> 01:17:20,570 set adalah perintah terkenal. Ini bagian dari shell. 1052 01:17:20,570 --> 01:17:24,040 set: Perintah tidak ditemukan? Mengapa demikian? 1053 01:17:24,040 --> 01:17:26,790 Hmm. Nah, mari kita berpikir tentang hal ini. 1054 01:17:26,790 --> 01:17:31,100 Ini menjalankan perintah substitusi backquote, 1055 01:17:31,100 --> 01:17:37,430 dan yang terjadi pada bagian tertentu dari urutan parsing perintah. 1056 01:17:37,430 --> 01:17:40,360 set adalah perintah built-in. 1057 01:17:40,360 --> 01:17:43,900 Jadi pada saat itu tidak bahwa substitusi perintah, 1058 01:17:43,900 --> 01:17:48,280 itu sudah berhasil melewati titik mengidentifikasi built-in perintah. 1059 01:17:48,280 --> 01:17:51,900 Jadi memperlakukan diatur seolah-olah perintah di jalan. 1060 01:17:51,900 --> 01:17:55,440 Tak perlu dikatakan, itu tidak menemukannya dan Anda mendapatkan pesan kesalahan. 1061 01:17:55,440 --> 01:17:59,300 Yah. Ada contoh urutan parsing. 1062 01:17:59,300 --> 01:18:01,460 Dan apa yang kita lakukan tentang hal itu? 1063 01:18:01,460 --> 01:18:04,800 Perhatikan perintah yang sangat menarik ini di sini, eval. 1064 01:18:04,800 --> 01:18:06,530 Aku ingin tahu apa yang tidak. 1065 01:18:06,530 --> 01:18:08,760 Jika Anda melihat manual - dan mari kita hanya melakukan itu 1066 01:18:08,760 --> 01:18:12,000 untuk menunjukkan bagaimana membingungkan manual ini - 1067 01:18:12,000 --> 01:18:19,400 man tcsh, panduan bingung, menemukan hal-hal di sini tidak mudah baik. 1068 01:18:19,400 --> 01:18:31,850 Di sini kita pergi, eval arg, sehingga kami dapat memiliki 1 atau lebih argumen 1069 01:18:31,850 --> 01:18:34,090 dan ada daftar hal-hal di sana. 1070 01:18:34,090 --> 01:18:37,730 Memperlakukan argumen sebagai masukan untuk shell 1071 01:18:37,730 --> 01:18:43,600 dan mengeksekusi perintah yang dihasilkan dalam konteks shell saat ini. 1072 01:18:43,600 --> 01:18:46,900 Hal ini biasanya digunakan untuk menjalankan perintah yang dihasilkan sebagai hasil dari perintah 1073 01:18:46,900 --> 01:18:51,310 atau substitusi variabel karena parsing terjadi sebelum penggantian ini. 1074 01:18:51,310 --> 01:18:52,580 Sangat bagus. 1075 01:18:52,580 --> 01:18:54,740 Dan di sini mereka bahkan menyebut perintah uji di untuk penggunaan sampel 1076 01:18:54,740 --> 01:18:57,700 seperti saya hanya menunjukkan Anda. 1077 01:18:57,700 --> 01:19:00,440 Sekarang aku harus mendapatkan jendela kembali 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 terjadi jika kita menempatkan - di sini kita pergi dengan tanda panah untuk perintah yang 1080 01:19:14,010 --> 01:19:20,940 dan Pengendalian A ke awal, eval. 1081 01:19:20,940 --> 01:19:22,850 Oke, sehingga bekerja. 1082 01:19:22,850 --> 01:19:26,440 Ketika Anda melakukan eval, dibutuhkan apa yang terjadi setelah itu dan membuat perintah. 1083 01:19:26,440 --> 01:19:29,460 Hal ini memungkinkan Anda untuk dasarnya mengurai dua kali. 1084 01:19:29,460 --> 01:19:33,710 Bagian di sini menjalankan perintah ini dalam backquotes, 1085 01:19:33,710 --> 01:19:36,210 mendapatkan output. 1086 01:19:36,210 --> 01:19:42,850 Output seharusnya dijalankan sebagai perintah-perintah seperti ini di sini 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 Jadi perintah-perintah tersebut sekarang di sini dalam urutan ini, 1089 01:19:50,100 --> 01:19:58,950 tetapi ini built-in perintah dan tidak bisa mendapatkan mereka segera. 1090 01:19:58,950 --> 01:20:06,440 Jadi kita pergi ke eval, eval mengambil bahwa sampai, mulai semuanya dari awal lagi, dan bekerja. 1091 01:20:06,440 --> 01:20:18,460 Contoh kedua backquoting, eval, parsing, konsekuensi parsing, 1092 01:20:18,460 --> 01:20:21,910 dan perintah yang mungkin sangat sedikit berguna bagi Anda saat ini. 1093 01:20:21,910 --> 01:20:25,540 Oke. Baiklah, umask. 1094 01:20:25,540 --> 01:20:32,160 Mari kita lihat perintah ini di sini, unmask 022. Aku ingin tahu apa yang tidak. 1095 01:20:32,160 --> 01:20:38,420 Mari kita ketik umask dengan apa-apa setelah itu. 22. Oke. 1096 01:20:38,420 --> 01:20:44,350 022 dan melakukannya lagi. 1097 01:20:44,350 --> 01:20:48,580 Seperti yang sudah bisa anda duga, umask tanpa argumen memberitahu Anda topeng saat ini; 1098 01:20:48,580 --> 01:20:51,760 unmask dengan argumen membuat itu, tapi itu yang saya sudah punya. 1099 01:20:51,760 --> 01:20:53,800 Apa artinya 022? 1100 01:21:01,650 --> 01:21:07,080 Ini adalah di sini perlindungan untuk file. 1101 01:21:07,080 --> 01:21:11,440 Mereka menentukan siapa yang diizinkan untuk membaca atau menulis atau mengeksekusi file. 1102 01:21:11,440 --> 01:21:16,560 Perlindungan juga disebut izin. 1103 01:21:16,560 --> 01:21:21,390 R singkatan baca, w untuk write, 1104 01:21:21,390 --> 01:21:25,500 dan x, yang tidak hadir di sana, singkatan mengeksekusi. 1105 01:21:25,500 --> 01:21:27,260 Ada 3 kategori di sana. 1106 01:21:27,260 --> 01:21:33,540 3 elemen terakhir adalah dalam kategori pengguna. Mereka berlaku untuk saya, pengguna. 1107 01:21:33,540 --> 01:21:36,870 Ini 3 di sini berlaku untuk kelompok. 1108 01:21:36,870 --> 01:21:41,590 File milik kelompok 1, pengguna mungkin milik beberapa kelompok, 1109 01:21:41,590 --> 01:21:47,150 tetapi jika pengguna berada dalam kelompok yang file ini milik, 1110 01:21:47,150 --> 01:21:51,090 maka perlindungan ini akan berlaku untuk dia jika dia bukan pengguna. 1111 01:21:51,090 --> 01:21:54,230 Dan yang satu ini adalah orang lain. 1112 01:21:55,540 --> 01:21:57,690 Kategori-kategori ini saling eksklusif. 1113 01:21:57,690 --> 01:21:59,750 Perlindungan pengguna berlaku baginya, 1114 01:21:59,750 --> 01:22:03,780 perlindungan kelompok berlaku untuk anggota kelompok selain pengguna, 1115 01:22:03,780 --> 01:22:08,110 dan perlindungan lain hanya berlaku untuk orang-orang selain pengguna dan anggota kelompok. 1116 01:22:08,110 --> 01:22:12,320 Jika ada r atau aw atau x, itu berarti bahwa perlindungan yang diberikan. 1117 01:22:12,320 --> 01:22:13,950 Jika ada tanda hubung, itu berarti tidak. 1118 01:22:13,950 --> 01:22:16,690 Sebenarnya ada hal lain yang dapat diletakkan di sini selain ini, 1119 01:22:16,690 --> 01:22:18,350 yang saya tidak akan masuk ke sekarang. 1120 01:22:18,350 --> 01:22:24,450 Umask mendefinisikan default untuk file yang Anda buat. 1121 01:22:24,450 --> 01:22:28,580 Dan sebagai masker, pada dasarnya ia mengatakan bit yang Anda tidak menetapkan. 1122 01:22:28,580 --> 01:22:30,450 Bagaimana ini menjadi bit? 1123 01:22:30,450 --> 01:22:33,240 Jika Anda berpikir dari masing-masing sebagai bilangan oktal, 1124 01:22:33,240 --> 01:22:42,120 ini adalah bit 1s, ini adalah 2s, ini adalah 4s. 1125 01:22:42,120 --> 01:22:45,840 Jadi 0 sampai 7 1126 01:22:45,840 --> 01:22:51,770 akan menjelaskan apa kombinasi r, w, dan x yang Anda miliki untuk 3 tersebut 1127 01:22:51,770 --> 01:22:53,710 dan kemudian jumlah yang sama untuk ini dan kemudian untuk ini. 1128 01:22:53,710 --> 01:23:12,030 Jadi 022 berarti 0 untuk lainnya, 2 untuk kelompok, 2 bagi pengguna. 1129 01:23:12,030 --> 01:23:15,870 Tapi ini adalah masker. Mask adalah apa yang Anda tidak memiliki. 1130 01:23:19,380 --> 01:23:20,610 Maafkan aku. Saya hanya memberikan Anda hal-hal dalam urutan yang salah. 1131 01:23:20,610 --> 01:23:25,620 Ini adalah pertama 3. 3 Ini adalah pengguna, 3 ini adalah kelompok, 3 ini adalah yang lain. 1132 01:23:25,620 --> 01:23:27,970 Maaf saya memberi Anda ini dalam urutan yang salah. 1133 01:23:27,970 --> 01:23:31,910 0, yang merupakan pertama dari mereka, tidak menampilkan nilai, 1134 01:23:31,910 --> 01:23:35,430 tetapi jika nomor tidak ada, itu adalah 0. 1135 01:23:35,430 --> 01:23:38,370 Itu berarti semua 3 dari ini akan diizinkan. 1136 01:23:38,370 --> 01:23:41,550 Perhatikan bahwa dalam satu ini x tidak diperbolehkan. 1137 01:23:41,550 --> 01:23:44,090 Alasannya adalah bahwa shell yang mampu menentukan 1138 01:23:44,090 --> 01:23:46,260 apakah file harus dijalankan atau tidak. 1139 01:23:46,260 --> 01:23:49,800 Karena ini bukan merupakan file executable, itu tidak mengatur x. 1140 01:23:49,800 --> 01:23:54,000 2 berarti yang menulis izin, kategori kedua di sini, 1141 01:23:54,000 --> 01:23:56,500 satu di tengah, ditolak. 1142 01:23:56,500 --> 01:23:58,500 Jadi sekali lagi, ini adalah hal yang ditolak. 1143 01:23:58,500 --> 01:24:02,080 Nah, x diperbolehkan tapi tidak di sini karena itu tidak dapat dieksekusi 1144 01:24:02,080 --> 01:24:04,260 dan juga untuk orang lain. 1145 01:24:04,260 --> 01:24:08,880 Jadi itu adalah umask umum. 1146 01:24:08,880 --> 01:24:14,630 Yang umum lainnya adalah 700 - memberikan diri segala sesuatu 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 Aku akan kembali ke itu. Menggunakan sejarah saya dapat mencari kembali untuk itu, LWH ke sana. 1149 01:24:27,110 --> 01:24:30,210 Oke. Jadi di sini, ini adalah kerang. 1150 01:24:30,210 --> 01:24:36,020 Bash, pemilik yang akun sistem, dapat melakukan segalanya. 1151 01:24:36,020 --> 01:24:41,210 Kelompok dan orang lain dapat melakukan membaca atau mengeksekusi tapi tidak menulis. 1152 01:24:41,210 --> 01:24:44,570 Yang satu ini bahkan tidak memungkinkan pemiliknya untuk menulis untuk itu. 1153 01:24:44,570 --> 01:24:46,460 Jika pemilik ingin menulis untuk itu, account sistem, 1154 01:24:46,460 --> 01:24:48,020 ia harus mengubah perlindungan pertama. 1155 01:24:48,020 --> 01:24:53,940 Tapi sekali lagi, umask set default dengan menutupi 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 Hal ini biasanya di salah satu file inisialisasi Anda, yang merupakan cshrc untuk C-shell. 1158 01:25:04,380 --> 01:25:07,500 atau profil untuk kerang Bourne-type.. 1159 01:25:07,500 --> 01:25:12,520 Hal ini dapat di tempat lain juga jika ada file inisialisasi lain pada sistem. 1160 01:25:12,520 --> 01:25:14,610 Lagi pula, itu umask. 1161 01:25:14,610 --> 01:25:18,180 Ada sesuatu yang agak aneh di sini, 1162 01:25:18,180 --> 01:25:22,800 dan itu adalah, mengapa ada satu perintah untuk ini? 1163 01:25:22,800 --> 01:25:28,690 Jika saya sedang menulis ini, saya akan membuat sebuah variabel, umask = beberapa nilai. 1164 01:25:28,690 --> 01:25:31,100 Mengapa ada perintah keseluruhan hanya untuk tujuan ini? 1165 01:25:31,100 --> 01:25:34,560 Alasannya adalah ini hanya akan kembali ke asal-usul Unix. 1166 01:25:34,560 --> 01:25:41,050 Unix itu hanya beberapa proyek pemrograman di Bell Labs pada awal tahun 1970. 1167 01:25:41,050 --> 01:25:42,610 Orang-orang hanya berkumpul program. 1168 01:25:42,610 --> 01:25:45,290 Mereka tidak pernah dimaksudkan untuk menjadi sistem operasi di seluruh dunia. 1169 01:25:45,290 --> 01:25:47,250 Orang yang berbeda menulis bagian yang berbeda tanpa berpikir sangat banyak 1170 01:25:47,250 --> 01:25:49,790 bagaimana mereka akan digunakan - agak samar. 1171 01:25:49,790 --> 01:25:53,290 Dan itu datang bersama-sama seperti itu, dan itu masih seperti itu dalam beberapa hal. 1172 01:25:53,290 --> 01:25:57,930 Jadi yang mencerminkan sejarah, dan masih ada inkonsistensi tersebut dan elemen aneh itu. 1173 01:25:57,930 --> 01:26:00,750 Oke. Berikutnya satu di sini. 1174 01:26:08,170 --> 01:26:11,000 Seperti yang saya tulis sebelumnya, C-shell tidak benar-benar digunakan sangat banyak untuk pemrograman, 1175 01:26:11,000 --> 01:26:12,420 meskipun bisa. 1176 01:26:12,420 --> 01:26:15,080 Dijalankan lebih lambat, lagi trade-off antara penggunaan interaktif, 1177 01:26:15,080 --> 01:26:17,820 yang memiliki lebih pengolahan terlibat daripada kecepatan, 1178 01:26:17,820 --> 01:26:20,710 yang dapat melakukannya tanpa pengolahan. 1179 01:26:20,710 --> 01:26:28,320 Fitur tambahan ditambahkan ke shell Bourne oleh Korn dan Bourne-lagi kerang 1180 01:26:28,320 --> 01:26:32,120 tampaknya tidak memperlambat mereka, dan saya tidak tahu mengapa itu. 1181 01:26:32,120 --> 01:26:36,310 Ini mungkin saja pemrograman yang lebih baik, tapi aku tidak dalam posisi untuk tahu. 1182 01:26:36,310 --> 01:26:40,420 Kecepatan di sini sebenarnya bukan masalah besar, meskipun disebutkan. 1183 01:26:40,420 --> 01:26:43,690 Alasannya adalah bahwa script shell benar-benar mendapatkan cukup cepat. 1184 01:26:43,690 --> 01:26:46,450 Jika ada banyak perintah seperti dalam program kalkulasional 1185 01:26:46,450 --> 01:26:49,110 Anda mungkin tidak akan melakukannya dalam shell script. 1186 01:26:49,110 --> 01:26:51,450 Operasi ada cukup sederhana dan mudah. 1187 01:26:51,450 --> 01:26:53,960 Orang-orang yang saya alami yang terlalu lambat 1188 01:26:53,960 --> 01:26:57,110 melibatkan aplikasi berulang-ulang perintah lambat. 1189 01:26:57,110 --> 01:27:00,480 Sebelumnya saya sebutkan editor aliran sed. Perintah yang lambat. 1190 01:27:00,480 --> 01:27:03,760 Jika Anda menjalankan sed berkali-kali, Anda akan mendapatkan script yang lambat, tapi itu bukan shell yang lambat. 1191 01:27:03,760 --> 01:27:07,920 Menjalankan dalam Bourne shell tidak akan jauh lebih cepat daripada menjalankannya di C-shell, 1192 01:27:07,920 --> 01:27:10,070 meskipun ada mungkin beberapa keuntungan di sana. 1193 01:27:10,070 --> 01:27:12,760 Kemampuan pemrograman tambahan, di sisi lain, 1194 01:27:12,760 --> 01:27:17,920 adalah alasan penting mengapa Anda akan menggunakan kerang Bourne-type. 1195 01:27:17,920 --> 01:27:21,390 C-shell memiliki fitur aneh itu - 1196 01:27:21,390 --> 01:27:25,250 kenyataan bahwa Anda tidak tahu apakah variabel adalah variabel shell atau variabel lingkungan. 1197 01:27:25,250 --> 01:27:27,440 Hal ini dapat sangat membingungkan. 1198 01:27:27,440 --> 01:27:32,170 Ini tidak begitu mudah untuk menulis 1199 01:27:32,170 --> 01:27:35,930 hanya berdasarkan pengalaman Anda pemrograman dalam bahasa lain. 1200 01:27:35,930 --> 01:27:41,350 Saya pikir Anda mungkin menemukan kerang Bourne-jenis yang lebih konsisten dengan pengalaman Anda. 1201 01:27:43,730 --> 01:27:49,270 Beberapa script, meskipun, bisa ribuan baris panjang. 1202 01:27:49,270 --> 01:27:52,450 Mereka yang pernah saya lihat adalah digunakan untuk menambal sistem operasi. 1203 01:27:52,450 --> 01:27:55,450 Mereka dapat mengeksekusi sangat lambat, tetapi Anda tidak menjalankan mereka sangat sering. 1204 01:27:55,450 --> 01:27:57,180 Hanya ketika Anda melakukan patching, 1205 01:27:57,180 --> 01:27:59,450 dan itu hanya manajer sistem yang melakukan hal-hal, 1206 01:27:59,450 --> 01:28:01,840 sehingga tidak benar-benar banyak masalah. 1207 01:28:01,840 --> 01:28:06,980 Mereka yang ratusan garis panjang benar-benar melaksanakan cukup cepat. 1208 01:28:06,980 --> 01:28:10,540 Menyebutkan ini di sini, apa perangkat tersebut? 1209 01:28:10,540 --> 01:28:13,170 Saya telah menyebutkan beberapa dari mereka - array, perhitungan, 1210 01:28:13,170 --> 01:28:20,540 yang $ () ekspresi untuk perhitungan di Bash shell, 1211 01:28:20,540 --> 01:28:23,050 jenis lain dari substitusi perintah. 1212 01:28:23,050 --> 01:28:25,360 Ada berbagai jenis perintah pengujian 1213 01:28:25,360 --> 01:28:29,350 dengan mana Anda dapat melakukan tes tergantung pada keberadaan file atau hal-hal lain. 1214 01:28:29,350 --> 01:28:34,790 Terakhir di sini, perintah ini di sini. 1215 01:28:34,790 --> 01:28:38,480 Apa yang dilakukan ini, dan mengapa ada orang yang menggunakannya? 1216 01:28:51,170 --> 01:28:52,990 variableName printenv. 1217 01:28:52,990 --> 01:28:56,130 Kami tahu apa yang printenv tidak. Ini memberitahu kita nilai dari variabel. 1218 01:28:56,130 --> 01:29:00,850 Dan variableName printenv tidak akan memberitahu kita sangat banyak karena tidak ada variabel tersebut. 1219 01:29:03,550 --> 01:29:05,120 Kosong. 1220 01:29:05,120 --> 01:29:08,440 Tapi mari kita memberikan sesuatu yang berarti. 1221 01:29:13,420 --> 01:29:16,800 Itu tidak ada di sana. Oke. Kurasa aku tidak pernah didefinisikan itu. 1222 01:29:16,800 --> 01:29:18,020 Mari kita memeriksa lingkungan saya. 1223 01:29:18,020 --> 01:29:20,900 Ini adalah perintah lain dengan mana Anda dapat memeriksa lingkungan Anda. 1224 01:29:20,900 --> 01:29:24,470 Ada EDITOR tua yang baik, yang kita lihat sebelumnya. 1225 01:29:42,360 --> 01:29:44,120 Apa artinya itu lakukan? 1226 01:29:44,120 --> 01:29:48,050 Di sini kita memiliki ekspresi 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 memberi kita nilai EDITOR. Ini vi. 1229 01:29:54,850 --> 01:29:59,790 Dan kemudian akan menetapkan nilai bahwa untuk variabel, perintah set. 1230 01:29:59,790 --> 01:30:02,860 Jadi sekarang jika saya lakukan echo $, saya mendapatkan vi. 1231 01:30:02,860 --> 01:30:05,850 Itu tampaknya tidak terlalu berguna. 1232 01:30:05,850 --> 01:30:08,080 Namun, yang sebenarnya memiliki tujuan. 1233 01:30:08,080 --> 01:30:12,260 Karena kita tidak tahu apakah suatu variabel adalah variabel shell atau variabel lingkungan 1234 01:30:12,260 --> 01:30:16,280 dengan menggunakan sintaks evaluasi tanda dolar, kita bisa menggunakan printenv 1235 01:30:16,280 --> 01:30:19,460 untuk memastikan bahwa itu adalah variabel lingkungan. 1236 01:30:19,460 --> 01:30:22,550 Jadi, jika ada shell variabel editor ini tidak akan mendapatkan itu. 1237 01:30:22,550 --> 01:30:25,640 Ini bekerja hanya dengan variabel lingkungan. 1238 01:30:25,640 --> 01:30:28,370 Jika ada variabel shell dan saya ingin nilainya, 1239 01:30:28,370 --> 01:30:29,980 Aku harus mencari cara lain untuk melakukannya. 1240 01:30:29,980 --> 01:30:33,530 Salah satu cara untuk melakukan itu akan dengan melakukan set dan pipa. 1241 01:30:33,530 --> 01:30:36,130 Ini adalah salah satu metakarakter, karakter khusus. 1242 01:30:36,130 --> 01:30:38,370 Ia mengirimkan output dari set ke sesuatu yang lain. 1243 01:30:38,370 --> 01:30:40,650 Mari kita lihat apa yang kita temukan di sana. 1244 01:30:40,650 --> 01:30:49,340 Tidak ada. Oke. Mari kita lihat apa yang ada di sana bersama-sama. 1245 01:30:49,340 --> 01:30:53,580 Itu echo_style, yang saya sebutkan sebelumnya. Oke, mari kita lakukan itu. 1246 01:31:02,460 --> 01:31:06,230 Ingat saya sebutkan sebelumnya, echo_style 1247 01:31:06,230 --> 01:31:08,410 menentukan cara perintah echo akan berjalan. 1248 01:31:08,410 --> 01:31:10,940 bsd singkatan dari Berkeley Standard Distribution. 1249 01:31:10,940 --> 01:31:13,200 Ini adalah Unix Berkeley dari tahun 1970-an. 1250 01:31:13,200 --> 01:31:16,630 Itulah salah satu cara yang echo dapat berjalan. 1251 01:31:16,630 --> 01:31:22,310 Mengatur echo_style nilai yang di TC-shell akan menyebabkan gema untuk berperilaku seperti itu. 1252 01:31:22,310 --> 01:31:27,670 Jadi mengatur melakukan itu, tapi set hanya mendapat variabel shell. 1253 01:31:27,670 --> 01:31:35,430 Ini tidak akan menemukan EDITOR, yang bukan merupakan variabel shell. 1254 01:31:36,870 --> 01:31:38,050 Tidak ada. 1255 01:31:38,050 --> 01:31:39,660 Jadi itu salah satu cara untuk membedakan mereka. 1256 01:31:39,660 --> 01:31:42,000 Tapi fakta bahwa Anda harus pergi melalui beberapa perintah yang aneh seperti itu 1257 01:31:42,000 --> 01:31:45,500 untuk membedakan antara variabel shell atau variabel lingkungan 1258 01:31:45,500 --> 01:31:49,970 menunjukkan jenis sifat praktis dari C-shell untuk beberapa tujuan. 1259 01:31:52,290 --> 01:31:57,960 Dan sekarang, terakhir dan mungkin paling tidak, ini adalah halaman manual. 1260 01:31:57,960 --> 01:32:03,190 Bagi siapa Anda mungkin tahu, orang itu adalah perintah pendek untuk manual. 1261 01:32:03,190 --> 01:32:08,610 Halaman manual untuk kerang sulit untuk dibaca. Mereka sangat panjang. 1262 01:32:08,610 --> 01:32:14,060 Mereka terorganisir dalam cara yang dapat membuat sulit untuk menemukan apa yang Anda cari. 1263 01:32:14,060 --> 01:32:15,980 Jadi jika Anda sedang mencari sesuatu dengan tujuan, 1264 01:32:15,980 --> 01:32:20,050 Anda mungkin tidak tahu apakah tujuan itu adalah variabel shell atau sesuatu yang lain, 1265 01:32:20,050 --> 01:32:21,630 sehingga Anda mungkin tidak tahu di mana mencarinya. 1266 01:32:21,630 --> 01:32:25,030 Anda dapat mencari berbagai string, tapi string sering diulang. 1267 01:32:25,030 --> 01:32:27,640 Sehingga umumnya sulit untuk dibaca. 1268 01:32:27,640 --> 01:32:33,810 Kami hanya melihat halaman manual TC-shell sedikit sebelum menemukan perintah eval. 1269 01:32:33,810 --> 01:32:36,610 Beberapa hal lebih cepat. 1270 01:32:36,610 --> 01:32:38,860 Satu pendekatan adalah untuk mencari string. 1271 01:32:38,860 --> 01:32:40,360 Anda dapat menggunakan pager. 1272 01:32:40,360 --> 01:32:49,080 Pager memiliki garis miring untuk mencari perintah atau string dalam operasi pager. 1273 01:32:49,080 --> 01:32:52,830 Man secara default akan menggunakan pager, berupa LEBIH atau KURANG. 1274 01:32:52,830 --> 01:32:56,560 Saya tidak tahu jika Anda terbiasa dengan mereka, tetapi mereka dapat menampilkan file sedikit demi sedikit. 1275 01:32:56,560 --> 01:33:00,550 Saya telah menggunakan KURANG untuk menampilkan file-file tertentu yang kita punya di sini. 1276 01:33:00,550 --> 01:33:03,300 Anda dapat mencari di dalam sana. 1277 01:33:03,300 --> 01:33:04,880 Anda dapat mencoba menggunakan string pencarian yang berbeda. 1278 01:33:04,880 --> 01:33:08,420 Juga halaman manual dalam sistem operasi yang berbeda mungkin tidak sama. 1279 01:33:08,420 --> 01:33:11,130 Mereka bisa menjadi halaman terpisah untuk csh dan tcsh. 1280 01:33:11,130 --> 01:33:14,500 Mereka tidak berada pada Mac, tetapi mereka mungkin jika mereka adalah perintah yang terpisah. 1281 01:33:14,500 --> 01:33:19,000 Jika sh tidak benar-benar memanggil Bash, mungkin akan ada halaman manual yang terpisah. 1282 01:33:19,000 --> 01:33:25,820 Beberapa sistem memiliki halaman manual yang terpisah hanya untuk C-shell built-in perintah. 1283 01:33:25,820 --> 01:33:30,250 Kadang-kadang jika Anda ingin membaca deskripsi perintah built-in 1284 01:33:30,250 --> 01:33:35,350 itu juga di jalan, seperti echo, Anda perlu membaca halaman manual pada itu perintah pada gema 1285 01:33:35,350 --> 01:33:37,610 untuk menentukan bagaimana ia akan bekerja sebagai perintah built-in 1286 01:33:37,610 --> 01:33:39,760 bahkan jika Anda tidak memanggil perintah built-in. 1287 01:33:41,630 --> 01:33:46,090 Itu kelemahan dari sistem operasi pada umumnya, tidak hanya untuk kerang, 1288 01:33:46,090 --> 01:33:50,710 meskipun untuk kerang khususnya halaman manual yang cukup lama, 1289 01:33:50,710 --> 01:33:56,180 sebagian karena mereka telah menambahkan fitur yang berguna untuk mereka, yang mungkin menjadi positif. 1290 01:33:56,180 --> 01:34:00,290 Oke. Apakah ada pertanyaan? Setiap topik yang Anda ingin membawa up? 1291 01:34:00,290 --> 01:34:03,390 Sesuatu yang relevan di sini? 1292 01:34:04,540 --> 01:34:07,100 Nah, sudah sangat bagus berbicara dengan Anda semua. 1293 01:34:07,100 --> 01:34:09,690 Saya harap Anda punya sesuatu dari seminar ini 1294 01:34:09,690 --> 01:34:13,080 yang akan berguna bagi Anda di masa depan usaha Anda. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]