1 00:00:00,000 --> 00:00:02,320 >> [Hội thảo - Mai, vỏ Unix, môi trường] 2 00:00:02,320 --> 00:00:04,180 [Douglas Kline - Đại học Harvard] 3 00:00:04,180 --> 00:00:07,160 [Đây là CS50. - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> Chủ đề của ngày hôm nay là Unix. 5 00:00:12,770 --> 00:00:20,600 Tôi Douglas Kline, chuyên gia, hoặc ít nhất là hợp lý người sử dụng có thẩm quyền, của vỏ. 6 00:00:20,600 --> 00:00:25,280 Một vỏ là giao diện cho người sử dụng hệ điều hành của máy tính. 7 00:00:25,280 --> 00:00:29,580 Tên là gây hiểu nhầm như, không giống như vỏ của động vật, 8 00:00:29,580 --> 00:00:34,890 đó là khó khăn và bảo vệ, vỏ máy tính cho phép giao tiếp. 9 00:00:34,890 --> 00:00:39,120 Vì vậy, màng xốp có lẽ sẽ là một phép ẩn dụ tốt hơn. 10 00:00:39,120 --> 00:00:44,500 >> Vỏ ban đầu cho Unix là vỏ Bourne. 11 00:00:44,500 --> 00:00:46,450 Bourne được viết B-O-U-R-N-E. 12 00:00:46,450 --> 00:00:49,770 Bourne là một trong những tác giả ban đầu của Unix, 13 00:00:49,770 --> 00:00:51,700 và do đó vỏ được mang tên ông. 14 00:00:51,700 --> 00:00:54,850 Tên của vỏ như là một lệnh chỉ đơn giản là sh. 15 00:00:54,850 --> 00:00:57,400 Đó là lệnh bạn có thể thực hiện. 16 00:00:57,400 --> 00:01:00,810 Vỏ bắt đầu lúc đăng nhập. 17 00:01:00,810 --> 00:01:04,459 Khi bạn đăng nhập vào máy tính, vỏ chỉ bắt đầu chạy cho bạn, 18 00:01:04,459 --> 00:01:06,820 và đó là những gì có lệnh của bạn. 19 00:01:06,820 --> 00:01:09,790 Nó có thể bắt đầu từ thời điểm khác cũng có. 20 00:01:09,790 --> 00:01:16,780 Nếu bạn đưa ra một cửa sổ không có chỉ dẫn khác, nó sẽ bắt đầu một vỏ cho bạn. 21 00:01:16,780 --> 00:01:20,450 Đó là làm thế nào mà bạn có thể đi đến một cửa sổ và bắt đầu gõ lệnh 22 00:01:20,450 --> 00:01:23,960 và vv có ngay cả khi bạn không đăng nhập vào cửa sổ đó. 23 00:01:23,960 --> 00:01:26,670 Ngoài ra, nếu bạn làm một đăng nhập từ xa, 24 00:01:26,670 --> 00:01:30,250 sau đó nó sẽ bắt đầu một vỏ trên máy tính từ xa. 25 00:01:30,250 --> 00:01:44,310 Và nó có thể chạy các lệnh mà không có một trình bao tương tác. 26 00:01:44,310 --> 00:01:48,990 Điều đó có thể có nghĩa là trong hoạt động hiện tại của bạn, 27 00:01:48,990 --> 00:01:50,700 và nó cũng có thể có nghĩa là một hoạt động từ xa. 28 00:01:50,700 --> 00:01:52,900 Bạn có thể gửi một lệnh đến một máy tính khác, 29 00:01:52,900 --> 00:01:55,460 trong đó bao gồm bắt đầu lên một bao ở đó. 30 00:01:55,460 --> 00:01:57,760 Trong thực tế, nó phải bao gồm bắt đầu lên một vỏ có 31 00:01:57,760 --> 00:02:01,740 ngay cả khi đó không phải là mục đích cuối cùng của bạn. 32 00:02:05,310 --> 00:02:12,350 Khi một cái gì đó bắt đầu như thế này, nó không nhất thiết phải bắt đầu một vỏ mới. 33 00:02:12,350 --> 00:02:17,430 Nếu bạn đưa ra một cửa sổ mới, nó có thể nói cho nó để mang đến một biên tập viên 34 00:02:17,430 --> 00:02:18,940 hoặc một số lệnh khác. 35 00:02:18,940 --> 00:02:20,560 Trong trường hợp đó, biên tập viên sẽ bắt đầu từ đầu. 36 00:02:20,560 --> 00:02:22,930 Khi các biên tập viên kết thúc, cửa sổ kết thúc. 37 00:02:22,930 --> 00:02:24,620 Đây là một chút khác thường nhưng nó có thể được thực hiện. 38 00:02:24,620 --> 00:02:27,140 Trong những trường hợp, nó sẽ không thể là một vỏ. 39 00:02:27,140 --> 00:02:31,890 Vì vậy, nó không nhất thiết phải là trường hợp đó một cửa sổ hoặc một số ứng dụng như vậy sẽ mang đến một trình bao. 40 00:02:31,890 --> 00:02:34,030 >> Shell phân tích lệnh. 41 00:02:34,030 --> 00:02:40,900 Phân tích cú pháp có nghĩa là xác định các yếu tố khác nhau và phân loại chúng. 42 00:02:40,900 --> 00:02:43,470 Trong một lệnh, chuỗi hoàn chỉnh mà bạn gõ, 43 00:02:43,470 --> 00:02:47,310 sẽ có 1 hoặc nhiều lệnh duy nhất để được thực thi. 44 00:02:47,310 --> 00:02:50,050 Các yếu tố khác có thể có những lập luận. 45 00:02:50,050 --> 00:02:55,020 Có cũng có thể là ký tự đặc biệt làm ảnh hưởng đến việc thực hiện một lệnh. 46 00:02:55,020 --> 00:02:59,710 Họ có thể gửi đầu ra ở đâu đó khác hơn so với màn hình 47 00:02:59,710 --> 00:03:01,750 nếu lệnh sẽ thường gửi nó vào màn hình. 48 00:03:01,750 --> 00:03:04,390 Nó có thể chuyển hướng đầu vào, nó có thể làm những việc khác cũng có. 49 00:03:04,390 --> 00:03:08,120 Có biểu tượng khác nhau khác, nhân vật, và vv. 50 00:03:08,120 --> 00:03:13,600 Phân tích liên quan đến việc phát hiện và giải thích những điều đó. 51 00:03:13,600 --> 00:03:19,560 >> Bây giờ, nếu không có nhiều câu hỏi, đó là thay vì có thể vì không có nhiều người hơn, 52 00:03:19,560 --> 00:03:24,620 chúng tôi sẽ tiếp tục trang tiếp theo của tôi ở đây. 53 00:03:24,620 --> 00:03:29,170 >> Tôi đã nói trước đó rằng Bourne vỏ là vỏ ban đầu. 54 00:03:29,170 --> 00:03:31,550 Có những người khác. 55 00:03:31,550 --> 00:03:34,520 Một là C-shell. Lệnh là csh. 56 00:03:34,520 --> 00:03:36,830 Tên C-vỏ chỉ là một cách chơi chữ. 57 00:03:36,830 --> 00:03:41,260 Vỏ này đã được giới thiệu với Berkeley Unix trong giữa những năm 1970. 58 00:03:41,260 --> 00:03:44,830 Berkeley Unix là một sự kiện chuyên đề trong sự phát triển của Unix. 59 00:03:44,830 --> 00:03:48,770 Đó là một cuộc cách mạng rất lớn và bao gồm việc giới thiệu các vỏ này. 60 00:03:48,770 --> 00:03:50,790 Lý do cho rằng cách chơi chữ, C-vỏ, 61 00:03:50,790 --> 00:03:56,490 là C-shell có một số đặc điểm trong nó mà giống với ngôn ngữ C, 62 00:03:56,490 --> 00:03:59,740 mà bao Bourne không có - 63 00:03:59,740 --> 00:04:02,140 hoặc nó không có tại thời điểm đó. 64 00:04:02,140 --> 00:04:05,190 Ngoài ra còn có TC-vỏ. 65 00:04:05,190 --> 00:04:07,360 Đây là một siêu của C-shell. 66 00:04:07,360 --> 00:04:11,470 Nó có tính năng bổ sung, trong đó có nhiều hữu ích để sử dụng tương tác, 67 00:04:11,470 --> 00:04:16,050 chẳng hạn như thu hồi lệnh trong cơ chế lịch sử, 68 00:04:16,050 --> 00:04:18,459 mà tôi sẽ mô tả phần nào sau - 69 00:04:18,459 --> 00:04:23,120 một cách đơn giản, mô hình sau khi một biên tập viên. 70 00:04:23,120 --> 00:04:29,170 Nó cũng có các ràng buộc cho phép bạn liên kết một chuỗi phím tắt cho một lệnh dài hơn. 71 00:04:29,170 --> 00:04:31,440 Chúng tôi sẽ không được nhận vào ngày hôm nay. 72 00:04:31,440 --> 00:04:33,650 Nó có một số tính năng hữu ích cho lập trình. 73 00:04:33,650 --> 00:04:37,020 Tuy nhiên, C-vỏ không thường được sử dụng cho lập trình shell. 74 00:04:37,020 --> 00:04:39,080 Chương trình vỏ, nếu bạn chưa biết, 75 00:04:39,080 --> 00:04:41,690 là chương trình bao gồm các đặc điểm vỏ. 76 00:04:41,690 --> 00:04:43,220 Bạn có thể chạy các chương trình như. 77 00:04:43,220 --> 00:04:46,760 Bạn viết một loạt các lệnh shell vào một tập tin và thực hiện các tập tin. 78 00:04:46,760 --> 00:04:49,760 Bạn không cần phải biên dịch nó. Đây là một ngôn ngữ diễn giải. 79 00:04:49,760 --> 00:04:57,320 Cụm từ C vỏ tại là không rõ ràng vì nó có thể chỉ tham khảo C-shell, csh, 80 00:04:57,320 --> 00:05:01,200 hoặc cho tất cả các C-vỏ, bao gồm tcsh. Đó là một chút mơ hồ. 81 00:05:01,200 --> 00:05:08,250 >> Một vỏ sau là Korn shell, ksh, được đặt tên sau khi các lập trình viên, Korn. 82 00:05:08,250 --> 00:05:14,160 Vỏ này đã cố gắng để kết hợp vào 1 vỏ 83 00:05:14,160 --> 00:05:16,960 những ưu điểm của C-vỏ để sử dụng tương tác 84 00:05:16,960 --> 00:05:19,230 và Bourne shell cho lập trình. 85 00:05:19,230 --> 00:05:25,440 Nó đã được sử dụng như một trình bao tương tác của một số người - một dân tộc thiểu số. 86 00:05:25,440 --> 00:05:32,050 Sau đó, mặc dù đã có giới thiệu khác, vỏ Bash, BASH, 87 00:05:32,050 --> 00:05:35,290 một lần nữa một cách chơi chữ, Bourne-again shell. 88 00:05:35,290 --> 00:05:43,830 Đó là một phần mở rộng của vỏ Bourne. Korn vỏ cũng được. Cả hai đều là. 89 00:05:43,830 --> 00:05:48,100 Nó có cùng một mục tiêu của Korn shell của amalgamating C-vỏ của 90 00:05:48,100 --> 00:05:50,980 và lợi thế bao Bourne trong 1 vỏ. 91 00:05:50,980 --> 00:05:56,810 Nhiều người trong số những cải tiến của vỏ Korn cũng được bao gồm trong Bash. 92 00:05:56,810 --> 00:06:00,710 Bash, tuy nhiên, có hơn và do đó là một lợi thế. 93 00:06:00,710 --> 00:06:05,180 Bourne-again shell và Korn shell được gọi là vỏ Bourne loại 94 00:06:05,180 --> 00:06:07,730 bởi vì chúng bao gồm các đặc điểm Bourne vỏ của, 95 00:06:07,730 --> 00:06:11,180 mà không phù hợp trong một số khía cạnh với C-vỏ. 96 00:06:11,180 --> 00:06:15,520 Có vỏ khác bên cạnh đó, một số dự định sử dụng hạn chế, 97 00:06:15,520 --> 00:06:20,670 có thể giới hạn ở một số lệnh, có lẽ mục đích chuyên biệt, không thường được sử dụng. 98 00:06:20,670 --> 00:06:24,240 >> Rồi. Mục tiếp theo đây. 99 00:06:31,300 --> 00:06:38,970 Bash shell đã trở thành liên kết với các hình thức khác nhau của Linux. 100 00:06:38,970 --> 00:06:41,550 Tôi không chắc chắn nếu đó là sự thật của mọi hình thức. 101 00:06:41,550 --> 00:06:43,280 Có nhiều hình thức đó, và tôi đã không sử dụng tất cả, 102 00:06:43,280 --> 00:06:46,870 nhưng trong những người mà tôi đã sử dụng nó đã trở thành liên kết với nó. 103 00:06:46,870 --> 00:06:49,670 Cho đến nay như tôi biết, không có gì về Bash là 104 00:06:49,670 --> 00:06:52,210 mà làm cho nó bất kỳ tương thích hơn với Linux 105 00:06:52,210 --> 00:06:55,020 hơn bất kỳ sự kết hợp khác của vỏ và hệ điều hành. 106 00:06:55,020 --> 00:06:59,690 Tôi nghĩ rằng đây có thể chỉ là phản ánh khuynh hướng của các lập trình viên. 107 00:06:59,690 --> 00:07:07,500 Nó có trở thành liên kết với Linux là một lý do để thích Bash để KSH 108 00:07:07,500 --> 00:07:11,820 vì những điều có thể sẽ được viết trong đó và nó có khả năng lây lan. 109 00:07:11,820 --> 00:07:15,410 Tôi sẽ cung cấp cho bạn những lý do khác cho rằng sau này. 110 00:07:15,410 --> 00:07:21,330 Kịch bản shell Bourne nên chạy dưới vỏ Korn hoặc Bash. 111 00:07:21,330 --> 00:07:22,650 Nếu bạn viết một cái gì đó cho vỏ Bourne, 112 00:07:22,650 --> 00:07:26,180 có thể bạn có thể thực hiện nó dưới ksh hoặc bash. 113 00:07:26,180 --> 00:07:30,610 Kịch bản Korn shell có thể sẽ chạy theo Bash, nhưng tôi không thể đảm bảo rằng. 114 00:07:30,610 --> 00:07:36,040 Sau đây, kịch bản C-vỏ nên chạy theo TC-vỏ. 115 00:07:38,850 --> 00:07:41,690 C-vỏ đã thực sự không bao giờ sử dụng rộng rãi cho các kịch bản 116 00:07:41,690 --> 00:07:48,110 kể từ khi Bourne shell và sau đó là vỏ Bourne loại là thích hợp hơn cho mục đích đó. 117 00:07:48,110 --> 00:07:50,620 Vì vậy, đó thực sự không phải là tất cả những gì quan trọng. 118 00:07:50,620 --> 00:07:53,480 Có khá nhiều kịch bản shell Bourne được viết từ lâu, 119 00:07:53,480 --> 00:07:56,860 trước khi Korn shell hoặc vỏ Bourne-again đã được giới thiệu. 120 00:07:56,860 --> 00:07:59,300 Những người vẫn còn đang được sử dụng, một phần của hệ điều hành, 121 00:07:59,300 --> 00:08:01,590 và do đó bạn sẽ tìm thấy chúng nếu bạn nhìn vào các hệ điều hành 122 00:08:01,590 --> 00:08:03,760 hoặc một số gói chương trình cũ. 123 00:08:03,760 --> 00:08:12,840 >> Bash là ở một mức độ trở thành một loại ngôn ngữ chung cho các hệ thống điều hành. 124 00:08:12,840 --> 00:08:17,580 Nó đã được mở rộng đến Windows và VMS. 125 00:08:17,580 --> 00:08:20,440 VMS, trong trường hợp bạn không biết, là một hệ điều hành độc quyền 126 00:08:20,440 --> 00:08:25,480 Công ty Cổ phần Thiết bị kỹ thuật số mà vẫn được sử dụng, chủ yếu đằng sau hậu trường. 127 00:08:25,480 --> 00:08:29,250 Và nếu nó sẽ được chạy trên hệ điều hành khác nhau, 128 00:08:29,250 --> 00:08:31,110 có khả năng những người có xu hướng thay đổi cho nó. 129 00:08:31,110 --> 00:08:33,840 Nhưng sự phát triển này là tương đối gần đây. 130 00:08:33,840 --> 00:08:39,490 Nó chỉ mới bắt đầu, vì vậy tôi không thể dự đoán nếu điều này sẽ lần lượt ra thực sự thể là loại ngôn ngữ chung. 131 00:08:39,490 --> 00:08:43,539 Ngoài ra, vì tên đường dẫn tập tin và các thư viện khác nhau 132 00:08:43,539 --> 00:08:46,210 giữa các hệ điều hành khác nhau, 133 00:08:46,210 --> 00:08:50,250 bạn có thể không có thể viết một kịch bản Bash trên một hệ điều hành 134 00:08:50,250 --> 00:08:51,840 và sau đó chạy nó vào nhau. 135 00:08:51,840 --> 00:08:54,440 Bạn có thể di chuyển nó giữa Unix khác nhau, Linux 136 00:08:54,440 --> 00:08:59,020 Hệ điều hành Mac OS nhưng không nhất thiết phải Windows hoặc VMS. 137 00:08:59,020 --> 00:09:01,390 Bạn có thể phải thay đổi tên đường dẫn tập tin giới thiệu, 138 00:09:01,390 --> 00:09:03,180 và một số thư viện có thể khác nhau, 139 00:09:03,180 --> 00:09:05,230 có thể ảnh hưởng đến cách mà một số lệnh làm việc 140 00:09:05,230 --> 00:09:09,730 hoặc làm thế nào họ xử lý đối số và tương tự. 141 00:09:09,730 --> 00:09:19,230 Bên cạnh đó, một cách thận trọng ở đây là không có đảm bảo 142 00:09:19,230 --> 00:09:23,570 rằng tất cả các vỏ khác nhau tôi đã đề cập - Bourne shell, C-vỏ, 143 00:09:23,570 --> 00:09:29,880 TC-vỏ, Korn shell, Bourne-again shell - sẽ có sẵn trong bất kỳ Unix 144 00:09:29,880 --> 00:09:33,750 hoặc Linux hoặc máy tính Mac OS. 145 00:09:33,750 --> 00:09:35,620 Họ chỉ đơn giản có thể không có mặt ở đó. 146 00:09:35,620 --> 00:09:38,300 Đó là một trong những cảnh báo ở đây. 147 00:09:38,300 --> 00:09:41,490 Đây là một hạn chế đáng tiếc ở đây kể từ khi bạn muốn điều để làm việc ở khắp mọi nơi, 148 00:09:41,490 --> 00:09:44,380 nhưng không may, bạn không thể dựa vào đó. 149 00:09:44,380 --> 00:09:47,230 >> Rồi. Tiếp theo đây. 150 00:09:50,280 --> 00:09:54,370 Hãy nói rằng bạn muốn viết một kịch bản, 151 00:09:54,370 --> 00:09:57,170 một chương trình bao gồm các lệnh trình bao. 152 00:09:57,170 --> 00:10:01,200 Bạn viết lệnh của bạn, đặt chúng trong một tập tin, và thực hiện các tập tin. 153 00:10:01,200 --> 00:10:04,230 Nếu bạn muốn bao gồm đối số? 154 00:10:04,230 --> 00:10:09,650 Trong trường hợp hoạt động vỏ, đối số được gọi là các tham số hoặc tham số vị trí 155 00:10:09,650 --> 00:10:15,940 và họ sẽ được gọi bằng một dấu đô la và số, $ 1, $ 2. 156 00:10:15,940 --> 00:10:27,000 Vì vậy, nếu kịch bản có tên này, số đầu tiên của tôi có thể tranh luận 1 157 00:10:27,000 --> 00:10:30,540 và thứ hai của tôi có thể lập luận 2, 158 00:10:30,540 --> 00:10:34,110 và bên trong kịch bản của tôi nếu tôi muốn đề cập đến những điều này - 159 00:10:34,110 --> 00:10:36,810 hãy xóa này vì tôi không thực sự đi để chạy nó - 160 00:10:36,810 --> 00:10:42,160 trong kịch bản của tôi, tôi có thể có $ 1 để tham khảo arg1, 161 00:10:42,160 --> 00:10:45,890 2 đô la, sẽ đi ra theo cách đó, arg2. 162 00:10:45,890 --> 00:10:50,080 Vì vậy, những biểu tượng có sẵn để tham khảo đối số, 163 00:10:50,080 --> 00:10:52,390 và những áp dụng cho tất cả các vỏ. 164 00:10:52,390 --> 00:10:56,520 Ngoài ra, có những nhân vật khác. 165 00:10:56,520 --> 00:11:01,700 $ * Đề cập đến toàn bộ danh sách tham số, tất cả chúng. 166 00:11:01,700 --> 00:11:05,390 $ # Đề cập đến số lượng các đối số. 167 00:11:05,390 --> 00:11:07,910 Một lần nữa, điều này áp dụng cho tất cả các vỏ. 168 00:11:07,910 --> 00:11:15,540 Những biểu tượng, * và #, có thể được sử dụng với những ý nghĩa ở những nơi khác cũng có. 169 00:11:15,540 --> 00:11:17,940 Chúng tôi sẽ không nhận được vào đó. 170 00:11:17,940 --> 00:11:20,460 >> Shell dòng specifier. Là những gì vậy? 171 00:11:20,460 --> 00:11:27,760 Hãy nói rằng bạn đã viết một kịch bản và đó là một lớp vỏ đặc biệt và bạn muốn chạy nó. 172 00:11:27,760 --> 00:11:33,500 Làm thế nào để bạn biết những gì bao hệ điều hành của bạn sẽ sử dụng để chạy kịch bản của bạn? 173 00:11:33,500 --> 00:11:37,230 Tại một thời điểm bạn có thể giả định rằng nó sẽ chạy nó trong vỏ Bourne 174 00:11:37,230 --> 00:11:39,440 nếu bạn không nói cách khác, 175 00:11:39,440 --> 00:11:41,730 nhưng mọi người không viết kịch bản trong Bourne bao nhiều nữa 176 00:11:41,730 --> 00:11:43,750 và thậm chí bạn không thể dựa vào đó nữa. 177 00:11:43,750 --> 00:11:48,740 Vì vậy, ở đây chúng tôi có một dòng specifier vỏ ngay tại đây. 178 00:11:48,740 --> 00:11:52,450 Chỉ định Bash. 179 00:11:52,450 --> 00:11:56,750 Lưu ý rằng nó xác định nó trong tên đường dẫn, / bin / bash. 180 00:11:56,750 --> 00:12:02,870 Nếu một máy tính có vỏ Bash nhưng không phải trong thư mục bin, / bin, điều này sẽ không làm việc. 181 00:12:02,870 --> 00:12:06,870 Đó là một vòng loại, thận trọng khác ở đây. 182 00:12:06,870 --> 00:12:09,500 Dấu thăng là nhân vật dòng bình luận. 183 00:12:09,500 --> 00:12:12,300 Áp dụng cho tất cả các vỏ. 184 00:12:12,300 --> 00:12:18,610 Các trường hợp cụ thể ở đây, #! vào đầu một kịch bản, là một trường hợp đặc biệt. 185 00:12:18,610 --> 00:12:23,410 Chỉ định vỏ, trong đó để chạy kịch bản. 186 00:12:23,410 --> 00:12:30,230 Như tôi đã nói, nó có thể không phải là cùng một vị trí / bin. 187 00:12:30,230 --> 00:12:34,880 Ngoài ra, có một điều ở đây. 188 00:12:34,880 --> 00:12:41,250 Nếu bạn chỉ cần sử dụng dấu thăng không có dấu chấm than và tên đường dẫn, 189 00:12:41,250 --> 00:12:44,640 cần chỉ ra một C-shell. 190 00:12:44,640 --> 00:12:48,300 Tuy nhiên, tôi không khuyên bạn nên làm điều đó bởi vì tôi không thể đảm bảo 191 00:12:48,300 --> 00:12:49,750 mà sẽ luôn luôn làm việc. 192 00:12:49,750 --> 00:12:52,220 Nếu bạn muốn có một C-shell, nó sẽ là tốt hơn để nói như vậy. 193 00:12:52,220 --> 00:12:58,450 Sau đó có một cái gì đó khá khó hiểu ở đây. 194 00:12:58,450 --> 00:13:03,940 Nếu bạn sử dụng một dòng vỏ đặc tả như / bin / bash 195 00:13:03,940 --> 00:13:07,070 và vỏ mà không có sẵn ở đó, 196 00:13:07,070 --> 00:13:10,680 không có những điều như / bin / bash trên máy tính riêng, 197 00:13:10,680 --> 00:13:14,330 hoặc vì nó không có Bash hoặc bởi vì nó ở một vị trí khác nhau, 198 00:13:14,330 --> 00:13:17,450 bạn sẽ nhận được một lỗi nói với bạn rằng kịch bản bạn chạy không tồn tại. 199 00:13:17,450 --> 00:13:21,510 Và tất nhiên kịch bản của bạn tồn tại, do đó thông báo lỗi là khó hiểu. 200 00:13:21,510 --> 00:13:24,810 Lý do mà hệ điều hành cung cấp cho bạn báo lỗi 201 00:13:24,810 --> 00:13:28,370 hay chính xác hơn, đó là trình bao tương tác của bạn mà bạn đang chạy này cho rằng lỗi, 202 00:13:28,370 --> 00:13:33,510 là nó báo cáo lệnh bạn sử dụng, đó là tên của kịch bản. 203 00:13:33,510 --> 00:13:36,920 Lệnh có hiệu quả được gọi là vỏ bằng tên của kịch bản. 204 00:13:36,920 --> 00:13:39,330 Đó là nơi mà bạn nhận được thông báo lỗi khó hiểu. 205 00:13:39,330 --> 00:13:42,980 Một cách khác để gọi shell script 206 00:13:42,980 --> 00:13:45,910 là bằng cách xác định vỏ trên dòng lệnh, như ở đây. 207 00:13:45,910 --> 00:13:52,510 Đây là một lệnh. Này nói chạy Bash và sau đó chạy kịch bản của tôi trong Bash. 208 00:13:52,510 --> 00:13:55,680 Điều đó sẽ được ưu tiên hơn một dòng đặc tả, 209 00:13:55,680 --> 00:14:02,090 và điều này có các tính năng cho phép bạn để cung cấp cho tên đường dẫn khác nhau. 210 00:14:02,090 --> 00:14:04,840 Nếu bạn chỉ cần đưa ra một lệnh, hệ điều hành sẽ tìm kiếm lệnh 211 00:14:04,840 --> 00:14:06,410 ở những nơi khác nhau. 212 00:14:06,410 --> 00:14:08,820 Nếu nó có sẵn, cần tìm thấy nó. 213 00:14:08,820 --> 00:14:12,290 Máy tính sẽ tìm thấy bất cứ nơi nào Bash nó nằm và chạy nó, 214 00:14:12,290 --> 00:14:15,470 do đó bạn không cần phải sau đó phải được quan tâm về nơi nó tìm thấy nó. 215 00:14:15,470 --> 00:14:17,360 Có những lo ngại tiềm năng khác ở đây, 216 00:14:17,360 --> 00:14:20,830 như nếu có nhiều hơn 1 phiên bản của Bash, mà có thể mặc dù khó xảy ra. 217 00:14:20,830 --> 00:14:23,540 Vì vậy, đó là một cách khác để đối phó với những điều này. 218 00:14:23,540 --> 00:14:30,480 Dòng đặc tả có thể gọi bất kỳ vỏ. 219 00:14:30,480 --> 00:14:34,480 Họ cũng có thể gọi những thứ khác hơn vỏ. 220 00:14:34,480 --> 00:14:37,940 Ví dụ tôi có ở đây được sed, mà là biên tập viên dòng; 221 00:14:37,940 --> 00:14:39,900 AWK, mà là một ngôn ngữ xử lý mẫu; 222 00:14:39,900 --> 00:14:43,680 và perl, một ngôn ngữ kịch bản phát triển rất cao. 223 00:14:43,680 --> 00:14:47,570 Nếu bạn đặt một dòng đặc tả cho thấy một trong những chương trình ngay từ đầu, 224 00:14:47,570 --> 00:14:51,270 nó sẽ đi trực tiếp vào chương trình chứ không phải bắt đầu từ một trình bao. 225 00:14:51,270 --> 00:14:54,030 Các chương trình có giới hạn khả năng của mình. 226 00:14:54,030 --> 00:14:58,790 Perl là rất có khả năng. Sed là một biên tập viên. Nó có thể làm những việc vượt quá chỉ đơn giản là chỉnh sửa. 227 00:14:58,790 --> 00:15:03,300 Nhưng nó có thể được khó khăn cho chương trình đó. 228 00:15:03,300 --> 00:15:09,670 Ngoài ra, đối số và các công cụ để kịch bản hoặc là không thể hoặc khó hiểu. 229 00:15:09,670 --> 00:15:15,030 Vì vậy, trong những trường hợp, với AWK hoặc sed, đó là, ít nhất là trong kinh nghiệm của tôi, 230 00:15:15,030 --> 00:15:18,910 thích hợp hơn để viết một kịch bản và gọi AWK hoặc sed từ kịch bản 231 00:15:18,910 --> 00:15:24,660 thay vì gọi AWK hoặc sed như dòng kịch bản đặc tả. 232 00:15:24,660 --> 00:15:26,980 Perl là một ngôn ngữ rất đa dạng, như tôi đã nói. 233 00:15:26,980 --> 00:15:30,050 Bạn không thể chạy các lệnh tương tác trong perl, 234 00:15:30,050 --> 00:15:32,660 có nghĩa là bạn không thể kiểm tra các bộ phận của kịch bản mà bạn đang phát triển 235 00:15:32,660 --> 00:15:33,970 bằng cách chạy chúng tương tác. 236 00:15:33,970 --> 00:15:36,160 Tuy nhiên, nó là một ngôn ngữ rất có khả năng 237 00:15:36,160 --> 00:15:40,960 và đã phát triển thành một công cụ được sử dụng rất rộng rãi. 238 00:15:40,960 --> 00:15:45,720 Đó chỉ là một chút của một nhận xét về dấu ngoặc đơn dòng đặc tả. 239 00:15:45,720 --> 00:15:50,610 >> Trong tất cả hoặc hầu hết các dạng Linux - một lần nữa, tôi không thể chắc chắn đó là tất cả - 240 00:15:50,610 --> 00:15:57,900 và trong Mac OS, nếu bạn gõ csh bạn nhận được tcsh, 241 00:15:57,900 --> 00:16:00,570 và nếu bạn gõ sh bạn nhận được bash. 242 00:16:00,570 --> 00:16:05,020 Họ đã cố gắng có để cung cấp cho bạn các phiên bản tiên tiến hơn của những vỏ sò, 243 00:16:05,020 --> 00:16:07,940 nhưng điều này có thể gây nhầm lẫn. 244 00:16:07,940 --> 00:16:16,720 Nếu bạn viết một kịch bản sử dụng tcsh hoặc Bash các tính năng trong khi gọi csh hoặc sh 245 00:16:16,720 --> 00:16:22,230 và sau đó cố gắng chạy nó trên một máy tính mà không có tcsh hoặc Bash, 246 00:16:22,230 --> 00:16:25,050 bạn có thể nhận được một số lỗi nếu có lệnh trong đó 247 00:16:25,050 --> 00:16:27,970 mà những vỏ không nhận ra. 248 00:16:27,970 --> 00:16:34,120 Ngoài ra, bạn có thể gọi lên vỏ của bạn trên máy tính của bạn 249 00:16:34,120 --> 00:16:37,700 gọi nó như sh hay csh và sau đó nhận được vỏ cao cấp hơn. 250 00:16:37,700 --> 00:16:41,440 Bạn thậm chí có thể không nghĩ về thực tế là bạn đang sử dụng vỏ cao cấp hơn. 251 00:16:41,440 --> 00:16:45,670 Vì vậy, đây là một cạm bẫy tiềm năng. 252 00:16:45,670 --> 00:16:50,290 Thế nào là nó được thành lập mà nếu bạn gõ sh bạn nhận được Bash, 253 00:16:50,290 --> 00:16:55,580 nếu bạn gõ csh bạn nhận được tsch? 254 00:16:55,580 --> 00:16:59,940 Có những điều trong các máy tính này được gọi là liên kết 255 00:16:59,940 --> 00:17:06,460 có thể kết nối với tên tập tin để tham khảo những điều tương tự. 256 00:17:06,460 --> 00:17:12,180 Nó, hoặc có thể là 2 cái tên cho cùng một tập tin hoặc một tập tin mà mục đích là để chỉ đến tập tin khác. 257 00:17:12,180 --> 00:17:17,550 Chúng được gọi là liên kết cứng và tượng trưng. Chúng tôi sẽ không đi vào đó nữa ngày hôm nay. 258 00:17:17,550 --> 00:17:21,619 Cũng có thể có các file riêng biệt - 1 tập tin sh, 1 tập tin Bash - 259 00:17:21,619 --> 00:17:23,880 nhưng cả hai đều chạy Bash. 260 00:17:23,880 --> 00:17:29,350 Sau đó có vòng loại khác ở đây. 261 00:17:29,350 --> 00:17:42,640 Nếu bạn đang gọi điện thoại một trong các vỏ của một tên, 262 00:17:42,640 --> 00:17:46,640 bạn có thể nghĩ rằng bạn sẽ nhận được các chức năng tương tự như gọi nó bằng một cái tên khác. 263 00:17:46,640 --> 00:17:49,700 Vâng, đó thực sự không phải là nhất thiết phải đúng. 264 00:17:49,700 --> 00:17:55,020 Các lệnh này có thể kiểm tra tên mà họ được gọi là 265 00:17:55,020 --> 00:18:00,020 và họ có thể, trên cơ sở của tên đó, hành xử khác nhau. 266 00:18:00,020 --> 00:18:02,740 Có thể có vấn đề cố gắng để phù hợp với một tiêu chuẩn. 267 00:18:02,740 --> 00:18:06,060 Một số bạn có thể đã nghe nói về các tiêu chuẩn POSIX hay cách khác, 268 00:18:06,060 --> 00:18:08,730 có thể tính năng khác. 269 00:18:08,730 --> 00:18:14,520 Điều này có thể được lựa chọn đôi khi bởi đối số dòng lệnh 270 00:18:14,520 --> 00:18:17,310 hoặc bằng cách thiết lập các biến shell. 271 00:18:17,310 --> 00:18:22,170 Gọi nó như sh hoặc bash thực sự có thể dẫn đến một thực hiện khác nhau 272 00:18:22,170 --> 00:18:25,300 ngay cả khi nó cùng một tập tin mà bạn đang thực hiện. 273 00:18:25,300 --> 00:18:31,800 Một điều cần xem xét là ngay cả khi máy tính khác có tcsh hoặc Bash, 274 00:18:31,800 --> 00:18:35,310 nếu họ không liên kết như họ đang ở trên máy tính của bạn 275 00:18:35,310 --> 00:18:37,990 nếu bạn có một máy tính địa phương Linux hay Mac OS, 276 00:18:37,990 --> 00:18:45,630 sau đó một lần nữa bạn sẽ nhận được vỏ mà bạn gọi sh hay csh, không phải là người mà bạn có thể thích. 277 00:18:50,430 --> 00:19:01,130 Bourne shell hiện nay có cải tiến ít hơn so với những người trong Bash 278 00:19:01,130 --> 00:19:06,100 nhưng qua những người trong Bourne shell ban đầu. 279 00:19:06,100 --> 00:19:09,690 Là kết quả của điều đó, thậm chí Bourne shell hiện tại, sh, 280 00:19:09,690 --> 00:19:14,560 ngay cả khi nó không phải Bash, tương tự như các ngôn ngữ C hơn so với C-vỏ không. 281 00:19:14,560 --> 00:19:20,460 Đó là không đúng sự thật khi C-vỏ lần đầu tiên được tạo ra, nhưng nó đã phát triển theo cách đó. 282 00:19:20,460 --> 00:19:26,560 Bạn có thể nhận thấy ở đây là tất cả các tên vỏ trừ vỏ Bourne 283 00:19:26,560 --> 00:19:30,640 có một cái gì đó để chỉ ra vỏ họ - csh, bash - 284 00:19:30,640 --> 00:19:32,550 nhưng Bourne vỏ chỉ là sh. 285 00:19:32,550 --> 00:19:34,910 Tại sao? Đó là vỏ ban đầu. 286 00:19:34,910 --> 00:19:37,770 Đó là THE vỏ sau đó, không một vỏ, 287 00:19:37,770 --> 00:19:41,090 và vì đó là THE vỏ, không có lý do để phân biệt với vỏ khác. 288 00:19:41,090 --> 00:19:45,030 Vì vậy, đó là lý do tại sao nó có tên đó và vẫn còn hiện. 289 00:19:50,630 --> 00:19:58,990 >> Đầu này đây là một đường từ một cơ sở dữ liệu mật khẩu cho tài khoản tôi có có 290 00:19:58,990 --> 00:20:01,680 trên một máy tính khác. 291 00:20:01,680 --> 00:20:08,300 Tôi sẽ cố gắng để có được tên đó để bạn có thể thấy rằng một phần ở cuối, vỏ. 292 00:20:09,720 --> 00:20:15,450 Cơ sở dữ liệu mật khẩu giữ các đặc điểm đăng nhập cho tất cả người dùng. 293 00:20:15,450 --> 00:20:20,330 Lúc đầu là tên người dùng, bạn có thể thấy 2 chữ cái cuối cùng của tôi bây giờ. 294 00:20:20,330 --> 00:20:23,970 Các lĩnh vực ở đây được phân cách bằng dấu hai chấm. 295 00:20:23,970 --> 00:20:28,210 Trường cuối cùng, bạn có thể thấy, là bin / tcsh, vỏ. 296 00:20:28,210 --> 00:20:30,230 Đó là sự xác định vỏ. 297 00:20:30,230 --> 00:20:33,240 Có điều gì đó thú vị ở đây. 298 00:20:33,240 --> 00:20:36,950 Khi Unix đã được phát triển đầu tiên, chỉ có 1 vỏ, 299 00:20:36,950 --> 00:20:38,350 vì vậy không có sự lựa chọn đó. 300 00:20:38,350 --> 00:20:45,570 Vì vậy, tại sao họ cho phép một lĩnh vực trong cơ sở dữ liệu mật khẩu để xác định một vỏ? 301 00:20:45,570 --> 00:20:47,920 Tôi không biết, nhưng nó may mắn là họ đã làm. 302 00:20:47,920 --> 00:20:52,030 Nó khá khó khăn để thực hiện thay đổi trong các định dạng cơ sở dữ liệu mật khẩu 303 00:20:52,030 --> 00:20:54,420 bởi vì nhiều chương trình tham khảo định dạng của nó 304 00:20:54,420 --> 00:20:57,720 và sẽ phải được viết lại. 305 00:20:57,720 --> 00:21:04,130 Đó là một phát triển vui vẻ hoặc ngẫu nhiên mà họ bao gồm lĩnh vực đó. 306 00:21:04,130 --> 00:21:12,780 Đó là loại một dòng tập tin mật khẩu được sử dụng trên tất cả các máy tính Unix và Linux cho đến nay như tôi biết. 307 00:21:12,780 --> 00:21:14,650 Mac có hệ thống riêng của mình. 308 00:21:14,650 --> 00:21:17,810 Nó thực sự có một tập tin mật khẩu với các dòng ở định dạng đó, 309 00:21:17,810 --> 00:21:21,060 nhưng đó không phải là nơi mà các đặc điểm người sử dụng được xác định. 310 00:21:21,060 --> 00:21:24,200 Một nhận xét ngoặc đó. 311 00:21:36,470 --> 00:21:46,020 >> Nếu bạn đang gọi điện thoại một vỏ, bạn có thể gọi nó như là một tiểu vỏ đạn hiện tại của bạn. 312 00:21:46,020 --> 00:21:50,480 Vì vậy, nếu tôi đi đây, chúng ta hãy thoát khỏi những điều này. 313 00:21:50,480 --> 00:21:53,350 Ở đây tôi đang ở C-shell. 314 00:21:56,830 --> 00:22:01,200 Rằng biến, trong đó xác định chính xác bao của tôi, 315 00:22:01,200 --> 00:22:04,300 thực sự không phải là luôn luôn là một cách đáng tin cậy xác định những gì bao bạn đang chạy, 316 00:22:04,300 --> 00:22:06,220 nhưng trong trường hợp này nó được. 317 00:22:06,220 --> 00:22:08,040 Nếu tôi chỉ cần gõ - 318 00:22:09,970 --> 00:22:12,470 Bây giờ tôi đang trong Bash. 319 00:22:12,470 --> 00:22:19,540 Một số điều sẽ được như vậy. ls nói với tôi lệnh của tôi. 320 00:22:19,540 --> 00:22:24,500 Nếu tôi làm một đình chỉ trở lại C-vỏ của tôi, ls, tương tự. Phải không? 321 00:22:24,500 --> 00:22:28,890 fg, tiền cảnh, trở lại vỏ Bash của tôi. 322 00:22:28,890 --> 00:22:38,290 pwd, thư mục hiện tại, trở lại với C-shell. 323 00:22:38,290 --> 00:22:43,180 pwd, khác nhau thư mục - thực sự không phải là một thư mục khác nhau trong trường hợp này. 324 00:22:43,180 --> 00:22:45,110 Đó là cùng một thư mục. 325 00:22:45,110 --> 00:22:50,000 Hãy nói rằng tôi muốn gọi một lệnh ở đây: nơi ls. 326 00:22:50,000 --> 00:22:52,140 Điều đó làm những gì? 327 00:22:52,140 --> 00:22:53,670 Nó nói với tôi mà lệnh ls, 328 00:22:53,670 --> 00:22:56,670 một trong đó mang lại cho tôi một danh sách thư mục, nằm ở ls. 329 00:22:56,670 --> 00:23:01,460 Chúng ta hãy quay trở lại Bash shell. Chúng ta hãy thử cùng một điều. 330 00:23:01,460 --> 00:23:05,830 Hmm, thú vị có, trong đó: lệnh không được tìm thấy. 331 00:23:05,830 --> 00:23:07,400 Tại sao vậy? 332 00:23:07,400 --> 00:23:11,570 Nơi lệnh được xây dựng trong C-shell. 333 00:23:11,570 --> 00:23:15,630 Đây không phải là một lệnh mà đã được đọc vào bộ nhớ từ một nơi khác và thực hiện. 334 00:23:15,630 --> 00:23:20,310 C-shell chạy nó bằng cách chuyển thực hiện một phần của mã riêng của mình 335 00:23:20,310 --> 00:23:22,790 và nó không phải trong Bash shell. 336 00:23:22,790 --> 00:23:25,710 Vì vậy, Bash, không có một lệnh như vậy được xây dựng trong, trông cho nó, không tìm thấy nó, 337 00:23:25,710 --> 00:23:27,720 và chúng tôi nhận được một lỗi. 338 00:23:27,720 --> 00:23:32,290 Vì vậy, chúng tôi đã có một vỏ Bash chạy theo một C-shell, và chúng tôi gọi đó là một tiểu vỏ. 339 00:23:32,290 --> 00:23:38,480 Và chỉ trong trường hợp bạn đang tò mò, Bash shell có cách riêng của mình định vị lệnh. 340 00:23:38,480 --> 00:23:42,590 băm đề cập đến thực tế là nó có thể được thực hiện nhanh hơn, 341 00:23:42,590 --> 00:23:44,960 được tìm thấy nhanh hơn. 342 00:23:44,960 --> 00:23:48,610 Đó là một trong những cải tiến được xây dựng vào một số trong những vỏ. 343 00:23:50,220 --> 00:23:54,200 >> Vỏ Bourne loại được ưa thích dành cho lập trình. 344 00:23:54,200 --> 00:23:57,300 Họ có cấu trúc điều khiển như vòng, báo cáo có điều kiện, 345 00:23:57,300 --> 00:24:00,240 các loại lệnh mà bạn có thể sử dụng trong ngôn ngữ lập trình như C 346 00:24:00,240 --> 00:24:04,190 hoặc bất cứ ngôn ngữ. Có lẽ bạn đang lập trình trong Java hoặc bất cứ điều gì. 347 00:24:04,190 --> 00:24:06,460 Vỏ có những người quá. 348 00:24:06,460 --> 00:24:11,790 Vỏ Bourne loại, đặc biệt là Bash, có nhiều 349 00:24:11,790 --> 00:24:15,730 và chúng được thiết kế với sự linh hoạt lớn hơn. 350 00:24:15,730 --> 00:24:20,700 Bash shell có mảng. Bản gốc Bourne vỏ không. 351 00:24:20,700 --> 00:24:26,130 Do đó có thể được thuận lợi đáng kể cho chương trình. 352 00:24:26,130 --> 00:24:29,810 C-vỏ thực sự không có mảng nhưng không có rất nhiều những tính năng khác. 353 00:24:29,810 --> 00:24:33,450 Vỏ Bourne loại sẽ thực hiện nhanh hơn 354 00:24:33,450 --> 00:24:36,520 nếu họ không có các tính năng dành cho người dùng tương tác. 355 00:24:36,520 --> 00:24:39,340 Bạn tải xuống thứ cho một mục đích, điều này tải chúng xuống cho mục đích khác. 356 00:24:39,340 --> 00:24:41,520 Có mà thương mại-off ở đó. 357 00:24:41,520 --> 00:24:44,510 Những tính năng được thiết kế để sử dụng tương tác 358 00:24:44,510 --> 00:24:46,920 thực sự có ít hoặc không sử dụng cho kịch bản. 359 00:24:46,920 --> 00:24:52,160 Nó có thể sử dụng một tiểu trình bao tương tác giống như một trong tôi bắt đầu có 360 00:24:52,160 --> 00:24:57,780 để kiểm tra các lệnh mà bạn có ý định sử dụng trong một kịch bản. 361 00:24:57,780 --> 00:25:01,180 Đó là những gì bạn không thể làm với perl. Bạn có thể làm điều đó với vỏ. 362 00:25:01,180 --> 00:25:04,850 Ngay cả những cấu trúc như cho các vòng và vv có thể chạy tương tác. 363 00:25:04,850 --> 00:25:07,000 Họ là đôi khi hữu ích để chạy tương tác, 364 00:25:07,000 --> 00:25:10,180 nhưng nhiều khả năng bạn đang sử dụng chúng để phát triển một kịch bản. 365 00:25:15,690 --> 00:25:17,400 >> Bí danh. 366 00:25:17,400 --> 00:25:21,630 Điều này là có được về C-shell. 367 00:25:23,270 --> 00:25:27,570 Cơ chế lịch sử, nơi bạn có được trở lại lệnh trước đó 368 00:25:27,570 --> 00:25:30,340 hoặc các bộ phận của họ rằng bạn đã chạy. 369 00:25:30,340 --> 00:25:33,680 Một lần nữa, về C-vỏ, vỏ Bourne và Korn shell có những điều này, 370 00:25:33,680 --> 00:25:35,620 nhưng tôi sẽ không vào được. 371 00:25:35,620 --> 00:25:40,340 Vì vậy, đây là một số bí danh hữu ích mà tôi có. 372 00:25:43,100 --> 00:25:44,880 Thay vì gõ ls - đó là một lệnh phổ biến - 373 00:25:44,880 --> 00:25:47,620 chỉ cần gõ l và tiết kiệm cho mình 1 nhân vật. 374 00:25:47,620 --> 00:25:50,600 ls với tùy chọn khác nhau, tất cả những người làm việc. 375 00:25:50,600 --> 00:25:54,460 Lưu ý rằng những định nghĩa có dấu ngoặc kép xung quanh. 376 00:25:54,460 --> 00:25:57,520 Trong những trường hợp này, các báo giá là không cần thiết. 377 00:25:57,520 --> 00:26:00,100 Nếu bạn có thể xác định những bí danh mà không có dấu ngoặc kép, nó vẫn sẽ làm việc. 378 00:26:00,100 --> 00:26:02,910 Họ được khuyến khích. 379 00:26:02,910 --> 00:26:04,900 Có những tình huống mà bạn không thể sử dụng các báo 380 00:26:04,900 --> 00:26:08,050 bởi vì bạn muốn một cái gì đó xảy ra mà các báo giá sẽ ngăn chặn. 381 00:26:08,050 --> 00:26:11,210 Đôi khi bạn có thể trích dẫn một phần của định nghĩa nhưng không phải tất cả của nó. 382 00:26:11,210 --> 00:26:17,010 Nó cũng thường được khuyến cáo sử dụng dấu nháy đơn chứ không phải là dấu ngoặc kép. 383 00:26:17,010 --> 00:26:19,750 Dấu ngoặc kép có tác dụng trên các định nghĩa biến, 384 00:26:19,750 --> 00:26:22,950 đặc biệt là làm cho chúng được đánh giá chứ không phải là ngăn chặn nó. 385 00:26:22,950 --> 00:26:25,910 Lý do tại sao chúng tôi muốn dừng lại việc đánh giá? 386 00:26:25,910 --> 00:26:28,710 Và làm thế nào để dấu ngoặc kép làm điều đó cho chúng tôi? 387 00:26:28,710 --> 00:26:32,600 >> Đây là một lệnh mà bạn có thể tìm thấy thú vị. 388 00:26:32,600 --> 00:26:35,470 'Ls g *' 389 00:26:35,470 --> 00:26:37,640 g *, như bạn đã biết, là một biểu thức ký tự đại diện 390 00:26:37,640 --> 00:26:40,290 cho tất cả các tên tập tin bắt đầu bằng g. 391 00:26:40,290 --> 00:26:46,410 Nếu tôi chỉ viết trong một lệnh ls g *, tôi sẽ nhận được một danh sách tất cả những cái tên trong thư mục hiện tại của tôi. 392 00:26:46,410 --> 00:26:50,870 Nếu tôi xác định bí danh đó vì nó là ở đây với các dấu ngoặc kép, 393 00:26:50,870 --> 00:26:56,990 nó sẽ chạy lệnh trong thư mục hiện tại của bạn mà bạn đang chạy nó. 394 00:26:56,990 --> 00:27:01,250 Nhưng nếu bạn chạy các định nghĩa bí danh mà không có dấu ngoặc kép, 395 00:27:01,250 --> 00:27:09,620 nó sẽ đánh giá các ký tự đại diện * g khi nó chạy lệnh định này. 396 00:27:09,620 --> 00:27:14,400 Vì vậy, định nghĩa của bí danh sẽ được ls tiếp theo là danh sách các tập tin trong thư mục 397 00:27:14,400 --> 00:27:16,310 trong đó lệnh bí danh được thực thi, 398 00:27:16,310 --> 00:27:19,180 không phân biệt nơi bạn thực sự có ý định để chạy các lệnh. 399 00:27:19,180 --> 00:27:26,360 Đây không phải là sử dụng nhiều, và các dấu nháy đơn ngăn chặn việc đánh giá các dấu hoa thị. 400 00:27:26,360 --> 00:27:30,780 Vì vậy bạn chỉ có được định nghĩa con ls g *. 401 00:27:30,780 --> 00:27:35,510 Sau đó, khi bạn chạy các bí danh, LGS, nó sau đó đặt mà ra. 402 00:27:35,510 --> 00:27:40,490 Bây giờ không có dấu ngoặc kép, và nó sẽ đánh giá các dấu hoa thị khi bạn chạy các lệnh bí danh. 403 00:27:40,490 --> 00:27:43,900 Vì vậy, đó là một điều. 404 00:27:43,900 --> 00:27:46,590 Dấu ngoặc kép sẽ có cùng tác dụng ở đây, 405 00:27:46,590 --> 00:27:50,580 nhưng có những trường hợp khác, trong đó dấu ngoặc kép sẽ không làm việc rất tốt. 406 00:27:50,580 --> 00:27:52,450 >> Đây là một khác. 407 00:27:52,450 --> 00:27:54,270 Bạn có thể biết lệnh grep. 408 00:27:54,270 --> 00:28:02,110 Lệnh grep có thể được sử dụng để quét một tập tin cho đường dây có dây nhất định. 409 00:28:02,110 --> 00:28:10,350 Vì vậy, hãy đi qua đây và tôi sẽ thoát ra khỏi vỏ Bourne của tôi. 410 00:28:23,570 --> 00:28:25,450 Được rồi. Dưới đây là một tập tin. 411 00:28:25,450 --> 00:28:31,490 Hãy nói rằng đó là chuỗi abc grep. Có nó được. 412 00:28:31,490 --> 00:28:37,930 Nếu tôi làm zddd grep, tôi nhận được gì. Được rồi. 413 00:28:37,930 --> 00:28:40,960 Vì vậy, nó tìm thấy một chuỗi, nó báo cáo, nó không tìm thấy, nó không báo cáo. 414 00:28:40,960 --> 00:28:44,930 Nó ra bất kỳ dòng trong đó có chuỗi trên nó. 415 00:28:44,930 --> 00:28:49,080 Có tất cả các loại tùy chọn ở đây mà bạn có thể tìm thấy trong tài liệu. 416 00:28:49,080 --> 00:28:52,160 Đây là một cách để làm điều đó. 417 00:28:52,160 --> 00:29:03,290 Những gì về việc này, bí danh grabc 'grep abc'? 418 00:29:03,290 --> 00:29:09,000 Điều đó sẽ bao gồm 1 lập luận khi bí danh được xác định. 419 00:29:09,000 --> 00:29:26,300 Vì vậy, nếu tôi làm điều đó ở đây, bây giờ nếu tôi làm grabc, 420 00:29:26,300 --> 00:29:30,620 bây giờ là bí danh bao gồm hơn các lệnh đơn giản. Nó cũng có các đối số. 421 00:29:30,620 --> 00:29:32,190 Cho đến nay công trình. 422 00:29:32,190 --> 00:29:38,590 Tôi có một lệnh ở đây này, vì vậy đó là những dây khác nhau trong đó 423 00:29:38,590 --> 00:29:46,790 và cho rằng điều này không tìm thấy bất cứ điều gì có vì nó không phù hợp. 424 00:29:46,790 --> 00:29:56,180 >> Nếu tôi muốn bao gồm trong định nghĩa bí danh các tập tin mà tôi sẽ tìm kiếm 425 00:29:56,180 --> 00:30:02,970 và tôi muốn cung cấp như một tham số để bí danh chuỗi mà tôi đang tìm kiếm? 426 00:30:02,970 --> 00:30:08,040 Tôi có thể muốn nói abc như là đối số để bí danh của tôi, 427 00:30:08,040 --> 00:30:10,870 nhưng các bí danh đã được xác định tập tin. 428 00:30:10,870 --> 00:30:15,710 Và đó là nơi biểu hiện này có in 429 00:30:20,430 --> 00:30:25,270 Chú ý ở đây chúng tôi có grep giống như trước đây. 430 00:30:25,270 --> 00:30:28,130 Chúng tôi có các tập tin ở đây, chuỗi. 431 00:30:28,130 --> 00:30:35,610 \ ^, Loại một biểu hiện kỳ ​​lạ, tôi cho rằng, nếu bạn không nhìn thấy điều này trước đây. 432 00:30:35,610 --> 00:30:39,920 Dấu chấm than là một phần của cơ chế lịch sử C-shell. 433 00:30:39,920 --> 00:30:45,220 Nó có thể nhớ lại lệnh trước đó, nó có thể nhớ lại các đối số cho các lệnh và vv. 434 00:30:46,760 --> 00:31:01,570 Cơ chế lịch sử được sử dụng như một phần của răng cưa. 435 00:31:01,570 --> 00:31:07,390 Nếu bạn chỉ định một dòng sau dấu chấm than, nó sẽ tham khảo dòng trong danh sách lịch sử, 436 00:31:07,390 --> 00:31:11,910 mà chúng ta sẽ không được nhận vào tại vì nó là một toàn bộ chủ đề khác. 437 00:31:11,910 --> 00:31:16,280 Nó có thể chỉ định một phần của một dòng. 438 00:31:16,280 --> 00:31:22,950 Vì vậy, 3:02! Sẽ là đối số thứ hai của lệnh số 3. 439 00:31:22,950 --> 00:31:30,430 Dấu sót ở đây trong biểu thức này là viết tắt của tham số đầu tiên. 440 00:31:30,430 --> 00:31:34,410 Nếu bạn không cung cấp cho nó một dấu hiệu của lệnh mà bạn đang đề cập đến, 441 00:31:34,410 --> 00:31:37,300 nó đề cập đến lệnh ngay lập tức trước, 442 00:31:37,300 --> 00:31:41,990 và dấu sót là một biểu tượng cho tham số đầu tiên. 443 00:31:41,990 --> 00:31:46,820 Bởi vì đó là dấu nháy và không phải là số lượng, bạn không cần phải sử dụng dấu hai chấm, 444 00:31:46,820 --> 00:31:52,660 như vậy! ^ có nghĩa là tham số đầu tiên để các lệnh trước đó. 445 00:31:52,660 --> 00:31:55,020 Một chút hỗn hợp lên đây. 446 00:31:55,020 --> 00:31:58,450 Trong trường hợp này, khi bạn sử dụng như là một định nghĩa bí danh, 447 00:31:58,450 --> 00:32:04,650 tài liệu tham khảo lịch sử đề cập trở lại các lệnh trong đó bí danh được sử dụng. 448 00:32:04,650 --> 00:32:08,470 Vì vậy, điều này sẽ trở lại 1 lệnh như một hoạt động lịch sử, 449 00:32:08,470 --> 00:32:11,810 nhưng như là một hoạt động bí danh nó đề cập đến lệnh mà bạn gõ, 450 00:32:11,810 --> 00:32:14,780 nói, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 Chúng tôi có các dấu ngoặc kép ở đây trong đó. Các dấu gạch chéo ngược cho là những gì? 452 00:32:20,240 --> 00:32:30,810 Trong trường hợp này, như những nơi khác, chúng tôi không muốn thực hiện cơ chế lịch sử 453 00:32:30,810 --> 00:32:33,680 trong khi xác định bí danh. 454 00:32:33,680 --> 00:32:37,900 Nếu chúng ta không có dấu gạch chéo ngược đó, vỏ sẽ kéo trong tham số đầu tiên 455 00:32:37,900 --> 00:32:41,870 của lệnh ngay trước khi nó chạy lệnh này bí danh, mà chúng tôi không muốn. 456 00:32:41,870 --> 00:32:47,520 Chúng tôi muốn điều này được xây dựng trong các lệnh bí danh để gọi trong một cuộc tranh luận sau. 457 00:32:47,520 --> 00:32:53,550 Báo giá duy nhất không thoát khỏi một dấu chấm than, tài liệu tham khảo lịch sử. 458 00:32:53,550 --> 00:32:57,450 Có lẽ bạn biết thoát biểu hiện có nghĩa là phải thay đổi ý nghĩa của một cái gì đó. 459 00:32:57,450 --> 00:33:00,260 Trong trường hợp này, nó có nghĩa là dừng lại một cái gì đó từ việc có một ý nghĩa đặc biệt. 460 00:33:00,260 --> 00:33:03,030 Ý nghĩa đặc biệt chấm than điểm là lịch sử. 461 00:33:03,030 --> 00:33:05,790 Thoát ra và nó không có ý nghĩa đó. 462 00:33:05,790 --> 00:33:08,080 Báo giá không làm điều đó, dấu gạch chéo ngược không. 463 00:33:08,080 --> 00:33:11,900 Vì vậy, chúng tôi đang thực sự sử dụng 2 mức độ thoát đây. 464 00:33:23,500 --> 00:33:29,620 Tôi sẽ chuyển lệnh này vào cửa sổ khác mà không cần gõ nó 465 00:33:29,620 --> 00:33:35,210 bằng cách sử dụng các hoạt động chỉnh sửa, mà bạn có thể tìm thấy hữu ích. 466 00:33:40,620 --> 00:33:42,460 Cái gì khác ở đây tôi sẽ chỉ cho bạn. 467 00:33:42,460 --> 00:33:46,730 Nếu bạn chỉ cần gõ bí danh không có đối số, nó sẽ cho bạn tất cả các đối số của bạn. 468 00:33:46,730 --> 00:33:48,640 Đây là một loạt các bí danh tôi đã có ở đây 469 00:33:48,640 --> 00:33:53,400 bên cạnh những người mà tôi đã được sử dụng ở đây ngày hôm nay. 470 00:33:53,400 --> 00:34:00,220 Nhưng nếu tôi chỉ cần gõ với tên của một bí danh, nó nói với tôi những gì nó có nghĩa. 471 00:34:00,220 --> 00:34:03,390 Chú ý rằng các dấu ngoặc kép đã mất hết và các dấu gạch chéo ngược đã biến mất. 472 00:34:03,390 --> 00:34:08,620 Chuỗi này ở đây là kết quả của định nghĩa của bí danh, 473 00:34:08,620 --> 00:34:12,199 và bây giờ nó chỉ có! ^ trong đó. 474 00:34:12,199 --> 00:34:19,150 Điều này sẽ nhìn vào chuỗi tập tin cho bất cứ điều gì. 475 00:34:19,150 --> 00:34:34,900 Vì vậy, nếu tôi làm dây grstrings_file, tôi không cho nó bất cứ điều gì để tìm ở đó, 476 00:34:34,900 --> 00:34:37,429 nhưng nó đang tìm kiếm trong chuỗi. 477 00:34:37,429 --> 00:34:42,330 Nó không tìm thấy các dây từ trong chuỗi tập tin, nhưng nó tìm thấy abc. 478 00:34:42,330 --> 00:34:46,770 Và nó không tìm thấy đó. 479 00:34:46,770 --> 00:34:52,330 Vì vậy, ở đây chúng tôi đang đưa ra một lập luận mà lượt truy cập vào định nghĩa của bí danh, 480 00:34:52,330 --> 00:34:55,530 được chèn vào nó. 481 00:34:55,530 --> 00:34:58,540 Đó là nơi biểu hiện này xuất phát từ. 482 00:34:58,540 --> 00:35:00,240 Bạn có thể sử dụng nhiều hơn 1. 483 00:35:00,240 --> 00:35:03,170 Dấu sót là một biểu tượng cho tham số đầu tiên. 484 00:35:03,170 --> 00:35:07,510 Nếu bạn muốn sử dụng một số thứ hai, sau đó bạn sẽ nói: 2. 485 00:35:07,510 --> 00:35:11,250 Không có biểu tượng đặc biệt cho đối số thứ hai. 486 00:35:11,250 --> 00:35:14,790 Và bởi vì bạn đang sử dụng một số, bạn sẽ phải sử dụng đại tràng. 487 00:35:14,790 --> 00:35:17,220 Có, tuy nhiên, một sự lựa chọn ở đây. 488 00:35:17,220 --> 00:35:21,220 Ký hiệu đô la là viết tắt của đối số cuối cùng. 489 00:35:21,220 --> 00:35:23,320 Và bởi vì đây là một biểu tượng, bạn có thể bỏ đại tràng. 490 00:35:23,320 --> 00:35:25,870 Vì vậy, nó sẽ là số cuối cùng trong danh sách. 491 00:35:25,870 --> 00:35:27,900 Và đó cũng là một trong đó. 492 00:35:27,900 --> 00:35:31,380 Dấu hoa thị có nghĩa là tất cả, vì vậy đây là danh sách đối hoàn chỉnh, 493 00:35:31,380 --> 00:35:35,150 và một lần nữa, bạn có thể bỏ đại tràng bởi vì nó không phải là một số. 494 00:35:36,970 --> 00:35:39,950 Tôi hy vọng tất cả các bạn đang quan sát tất cả điều này. 495 00:35:39,950 --> 00:35:54,100 >> Cơ chế lịch sử có thể quay trở lại dòng trước đó trong danh sách lịch sử. 496 00:35:54,100 --> 00:36:01,370 Bạn có thể làm điều này trong một định nghĩa bí danh. 497 00:36:01,370 --> 00:36:02,950 Tôi chưa bao giờ nhìn thấy điều này được thực hiện. 498 00:36:02,950 --> 00:36:05,840 Nó sẽ có tác dụng kéo ra lệnh trước đó từ danh sách lịch sử 499 00:36:05,840 --> 00:36:08,130 khi bạn thực hiện các bí danh, mà có thể là các lệnh khác nhau 500 00:36:08,130 --> 00:36:11,240 tùy thuộc vào khi nào và nơi bạn thực hiện nó. 501 00:36:11,240 --> 00:36:14,020 Có thể hình dung bạn có thể muốn kéo ra một tham chiếu như vậy 502 00:36:14,020 --> 00:36:15,900 chỉ để biết những gì một lệnh trước đó là. 503 00:36:15,900 --> 00:36:17,280 Tôi chưa bao giờ nhìn thấy điều này xảy ra. 504 00:36:17,280 --> 00:36:19,970 Tôi cho rằng ai đó có thể muốn, nhưng điều này là rất khó xảy ra. 505 00:36:19,970 --> 00:36:26,480 Có một điều ở đây. 506 00:36:26,480 --> 00:36:33,060 Nếu bạn sử dụng lịch sử-kiểu tham chiếu, 507 00:36:33,060 --> 00:36:38,190 sau đó chỉ các đối số mà có một tham chiếu như vậy được sử dụng. 508 00:36:38,190 --> 00:36:42,180 Nếu bạn có một định nghĩa bí danh mà không sử dụng một tài liệu tham khảo lịch sử-loại, 509 00:36:42,180 --> 00:36:44,060 nếu nó chỉ trở thành sự khởi đầu của lệnh 510 00:36:44,060 --> 00:36:46,520 và bạn có lập luận thêm, sau đó bất cứ điều gì bạn gõ sau đó 511 00:36:46,520 --> 00:36:48,450 sẽ được thêm vào các lệnh. 512 00:36:48,450 --> 00:36:52,040 Trong trường hợp này, ví dụ tôi chỉ cho có, chúng tôi sử dụng số đầu tiên; 513 00:36:52,040 --> 00:36:54,610 chúng tôi không sử dụng bất kỳ những người khác. 514 00:36:54,610 --> 00:36:57,960 Nếu đối số khác đã được đưa ra trên dòng lệnh, họ sẽ không được sử dụng. 515 00:36:57,960 --> 00:37:04,630 Vì vậy, nếu bạn sử dụng tài liệu tham khảo lịch sử ở tất cả, sau đó bạn phải sử dụng nó để có được bất kỳ đối số. 516 00:37:04,630 --> 00:37:11,310 >> Có một điều ở đây tôi chỉ muốn đề cập đến, một phần trong ngoặc, 517 00:37:11,310 --> 00:37:15,250 cụ thể là cơ chế lịch sử này với dấu chấm than 518 00:37:15,250 --> 00:37:18,010 quay trở lại với bản gốc C-shell. 519 00:37:18,010 --> 00:37:27,060 Các tcsh giới thiệu các hoạt động lịch sử 520 00:37:27,060 --> 00:37:30,910 mà sử dụng các loại lệnh và chuỗi từ các biên tập viên, 521 00:37:30,910 --> 00:37:33,650 hoặc Emacs hoặc vi. 522 00:37:33,650 --> 00:37:36,430 Ý kiến ​​cá nhân của tôi là Emacs là dễ dàng hơn để sử dụng cho mục đích này 523 00:37:36,430 --> 00:37:39,390 ngay cả khi bạn sử dụng vi để chỉnh sửa thường xuyên của bạn. 524 00:37:39,390 --> 00:37:43,900 Có lệnh Emacs khác nhau mà hiện nay thích nghi với lịch sử. 525 00:37:43,900 --> 00:37:46,410 Kiểm soát P được các dòng trước đó trong danh sách lịch sử. 526 00:37:46,410 --> 00:37:48,840 Một điều khiển P sẽ giúp bạn có được một trước đó. 527 00:37:48,840 --> 00:37:50,540 Mũi tên lên làm điều tương tự. 528 00:37:50,540 --> 00:37:54,190 Kiểm soát N được lệnh tiếp theo nếu bạn đã cuộn lại một cách khác nhau. 529 00:37:54,190 --> 00:37:55,880 Mũi tên xuống nào đó quá. 530 00:37:55,880 --> 00:38:00,480 Bạn có thể di chuyển từ trái sang phải với các mũi tên và những thứ khác. 531 00:38:00,480 --> 00:38:02,390 Điều này có thể sử dụng các cơ chế lịch sử 532 00:38:02,390 --> 00:38:05,070 dễ dàng hơn nhiều so với sử dụng cú pháp dấu chấm than, 533 00:38:05,070 --> 00:38:07,930 nhưng bạn sẽ không sử dụng trong một định nghĩa bí danh. 534 00:38:17,780 --> 00:38:20,020 Chúng ta sẽ đi qua một số thời gian khác. 535 00:38:24,300 --> 00:38:25,810 >> Biến. 536 00:38:26,880 --> 00:38:29,510 Bạn biết những gì biến là ngôn ngữ lập trình. 537 00:38:29,510 --> 00:38:31,680 Vỏ có họ cũng có. 538 00:38:31,680 --> 00:38:37,350 C-vỏ sử dụng lệnh thiết lập để gán các biến, 539 00:38:37,350 --> 00:38:41,360 để thiết lập một biến với giá trị của b - 540 00:38:41,360 --> 00:38:46,390 như tôi đã nói, một định nghĩa vô dụng nhưng một minh họa về cách thức này được sử dụng. 541 00:38:48,790 --> 00:38:52,410 Lệnh thiết lập sẽ tạo ra một biến nếu nó không tồn tại. 542 00:38:55,270 --> 00:39:02,490 Các tham số vị trí cho các kịch bản vỏ có thể được coi là các biến, 543 00:39:02,490 --> 00:39:10,750 nhưng việc sử dụng chúng và các quy tắc cho họ có phần khác nhau. 544 00:39:10,750 --> 00:39:14,320 Bạn không thể gán một giá trị đến $ 1 trong quá trình một kịch bản. 545 00:39:14,320 --> 00:39:18,340 Bạn sẽ phải xác định một biến mới cho mục đích đó nếu một số bạn muốn. 546 00:39:23,000 --> 00:39:28,470 Loại thiết lập không có đối số và bạn sẽ có được một danh sách của tất cả các biến hiện nay được xác định. 547 00:39:28,470 --> 00:39:34,220 Và chúng ta hãy vượt qua vỏ khác của tôi ở đây và xem những gì chúng ta nhận được nếu chúng ta làm điều đó. 548 00:39:34,220 --> 00:39:37,110 Một danh sách khá dài ở đó, phải không? 549 00:39:37,110 --> 00:39:40,990 Di chuyển lên một chút. Nhìn vào tất cả những gì. 550 00:39:40,990 --> 00:39:44,330 Một số trong những điều được xác định tự động bởi vỏ. 551 00:39:44,330 --> 00:39:49,320 Vỏ tạo ra các biến và cung cấp cho nó một giá trị. 552 00:39:49,320 --> 00:39:52,730 Một số trong số họ được xác định bởi vỏ nhưng sau đó xác định lại bởi người sử dụng 553 00:39:52,730 --> 00:39:54,820 theo sở thích của mình. 554 00:39:54,820 --> 00:39:59,110 Và một số trong số họ được tạo ra bởi người sử dụng tùy thuộc vào những gì ông ấy đang làm ngày hôm đó. 555 00:39:59,110 --> 00:40:01,880 Đó chỉ là thiết lập không có đối số. 556 00:40:06,920 --> 00:40:10,050 Có một tính năng kỳ lạ ở đây điều này. 557 00:40:10,050 --> 00:40:17,980 Có phải là một trong hai không có khoảng trống giữa dấu bằng và tên biến 558 00:40:17,980 --> 00:40:23,700 và giá trị hoặc không gian của cả hai bên dấu bằng, 559 00:40:23,700 --> 00:40:28,940 như trong một này. 560 00:40:35,620 --> 00:40:41,340 Điều này sẽ không làm việc, và điều này thực sự là một lệnh hợp lệ 561 00:40:41,340 --> 00:40:43,390 nhưng nó sẽ không làm những gì bạn dự định. 562 00:40:43,390 --> 00:40:50,070 Lệnh đó sẽ làm việc bởi vì nếu bạn chỉ nói thiết lập và một tên biến 563 00:40:50,070 --> 00:40:54,890 không có dấu bằng, hoặc thiết lập và một tên biến với một dấu bằng và không có giá trị, 564 00:40:54,890 --> 00:40:57,770 nó sẽ thiết lập các biến để giá trị null. 565 00:40:57,770 --> 00:41:00,120 Vì vậy, thiết lập một = là một lệnh hợp lệ. 566 00:41:00,120 --> 00:41:04,370 Lệnh tập hợp có thể định nghĩa nhiều hơn 1 biến trên cùng một dòng. 567 00:41:04,370 --> 00:41:11,240 Vì vậy, lệnh này ở đây có tác dụng xác định cả a và b về null. 568 00:41:11,240 --> 00:41:13,470 Có lẽ không phải những gì bạn muốn. 569 00:41:13,470 --> 00:41:17,940 Điều này một ở đây, đề cập trước đó, sẽ dẫn đến một lỗi 570 00:41:17,940 --> 00:41:21,270 vì = b không phải là một biểu thức hợp lệ. 571 00:41:21,270 --> 00:41:23,680 Một tên biến không thể bắt đầu bằng dấu bằng. 572 00:41:26,760 --> 00:41:29,080 Và có những điều hơn nữa đây. 573 00:41:29,080 --> 00:41:36,820 Các dấu hai chấm được sử dụng để lựa chọn đối số từ dòng lịch sử, 574 00:41:36,820 --> 00:41:41,210 và họ có thể được sử dụng - và tôi đã không đi vào trước - để thay đổi những điều đó. 575 00:41:41,210 --> 00:41:44,480 Họ cũng có thể được sử dụng để sửa đổi các biến vỏ. 576 00:41:44,480 --> 00:41:49,050 Điều này một đây, $ a, có giá trị. 577 00:41:49,050 --> 00:41:55,040 : R sẽ cất cánh một phần mở rộng. 578 00:41:55,040 --> 00:41:57,200 Một phần mở rộng sẽ được bất cứ điều gì sau một dấu chấm, 579 00:41:57,200 --> 00:41:59,200 một dấu chấm và bất cứ điều gì sau đó vào cuối của một tập tin, 580 00:41:59,200 --> 00:42:03,230 chỉ ở cuối danh sách sau các dấu gạch chéo cuối cùng. 581 00:42:03,230 --> 00:42:05,480 Vì vậy, tôi có nó ở đây. 582 00:42:05,480 --> 00:42:10,730 một là. Nó sẽ thả. O. 583 00:42:10,730 --> 00:42:16,510 Nếu không có phần mở rộng, chỉ có tên đường dẫn sau dấu gạch chéo cuối cùng, nó sẽ không có hiệu lực. 584 00:42:16,510 --> 00:42:27,480 a: h, mà biểu hiện thay đổi, sẽ đưa ra khỏi phần tử cuối cùng của danh sách thư mục, 585 00:42:27,480 --> 00:42:29,660 một lần nữa, chỉ sau các dấu gạch chéo cuối cùng. 586 00:42:29,660 --> 00:42:33,160 Vì vậy, / a / b / c trở thành / a / b, 587 00:42:33,160 --> 00:42:38,870 nhưng điều này được thay đổi bởi vì các yếu tố sau khi danh sách là vô giá trị. 588 00:42:38,870 --> 00:42:43,070 Ở đây có cái gì đó mà tôi cũng muốn nhấn mạnh. 589 00:42:43,070 --> 00:42:46,770 Các vòng loại không tìm kiếm sự tồn tại của những tập tin này. 590 00:42:46,770 --> 00:42:48,910 Họ chỉ cần nhìn cho chuỗi. 591 00:42:48,910 --> 00:42:54,520 Đây là những dự định để thao tác tên tập tin, pathnames, 592 00:42:54,520 --> 00:42:57,520 nhưng chúng có thể được sử dụng trên bất kỳ chuỗi ngay cả khi nó không phải là một tên tập tin. 593 00:42:57,520 --> 00:42:58,920 Và họ không tìm sự tồn tại, 594 00:42:58,920 --> 00:43:03,550 vì vậy nếu không có tập tin như vậy, / a / b / c, điều này sẽ vẫn làm việc. 595 00:43:03,550 --> 00:43:06,930 Cho dù đó là sử dụng bất kỳ một câu hỏi, nhưng nó vẫn sẽ làm việc. 596 00:43:06,930 --> 00:43:12,850 Biến khác nhau trong vỏ Bourne. Chúng tôi sẽ nhận được điều này sau. 597 00:43:12,850 --> 00:43:18,240 Ký hiệu đô la có thể được thoát giống như dấu chấm than và dấu hoa thị. 598 00:43:18,240 --> 00:43:21,760 Ký hiệu đô la có thể được thoát ra bằng dấu gạch chéo ngược hoặc dấu nháy đơn. 599 00:43:21,760 --> 00:43:24,790 Dấu ngoặc kép có tác dụng kỳ lạ trong tất cả vỏ 600 00:43:24,790 --> 00:43:28,690 buộc các đánh giá của một đồng đô la ký biểu hiện biến. 601 00:43:28,690 --> 00:43:31,960 Vì vậy, nếu nó được thoát khỏi một cách, các dấu ngoặc kép có thể có tác 602 00:43:31,960 --> 00:43:34,380 gây nó được đánh giá nào. 603 00:43:34,380 --> 00:43:37,090 Đây là một chút bối rối. 604 00:43:37,090 --> 00:43:43,740 Nếu có nhiều mức độ thoát, chẳng hạn như dấu nháy đơn trong dấu ngoặc kép 605 00:43:43,740 --> 00:43:46,770 hoặc dấu ngoặc kép bên trong dấu ngoặc đơn, bạn nên kiểm tra để xem những gì sẽ xảy ra 606 00:43:46,770 --> 00:43:49,520 cho một biến nếu bạn đang sử dụng một. 607 00:43:49,520 --> 00:43:53,410 Những tình huống 2 - trong đôi duy nhất, bên trong duy nhất của đôi - 608 00:43:53,410 --> 00:43:55,980 không nhất thiết phải cung cấp cho bạn kết quả tương tự. 609 00:44:02,520 --> 00:44:05,600 Biến môi trường, biến C-vỏ bị ràng buộc. 610 00:44:05,600 --> 00:44:08,340 Biến môi trường cũng là các biến trong C-vỏ, 611 00:44:08,340 --> 00:44:11,250 và họ cũng là các biến trong vỏ khác quá. 612 00:44:11,250 --> 00:44:15,230 Trong C-vỏ, họ là tập hợp riêng biệt. 613 00:44:15,230 --> 00:44:18,130 Những điều tôi đã nói trước là về biến vỏ. 614 00:44:18,130 --> 00:44:21,300 Biến môi trường là một tập hợp khác nhau của các biến 615 00:44:21,300 --> 00:44:28,650 ngoại trừ một số biến mà chúng ta gọi là biến bị ràng buộc, 616 00:44:28,650 --> 00:44:30,640 đó là rất quan trọng và chúng tôi sẽ nhận được vào những người sau này. 617 00:44:30,640 --> 00:44:34,950 Biến môi trường sẽ được tự động thông qua ngày 618 00:44:34,950 --> 00:44:41,800 để vỏ hoặc lệnh được chạy từ vỏ của bạn. 619 00:44:41,800 --> 00:44:46,220 Những điều khác thì không. Các biến vỏ, bí danh là không. Biến môi trường là. 620 00:44:46,220 --> 00:44:48,630 Đó là lý do tại sao chúng tôi gọi họ biến môi trường, 621 00:44:48,630 --> 00:44:55,030 ý tưởng được rằng môi trường kéo dài quá khứ chỉ vỏ hiện tại của bạn. 622 00:44:55,030 --> 00:45:00,510 Chúng có thể được sử dụng để xác định điều lệnh. 623 00:45:00,510 --> 00:45:05,470 Đây là một ví dụ. MÁY IN, LPDEST. 624 00:45:05,470 --> 00:45:12,270 Cả hai của những biến có thể xác định một máy in có một lệnh sẽ sử dụng để in những thứ. 625 00:45:12,270 --> 00:45:16,500 Nếu bạn có nhiều máy in xung quanh, bạn có thể muốn đặt một trong những bạn thích. 626 00:45:16,500 --> 00:45:21,320 Lý do chúng tôi có 2 biến là bộ khác nhau của các lệnh được viết 627 00:45:21,320 --> 00:45:23,870 sử dụng các biến khác nhau. 628 00:45:23,870 --> 00:45:25,910 Bạn có thể cung cấp cho họ những giá trị khác nhau. 629 00:45:25,910 --> 00:45:28,860 Rất có thể bạn sẽ cung cấp cho họ cả hai cùng giá trị. 630 00:45:28,860 --> 00:45:35,840 Những điều làm việc vì các lệnh làm in ấn 631 00:45:35,840 --> 00:45:40,740 đã được lập trình để kiểm tra các giá trị của các biến này. 632 00:45:42,200 --> 00:45:46,150 Nếu một chương trình đã không được viết theo cách đó, nếu nó được viết để làm cái gì khác, 633 00:45:46,150 --> 00:45:48,280 biến sẽ là không thích hợp. 634 00:45:48,280 --> 00:45:52,530 Vì vậy, các hệ điều hành không tìm kiếm các biến 635 00:45:52,530 --> 00:45:55,210 mỗi khi bạn đề cập đến một máy in. 636 00:45:55,210 --> 00:45:59,090 Một lệnh thực hiện in ấn đang tìm kiếm các biến nếu nó được lập trình theo cách đó. 637 00:46:11,030 --> 00:46:15,240 Các biến này thường được xác định trong các tập tin khởi tạo của bạn 638 00:46:15,240 --> 00:46:19,440 nhưng không nhất thiết. 639 00:46:19,440 --> 00:46:21,050 Bạn có thể xác định họ trên dòng lệnh. 640 00:46:21,050 --> 00:46:24,090 Chúng có thể được định nghĩa trong một lệnh. 641 00:46:24,090 --> 00:46:28,740 Một lệnh chạy một cái gì đó có thể có lựa chọn riêng của mình biến - 642 00:46:28,740 --> 00:46:32,390 biến là duy nhất cho một gói phần mềm đặc biệt, ví dụ. 643 00:46:32,390 --> 00:46:36,740 Họ sẽ được xác định khi bạn chạy gói đó. 644 00:46:39,690 --> 00:46:42,680 Làm thế nào được các biến được truyền cho một tiểu vỏ? 645 00:46:42,680 --> 00:46:48,210 Khi một tiểu vỏ được viết, nó không viết vào khu vực đó. 646 00:46:48,210 --> 00:46:53,260 Khu vực của tiểu vỏ đó là dành cho các biến môi trường 647 00:46:53,260 --> 00:46:56,450 không được viết bởi các tiểu vỏ, nó được viết bằng cách sao chép. 648 00:46:56,450 --> 00:47:00,530 Khi bạn chạy một lệnh thông thường, chẳng hạn như các lệnh in hoặc bất cứ điều gì, 649 00:47:00,530 --> 00:47:03,840 họ bắt đầu bằng cách tạo ra một lớp vỏ mới. 650 00:47:03,840 --> 00:47:06,190 Vỏ tạo ra một vỏ và sau đó ghi đè lên một phần của nó 651 00:47:06,190 --> 00:47:08,800 với các lệnh mà bạn đang chạy, đó là một chút bối rối, 652 00:47:08,800 --> 00:47:10,740 nhưng đó là cách các lệnh này có được các biến môi trường 653 00:47:10,740 --> 00:47:14,890 rằng họ sau đó tham khảo sau này. 654 00:47:21,920 --> 00:47:28,010 Lệnh ở đây để xác định setenv biến. 655 00:47:28,010 --> 00:47:36,470 Đó là cách bạn định nghĩa nó. Đó là 3 yếu tố: setenv, biến, giá trị. 656 00:47:36,470 --> 00:47:44,710 Nếu bạn chỉ cần setenv không có đối số, những gì bạn nhận được? 657 00:47:47,220 --> 00:47:48,810 Một danh sách tất cả các biến. 658 00:47:48,810 --> 00:47:53,190 Một lần nữa, đó là một danh sách dài đẹp và trong trường hợp này, như trong những người khác, 659 00:47:53,190 --> 00:47:57,320 các biến này được xác định chủ yếu do hoạt động đăng nhập của tôi bằng vỏ thân 660 00:47:57,320 --> 00:47:59,740 chứ không phải do bất cứ điều gì tôi đã làm. 661 00:47:59,740 --> 00:48:03,580 Có một lệnh đây, printenv. 662 00:48:07,520 --> 00:48:10,340 Mà cũng in ra môi trường. 663 00:48:10,340 --> 00:48:15,240 Chú ý điều cuối cùng này đây, EDITOR = vi. 664 00:48:15,240 --> 00:48:21,120 Điều đó nói rằng nếu tôi đang sử dụng một cái gì đó mà các cuộc gọi một biên tập viên 665 00:48:21,120 --> 00:48:25,530 và tôi không chỉ định một biên tập viên và nó cho phép tôi lựa chọn, nó có thể cung cấp cho tôi vi. 666 00:48:25,530 --> 00:48:37,280 Nếu tôi làm EDITOR printenv? Nó nói với tôi nó là gì. 667 00:48:37,280 --> 00:48:41,340 Ngay trước đó, đã có một biến, LESS. 668 00:48:41,340 --> 00:48:46,040 Đây là mặc định lựa chọn của bạn khi tôi chạy lệnh LESS, 669 00:48:46,040 --> 00:48:49,360 hiển thị tập tin. 670 00:48:49,360 --> 00:48:55,910 Vì vậy, nếu tôi làm điều đó, printenv có thể mất 1 đối số hoặc đối số 0, 671 00:48:55,910 --> 00:48:58,070 không quá 1. 672 00:49:01,800 --> 00:49:05,690 Có nhiều lệnh khác cũng có, nhưng chúng tôi sẽ không nhận được vào tất cả những gì ngày hôm nay. 673 00:49:05,690 --> 00:49:11,010 Nhớ có các bổ cho các biến vỏ như: h, 674 00:49:11,010 --> 00:49:14,350 mà sẽ thả các phần tử cuối cùng của một tên đường dẫn, 675 00:49:14,350 --> 00:49:17,950 hoặc: r, sẽ hủy bỏ một phần mở rộng. 676 00:49:17,950 --> 00:49:23,110 Những người đang áp dụng đối với các biến môi trường quá. Họ không sử dụng đến. 677 00:49:23,110 --> 00:49:24,960 Nó được sử dụng để họ không thể được sửa đổi. Bây giờ họ có thể được. 678 00:49:24,960 --> 00:49:29,190 Đó là một trong những tiến bộ với sự phát triển của các quả đạn trong những năm qua. 679 00:49:29,190 --> 00:49:35,620 Tôi đã nói rằng vỏ như một phần của môi trường 680 00:49:35,620 --> 00:49:43,040 và các biến shell trong C vỏ là, với một số trường hợp ngoại lệ, bộ riêng biệt. 681 00:49:43,040 --> 00:49:46,790 Bạn có thể thiết lập một biến môi trường và biến vỏ có cùng tên. 682 00:49:46,790 --> 00:49:49,220 Họ sẽ có các biến khác nhau, họ có thể có giá trị khác nhau. 683 00:49:49,220 --> 00:49:53,090 Thay đổi giá trị của một sẽ không thay đổi giá trị của người khác. 684 00:49:53,090 --> 00:49:58,070 Các biến này được tất cả các đánh giá với dấu $ - $ a, $ bất cứ điều gì. 685 00:49:58,070 --> 00:50:02,340 Vì vậy, nếu bạn có điều này? Bạn có biết một trong những bạn nhận được? 686 00:50:02,340 --> 00:50:04,520 Trong các thử nghiệm của tôi, tôi đã biến vỏ, 687 00:50:04,520 --> 00:50:07,240 nhưng điều này là không phải tài liệu và bạn không thể dựa vào đó. 688 00:50:07,240 --> 00:50:10,270 Vì vậy, tôi yêu cầu bạn, đang tạo ra vỏ và biến môi trường 689 00:50:10,270 --> 00:50:13,490 với cùng tên một ý tưởng tốt? Số rồi. 690 00:50:13,490 --> 00:50:17,460 Những trường hợp ngoại lệ lớn trong đó môi trường và vỏ biến là gì 691 00:50:17,460 --> 00:50:19,860 được liên kết với nhau? 692 00:50:19,860 --> 00:50:27,470 Có những 4. 693 00:50:32,030 --> 00:50:35,510 Thư vốn biến môi trường hạn, 694 00:50:35,510 --> 00:50:41,540 bao biến hạn trong chữ nhỏ, loại thi đua thiết bị đầu cuối. 695 00:50:41,540 --> 00:50:47,430 Tôi chỉ sẽ đi qua đây và tôi sẽ làm tiếng vang, một lệnh hữu ích ở đây, 696 00:50:47,430 --> 00:50:52,560 $ $ HẠN hạn. Và ở đó. 697 00:50:52,560 --> 00:51:00,570 xterm là một loại thiết bị đầu cuối cho các cửa sổ hiển thị trong cửa sổ System x. 698 00:51:00,570 --> 00:51:04,330 xterm-màu sắc là một biến thể của mà cho phép màu sắc khác nhau. 699 00:51:04,330 --> 00:51:06,580 Tại sao chúng ta xác định những? Đây là những gì tốt không? 700 00:51:06,580 --> 00:51:09,740 Lệnh sắp xếp lại màn hình giống như các biên tập viên 701 00:51:09,740 --> 00:51:13,680 gửi trình tự đặc biệt, được gọi là trình tự thoát ra, 702 00:51:13,680 --> 00:51:18,160 để một thiết bị đầu cuối hoặc một cửa sổ để sắp xếp lại nó và vv. 703 00:51:18,160 --> 00:51:20,990 Những trình tự khác nhau cho các loại thiết bị đầu cuối. 704 00:51:20,990 --> 00:51:23,100 Điều này cho nó mà những người sử dụng. 705 00:51:23,100 --> 00:51:25,900 Đôi khi có những vấn đề đó. 706 00:51:25,900 --> 00:51:28,600 Bạn có thể muốn thay đổi điều đó. 707 00:51:28,600 --> 00:51:30,780 Nếu điều này không làm việc, đôi khi các loại thiết bị đầu cuối được thiết lập sai, 708 00:51:30,780 --> 00:51:36,440 bạn có thể sửa chữa nó bằng việc xác định lại biến hạn. 709 00:51:36,440 --> 00:51:43,420 Trong những trường hợp này, thay đổi một biến, các biến môi trường hoặc biến vỏ, 710 00:51:43,420 --> 00:51:45,970 nên thay đổi một khác. 711 00:51:45,970 --> 00:51:50,970 Tôi đã phát hiện ra thông qua kinh nghiệm mà thay đổi hạn bằng chữ in hoa 712 00:51:50,970 --> 00:51:54,060 không phải luôn luôn thay đổi vỏ biến hạn bằng chữ nhỏ. 713 00:51:54,060 --> 00:51:55,550 Đây là một lỗi. 714 00:51:55,550 --> 00:51:59,400 Tôi không biết nếu đó là luôn luôn đúng. Phần lớn thời gian nó không phải là sự thật, nhưng nó có thể được. 715 00:51:59,400 --> 00:52:02,490 Vì vậy, nếu bạn thực hiện một sự thay đổi, chỉ cần kiểm tra mà ra. 716 00:52:02,490 --> 00:52:05,830 Nó không phải là thường xuyên mà bạn cần thay đổi giá trị đó, nhưng một lần trong một thời gian bạn làm. 717 00:52:05,830 --> 00:52:08,260 Môi trường USER biến. 718 00:52:08,260 --> 00:52:12,070 Một lần nữa, biến môi trường bằng chữ in hoa, bao biến bằng chữ nhỏ. 719 00:52:12,070 --> 00:52:13,710 Đây là tên người dùng của bạn. 720 00:52:13,710 --> 00:52:16,730 Nó chỉ trong những trường hợp rất đặc biệt 721 00:52:16,730 --> 00:52:18,420 mà bạn sẽ muốn thay đổi điều đó. 722 00:52:18,420 --> 00:52:22,350 Nếu tên của bạn là một người khác, nó có thể ném tất cả các loại vật tắt. 723 00:52:22,350 --> 00:52:26,040 Thư mục, thư mục nhà của người dùng. 724 00:52:26,040 --> 00:52:28,060 Một lần nữa, bạn sẽ không muốn thay đổi điều đó. 725 00:52:28,060 --> 00:52:32,260 Thông báo trong tất cả các trường hợp này và một trong đó chúng tôi về để trang trải, biến con đường, 726 00:52:32,260 --> 00:52:37,070 biến môi trường là bằng chữ in hoa và biến vỏ ràng buộc là chữ thường. 727 00:52:37,070 --> 00:52:39,240 Nếu bạn thay đổi một, bạn nên thay đổi khác. 728 00:52:39,240 --> 00:52:45,960 Loại ràng buộc không thể được thành lập như là bạn không thể liên kết 2 biến, 729 00:52:45,960 --> 00:52:50,570 khác hơn những 4, và những ràng buộc trong các biến này không thể được hoàn tác, 730 00:52:50,570 --> 00:52:52,090 bạn không thể tách chúng ra. 731 00:52:52,090 --> 00:52:55,820 Vì vậy, những 4 cặp biến bị ràng buộc. 732 00:52:55,820 --> 00:52:59,020 Họ sẽ luôn luôn được. Những người khác không có. 733 00:52:59,020 --> 00:53:05,720 Ngoài ra, nó sẽ có thể tạo ra các biến có cùng tên 734 00:53:05,720 --> 00:53:07,780 các loại đối diện. 735 00:53:07,780 --> 00:53:11,600 Bạn có thể làm cho một thuật ngữ biến vỏ bằng chữ nhỏ 736 00:53:11,600 --> 00:53:14,990 hoặc một môi trường hạn biến bằng chữ in hoa. 737 00:53:14,990 --> 00:53:19,040 Các biến sẽ được độc lập của các biến kết hợp 738 00:53:19,040 --> 00:53:20,780 và họ sẽ độc lập với nhau. 739 00:53:20,780 --> 00:53:23,780 Tôi không thể tưởng tượng tại sao bạn sẽ làm điều đó, trừ khi bạn muốn gây nhầm lẫn người dân. 740 00:53:24,600 --> 00:53:29,730 Điều này một ở đây, biến con đường, điều này là một thực sự quan trọng. 741 00:53:29,730 --> 00:53:35,550 Một điều ở đây là có thể có trường hợp 742 00:53:35,550 --> 00:53:40,430 các biến với tên ghép đôi tương tự mà không bị ràng buộc với nhau. 743 00:53:40,430 --> 00:53:45,000 Có thể có các biến, SHELL và vỏ, vốn nhỏ và chữ cái. 744 00:53:45,000 --> 00:53:48,300 Dựa trên tên đó, bạn không biết nếu biến đó là một biến vỏ 745 00:53:48,300 --> 00:53:51,580 hoặc một biến môi trường, và họ không bị ràng buộc với nhau. 746 00:53:51,580 --> 00:53:55,300 Vì vậy, loại tên cặp nào không bao hàm các biến bị ràng buộc. 747 00:53:55,300 --> 00:53:58,830 Biến con đường, mà tôi đã được thấy trước, 748 00:53:58,830 --> 00:54:01,880 là một danh sách các tên đường dẫn trong đó vỏ trông cho các lệnh. 749 00:54:01,880 --> 00:54:12,320 Hãy qua cửa sổ này ở đây và chúng tôi sẽ làm echo $ PATH, chữ in hoa - 750 00:54:12,320 --> 00:54:20,230 biến môi trường - echo $ con đường, chữ nhỏ - bao biến. 751 00:54:20,230 --> 00:54:24,980 Chú ý rằng danh sách các thư mục là như nhau. Đây là những ràng buộc. 752 00:54:24,980 --> 00:54:26,590 Thay đổi một, bạn thay đổi khác. 753 00:54:26,590 --> 00:54:32,970 Trong biến môi trường các yếu tố được phân cách bằng dấu hai chấm. Chú ý rằng. 754 00:54:32,970 --> 00:54:35,130 Các biến vỏ được ngăn cách bởi khoảng trắng. 755 00:54:35,130 --> 00:54:38,760 Biến môi trường này là một chuỗi duy nhất. 756 00:54:38,760 --> 00:54:41,480 Biến vỏ là một mảng. 757 00:54:41,480 --> 00:54:43,490 Bourne vỏ không có mảng. 758 00:54:43,490 --> 00:54:46,600 Bash không, nhưng điều này đã là một phần cố định của vỏ. 759 00:54:46,600 --> 00:54:48,660 Đây là một chuỗi duy nhất và không phải là một mảng. 760 00:54:48,660 --> 00:54:50,420 C-shell luôn luôn có mảng. 761 00:54:50,420 --> 00:54:52,630 Các mảng được dễ dàng hơn để làm việc với. 762 00:54:52,630 --> 00:54:54,400 Bạn có thể tham khảo các bộ phận của nó. 763 00:54:54,400 --> 00:55:02,350 $ Path để tiếng vang [1] và tôi nhận được / usr / bin, yếu tố đầu tiên. 764 00:55:02,350 --> 00:55:09,950 Một lần nữa, hãy nhớ đô la dấu hiệu tượng trưng cho phần tử cuối cùng của danh sách lịch sử. 765 00:55:09,950 --> 00:55:16,850 Những gì xảy ra ở đó? Nó đã cố gắng để tìm thấy ký hiệu đô la như một biểu tượng biến. 766 00:55:16,850 --> 00:55:20,850 Tôi thoát khỏi nó. Rất tiếc. Nó sẽ không mất một trong hai. 767 00:55:20,850 --> 00:55:23,690 Một số những điều này không làm việc rất tốt. 768 00:55:23,690 --> 00:55:28,140 Có lẽ chúng ta sẽ chỉ để lại mà ra. 769 00:55:28,140 --> 00:55:36,980 Asterisk đề cập đến toàn bộ điều, nhưng đó là những gì bạn nhận được nếu bạn không chỉ định một phần tử. 770 00:55:36,980 --> 00:55:46,170 Một cách khác mà các biến mảng có thể được thao tác, 771 00:55:46,170 --> 00:55:49,500 số yếu tố có 7 yếu tố. 772 00:55:49,500 --> 00:55:53,410 Ở đây chúng ta đặt dấu thăng trước tên biến. 773 00:55:53,410 --> 00:55:58,280 Dưới đây là một số khác. Đặt một dấu chấm hỏi đó. 774 00:55:58,280 --> 00:56:03,170 Đó là một giá trị hợp lý. Chỉ ra rằng biến tồn tại. 775 00:56:03,170 --> 00:56:05,160 Đó là một cách khác để làm việc với các biến. 776 00:56:05,160 --> 00:56:06,660 Rằng, bằng cách này, không phải là một biến mảng. 777 00:56:06,660 --> 00:56:08,210 Đó có thể là bất kỳ biến. 778 00:56:08,210 --> 00:56:11,840 Và nếu tôi làm, không có biến như vậy và tôi nhận được một 0. 779 00:56:11,840 --> 00:56:14,990 Một điều ít có về đánh giá biến. 780 00:56:23,670 --> 00:56:32,950 Trở lại này ở đây, nếu vì một lý do bạn muốn làm việc với điều này 781 00:56:32,950 --> 00:56:37,990 chứ không phải là làm việc với mảng, biến vỏ, 782 00:56:37,990 --> 00:56:41,470 có lệnh mà có thể tách riêng những điều này dựa trên đại tràng. 783 00:56:41,470 --> 00:56:44,080 Trong thực tế, nếu bạn đang đi để được làm điều này trong Bash shell có thể, 784 00:56:44,080 --> 00:56:47,110 một số loại của một kịch bản, đó sẽ là làm thế nào bạn có thể sẽ làm điều đó. 785 00:56:47,110 --> 00:56:50,350 Nhưng trong C-vỏ nó dễ dàng hơn để sử dụng mảng. 786 00:56:50,350 --> 00:56:58,250 Trong Bourne shell, các biến được chỉ định bởi một biểu thức duy nhất như thế này, 787 00:56:58,250 --> 00:57:01,760 giống như cách bạn có thể gán một biến trong một ngôn ngữ lập trình, 788 00:57:01,760 --> 00:57:05,110 và đây có phải là không có khoảng trống. 789 00:57:05,110 --> 00:57:09,110 Đó là cần thiết rằng đó là chỉ 1 chuỗi. 790 00:57:09,110 --> 00:57:14,980 Trong vỏ Bourne loại, tất cả các biến là các biến vỏ. 791 00:57:14,980 --> 00:57:19,250 Biến môi trường là một tập hợp con của các biến shell. 792 00:57:19,250 --> 00:57:24,060 Chúng được phân biệt với các biến không môi trường bằng cách xuất khẩu. 793 00:57:24,060 --> 00:57:28,860 Các lệnh để làm điều đó là xuất khẩu, như xuất khẩu PRINTER. 794 00:57:28,860 --> 00:57:34,930 Nếu chúng ta xác định một biến như vậy, 795 00:57:34,930 --> 00:57:38,480 nếu chúng ta muốn có một lệnh in để tìm thấy nó, nó sẽ phải là một biến môi trường, 796 00:57:38,480 --> 00:57:40,730 và đó là cách chúng tôi làm cho nó một. 797 00:57:40,730 --> 00:57:42,090 Ở đây có điều gì đó loại khó hiểu. 798 00:57:42,090 --> 00:57:50,430 Biểu hiện này, xuất khẩu đến môi trường, xuất phát từ khái niệm vỏ Bourne này, 799 00:57:50,430 --> 00:57:54,520 và chưa biểu hiện được sử dụng trong mô tả của C-vỏ, 800 00:57:54,520 --> 00:57:57,920 nơi không có lệnh như xuất khẩu. 801 00:57:57,920 --> 00:58:06,200 Nếu bạn chỉ nói xuất khẩu của chính nó, bạn sẽ có được một danh sách các xuất khẩu - 802 00:58:06,200 --> 00:58:10,620 Vì vậy, nếu tôi chỉ xuất khẩu ở đây, không có điều đó. 803 00:58:13,620 --> 00:58:15,200 Được rồi, có chúng tôi đi. 804 00:58:15,200 --> 00:58:17,010 Những điều này, bằng cách này, cũng được xác định bằng vỏ. 805 00:58:17,010 --> 00:58:19,400 Tôi không xác định bất kỳ trong số này bằng bản thân mình. 806 00:58:19,400 --> 00:58:23,550 Vỏ làm tất cả các loại vật của chính nó. 807 00:58:23,550 --> 00:58:26,650 Nó nên làm những việc tự động. 808 00:58:30,240 --> 00:58:36,880 Trong Bash hoặc Korn shell, bạn có thể chạy một lệnh như thế này, 809 00:58:36,880 --> 00:58:42,000 mà cả hai sẽ cung cấp cho một biến một giá trị và xuất khẩu nó trong 1 lệnh. 810 00:58:42,000 --> 00:58:46,150 Trong vỏ Bourne họ có được lệnh riêng biệt như xuất khẩu một. 811 00:58:46,150 --> 00:58:48,410 Đây là một khía cạnh đó là khó hiểu. 812 00:58:48,410 --> 00:58:52,220 Lệnh set trong C-vỏ định nghĩa biến 813 00:58:52,220 --> 00:58:55,550 và không có đối số cho bạn biết giá trị của các biến là. 814 00:58:55,550 --> 00:59:01,140 Trong Bash shell, lệnh thiết lập không có đối số làm điều tương tự, 815 00:59:01,140 --> 00:59:03,580 nhưng với lập luận nó một cái gì đó hoàn toàn khác nhau. 816 00:59:03,580 --> 00:59:06,200 Vì vậy, đây là những lập luận khác nhau ở đây. 817 00:59:06,200 --> 00:59:10,460 Một số trong số này là biến môi trường, một số trong số đó là các biến shell. 818 00:59:10,460 --> 00:59:13,200 Tất cả đều là các biến shell thực sự. Một số những người đang có biến môi trường. 819 00:59:15,690 --> 00:59:23,920 Lệnh set với các đối số có thể được sử dụng để hoạt động 820 00:59:23,920 --> 00:59:28,220 trên các thông số vị trí cho một kịch bản, 821 00:59:28,220 --> 00:59:33,910 mà là một cách để nhận được tất cả cùng một lúc. 822 00:59:33,910 --> 00:59:36,150 Chúng ta có thể không thực sự đi vào ngày hôm nay. 823 00:59:36,150 --> 00:59:39,580 Nó cũng có thể được sử dụng để thay đổi hành vi vỏ. 824 00:59:39,580 --> 00:59:46,700 Đặc biệt là trong Bash có các biến mà sẽ xác định cách cư xử vỏ. 825 00:59:46,700 --> 00:59:51,310 Sau đó cũng chỉ là một câu lệnh này bạn có thể thấy, lệnh này. 826 00:59:51,310 --> 00:59:59,050 Sắp chữ theo sau các biến và các loại biến được sử dụng trong vỏ Korn và Bash. 827 00:59:59,050 --> 01:00:04,970 Nó không phải là bắt buộc nhưng nó có thể được sử dụng để hạn chế các giá trị của các biến, 828 01:00:04,970 --> 01:00:08,400 có thể hữu ích để ngăn chặn các lỗi, và nó khá phổ biến. 829 01:00:08,400 --> 01:00:11,640 Vì vậy, tôi chỉ nói đến là trong trường hợp bạn nhìn thấy nó ở đâu đó. 830 01:00:17,290 --> 01:00:19,160 Lệnh nơi. 831 01:00:19,160 --> 01:00:22,490 Nhớ tôi đã đề cập trước đó, nơi lệnh trong C-vỏ, 832 01:00:22,490 --> 01:00:28,750 mà có thể cho bạn biết vị trí của một tên đường dẫn lệnh. 833 01:00:28,750 --> 01:00:32,580 Đây là sự thay thế lệnh. 834 01:00:32,580 --> 01:00:41,900 Bạn nên tìm một nơi nào đó trên bàn phím của bạn một nhân vật trông như thế này. 835 01:00:41,900 --> 01:00:44,910 Vị trí trên bàn phím sẽ thay đổi. 836 01:00:44,910 --> 01:00:47,050 Chúng tôi đã gọi nó là backquote. Đó là về kích thước của một báo giá. 837 01:00:47,050 --> 01:00:48,720 Nó đi từ phía trên bên trái để giảm ngay. 838 01:00:48,720 --> 01:00:52,690 Ở đây trên bàn phím máy Mac của tôi nó ở góc trên bên trái. 839 01:00:52,690 --> 01:00:58,150 Nhân vật có thể được sử dụng để thực thi một lệnh trong một lệnh. 840 01:00:58,150 --> 01:01:03,400 Nếu bạn có một biểu hiện bên trong backquotes, 841 01:01:03,400 --> 01:01:07,080 biểu hiện đó là một lệnh, nó chạy. 842 01:01:07,080 --> 01:01:09,010 Đầu ra của lệnh 843 01:01:09,010 --> 01:01:11,980 sau đó được thay thế cho các biểu hiện toàn bộ backquote 844 01:01:11,980 --> 01:01:16,110 bên trong một lệnh dài hơn sau đó chạy với đầu ra 845 01:01:16,110 --> 01:01:22,010 như là một phần của chuỗi của các đối số và vv. 846 01:01:22,010 --> 01:01:28,640 Đây là một câu lệnh trong đó sử dụng. 847 01:01:28,640 --> 01:01:32,340 Hãy chứng minh các hoạt động ở đây. 848 01:01:44,980 --> 01:01:49,090 Chúng ta hãy đi lên đây, đưa ra các backquotes. 849 01:01:49,090 --> 01:01:54,410 Một kiểm soát được tôi đến đầu dòng với cú pháp chỉnh sửa Emacs. 850 01:01:54,410 --> 01:02:00,380 Cho đến nay các tên đường dẫn là gì, nơi nào, 851 01:02:00,380 --> 01:02:05,040 nhưng khi tôi làm điều đó như thế này, nó sau đó cắm trong đó danh sách các tên đường dẫn 852 01:02:05,040 --> 01:02:08,750 ở vị trí của biểu thức này backquote toàn bộ và chạy ls-l trên chúng. 853 01:02:08,750 --> 01:02:11,120 Loại tiện lợi, phải không? 854 01:02:11,120 --> 01:02:14,860 Vì vậy, đó là một điều gọn gàng. Đó là cách làm việc backquotes. 855 01:02:14,860 --> 01:02:17,560 Bây giờ hãy đi xuống một chút nữa. 856 01:02:17,560 --> 01:02:22,050 Đây là bí danh. Tôi thực sự sử dụng các. 857 01:02:22,050 --> 01:02:26,410 Tôi sẽ cố gắng để có được trong này với 1 hoạt động chỉnh sửa. 858 01:02:34,900 --> 01:02:36,900 Được rồi. 859 01:02:36,900 --> 01:02:39,630 Bây giờ chúng ta hãy xem làm thế nào những định nghĩa ra. 860 01:02:39,630 --> 01:02:44,930 bí danh LWH nói với tôi như thế nào nó được định nghĩa. 861 01:02:44,930 --> 01:02:51,210 Nhận thấy nó chỉ này, nhưng có dấu ngoặc kép bên ngoài đã được đưa ra 862 01:02:51,210 --> 01:02:53,750 và dấu chấm than được lấy ra. 863 01:02:53,750 --> 01:02:58,940 *, Danh sách đầy đủ của tất cả các đối số. 864 01:02:58,940 --> 01:03:03,580 Trong một định nghĩa bí danh nó sẽ được áp dụng trở lại nơi mà tôi sử dụng này. 865 01:03:03,580 --> 01:03:10,620 LWH ksh bash. Được rồi. 866 01:03:10,620 --> 01:03:13,960 Xem làm thế nào mà làm việc? Nó tiết kiệm cho tôi một số cách gõ. 867 01:03:13,960 --> 01:03:16,440 Chúng ta hãy đi lên một chút chỉ để đề cập đến một cái gì đó khác ở đây. 868 01:03:19,150 --> 01:03:23,120 Nhận thấy ở đây những vỏ khác nhau. Tôi có nên nói điều này trước khi. 869 01:03:23,120 --> 01:03:36,060 Các csh có 2 trên đây và do đó, / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 Chúng ta có thể thiết lập bằng các phương tiện khác mà những người thực sự cùng một tập tin. 871 01:03:39,870 --> 01:03:43,150 Nhớ tôi đã nói nếu bạn gõ sh bạn nhận được bash. 872 01:03:43,150 --> 01:03:47,390 Loại này và bạn có được điều này. 873 01:03:47,390 --> 01:03:51,730 Nhưng những người không liên quan. Những người có những người duy nhất ở đó. 874 01:03:51,730 --> 01:03:54,910 Và điều này không phải là các loại tập tin mà có thể gọi nhau. 875 01:03:54,910 --> 01:03:59,460 Vì vậy, đó là những tập tin riêng biệt; những C vỏ là cùng một tập tin. 876 01:03:59,460 --> 01:04:03,640 Xuống đây, một trong những khác ở đây, bí danh này, 877 01:04:03,640 --> 01:04:09,090 lưu ý đó là chạy lệnh này, tập tin. 878 01:04:09,090 --> 01:04:13,810 Bí danh mà chạy đó. Tập tin cho bạn biết kiểu của một tập tin. 879 01:04:13,810 --> 01:04:20,330 Vì vậy, FWH ksh bash. Được rồi. 880 01:04:20,330 --> 01:04:23,230 Đó là kết quả của lệnh tập tin. 881 01:04:23,230 --> 01:04:24,630 Tôi không biết nếu bạn biết điều này có nghĩa là ở đây, 882 01:04:24,630 --> 01:04:26,750 Mach-O nhị phân phổ quát với 2 kiến ​​trúc. 883 01:04:26,750 --> 01:04:30,470 Có 2 loại bộ vi xử lý có thể có trong Mac, 884 01:04:30,470 --> 01:04:34,780 và một số chương trình được viết để có thể chạy với cả hai, 885 01:04:34,780 --> 01:04:37,950 và lệnh tập tin có thể xác định rằng, đó là những điều này có nghĩa là. 886 01:04:37,950 --> 01:04:40,660 Cả hai của những tập tin được viết theo cách đó. 887 01:04:40,660 --> 01:04:43,760 Vì vậy, chúng ta thấy bí danh hoạt động, chúng tôi xem như thế nào backquote hoạt động, 888 01:04:43,760 --> 01:04:48,640 chúng tôi xem như thế nào ls tập tin thực tế hoặc tập tin hoạt động. 889 01:04:52,050 --> 01:04:57,000 Điều này có thể không làm việc. Hãy thử ", nơi mà" và "LWH nơi". Được rồi, chúng ta hãy cố gắng đó. 890 01:04:57,000 --> 01:05:01,040 nơi nơi. 891 01:05:01,040 --> 01:05:03,500 mà là một vỏ tích hợp. 892 01:05:03,500 --> 01:05:06,970 Nhớ trước đó chúng tôi cho thấy Bash không có nơi. 893 01:05:06,970 --> 01:05:10,080 Nếu bạn gõ nơi trong Bash shell, bạn nhận được một thông báo lỗi. 894 01:05:10,080 --> 01:05:12,540 Nó chỉ là một phần của vỏ chứ không phải là một lệnh riêng biệt. 895 01:05:12,540 --> 01:05:20,000 Điều gì xảy ra nếu tôi gõ LWH tìm kiếm ở đâu? Xem những gì xảy ra ở đó. 896 01:05:20,000 --> 01:05:22,850 Chạy nơi đâu, có đầu ra này, và sau đó cố gắng chạy ls 897 01:05:22,850 --> 01:05:25,600 như l vào nơi là một vỏ tích hợp. 898 01:05:25,600 --> 01:05:28,790 nơi là có, nhưng những người khác không tồn tại. 899 01:05:28,790 --> 01:05:32,090 Không có những tồn tại, thực sự. 900 01:05:32,090 --> 01:05:35,560 Vì vậy, điều đó không luôn luôn làm việc, và nó cũng minh họa một số điều 901 01:05:35,560 --> 01:05:39,580 không làm hoàn toàn những gì bạn có thể nghĩ. 902 01:05:40,930 --> 01:05:43,010 Chúng ta hãy đi xuống một chút nữa đây. 903 01:05:44,890 --> 01:05:54,760 Ở đây là trong Bash. Đó cũng là sự thay thế lệnh như backquote. 904 01:05:54,760 --> 01:06:05,280 Nhưng không giống như backquote, nó sử dụng kiểu biến này. 905 01:06:05,280 --> 01:06:09,860 Có một số các biểu thức bắt đầu bằng một ký hiệu đô la, 906 01:06:09,860 --> 01:06:16,070 và trong khi đây không phải là biến, họ vay mượn việc sử dụng các ký hiệu đô la 907 01:06:16,070 --> 01:06:19,570 để chỉ một biểu hiện của một số loại. 908 01:06:19,570 --> 01:06:23,550 Có thể được bao quanh bởi dấu ngoặc đơn hoặc dấu ngoặc hoặc dấu ngoặc kép, 909 01:06:23,550 --> 01:06:26,320 trong đó có một mục đích khác nhau. 910 01:06:26,320 --> 01:06:29,500 Ngoặc đơn ở đây là một sự thay thế lệnh giống như backquotes. 911 01:06:29,500 --> 01:06:32,720 Dấu ngoặc kép thực sự là một phép toán số học. 912 01:06:32,720 --> 01:06:35,380 Có cú pháp khác, các hoạt động khác. 913 01:06:35,380 --> 01:06:41,520 Cú pháp backquote có sẵn trong Bash. 914 01:06:41,520 --> 01:06:46,780 Tuy nhiên, đây là một lợi thế. Nó dễ dàng hơn để đọc và nó cho phép làm tổ. 915 01:06:46,780 --> 01:06:51,300 Bạn có thể có trong $ (lệnh) lệnh khác, 916 01:06:51,300 --> 01:06:54,590 một cái gì đó giống như - 917 01:07:14,560 --> 01:07:18,210 Tôi nhận được một danh sách đó. 918 01:07:18,210 --> 01:07:21,670 Điều đó sẽ làm việc nếu tôi có backquote cũng có. 919 01:07:32,050 --> 01:07:38,470 Nếu tôi muốn làm một cái gì đó giống như - 920 01:08:03,390 --> 01:08:06,430 Có thể bạn sẽ không thực sự sử dụng lệnh này, 921 01:08:06,430 --> 01:08:14,160 nhưng thay lệnh nội bộ này vang tên của tất cả các tập tin bắt đầu bằng một, 922 01:08:14,160 --> 01:08:18,229 sau đó này chạy ls-l trên các tập tin, 923 01:08:18,229 --> 01:08:20,500 và sau đó một này chỉ lặp lại đầu ra. 924 01:08:21,729 --> 01:08:24,479 Bạn có lẽ sẽ không làm điều này, bạn chỉ muốn làm echo hoặc ls, 925 01:08:24,479 --> 01:08:29,450 nhưng điều này minh họa cách làm tổ của các lệnh hoạt động. 926 01:08:29,450 --> 01:08:34,380 Vì vậy, chỉ một tính năng ở đây. 927 01:08:34,380 --> 01:08:37,450  Tôi đã đề cập điều này trước đó, rằng khi bạn có nơi ở C-vỏ, 928 01:08:37,450 --> 01:08:42,770 loại công trình trong vỏ Bourne loại để định vị các lệnh. 929 01:08:48,939 --> 01:08:52,270 Được xây dựng trong lệnh, chỉ là những gì tôi đã nói đó. 930 01:08:52,270 --> 01:08:54,640 Lệnh là một phần của vỏ, giống như nơi. 931 01:08:54,640 --> 01:08:59,880 Khi vỏ thực thi một lệnh như ls, nó nằm nó thông qua các con đường, 932 01:08:59,880 --> 01:09:03,029 tìm thấy nó trong một số thư mục nào đó, 933 01:09:03,029 --> 01:09:05,800 đọc mà vào bộ nhớ, tạo ra một lớp vỏ mới, 934 01:09:05,800 --> 01:09:08,960 đọc lệnh ls hoặc bất cứ điều gì vào vỏ 935 01:09:08,960 --> 01:09:11,450 nơi các biến môi trường đã được đặt, 936 01:09:11,450 --> 01:09:14,000 và sau đó nó chuyển thực hiện với nó. 937 01:09:14,000 --> 01:09:18,319 Được xây dựng trong lệnh, mã lệnh mà là bên trong vỏ, 938 01:09:18,319 --> 01:09:21,460 do đó, các vỏ chỉ bắt đầu thực hiện một phần của mã riêng của mình. 939 01:09:21,460 --> 01:09:24,569 mà là một lệnh như vậy. Nó thực sự được nhanh hơn. 940 01:09:24,569 --> 01:09:28,380 Nó không phải đọc bất cứ điều gì trong bộ nhớ, nó đã có trong bộ nhớ. 941 01:09:28,380 --> 01:09:32,460 Lệnh được xây dựng trong luôn luôn được ưu tiên hơn các lệnh có cùng tên. 942 01:09:32,460 --> 01:09:36,050 Lệnh có trong thư mục trong đường dẫn có thể có cùng tên, 943 01:09:36,050 --> 01:09:39,090 lệnh trong thư mục khác nhau, các tập tin trong thư mục khác nhau. 944 01:09:39,090 --> 01:09:41,740 Một trong đó xảy ra trước đó trong con đường là một trong những bạn sẽ nhận được. 945 01:09:41,740 --> 01:09:43,770 Nếu có một lệnh được xây dựng trong, bạn luôn luôn nhận được nó. 946 01:09:43,770 --> 01:09:47,890 Không có cách nào để cho nó một ưu tiên thấp hơn một lệnh trong đường dẫn. 947 01:09:47,890 --> 01:09:54,140 Nếu bạn muốn nhận được rằng lệnh đường dẫn, bạn có thể gõ tên đường dẫn đầy đủ. 948 01:09:54,140 --> 01:09:55,850 Nếu có một lệnh, nơi trong đường dẫn ở đâu đó, 949 01:09:55,850 --> 01:09:58,440 bạn có thể gõ / bin / ở đâu và bạn sẽ nhận được nó. 950 01:09:58,440 --> 01:10:01,800 Nếu bạn không muốn gõ toàn bộ tên đường dẫn, bạn có thể xác định một bí danh. 951 01:10:01,800 --> 01:10:06,310 Trong thực tế, nếu bạn đã cho bí danh cùng tên với các lệnh tích hợp, nó sẽ làm việc 952 01:10:06,310 --> 01:10:08,790 vì định nghĩa bí danh được đánh giá 953 01:10:08,790 --> 01:10:13,220 trước khi vỏ xác định rằng đó là một lệnh được xây dựng trong đó phải được thực hiện. 954 01:10:18,810 --> 01:10:23,440 Sau đó điều này được nhiều hơn một chút phức tạp với một số lệnh ở đây. 955 01:10:23,440 --> 01:10:29,880 Trường hợp của một số lệnh thực sự được xây dựng trong các lệnh và trong các con đường. 956 01:10:29,880 --> 01:10:34,140 Một trong số đó là tiếng vang, lệnh tôi chỉ được sử dụng một thời gian ngắn trước trong những ví dụ. 957 01:10:34,140 --> 01:10:37,410 Echo là một lệnh trong đường dẫn và nó trong mỗi vỏ. 958 01:10:37,410 --> 01:10:40,580 Họ không nhất thiết tất cả các hành xử theo cùng một cách. 959 01:10:40,580 --> 01:10:42,970 Ban đầu nó được một lệnh duy nhất trong con đường. 960 01:10:42,970 --> 01:10:45,280 Nó được xây dựng vào vỏ sau. 961 01:10:45,280 --> 01:10:48,080 Bởi vì có những lựa chọn phụ thuộc vào môi trường 962 01:10:48,080 --> 01:10:52,970 và các tùy chọn dòng lệnh, các lệnh được xây dựng trong 963 01:10:52,970 --> 01:10:57,030 được viết để hoạt động giống như các lệnh đã được trong con đường, 964 01:10:57,030 --> 01:10:59,670 nó không chắc họ đã được viết theo cách đó 965 01:10:59,670 --> 01:11:01,720 nếu lệnh đã không đã được viết cho các con đường. 966 01:11:01,720 --> 01:11:06,180 Vì vậy, đây có tác dụng phụ. Lịch sử của nó có tác dụng ở đây. 967 01:11:06,180 --> 01:11:08,380 Có những lựa chọn đó. 968 01:11:14,280 --> 01:11:23,060 Ngoài ra còn có một tùy chọn được định nghĩa bởi một biến trong tcsh gọi là echo_style. 969 01:11:23,060 --> 01:11:27,700 Đó là một trong các biến này có thể thay đổi cách mà vang vọng công trình. 970 01:11:27,700 --> 01:11:30,910 Có những trường hợp khác, trong đó bạn có thể gán một biến 971 01:11:30,910 --> 01:11:36,290 thay đổi cách mà các hoạt động vỏ, bao gồm một lệnh tích hợp, hoạt động. 972 01:11:36,290 --> 01:11:38,130 Nó sẽ không ảnh hưởng đến bất cứ điều gì khác 973 01:11:38,130 --> 01:11:40,640 kể từ khi các lệnh khác không có quyền truy cập vào các biến vỏ, 974 01:11:40,640 --> 01:11:42,090 chỉ các biến môi trường. 975 01:11:42,090 --> 01:11:45,360 Nhưng hoạt động vỏ có thể đọc các biến shell. 976 01:11:45,360 --> 01:11:50,710 Điều đó sẽ không làm việc cho csh. Đó chỉ là tcsh. Đó là một trong những cải tiến. 977 01:11:58,540 --> 01:12:04,620 Phân tích cú pháp có trình tự khi đánh giá metacharacters, 978 01:12:04,620 --> 01:12:08,140 khi đánh giá các biến, bí danh, tài liệu tham khảo lịch sử. 979 01:12:08,140 --> 01:12:11,830 Có một trình tự cụ thể cho những việc này. 980 01:12:11,830 --> 01:12:13,730 Nếu có điều trong một trình tự cụ thể 981 01:12:13,730 --> 01:12:16,080 và được cho cái gì đó là một biểu hiện của một loại 982 01:12:16,080 --> 01:12:20,650 mà đã được đánh giá, nó sẽ không đánh giá nó một lần nữa. 983 01:12:20,650 --> 01:12:24,520 Nếu nó được nó, sau đó nó sẽ chỉ cần vượt qua trên các nhân vật. 984 01:12:24,520 --> 01:12:29,920 Vì vậy, nếu đánh giá của một số biểu hiện như thay thế lệnh 985 01:12:29,920 --> 01:12:36,850 hoặc biến hoặc bất cứ điều gì đưa đến một biểu hiện 986 01:12:36,850 --> 01:12:39,240 mà bạn sẽ muốn được đánh giá, 987 01:12:39,240 --> 01:12:42,510 rằng sẽ chỉ làm việc nếu đánh giá xảy ra sau đó trong chuỗi. 988 01:12:42,510 --> 01:12:45,010 Tôi hy vọng tôi là rõ ràng ở đó. 989 01:12:45,010 --> 01:12:50,460 Rằng trình tự phân tích, một hoạt động trong C-vỏ, 990 01:12:50,460 --> 01:12:56,490 là không giống nhau cho xây dựng trong các lệnh như nó là dành cho không được xây dựng trong lệnh. 991 01:12:56,490 --> 01:12:58,890 Tôi không chắc chắn về Bash có. 992 01:12:58,890 --> 01:13:02,450 Ví dụ, nếu một biến vỏ tạo ra một tài liệu tham khảo lịch sử, 993 01:13:02,450 --> 01:13:04,230 nó có thể sẽ không trở lại trong lịch sử. 994 01:13:04,230 --> 01:13:06,010 Nó sẽ chỉ nhận được các dấu chấm than. 995 01:13:06,010 --> 01:13:08,840 Trong thực tế, chúng tôi chỉ có thể cố gắng mà ra ngay bây giờ. 996 01:13:09,720 --> 01:13:18,240 thiết lập một = và chúng tôi sẽ phải đặt này trong đó. 997 01:13:30,690 --> 01:13:34,580 Oh, chờ đợi. Xin lôi. Tôi đã làm điều này trong Bash. Tôi muốn làm điều đó ở đây. 998 01:13:53,470 --> 01:13:56,080 Nhìn thấy, vì vậy nó đã không đánh giá rằng tài liệu tham khảo lịch sử 999 01:13:56,080 --> 01:14:00,520 bởi vì nó đã được qua các điểm đánh giá biểu thức lịch sử 1000 01:14:00,520 --> 01:14:02,720 khi đánh giá các biến. 1001 01:14:02,720 --> 01:14:05,550 Vì vậy, đó là 1 tác dụng của phân tích cú pháp. 1002 01:14:05,550 --> 01:14:08,760 Và một lần nữa, được xây dựng trong các lệnh không được thực hiện theo cùng một cách. 1003 01:14:08,760 --> 01:14:11,230 Được rồi. Chúng ta hãy đi đến kế tiếp đây. 1004 01:14:11,230 --> 01:14:16,060 Điều này có thể dùng để 1 dòng, nhưng nó làm cho nó dễ dàng hơn để đọc. 1005 01:14:19,130 --> 01:14:21,530 Điều đó làm những gì? 1006 01:14:21,530 --> 01:14:28,640 Bạn có thể nhớ lại rằng chúng ta có thể đánh giá dấu hoa thị như ký tự đại diện tên tập tin, 1007 01:14:28,640 --> 01:14:33,890 và có những ký tự đại diện tên tập tin khác như dấu chấm hỏi và biểu khung. 1008 01:14:33,890 --> 01:14:39,000 Đó là loại đánh giá được gọi là globbing. 1009 01:14:39,000 --> 01:14:46,290 thiết lập noglob vào đầu của lệnh này cho biết không làm điều đó. 1010 01:14:46,290 --> 01:14:53,370 noglob unset nói trở lại làm điều đó. 1011 01:14:53,370 --> 01:14:56,440 Lưu ý rằng bộ glob sẽ không có hiệu lực đó. 1012 01:14:56,440 --> 01:15:00,800 Trong ngôn ngữ bình thường, thiết lập glob hoặc noglob unset dường như là tương đương, 1013 01:15:00,800 --> 01:15:03,290 nhưng ở đây nó không phải là. Nó noglob unset. 1014 01:15:05,120 --> 01:15:07,910 Bây giờ Tset. Tset đứng cho bộ thiết bị đầu cuối. 1015 01:15:07,910 --> 01:15:11,840 Nó không được sử dụng thường xuyên, nhưng trước khi hệ thống có cửa sổ trở nên có sẵn 1016 01:15:11,840 --> 01:15:15,760 và bạn đã có một thiết bị đầu cuối duy nhất, bạn có thể phải xác định loại. 1017 01:15:15,760 --> 01:15:18,700 Và nếu một cái gì đó đang đến trên một Ethernet hoặc từ mạng, 1018 01:15:18,700 --> 01:15:21,120 bạn có thể muốn nói đó là một vt100. 1019 01:15:21,120 --> 01:15:26,630 VT100 là loại một tiêu chuẩn trong kinh doanh thiết bị đầu cuối. Nó xuất phát từ thiết bị đầu cuối tháng mười hai. 1020 01:15:26,630 --> 01:15:35,270 Nếu bạn chỉ làm quay số - nhận thấy rằng? Điều này đi lại một cách, phải không? 1021 01:15:35,270 --> 01:15:39,520 Vì vậy, nếu chúng ta chỉ cần Tset trên đây, 1022 01:15:39,520 --> 01:15:45,250 nếu tôi chỉ làm Tset, nó đặt lại thiết bị đầu cuối của mình, nhưng bạn không nhìn thấy bất cứ điều gì. 1023 01:15:45,250 --> 01:15:47,340 Nó đã không thực sự thay đổi bất cứ điều gì. 1024 01:15:47,340 --> 01:15:48,620 -S 1025 01:15:49,900 --> 01:15:51,480 Được rồi. 1026 01:15:51,480 --> 01:15:53,350 HẠN setenv xterm màu. 1027 01:15:53,350 --> 01:15:57,080 Chúng tôi đã biết rằng thuật ngữ đã được thiết lập theo cách đó, do đó đã không thay đổi. 1028 01:15:57,080 --> 01:15:58,860 Đó là cách chúng tôi muốn làm điều đó. 1029 01:15:58,860 --> 01:16:07,080 Nhưng chú ý rằng lệnh, Tset-s, chỉ ra các lệnh này. Nó đã không chạy chúng. 1030 01:16:07,080 --> 01:16:09,770 Nó không chạy các lệnh này, nó xuất chúng. 1031 01:16:09,770 --> 01:16:13,650 Vì vậy, đây được dự định để sản xuất các lệnh mà sau đó sẽ được chạy. 1032 01:16:13,650 --> 01:16:16,360 Bạn nhớ các lệnh trong tập tin mà tôi chỉ cho thấy bạn đã có một Q trong đó. 1033 01:16:16,360 --> 01:16:18,910 Vì vậy, hãy làm điều đó. 1034 01:16:18,910 --> 01:16:23,750 Q ngăn chặn một số đầu ra, nhưng điều đó không quan trọng ở đây, bạn có thể thấy. 1035 01:16:23,750 --> 01:16:27,980 Tôi chỉ làm điều đó cho bạn thấy rằng nó không quan trọng. 1036 01:16:27,980 --> 01:16:31,870 Đây là trong cú pháp backquote. 1037 01:16:31,870 --> 01:16:35,340 Lưu ý các backquote đây, backquote đây. 1038 01:16:35,340 --> 01:16:37,680 Tôi bỏ qua những điều này ở đây. 1039 01:16:37,680 --> 01:16:39,570 Đây là những trường hợp nói cho nó biết phải làm gì 1040 01:16:39,570 --> 01:16:42,050 trong trường hợp của các loại đặc biệt của thiết bị đầu cuối - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, mạng, quay số, những gì có bạn. 1042 01:16:45,400 --> 01:16:48,050 Nó không quan trọng ở đây bởi vì chúng ta không thực sự làm bất kỳ những điều này. 1043 01:16:48,050 --> 01:16:49,720 Tôi chỉ minh họa lệnh. 1044 01:16:49,720 --> 01:16:55,170 Nếu tôi làm điều này với backquote, những gì tôi sẽ nhận được? 1045 01:16:55,170 --> 01:17:00,210 Cũng nhận thấy ở đây rằng điều này bao gồm các noglob bộ và noglob unset, 1046 01:17:00,210 --> 01:17:02,630 do đó, những hiện đang dôi dư trong định nghĩa. 1047 01:17:02,630 --> 01:17:05,380 Đó không phải luôn luôn đúng, nhưng bây giờ họ đang có trong lệnh này. 1048 01:17:05,380 --> 01:17:08,890 Nhưng hãy xem những gì sẽ xảy ra nếu tôi làm điều đó 1049 01:17:08,890 --> 01:17:12,570 và đi đến đầu dòng với điều khiển A và tôi làm điều đó. 1050 01:17:14,380 --> 01:17:18,040 Được rồi, hãy đặt: Lệnh không tìm thấy. Đó là loại lẻ, phải không? 1051 01:17:18,040 --> 01:17:20,570 thiết lập là một lệnh nổi tiếng. Đó là một phần của vỏ. 1052 01:17:20,570 --> 01:17:24,040 thiết lập: Lệnh không tìm thấy? Tại sao vậy? 1053 01:17:24,040 --> 01:17:26,790 Hmm. Vâng, chúng ta hãy nghĩ về điều này. 1054 01:17:26,790 --> 01:17:31,100 Nó đang chạy một lệnh backquote thay thế, 1055 01:17:31,100 --> 01:17:37,430 và xảy ra ở một phần nào đó của chuỗi các phân tích cú pháp lệnh. 1056 01:17:37,430 --> 01:17:40,360 thiết lập là một lệnh được xây dựng trong. 1057 01:17:40,360 --> 01:17:43,900 Vì vậy, do thời gian nào đó lệnh thay thế, 1058 01:17:43,900 --> 01:17:48,280 nó đã nhận được qua các điểm xác định được xây dựng trong lệnh. 1059 01:17:48,280 --> 01:17:51,900 Vì vậy, nó xử lý các thiết lập như thể nó là một lệnh trong đường dẫn. 1060 01:17:51,900 --> 01:17:55,440 Không cần phải nói, nó không tìm thấy nó và bạn nhận được một lỗi. 1061 01:17:55,440 --> 01:17:59,300 Tốt. Có một ví dụ về trình tự phân tích. 1062 01:17:59,300 --> 01:18:01,460 Và chúng ta làm gì về điều đó? 1063 01:18:01,460 --> 01:18:04,800 Chú ý lệnh này rất thú vị ở đây, eval. 1064 01:18:04,800 --> 01:18:06,530 Tôi tự hỏi điều gì đó không. 1065 01:18:06,530 --> 01:18:08,760 Nếu bạn nhìn vào hướng dẫn - và chúng ta hãy làm điều đó 1066 01:18:08,760 --> 01:18:12,000 để hiển thị như thế nào khó hiểu các hướng dẫn sử dụng là - 1067 01:18:12,000 --> 01:18:19,400 người đàn ông tcsh, bối rối dẫn sử dụng, tìm kiếm những điều ở đây không phải là dễ dàng cả. 1068 01:18:19,400 --> 01:18:31,850 Ở đây chúng tôi đi, eval arg, vì vậy chúng tôi có thể có 1 hoặc nhiều đối số 1069 01:18:31,850 --> 01:18:34,090 và có một danh sách những thứ đó. 1070 01:18:34,090 --> 01:18:37,730 Xử lý các đối số là đầu vào cho vỏ 1071 01:18:37,730 --> 01:18:43,600 và thực hiện các lệnh kết quả trong bối cảnh của vỏ hiện hành. 1072 01:18:43,600 --> 01:18:46,900 Điều này thường được sử dụng để thực hiện các lệnh tạo ra như là kết quả của lệnh 1073 01:18:46,900 --> 01:18:51,310 hoặc thay thế các biến bởi vì phân tích xảy ra trước khi những thay thế. 1074 01:18:51,310 --> 01:18:52,580 Rất tốt. 1075 01:18:52,580 --> 01:18:54,740 Và ở đây họ thậm chí còn đề cập đến lệnh Tset cho việc sử dụng mẫu 1076 01:18:54,740 --> 01:18:57,700 như một trong những tôi chỉ cho các bạn. 1077 01:18:57,700 --> 01:19:00,440 Bây giờ tôi có để có được cửa sổ trở lại một nơi hữu ích. 1078 01:19:03,150 --> 01:19:07,800 Hãy ở đây và chúng ta sẽ thấy eval được sử dụng ngay trước đó. 1079 01:19:07,800 --> 01:19:14,010 Vì vậy, chúng ta hãy xem những gì sẽ xảy ra nếu chúng ta đặt - ở đây chúng tôi đi lên với các mũi tên để lệnh 1080 01:19:14,010 --> 01:19:20,940 và kiểm soát A đến đầu, eval. 1081 01:19:20,940 --> 01:19:22,850 Được rồi, vì vậy nó hoạt động. 1082 01:19:22,850 --> 01:19:26,440 Khi bạn làm eval, phải mất những gì đến sau khi nó và làm cho nó một lệnh. 1083 01:19:26,440 --> 01:19:29,460 Điều này cho phép bạn phân tích về cơ bản nó hai lần. 1084 01:19:29,460 --> 01:19:33,710 Phần ở đây chạy lệnh này trong backquotes, 1085 01:19:33,710 --> 01:19:36,210 được đầu ra. 1086 01:19:36,210 --> 01:19:42,850 Đầu ra là nghĩa vụ phải được chạy như là các lệnh ở đây như thế này 1087 01:19:42,850 --> 01:19:45,890 tại này và điều này. 1088 01:19:45,890 --> 01:19:50,100 Vì vậy, các lệnh đều có ở đây theo thứ tự này, 1089 01:19:50,100 --> 01:19:58,950 nhưng được xây dựng trong các lệnh và nó không thể nhận được chúng ngay lập tức. 1090 01:19:58,950 --> 01:20:06,440 Vì vậy, chúng tôi đi đến eval, eval chọn đó lên, bắt đầu toàn bộ điều trên một lần nữa, và nó hoạt động. 1091 01:20:06,440 --> 01:20:18,460 Một ví dụ cả hai backquoting, eval, phân tích, hậu quả của việc phân tích, 1092 01:20:18,460 --> 01:20:21,910 và một lệnh mà có lẽ rất ít sử dụng cho bạn hiện nay. 1093 01:20:21,910 --> 01:20:25,540 Được rồi. Được rồi, umask. 1094 01:20:25,540 --> 01:20:32,160 Hãy xem xét lệnh này đây, umask 022. Tôi tự hỏi điều gì đó không. 1095 01:20:32,160 --> 01:20:38,420 Chúng ta hãy chỉ cần gõ umask không có gì sau nó. 22. Được rồi. 1096 01:20:38,420 --> 01:20:44,350 022 và làm điều đó một lần nữa. 1097 01:20:44,350 --> 01:20:48,580 Như bạn có thể đoán, umask không có đối số cho bạn biết mặt nạ hiện hành; 1098 01:20:48,580 --> 01:20:51,760 umask với các đối số làm cho nó có, nhưng đó là một trong tôi đã có. 1099 01:20:51,760 --> 01:20:53,800 Không 022 có nghĩa là gì? 1100 01:21:01,650 --> 01:21:07,080 Đây là những sự bảo vệ ở đây cho một tập tin. 1101 01:21:07,080 --> 01:21:11,440 Họ xác định ai được phép đọc hoặc viết hoặc thực hiện các tập tin. 1102 01:21:11,440 --> 01:21:16,560 Bảo vệ cũng được gọi là quyền truy cập. 1103 01:21:16,560 --> 01:21:21,390 R là viết tắt của đọc, w để viết, 1104 01:21:21,390 --> 01:21:25,500 và x, đó là không có mặt ở đó, là viết tắt của thực thi. 1105 01:21:25,500 --> 01:21:27,260 Có 3 loại đó. 1106 01:21:27,260 --> 01:21:33,540 3 yếu tố cuối cùng là trong danh mục của người dùng. Những áp dụng đối với tôi, người sử dụng. 1107 01:21:33,540 --> 01:21:36,870 Những 3 ở đây áp dụng cho nhóm. 1108 01:21:36,870 --> 01:21:41,590 Các tập tin thuộc về 1 nhóm, người sử dụng có thể thuộc về một số nhóm, 1109 01:21:41,590 --> 01:21:47,150 nhưng nếu người dùng là trong nhóm mà tập tin này thuộc về, 1110 01:21:47,150 --> 01:21:51,090 sau đó các biện pháp bảo vệ sẽ được áp dụng với anh ta nếu anh ta không phải là người sử dụng. 1111 01:21:51,090 --> 01:21:54,230 Và điều này là tất cả mọi người khác. 1112 01:21:55,540 --> 01:21:57,690 Các loại này là loại trừ lẫn nhau. 1113 01:21:57,690 --> 01:21:59,750 Sự bảo vệ người sử dụng áp dụng với anh ta, 1114 01:21:59,750 --> 01:22:03,780 sự bảo vệ nhóm áp dụng đối với thành viên của nhóm khác với người sử dụng, 1115 01:22:03,780 --> 01:22:08,110 và các biện pháp bảo vệ khác chỉ áp dụng cho người khác hơn so với người sử dụng và các thành viên trong nhóm. 1116 01:22:08,110 --> 01:22:12,320 Nếu có một r hoặc aw hoặc x, có nghĩa là bảo vệ được cấp. 1117 01:22:12,320 --> 01:22:13,950 Nếu có một dấu gạch ngang, nó có nghĩa là nó không phải là. 1118 01:22:13,950 --> 01:22:16,690 Thực tế, có những thứ khác mà có thể được đặt tại đây, bên cạnh đó, 1119 01:22:16,690 --> 01:22:18,350 mà tôi sẽ không nhận được vào ngay bây giờ. 1120 01:22:18,350 --> 01:22:24,450 Umask định nghĩa một mặc định cho các tập tin mà bạn tạo ra. 1121 01:22:24,450 --> 01:22:28,580 Và như một mặt nạ, về cơ bản nó nói các bit mà bạn không đặt. 1122 01:22:28,580 --> 01:22:30,450 Làm thế nào đã trở thành bit này? 1123 01:22:30,450 --> 01:22:33,240 Nếu bạn nghĩ rằng mỗi khi một số bát phân, 1124 01:22:33,240 --> 01:22:42,120 đây là chút 1s, đây là 2s, đây là 4s. 1125 01:22:42,120 --> 01:22:45,840 Vì vậy, từ 0 đến 7 1126 01:22:45,840 --> 01:22:51,770 sẽ mô tả những sự kết hợp của r của, w, và x của bạn có cho những 3 1127 01:22:51,770 --> 01:22:53,710 và sau đó một số lượng tương tự cho những điều này và sau đó cho các. 1128 01:22:53,710 --> 01:23:12,030 Vì vậy, có nghĩa là 022 0 cho khác, 2 nhóm, 2 cho người sử dụng. 1129 01:23:12,030 --> 01:23:15,870 Nhưng đây là một mặt nạ. Mặt nạ là những gì bạn không có. 1130 01:23:19,380 --> 01:23:20,610 Tôi xin lỗi. Tôi chỉ cho bạn những điều theo thứ tự sai. 1131 01:23:20,610 --> 01:23:25,620 Đó là lần đầu tiên 3. Những 3 là người sử dụng, những 3 là nhóm, những 3 là khác. 1132 01:23:25,620 --> 01:23:27,970 Xin lỗi tôi đã cho bạn những sai thứ tự. 1133 01:23:27,970 --> 01:23:31,910 0, đó là lần đầu tiên của những người, không hiển thị giá trị, 1134 01:23:31,910 --> 01:23:35,430 nhưng nếu một số không có, đó là một 0. 1135 01:23:35,430 --> 01:23:38,370 Điều đó có nghĩa tất cả 3 trong số này sẽ được cho phép. 1136 01:23:38,370 --> 01:23:41,550 Chú ý rằng trong một này đặc biệt x không được phép. 1137 01:23:41,550 --> 01:23:44,090 Lý do là vỏ có khả năng xác định 1138 01:23:44,090 --> 01:23:46,260 xem một tập tin phải được thực hiện hay không. 1139 01:23:46,260 --> 01:23:49,800 Vì đây không phải là một tập tin thực thi, nó đã không thiết lập x. 1140 01:23:49,800 --> 01:23:54,000 2 phương tiện mà cho phép ghi thể loại thứ hai ở đây, 1141 01:23:54,000 --> 01:23:56,500 một ở giữa, bị từ chối. 1142 01:23:56,500 --> 01:23:58,500 Vì vậy, một lần nữa, đó là những điều mà nó bị từ chối. 1143 01:23:58,500 --> 01:24:02,080 Vâng, x được cho phép nhưng nó không phải là ở đây bởi vì nó không thực thi 1144 01:24:02,080 --> 01:24:04,260 và tương tự cho những người khác. 1145 01:24:04,260 --> 01:24:08,880 Vì vậy, đó là một umask chung. 1146 01:24:08,880 --> 01:24:14,630 Một trong những phổ biến là 700 - cung cấp cho mình tất cả mọi thứ và không ai khác bất cứ điều gì. 1147 01:24:14,630 --> 01:24:17,040 Và có những khả năng khác. 1148 01:24:21,340 --> 01:24:27,110 Tôi sẽ quay trở lại đó. Bằng cách sử dụng lịch sử tôi có thể tìm kiếm lại cho rằng, để có LWH. 1149 01:24:27,110 --> 01:24:30,210 Được rồi. Vì vậy, ở đây, đó là những vỏ. 1150 01:24:30,210 --> 01:24:36,020 Bash, chủ sở hữu là người tài khoản hệ thống, có thể làm tất cả mọi thứ. 1151 01:24:36,020 --> 01:24:41,210 Nhóm và mọi người khác có thể làm đọc hoặc thực hiện nhưng không viết. 1152 01:24:41,210 --> 01:24:44,570 Điều này thậm chí không cho phép chủ sở hữu để viết thư cho nó. 1153 01:24:44,570 --> 01:24:46,460 Nếu chủ sở hữu muốn viết thư cho nó, các tài khoản hệ thống, 1154 01:24:46,460 --> 01:24:48,020 ông sẽ phải thay đổi bảo vệ đầu tiên. 1155 01:24:48,020 --> 01:24:53,940 Nhưng một lần nữa, umask đặt mặc định bằng cách che nó, 1156 01:24:53,940 --> 01:24:57,160 bằng cách chỉ ra các bit sẽ không được thiết lập. 1157 01:24:57,160 --> 01:25:04,380 Điều này thường là một trong các tập tin khởi tạo của bạn, đó là cshrc cho C-shell. 1158 01:25:04,380 --> 01:25:07,500 hoặc hồ sơ cá nhân cho vỏ Bourne loại.. 1159 01:25:07,500 --> 01:25:12,520 Nó có thể được ở nơi khác cũng có thể nếu có những tập tin khởi tạo khác trên hệ thống. 1160 01:25:12,520 --> 01:25:14,610 Dù sao, đó là umask. 1161 01:25:14,610 --> 01:25:18,180 Có điều gì đó loại lẻ ở đây, 1162 01:25:18,180 --> 01:25:22,800 và đó là, tại sao lại có một lệnh duy nhất cho điều này? 1163 01:25:22,800 --> 01:25:28,690 Nếu tôi được viết bài này, tôi sẽ làm cho nó một biến, umask = một số giá trị. 1164 01:25:28,690 --> 01:25:31,100 Tại sao lại có một toàn bộ lệnh chỉ dành cho mục đích này? 1165 01:25:31,100 --> 01:25:34,560 Lý do là điều này chỉ quay ngược lại nguồn gốc của Unix. 1166 01:25:34,560 --> 01:25:41,050 Unix đã được chỉ là một số dự án lập trình tại Bell Labs vào đầu năm 1970. 1167 01:25:41,050 --> 01:25:42,610 Mọi người chỉ cùng nhau cho chương trình. 1168 01:25:42,610 --> 01:25:45,290 Họ không bao giờ dự định nó để trở thành một hệ điều hành trên toàn thế giới. 1169 01:25:45,290 --> 01:25:47,250 Những người khác nhau viết các phần khác nhau mà không cần suy nghĩ rất nhiều 1170 01:25:47,250 --> 01:25:49,790 làm thế nào họ sẽ được sử dụng - chứ không sơ sài. 1171 01:25:49,790 --> 01:25:53,290 Và nó đến với nhau như thế, và nó vẫn như thế trong một số khía cạnh. 1172 01:25:53,290 --> 01:25:57,930 Vì vậy, phản ánh lịch sử, và vẫn còn có những vấn đề này và các yếu tố kỳ lạ của nó. 1173 01:25:57,930 --> 01:26:00,750 Được rồi. Tiếp theo đây. 1174 01:26:08,170 --> 01:26:11,000 Như tôi đã viết trước đó, C-vỏ là không thực sự được sử dụng rất nhiều cho các chương trình, 1175 01:26:11,000 --> 01:26:12,420 mặc dù nó có thể được. 1176 01:26:12,420 --> 01:26:15,080 Nó thực hiện chậm hơn, một lần nữa thương mại-off giữa việc sử dụng tương tác, 1177 01:26:15,080 --> 01:26:17,820 trong đó có xử lý hơn liên quan đến tốc độ hơn, 1178 01:26:17,820 --> 01:26:20,710 mà có thể làm mà không cần chế biến. 1179 01:26:20,710 --> 01:26:28,320 Các tính năng bổ sung thêm vào vỏ Bourne của Korn và Bourne-again vỏ 1180 01:26:28,320 --> 01:26:32,120 dường như không làm chậm họ xuống, và tôi không biết tại sao đó là. 1181 01:26:32,120 --> 01:26:36,310 Nó chỉ có thể lập trình tốt hơn, nhưng tôi không ở một vị trí để biết. 1182 01:26:36,310 --> 01:26:40,420 Tốc độ ở đây thực sự không phải là một việc lớn như vậy, mặc dù nó được đề cập. 1183 01:26:40,420 --> 01:26:43,690 Lý do là kịch bản shell thực sự có được khá nhanh. 1184 01:26:43,690 --> 01:26:46,450 Nếu có rất nhiều các lệnh như trong một chương trình calculational, 1185 01:26:46,450 --> 01:26:49,110 có thể bạn sẽ không làm điều đó trong một kịch bản. 1186 01:26:49,110 --> 01:26:51,450 Các hoạt động có khá đơn giản và dễ hiểu. 1187 01:26:51,450 --> 01:26:53,960 Những cái mà tôi đã có kinh nghiệm mà là quá chậm 1188 01:26:53,960 --> 01:26:57,110 liên quan đến các ứng dụng lặp đi lặp lại các lệnh chậm. 1189 01:26:57,110 --> 01:27:00,480 Trước đó tôi đã đề cập các biên tập viên dòng sed. Lệnh đó là chậm. 1190 01:27:00,480 --> 01:27:03,760 Nếu bạn thực hiện sed nhiều lần, bạn sẽ nhận được một kịch bản chậm, nhưng nó không phải là vỏ đó là chậm. 1191 01:27:03,760 --> 01:27:07,920 Chạy nó trong bao Bourne sẽ không được nhanh hơn nhiều so với chạy nó trong C-vỏ, 1192 01:27:07,920 --> 01:27:10,070 mặc dù có thể một số lợi thế đó. 1193 01:27:10,070 --> 01:27:12,760 Khả năng lập trình bổ sung, mặt khác, 1194 01:27:12,760 --> 01:27:17,920 là lý do quan trọng tại sao bạn sẽ sử dụng vỏ Bourne loại. 1195 01:27:17,920 --> 01:27:21,390 C-shell có các tính năng kỳ lạ với nó - 1196 01:27:21,390 --> 01:27:25,250 thực tế là bạn không biết nếu một biến là một biến vỏ hoặc một biến môi trường. 1197 01:27:25,250 --> 01:27:27,440 Nó có thể rất khó hiểu. 1198 01:27:27,440 --> 01:27:32,170 Nó không phải dễ dàng như vậy để viết 1199 01:27:32,170 --> 01:27:35,930 chỉ dựa trên kinh nghiệm của bạn về lập trình bằng ngôn ngữ khác. 1200 01:27:35,930 --> 01:27:41,350 Tôi nghĩ rằng bạn có thể tìm thấy các vỏ Bourne loại phù hợp hơn với kinh nghiệm của bạn. 1201 01:27:43,730 --> 01:27:49,270 Một số kịch bản, mặc dù, có thể là hàng ngàn dòng dài. 1202 01:27:49,270 --> 01:27:52,450 Những người mà tôi đã nhìn thấy là được sử dụng để vá hệ điều hành. 1203 01:27:52,450 --> 01:27:55,450 Những người có thể thực hiện rất chậm, nhưng bạn không chạy những người rất thường xuyên. 1204 01:27:55,450 --> 01:27:57,180 Nó chỉ khi bạn đang làm vá, 1205 01:27:57,180 --> 01:27:59,450 và nó chỉ có người quản lý hệ thống những người làm những điều đó, 1206 01:27:59,450 --> 01:28:01,840 vì vậy nó không thực sự nhiều của một vấn đề. 1207 01:28:01,840 --> 01:28:06,980 Những người có hàng trăm đường dài thực sự thực hiện khá nhanh chóng. 1208 01:28:06,980 --> 01:28:10,540 Đề cập đến ở đây, những cải tiến là gì? 1209 01:28:10,540 --> 01:28:13,170 Tôi đã đề cập đến một vài trong số họ - mảng, tính toán, 1210 01:28:13,170 --> 01:28:20,540 các $ () biểu hiện cho tính toán trong Bash shell, 1211 01:28:20,540 --> 01:28:23,050 các loại khác của sự thay thế lệnh. 1212 01:28:23,050 --> 01:28:25,360 Có nhiều loại khác nhau của các lệnh kiểm tra 1213 01:28:25,360 --> 01:28:29,350 mà bạn có thể làm các xét nghiệm có điều kiện về sự tồn tại của một tập tin hoặc những thứ khác. 1214 01:28:29,350 --> 01:28:34,790 Cuối cùng ở đây, lệnh này ở đây. 1215 01:28:34,790 --> 01:28:38,480 Điều này làm những gì, và tại sao ai sẽ sử dụng nó? 1216 01:28:51,170 --> 01:28:52,990 variablename printenv. 1217 01:28:52,990 --> 01:28:56,130 Chúng tôi biết những gì printenv không. Nó cho chúng ta biết giá trị của một biến. 1218 01:28:56,130 --> 01:29:00,850 Và variablename printenv sẽ không cho chúng tôi rất nhiều vì không có biến như vậy. 1219 01:29:03,550 --> 01:29:05,120 Trống. 1220 01:29:05,120 --> 01:29:08,440 Nhưng chúng ta hãy cung cấp cho nó một cái gì đó có ý nghĩa. 1221 01:29:13,420 --> 01:29:16,800 Đó không phải là ở đó. Được rồi. Tôi đoán tôi không bao giờ xác định điều đó. 1222 01:29:16,800 --> 01:29:18,020 Chúng ta hãy kiểm tra môi trường của tôi. 1223 01:29:18,020 --> 01:29:20,900 Đây là một lệnh mà bạn có thể kiểm tra môi trường của bạn. 1224 01:29:20,900 --> 01:29:24,470 Có EDITOR cũ tốt, là chúng ta đã thấy trước đây. 1225 01:29:42,360 --> 01:29:44,120 Điều đó làm những gì? 1226 01:29:44,120 --> 01:29:48,050 Ở đây chúng ta có một biểu hiện backquote. 1227 01:29:48,050 --> 01:29:50,370 Hãy nhớ điều này là C-shell. 1228 01:29:50,370 --> 01:29:54,850 Vì vậy, EDITOR printenv sẽ cho chúng ta một giá trị của EDITOR. Đó là vi. 1229 01:29:54,850 --> 01:29:59,790 Và sau đó nó sẽ thiết lập giá trị đó để biến một, các lệnh đặt. 1230 01:29:59,790 --> 01:30:02,860 Vì vậy, bây giờ nếu tôi làm echo $ a, tôi nhận được vi. 1231 01:30:02,860 --> 01:30:05,850 Điều đó dường như không quá hữu ích. 1232 01:30:05,850 --> 01:30:08,080 Tuy nhiên, nó thực sự không có một mục đích. 1233 01:30:08,080 --> 01:30:12,260 Vì chúng ta không biết liệu một biến là một biến vỏ hoặc một biến môi trường 1234 01:30:12,260 --> 01:30:16,280 bằng cách sử dụng cú pháp đánh giá ký hiệu đô la, chúng ta có thể sử dụng printenv 1235 01:30:16,280 --> 01:30:19,460 để đảm bảo rằng nó là một biến môi trường. 1236 01:30:19,460 --> 01:30:22,550 Vì vậy, nếu có một trình soạn thảo biến bao, việc này sẽ không nhận được nó. 1237 01:30:22,550 --> 01:30:25,640 Điều này chỉ làm việc với các biến môi trường. 1238 01:30:25,640 --> 01:30:28,370 Nếu có một biến vỏ và tôi muốn giá trị của nó, 1239 01:30:28,370 --> 01:30:29,980 Tôi sẽ phải tìm cách khác để làm điều đó. 1240 01:30:29,980 --> 01:30:33,530 Một cách để làm điều đó sẽ là bằng cách làm bộ và đường ống. 1241 01:30:33,530 --> 01:30:36,130 Đây là một trong những metacharacters, ký tự đặc biệt. 1242 01:30:36,130 --> 01:30:38,370 Nó sẽ gửi đầu ra của các thiết lập để một cái gì đó khác. 1243 01:30:38,370 --> 01:30:40,650 Hãy xem những gì chúng ta có thể tìm thấy ở đó. 1244 01:30:40,650 --> 01:30:49,340 Không có gì. Được rồi. Chúng ta hãy xem những gì ở trong đó tất cả cùng nhau. 1245 01:30:49,340 --> 01:30:53,580 Đó là echo_style, là tôi đã đề cập trước đây. Được rồi, chúng ta hãy làm điều đó. 1246 01:31:02,460 --> 01:31:06,230 Nhớ tôi đã đề cập trước đây, echo_style 1247 01:31:06,230 --> 01:31:08,410 xác định cách lệnh echo sẽ chạy. 1248 01:31:08,410 --> 01:31:10,940 bsd là viết tắt của phân phối chuẩn Berkeley. 1249 01:31:10,940 --> 01:31:13,200 Đây là Berkeley Unix từ những năm 1970. 1250 01:31:13,200 --> 01:31:16,630 Đó là một trong những cách mà tiếng vang có thể chạy. 1251 01:31:16,630 --> 01:31:22,310 Thiết lập echo_style giá trị đó trong TC-vỏ sẽ gây tiếng vang để hành xử theo cách đó. 1252 01:31:22,310 --> 01:31:27,670 Vì vậy, thiết lập nào đó, nhưng chỉ được thiết lập các biến shell. 1253 01:31:27,670 --> 01:31:35,430 Nó sẽ không tìm thấy EDITOR, mà không phải là một biến vỏ. 1254 01:31:36,870 --> 01:31:38,050 Không có gì. 1255 01:31:38,050 --> 01:31:39,660 Vì vậy, đó là một cách để phân biệt chúng. 1256 01:31:39,660 --> 01:31:42,000 Nhưng thực tế là bạn phải đi qua một số lệnh lạ như thế 1257 01:31:42,000 --> 01:31:45,500 để phân biệt giữa các biến vỏ hoặc biến môi trường 1258 01:31:45,500 --> 01:31:49,970 cho thấy loại chất thực tế của C-vỏ cho một số mục đích. 1259 01:31:52,290 --> 01:31:57,960 Và bây giờ, cuối cùng và có thể ít nhất, đây là trang người đàn ông. 1260 01:31:57,960 --> 01:32:03,190 Những người bạn có thể biết, người đàn ông là ngắn lệnh bằng tay. 1261 01:32:03,190 --> 01:32:08,610 Các trang người đàn ông cho vỏ là khó đọc. Họ rất dài. 1262 01:32:08,610 --> 01:32:14,060 Chúng được tổ chức theo một cách mà có thể làm cho nó khó khăn để tìm thấy những gì bạn đang tìm kiếm. 1263 01:32:14,060 --> 01:32:15,980 Vì vậy, nếu bạn đang tìm kiếm một cái gì đó với một mục đích, 1264 01:32:15,980 --> 01:32:20,050 bạn có thể không biết mục đích đó là một biến vỏ hay cái gì khác, 1265 01:32:20,050 --> 01:32:21,630 vì vậy bạn có thể không biết được nơi để tìm nó. 1266 01:32:21,630 --> 01:32:25,030 Bạn có thể tìm kiếm các chuỗi khác nhau, nhưng các dây thường được lặp đi lặp lại. 1267 01:32:25,030 --> 01:32:27,640 Vì vậy nói chung khó đọc. 1268 01:32:27,640 --> 01:32:33,810 Chúng tôi chỉ nhìn vào người đàn ông trang TC-vỏ một chút trước khi tìm thấy lệnh eval. 1269 01:32:33,810 --> 01:32:36,610 Một số điều đi nhanh hơn. 1270 01:32:36,610 --> 01:32:38,860 Một cách tiếp cận là để tìm kiếm một chuỗi. 1271 01:32:38,860 --> 01:32:40,360 Bạn có thể sử dụng máy nhắn tin. 1272 01:32:40,360 --> 01:32:49,080 Máy nhắn tin có dấu gạch chéo để tìm một lệnh hoặc một chuỗi trong một hoạt động máy nhắn tin. 1273 01:32:49,080 --> 01:32:52,830 Người đàn ông theo mặc định sẽ sử dụng máy nhắn tin, hoặc có thể là nhiều hay ít. 1274 01:32:52,830 --> 01:32:56,560 Tôi không biết nếu bạn đã quen thuộc với những người, nhưng những người có thể hiển thị tập tin từng chút một. 1275 01:32:56,560 --> 01:33:00,550 Tôi đã sử dụng LESS để hiển thị các tập tin cụ thể, chúng tôi đã có ở đây. 1276 01:33:00,550 --> 01:33:03,300 Bạn có thể tìm kiếm trong đó. 1277 01:33:03,300 --> 01:33:04,880 Bạn có thể thử sử dụng chuỗi tìm kiếm khác nhau. 1278 01:33:04,880 --> 01:33:08,420 Cũng trang người đàn ông trong các hệ điều hành khác nhau có thể không được như vậy. 1279 01:33:08,420 --> 01:33:11,130 Họ có thể là các trang riêng biệt cho csh và tcsh. 1280 01:33:11,130 --> 01:33:14,500 Họ không phải là trên Mac, nhưng họ có thể là nếu những người đang có lệnh riêng biệt. 1281 01:33:14,500 --> 01:33:19,000 Nếu sh không thực sự gọi Bash, có lẽ sẽ là một người đàn ông trang riêng biệt. 1282 01:33:19,000 --> 01:33:25,820 Một số hệ thống có trang người đàn ông riêng biệt chỉ dành cho C-vỏ được xây dựng trong lệnh. 1283 01:33:25,820 --> 01:33:30,250 Đôi khi, nếu bạn muốn đọc một mô tả của một lệnh được xây dựng trong 1284 01:33:30,250 --> 01:33:35,350 đó cũng trong đường dẫn, như tiếng vang, bạn cần phải đọc trang người đàn ông trên đó lệnh trên tiếng vang 1285 01:33:35,350 --> 01:33:37,610 để xác định như thế nào nó sẽ làm việc như là một lệnh được xây dựng trong 1286 01:33:37,610 --> 01:33:39,760 ngay cả khi bạn không gọi lệnh được xây dựng trong. 1287 01:33:41,630 --> 01:33:46,090 Đó là một nhược điểm của hệ điều hành nói chung, không chỉ cho các vỏ, 1288 01:33:46,090 --> 01:33:50,710 mặc dù đối với vỏ đặc biệt là trang người đàn ông khá dài, 1289 01:33:50,710 --> 01:33:56,180 một phần vì họ đã thêm tính năng hữu ích cho họ, có thể là một tích cực. 1290 01:33:56,180 --> 01:34:00,290 Được rồi. Được có bất kỳ câu hỏi? Bất kỳ chủ đề mà bạn muốn đưa lên? 1291 01:34:00,290 --> 01:34:03,390 Bất cứ điều gì liên quan ở đây? 1292 01:34:04,540 --> 01:34:07,100 Vâng, nó rất đẹp nói chuyện với tất cả các bạn. 1293 01:34:07,100 --> 01:34:09,690 Tôi hy vọng bạn có một cái gì đó của hội thảo này 1294 01:34:09,690 --> 01:34:13,080 mà sẽ có ích cho bạn trong những nỗ lực tương lai của bạn. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]