1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
]>
<!--Dit vertaalde document werd oorspronkelijk geschreven in de debiandoc DTD,
gewijzigd in de DocBook DTD door Ellen Bokhorst, bovendien die secties die niet waren afgemaakt, tussen commentaartekens geplaatst voor zover dit nog niet was gedaan-->
<book lang=nl>
<bookinfo>
<title>Debian Tutorial</title>
<subtitle></subtitle>
<author>
<firstname>Havoc</firstname>
<surname>Pennington</surname>
<affiliation>
<address>
<email>hp@debian.org</email>
</address>
</affiliation>
</author>
<author>
<firstname>Vertaald door: Ellen</firstname>
<surname>Bokhorst</surname>
<affiliation>
<address>
<email>bokkie@nl.linux.org</email>
</address>
</affiliation>
</author>
<legalnotice><para>
© 1998 Software in the Public Interest and individual contributors.
</para>
<para>Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and this
permission notice are preserved on all copies.</para>
<para>Permission is granted to copy and distribute modified
versions of this manual under the conditions for verbatim
copying, provided also that the sections that reprint "The
GNU General Public License," "The GNU Library General
Public License," and other clearly marked sections held
under separate copyright are reproduced under the conditions
given within them, and provided that the entire resulting
derived work is distributed under the terms of a permission
notice identical to this one.</para>
<para>Permission is granted to copy and distribute translations
of this manual into another language under the conditions
for modified versions. "The GNU General Public License"
and "The GNU Library General Public License" may be
included in a translation approved by the Free Software
Foundation instead of in the original English.</para>
<para>At your option, you may distribute verbatim and modified
versions of this document under the terms of the GNU General
Public License, excepting the clearly marked sections held
under separate copyright.</para>
</legalnotice>
</bookinfo>
<toc></toc>
<chapter id="about"><title>Over dit handboek </title>
<para>Dit is de Debian Tutorial. Het is bedoeld voor lezers voor
wie Debian GNU/Linux nieuw is. Er wordt geen voorgaande kennis
van GNU/Linux of een ander op Unix lijkend systeem verondersteld,
maar er wordt wel vanuit gegaan dat je algemene basiskennis van computers
en hardware hebt (je zou moeten weten wat de basisonderdelen van een
computer zijn, en waarvoor men een computer zou kunnen gebruiken).</para>
<para>De bedoeling van dit handboek is dat het in de aangegeven volgorde
wordt gelezen; ieder hoofdstuk gaat uit van wat kennis van voorgaande
hoofdstukken, alhoewel je het misschien prettiger vindt van het ene
deel naar het andere deel te springen.</para>
<para>Er is ook een Debian Referentie Gids gepland, die veel omvangrijker,
maar minder inleidend zal zijn.</para>
<para>In deze tutorial zal ervan worden uitgegaan dat je Debian
GNU/Linux reeds volgens het installatie-handboek (welke op moment
van dit schrijven incompleet is) hebt geïnstalleerd
en geconfigureerd. Echter misschien wil je de tutorial eerst
eens bekijken om meer over Debian te leren, voordat je gaat
installeren.</para>
<para>Deze tutorial probeert in het algemeen redenen voor zaken
te geven, en je te helpen begrijpen wat er zich binnenin het
systeem afspeelt. Het is de bedoeling je in staat te stellen
nieuwe problemen op te lossen en zoveel mogelijk uit je
computer te halen. Er is dus ruim voldoende aan theorie, historie
en leuke feiten ingeschakeld met de "How To" aspecten van het
handboek.</para>
<para>Stuur alsjeblieft commentaar over dit handboek naar de Debian
Documentation Project mailing list
<email>debian-doc@lists.debian.org</email>. We zijn vooral
geïnteresseerd in of het van nut was voor je, en hoe we
het kunnen verbeteren. Als je tijdens het lezen verward raakt,
of bemerkt dat we een term gebruiken zonder dat we het eerst
hebben uitgelegd, email ons dan alsjeblieft.</para>
<para>Stuur de auteurs alsjeblieft GEEN technische vragen over Debian,
aangezien daar andere forums voor zijn. Zie de <XRef LinkEnd="docs-support">.
Stuur alleen mail betreffende het handboek zelf naar het hierboven vermelde
adres.</para>
<para>Ga voor de laatste versie van dit handboek naar
<ULink url="http://www.debian.org/doc/">http://www.debian.org/doc/</ULink>
en volg de links.</para>
<sect1 id="acknowldgements"><title> Erkenningen</title>
<para>Veel mensen hebben met dit handboek geholpen.</para>
<para>De grootste dank gaat uit naar Larry Greenfield en zijn Linux
User's Guide, die de basis vormde voor het handboek. De
Linux User's Guide maakt onderdeel uit van het Linux Documentatie
Project.</para>
<para>Veel dank aan degenen die ons hebben geholpen bij het redigeren
van het handboek;
ze hebben het veel en veel beter gemaakt. Als je vond dat dit
handboek plezierig te lezen was, stuur je bedankjes dan naar
Thalia Hooker en Day Irmiter.</para>
<para>Met dank aan Richard Stallman van de Free Software Foundation
voor het advies, redigeren, en het aanbod voor het publiceren
van de tekst.</para>
<para>Met dank aan James Treacy dat hij me wat van zijn schrijven
voor de Debian website liet lenen.</para>
<para>Met dank aan iedereen die wat onderdelen van het handboek heeft
geschreven:
Craig Sawyer schreef over shells, Ole Tetlie is aan het schrijven
over programmeren, Oliver Elphick droeg bij over een bespreking van
wat basisutility's, Ivan E. Moore II droeg bij in de bespreking
van PPP.</para>
<para>Veel mensen, waaronder Eric Fischer en Mike Touloumtzis, hebben
patches en commentaar aangeleverd.</para>
<para>Veel dank aan Ardo van Rangelrooij voor het aan de gang krijgen
en beheren van de DebianDoc DTD die werd gebruikt om het handboek te
schrijven.</para>
<para>Uiteraard is het onmogelijk de honderden Debian ontwikkelaars
en duizenden free-software auteurs te bedanken die ons iets gaven
om over te schrijven en te gebruiken.</para>
<para>Ook dank aan een ieder die ik hier niet heb genoemd, aangezien ik
er zeker van ben dat ik hier een knoeiboel van heb gemaakt.
Ik hoop dat niemand er aanstoot aan zal nemen --- email me
alsjeblieft en laat me het weten als je naam hier zou moeten staan.</para>
</sect1>
</chapter>
<chapter id="introduction"><title>Introductie </title>
<sect1 id="introduction-debian"><title>Wat is Debian?</title>
<para>
<Emphasis>Debian</Emphasis> is een vrij-verkrijgbaar besturingssysteem (OS)
voor je computer. Een besturingssysteem is de set met basisprogramma's en
utility's die er voor zorgen dat je computer draait. Het hart van een
besturingssysteem is de <Emphasis>kernel</Emphasis>. De kernel is het meest
fundamentele programma op de computer: het doet al het basisonderhoud en laat
je andere programma's starten. Debian maakt gebruik van de
<Emphasis>Linux</Emphasis>-kernel, een volledig vrij-verkrijgbaar stukje
software gestart door Linux Torvalds en ondersteund door (waarschijnlijk meer
dan 1000) programmeurs over de gehele wereld. Een groot deel van de basistools
die het besturingssysteem bevat, is afkomstig van het (<ULink url="http://www.gnu.org">GNU project</ULink>), en ook deze tools zijn vrij-verkrijgbaar. Wat
mensen willen, is natuurlijk applicatie-software: programma's om ze te helpen
bij wat ze gedaan willen krijgen, van het editen van documenten tot het
draaien van een zaak tot het spelen van spellen tot het schrijven van meer
software. Debian wordt geleverd met meer dan 1000 <Emphasis>packages</Emphasis>
(voorgecompileerde software gebundeld in een fraai formaat zodat het
gemakkelijk op je computer is te installeren) --- het is allemaal vrij.</para>
<para>Het lijkt wat op een toren. Aan de basis is er Linux. Bovenop
bevinden zich alle basistools, voornamelijk van GNU. Vervolgens
heb je alle applicatie-software dat je op de computer draait:
veel hiervan is ook van GNU. De Debian ontwikkelaars fungeren als
architecten en coördinatoren --- het systeem behoedzaam
organiserend en alles passend makend voor een geïntegreerd
stabiel besturingssysteem: Debian GNU/Linux.</para>
</sect1>
<sect1 id="introduction-debian-os"><title>Wat is een besturingssysteem,
en wat voor soort besturingssysteem is Debian?</title>
<para>Een besturingssysteem is de verzameling aan software dat
een computer bruikbaar maakt. Het beheert hardware-apparaten en
voorziet in utility's en applicaties.</para>
<para>Debian GNU/Linux is gebaseerd op het Unix besturingssysteem,
welke een lange historie heeft
(zie de <XRef LinkEnd="unix-history">). Debian is fundamenteel compatibel
met Unix, maar voegt een beduidend aantal aanvullende features toe.</para>
<para>De ontwerp filosofie van GNU/Linux (en Unix) is zijn functionaliteit
in kleine, voor meerdere doelen geschikte delen te distribueren.
Op die manier kun je eenvoudig nieuwe functionaliteit en nieuwe
features tot stand brengen door de kleine onderdelen (programma's)
op nieuwe manieren te combineren. Debian is als een monteursset;
je kunt ervan alles mee bouwen.</para>
<para>Wanneer je een besturingssysteem gebruikt, wil je de
hoeveelheid werk die je moet doen om een taak te volbrengen,
minimaliseren. Debian voorziet in vele tools die je kunnen helpen,
maar alleen als je weet wat je met deze tools kunt doen.
Het is niet erg productief een uur te besteden met proberen iets aan
het werk te krijgen en het dan uiteindelijk op te geven.
Dit handboek zal je de belangrijkste tools leren waarop Debian
is gebaseerd: welke tools in welke situaties te gebruiken, en hoe
deze diverse tools met elkaar te verbinden.</para>
</sect1>
<sect1 id="introduction-debian-how"><title>Wie maakt Debian?</title>
<para>Debian is een ontwikkelingsproject bestaande uit allemaal
vrijwilligers via het internet. Er werken honderden vrijwilligers
aan. De meesten zijn belast met een klein aantal software-packages
en ze zijn zeer bekend met de software die ze tot een package
bundelen.</para>
<para>Deze vrijwilligers werken samen volgens een stricte verzameling
leidraads die handelen over hoe packages worden geassembleerd. Deze
leidraads worden in samenwerking ontwikkeld via besprekingen op
internet mailinglijsten en <Emphasis>internet relay chat</Emphasis>
(IRC) forums.
</para>
</sect1>
<sect1 id="introduction-DFSG"><title>Wat is vrij-verkrijgbare software?</title>
<para>Als de ontwikkelaars en gebruikers van Debian het hebben over
"vrij-verkrijgbare software", refereren ze daarbij naar
<Emphasis>vrijheid</Emphasis> in plaats van naar de prijs. Debian is
in deze zin vrij: je bent vrij het te wijzigen en te
herdistribueren, en je zal voor dit doel altijd toegang hebben tot
de broncode. De <ULink url="http://www.debian.org/social_contract#guidelines">
Debian Free Software Guidelines</ULink> beschrijven in meer
detail wat precies met "vrij" wordt bedoeld. De <ULink url="http://www.fsf.org">Free Software Foundation</ULink>,
oprichter van het GNU project, is een andere bron met informatie.
Je kunt een meer gedetailleerde beschrijving van vrije software vinden op de
<ULink url="http://www.debian.org/intro/free">Debian web site</ULink>.</para>
<para>Free software wordt soms Open Source (R) software genoemd
--- Open Source is een waarborgmerk. Aangezien Open Source (R)
van een handelsmerk is voorzien, kan slechts echt vrije software
zichzelf Open Source (R) noemen.
Je komt misschien verkopers tegen die je proberen te misleiden
door te claimen dat hun software "vrij" is, terwijl er in
werkelijkheid veelbetekenende voorwaarden aan gekoppeld zijn.
Het Open Source (R) handelsmerk geeft je wat verzekering dat de
software echt vrije software is.
'Open Source software' wordt bij gelegenheid afgekort tot 'OSS'.</para>
<para>Je vraagt je misschien af: waarom zouden mensen uren van
hun eigen tijd besteden aan het schrijven van software, het
met zorg tot een package bijeenbrengen, en het dan allemaal weggeven?
De antwoorden zijn net zo gevarieerd als degenen die eraan bijdragen.</para>
<para>Velen geloven in het delen van informatie en het hebben van de
vrijheid om met elkaar samen te werken, en hebben het gevoel dat
vrije software dit aanmoedigt. Er is een lange traditie begonnen in de
jaren 1950 die deze waarden hooghouden, soms de Hacker Ethic genoemd.
(Je kunt hier meer over lezen in het amusante boek van Steven Levy
<Emphasis>Hackers: Heroes of the Computer Revolution</Emphasis>).</para>
<para>Anderen willen meer over computers leren. Meer en meer
mensen zoeken naar wegen om de opdrijvende prijs van commerciële
software te vermijden. Een groeiende menigte draagt bij als dank
voor alle geweldige vrij-verkrijgbare software die ze van anderen
hebben ontvangen.</para>
<para>Velen op academia maken vrije software als hulp om het resultaat
van hun onderzoek voor breder gebruik beschikbaar te maken.
Bedrijven helpen vrije software te beheren zodat ze een zegje kunnen
doen in hoe het ontwikkelt --- er is geen snellere manier een nieuwe feature
te verkrijgen dan het zelf te implementeren of een consultant in
te huren om het te doen! Bedrijven zijn ook geïnteresseerd in
betere betrouwbaarheid en de mogelijkheid tussen support verkopers
te kiezen.</para>
<para>Weer anderen zien vrije software als een sociaal goed,
democratiseren van toegang tot informatie en het voorkomen van
buitensporige centralisatie van de wereldse informatie infrastructuur.
Natuurlijk vinden velen van ons het gewoon ontzettend leuk.</para>
<para>Debian is zo gebonden aan vrije software dat we dachten dat het
nuttig zou kunnen zijn als het in één of ander document
formeel werd gemaakt.
Ons <ULink url="http://www.debian.org/social_contract">Social Contract</ULink>
zegt toe dat Debian altijd 100% vrije software zal blijven.
Wanneer je een package vanaf de Debian hoofddistributie download,
kun je er zeker van zijn dat het tegemoet komt aan onze Free Software
Guidelines.</para>
<para>Alhoewel Debian in vrije software gelooft, zijn er situaties
waar mensen gepatenteerde software op hun machine willen of nodig
hebben. Wanneer dit mogelijk is, ondersteunt Debian dit;
alhoewel gepatenteerde software niet in de hoofddistributie is opgenomen,
is het soms beschikbaar op de ftp-site in de
<Emphasis>non-free</Emphasis> directory, en er is een groeiend aantal
packages wiens enkele taak het is, gepatenteerde software te installeren,
die we zelf niet mogen distribueren.
</para>
<para>Het is belangrijk onderscheid te maken in
<Emphasis>commerciële</Emphasis> software en
<Emphasis>gepatenteerde</Emphasis> software. Gepatenteerde software is
niet-vrije software, terwijl commerciële software, software is die voor
geld wordt verkocht. Debian staat het toe dat commerciële software
onderdeel mag uitmaken van de hoofddistributie, maar dit geldt niet voor
gepatenteerde software. Denk er aan dat de bewoording "vrije software" niet
naar de prijs refereert; het is heel goed mogelijk vrije software te verkopen.
Zie <ULink url="http://www.opensource.org">http://www.opensource.org</ULink>
of <ULink url="http://www.fsf.org/philosophy/categories.html">http://www.fsf.org/philosophy/categories.html</ULink> voor meer verduidelijking over de
terminologie.</para>
</sect1>
<!-- FIXME TO COMPLETE
<sect1 id="introduction-why"><title>Waarom zou ik Debian gebruiken?</title
<para>Waar Debian goed voor is, en waar het niet goed voor is. </para>
-->
<sect1 id="introduction-how"><title>Hoe Dit Boek te Lezen</title>
<para>De beste manier om alles over bijna ieder computerprogramma te
leren is achter je computer. De meeste mensen vinden dat het lezen van
een boek zonder het programma te gebruiken niet nuttig is.
De beste manier om Unix en GNU/Linux te leren, is door het te gebruiken.
Gebruik GNU/Linux voor alles wat je kunt. Experimenteer. Wees niet bang ---
het is <Emphasis>mogelijk</Emphasis> de boel te verknoeien, maar je kunt
het altijd opnieuw installeren. Maak backups en heb plezier!</para>
<para>Debian is niet zo intuïtief vanzelfsprekend als een aantal
andere besturingssystemen. Dus het zal er waarschijnlijk op neerkomen dat je
op z'n minst de eerste paar hoofdstukken doorneemt. GNU/Linux is als een
race-auto, een meesterchef in de keuken, of een klassieke roman; zijn kracht
en complexiteit maken het in eerste instantie moeilijk te benaderen, maar
op de lange termijn veel meer de moeite waard.</para>
<para>De aanbevolen manier om te leren is een beetje te lezen, en
vervolgens een beetje te spelen. Blijf spelen totdat je je op je gemak
voelt met de concepten, en begin dan het boek door te nemen.
Je zal diverse behandelde onderwerpen aantreffen, waarvan je een
aantal interessant kunt vinden en waarvan een aantal je zullen
vervelen. Na een tijdje, zou je je voldoende zeker moeten voelen
om opdrachten te gaan gebruiken zonder exact bekend te zijn met wat
ze doen. Dit is prima.</para>
<para>Handig om te weten: als je een opdracht ooit onjuist intikt,
of niet weet hoe je een programma kunt beëindigen, C-c (de Ctrl
toets en de kleine letter c tegelijkertijd ingedrukt houdend) zal het
programma vaak stoppen.</para>
</sect1>
<sect1 id="introduction-ldp"><title>Het Linux Documentatie Project</title>
<para>Bij het samenstellen van dit handboek is veel geleend uit de
<Emphasis>Linux User's Guide</Emphasis> als onderdeel van het Linux Documentatie
Project, geschreven door Larry Greenfield. Bedankt Larry!
Dat project heeft een aantal uitstekende andere handleidingen, veel daarvan
is bedoeld voor de meer ervaren gebruikers en systeembeheerders.
De LDP beheert ook de Linux HOWTO's, een onschatbare bron
waar je je bekend mee zou moeten maken. Je kunt de LDP
vinden op hun <ULink url="http://sunsite.unc.edu/LDP/">homepage</ULink>.</para>
</sect1>
</chapter>
<chapter id="start"><title>Van start gaan</title>
<para>Dus je bent net klaar met het installeren van Debian!
Gefeliciteerd. Neem een duik in het diepe en begin het te leren gebruiken.
</para>
<para>Als onderdeel van het installatie-proces, zou je er achter moeten
zijn gekomen hoe je het Debian-systeem boot (met een speciale diskette,
door het eenvoudig aanzetten van je computer of door het indrukken van
de <Emphasis>Alt</Emphasis> toets achter de LILO prompt en Linux te selecteren).
</para>
<sect1 id="start-multi"><title>Een multi-user, multitasking besturingssysteem</title>
<para>Zoals we al eerder aangaven (<XRef LinkEnd="introduction-debian">),
is het ontwerp van Debian GNU/Linux afkomstig van het Unix besturingssysteem.
In tegenstelling tot algemene desktop OS'sen zoals DOS, Windows, en
MacOS, is Unix meestal te vinden op grote servers en
<Emphasis>multi-user</Emphasis> systemen.</para>
<para>Dit betekent dat Debian speciale mogelijkheden heeft die bij die andere
OS'sen ontbreken. Het staat een groot aantal mensen toe de computer
tegelijkertijd te gebruiken, zolang iedere gebruiker maar zijn eigen
<Emphasis>terminal</Emphasis> heeft.
<footnote><para>(Een terminal bestaat uit slechts een toetsenbord en een
scherm die met de computer via het netwerk, via een modem of direct zijn
verbonden. Je toetsenbord en monitor vormen een terminal die direct aan
de computer is gekoppeld: deze speciale terminal wordt vaak een
<Emphasis>console</Emphasis> genoemd).</para></footnote></para>
<para>Om veel gebruikers toe te staan tegelijkertijd te werken, moet Debian
het mogelijk maken dat veel programma's en applicaties gelijktijdig draaien.
Deze feature wordt <Emphasis>multitasking</Emphasis> genoemd. </para>
<para>Veel van de complexiteit (en kracht) van op Unix lijkende systemen
vindt zijn oorsprong in deze twee kenmerken. Het systeem moet bijvoorbeeld
een manier hebben om gebruikers te weerhouden dat ze per ongeluk elkaars
bestanden verwijderen, en het moet de vele programma's coördineren
die tegelijkertijd draaien, b.v. om te verzekeren dat ze de harddisk niet
allemaal tegelijkertijd gebruiken.</para>
<para>Als je in gedachten houdt waar Debian oorspronkelijk voor werd
ontworpen, zullen veel van de aspecten heel wat meer betekenis krijgen.
Je zal leren voordeel te hebben van de kracht van deze kenmerken.</para>
</sect1>
<sect1 id="start-login"><title>Inloggen</title>
<para>Om Debian te kunnen gebruiken, moet je jezelf op het systeem
identificeren. Dit is om te weten wie je bent, welke permissies
je hebt en wat je voorkeuren zijn.</para>
<para>Tot op deze hoogte, heb je een <Emphasis>gebruikersnaam</Emphasis> of
<Emphasis>login</Emphasis> --- als je Debian zelf installeerde, zou je tijdens
de installatie naar een dergelijke naam moeten zijn gevraagd.
Als je op een systeem inlogt, die door iemand anders
wordt beheerd, zal je hem moeten vragen naar een account en een
corresponderende gebruikersnaam op het systeem.</para>
<para>Je hebt ook een wachtwoord, zodat niemand anders zich als jou
voor kan doen. Als je geen wachtwoord hebt, kan iedereen vanaf het
Internet op je computer inloggen, en slechte dingen doen.
<!--(zie <XRef LinkEnd="advanced-security">).--> Als je je zorgen maakt over
beveiliging, zou je een wachtwoord moeten hebben.</para>
<para>Veel mensen geven er de voorkeur aan anderen te vertrouwen dat
ze niets opzettelijks met hun account uithalen; hopelijk moedigt
je werkomgeving geen paranoia aan. Dit is een volkomen redelijke houding;
het hangt af van je persoonlijke prioriteiten, en je omgeving.
Uiteraard hoeft een systeem thuis niet zo veilig te zijn als
een militaire installatie. Debian kan zo veilig of onveilig zijn als je wilt.
</para>
<para>Wanneer je Debian opstart, zal je een <Emphasis>prompt</Emphasis> zien;
een verzoek van de computer om wat informatie. In dit geval, is
de prompt <Emphasis>login:</Emphasis>.</para>
<para>Je zou je gebruikersnaam op moeten geven en als daar om wordt verzocht, je
wachtwoord. Het wachtwoord verschijnt op moment dat je het intikt, niet op het
scherm --- hierdoor kan niemand over je schouder meekijken om te zien
wat het is. Druk op <Emphasis>Enter</Emphasis> na zowel de gebruikersnaam als
het wachtwoord te hebben ingetikt. Als je je gebruikersnaam of
wachtwoord onjuist intikt, zal je opnieuw moeten beginnen.</para>
<para>Als je het goed doet, zal je een kort bericht en
vervolgens een <Emphasis>$</Emphasis> prompt te zien krijgen. De
<Emphasis>$</Emphasis> wordt door een speciaal programma, genaamd
de <Emphasis>shell</Emphasis> afgedrukt, en wordt dus een <Emphasis>shell
prompt</Emphasis> genoemd: hier geef je je opdrachten aan het systeem.</para>
<para>Probeer nu de opdracht <Emphasis>whoami</Emphasis> te geven. Rechts van
de shell-prompt is een <Emphasis>cursor</Emphasis>. Je cursor is een klein
laag liggend streepje of rechthoekje dat aangeeft waar je aan het
typen bent; het zou bij het typen moeten verplaatsen.
Druk altijd de <Emphasis>RET</Emphasis> in (de Enter of Return toets) als
je klaar bent met het typen van een shell-opdracht.</para>
<para><Emphasis>whoami</Emphasis> vertelt je je gebruikersnaam. Daarna krijg je
een nieuwe shell-prompt.</para>
<para>Voor de rest van het handboek geldt dat wanneer er wordt aangegeven dat je
een opdracht in moet tikken, je het achter de shell-prompt in moet
typen en op de <Emphasis>RET</Emphasis>-toets moet drukken.
Op een aantal toetsenborden is deze toets gelabeld als
<Emphasis>Enter</Emphasis> en op anderen als <Emphasis>Return</Emphasis>.
Zelfde toets, andere naam.</para>
<para>Wanneer je klaar bent met werken, wil je misschien op het systeem
uitloggen. Om de shell te beëindigen, voer je het <Emphasis>exit</Emphasis>
opdracht in. Houd in gedachten dat als je ingelogd blijft, iemand
anders langs zou kunnen komen en je account zal kunnen gebruiken.
Hopelijk kun je erop vertrouwen dat degenen op je kantoor of thuis dit
niet doen; maar als je je omgeving niet vertrouwt, zou je er zeker van
moeten zijn dat je uitlogt wanneer je weggaat.</para>
</sect1>
<sect1 id="start-keys"><title>Toetsen</title>
<para>Voor we verder gaan, is het belangrijk dat je bekend bent met
de conventies voor het beschrijven van toetsopdrachten die in deze handleiding
worden gebruikt.
</para>
<para>Wanneer je gelijktijdig meerdere toetsen ingedrukt houdt, zal een notatie
als <Emphasis>C-a</Emphasis> worden gebruikt. Dit betekent "houd de
control-toets ingedrukt en tik de kleine letter a in." Andere afkortingen zijn
de <Emphasis>A</Emphasis> voor de Alt-toets en de <Emphasis>M</Emphasis> voor
de Meta-toets. Op een aantal toetsenborden bevinden zich zowel de Alt als de
Meta; op de meeste home-computers heb je alleen de beschikking over een
Alt-toets, maar de Alt-toets functioneert hetzelfde als een Meta-toets. Dus
als je geen Meta-toets hebt, probeer in plaats daarvan dan de Alt-toets.</para>
<para>Toetsen zoals Alt en Meta worden <Emphasis>modifier</Emphasis>-toetsen
genoemd omdat ze de betekenis van de standaardtoetsen, zoals
de letter A, wijzigen. Soms moet je meer dan één
modifier ingedrukt houden, <Emphasis>M-C-a</Emphasis> betekent bijvoorbeeld dat
gelijktijdig de Meta, Ctrl en kleine letter a ingedrukt moeten worden.</para>
<para>Een aantal toetsen hebben een speciale notatie; bijvoorbeeld,
<Emphasis>RET</Emphasis> (Return/Enter), <Emphasis>DEL</Emphasis> (Delete of
soms Backspace), <Emphasis>ESC</Emphasis> (Escape). Deze zouden tamelijk
zelfuitleggend moeten zijn.</para>
<para>Spaties in plaats van koppeltekens betekenen dat de toetsen
in aangegeven volgorde ingedrukt moeten worden. Dus
<Emphasis>C-a x RET</Emphasis> betekent bijvoorbeeld
dat de Control en kleine letter a gelijktijdig ingedrukt
moeten worden en gevolgd moeten worden door de letter x,
gevolgd door het indrukken van de Return.</para>
</sect1>
<sect1 id="start-commandline"><title>Opdrachthistorie en het wijzigen van de
opdrachtregel</title>
<para>Wat je na de shell-prompt intikt, voordat je op de
<Emphasis>RET</Emphasis> drukt, wordt een <Emphasis>opdrachtregel</Emphasis>
genoemd --- het is een regel tekst die de computer opdracht geeft iets
te doen. De standaardshell van Debian biedt verscheidene
speciale mogelijkheden om ervoor te zorgen dat het invoeren van opdrachtregels
eenvoudig is.</para>
<para>Je kunt voorgaande opdrachten terughalen om ze opnieuw uit te laten
voeren, of ze wat aanpassen en <Emphasis>dan</Emphasis> opnieuw uitvoeren.
Probeer het volgende: voer een opdracht in, zoals <Emphasis>whoami</Emphasis>;
druk dan op de pijltjes-toets naar boven. De <Emphasis>whoami</Emphasis>
opdracht zal opnieuw achter de prompt verschijnen. Je kunt de
<Emphasis>RET</Emphasis>-toets dan indrukken om <Emphasis>whoami</Emphasis>
een tweede keer op te starten.
</para>
<para>Als je verscheidene opdrachten hebt ingevoerd, kun je op de
cursorpijl naar boven blijven drukken om deze opdrachten terug
te halen. Deze mogelijkheid is handig als je hetzelfde verscheidene
keren wilt doen, of als je een opdracht niet juist intikt en het
terug wilt halen om het te herstellen. Je kunt de cursorpijl naar
beneden indrukken om je in de andere richting te verplaatsen,
richting de meer recente opdrachten. Als er geen opdrachten meer
zijn om door te manoeuvreren, zal de computer een beep genereren.</para>
<para>Je kunt je ook op de opdrachtregel manoeuvreren om aanpassingen te
maken. De eenvoudigste manier is met de linker- en rechtercursortoets ---
probeer --- <Emphasis>whoasmi</Emphasis> te typen in plaats van
<Emphasis>whoami</Emphasis>, gebruik vervolgens de linker cursortoets om naar de
<Emphasis>s</Emphasis> terug te gaan. Je kunt met de Backspace of
de Delete-toets de <Emphasis>s</Emphasis> verwijderen.</para>
<para>Er zijn echter ook meer gevorderde kenmerken (het is echter niet
nodig ze nu allemaal te onthouden). Probeer <Emphasis>C-a</Emphasis> te
typen. Hiermee ga je naar het begin van de regel. <Emphasis>C-k</Emphasis>
(de <Emphasis>k</Emphasis> staat voor "kill") verwijdert tot aan het einde
van de regel --- probeer het vanaf het midden van de opdrachtregel. Door het
gebruik van <Emphasis>C-a</Emphasis> gevolgd door <Emphasis>C-k</Emphasis>,
kun je de gehele opdrachtregel verwijderen. <Emphasis>C-y</Emphasis> plakt
het laatste wat je met <Emphasis>k</Emphasis> verwijderde, waarbij het op de
huidige cursorpositie wordt ingevoegd. (<Emphasis>y</Emphasis> staat voor
"yank," (kopieer) als in "kopieer het terug"). Met <Emphasis/C-e/ zal de
cursor naar het einde van de opdrachtregel worden verplaatst. </para>
<para>Ga je gang en speel wat met het wijzigen van de opdrachtregel om het
in de vingers te krijgen. Experimenteer ermee.</para>
</sect1>
<sect1 id="start-root"><title>Als root inloggen</title>
<para>Aangezien Debian een multi-user systeem is, is het ontworpen iedere
gebruiker of ieder programma te weerhouden het gehele systeem te
breken. De kernel zal gewone gebruikers niet toestaan belangrijke
systeembestanden te laten wijzigen. Dit betekent dat alles blijft zoals
verondersteld mag worden, beveiligd tegen ongelukken, virussen en zelfs
kwaadwillige streken. In tegenstelling tot andere besturingssystemen,
is Debian tegen deze bedreigingen beveiligd. Je zal geen antivirus-programma
nodig hebben.</para>
<para>Soms moet je echter belangrijke systeembestanden wijzigen --
het kan zijn dat je bijvoorbeeld nieuwe software wilt installeren, of
je netwerkverbinding wilt configureren.
Om dit te doen, heb je meer bevoegdheden nodig dan een gewone gebruiker;
je moet <Emphasis>root-user</Emphasis> worden (wordt ook wel de
<Emphasis>superuser</Emphasis> genoemd).</para>
<para>Als je het root-wachtwoord hebt, log dan gewoon in als gebruiker
<Emphasis>root</Emphasis> en het root-wachtwoord om root te worden.
Hopelijk zal je je het wachtwoord herinneren van toen je het systeem
installeerde --- zo niet, dan heb je een probleem.<footnote><para>De oplossing
hiervoor is nogal technisch. Je moet met een rescue-diskette booten, je normale
root-partitie mounten en <Emphasis>/etc/passwd</Emphasis> wijzigen om het oude
root-wachtwoord te verwijderen. Vraag om hulp als je hier geen verstand van
hebt (zie de <XRef LinkEnd="docs-support">).</para></footnote>
</para>
<!-- FIXME Is het niet veel makkelijker/sneller om met 'init=/bin/bash' te
booten?
-->
<para>Op veel sites, heeft alleen de systeembeheerder het root-wachtwoord,
en kan alleen de systeembeheerder die dingen doen waarbij men root moet
zijn om het te kunnen doen. Als je van je eigen PC gebruik maakt, dan ben
<Emphasis>jij</Emphasis> natuurlijk de systeembeheerder. Als je geen
root-privileges hebt, dan zal je aan moeten kunnen op je systeembeheerder
voor het uitvoeren van de taken die root-privileges vereisen.</para>
<para>Soms heb je het root-wachtwoord zelfs op een gedeelde
gezamenlijke server bestemd voor onderwijs, omdat de sysadmin er op
vertrouwt dat je het juist gebruikt. In dat geval zal je kunnen helpen bij het
beheren van het systeem en het naar eigen behoeften aan kunnen passen.
Maar je zal het verantwoord moeten gebruiken, en altijd met respect
voor andere gebruikers. </para>
<para>Als je het wachtwoord hebt, probeer dan nu als root in te loggen.
Tik de opdracht <Emphasis>whoami</Emphasis> in om je identiteit te
verifiëren. Log vervolgens <Emphasis>onmiddelijk</Emphasis> uit.
Wanneer je root bent, biedt de kernel je geen bescherming voor jezelf,
omdat root permissie heeft alles met het systeem te doen.
Je kunt bijvoorbeeld door het intikken van
<Emphasis>rm -rf /</Emphasis> je <Emphasis>gehele systeem</Emphasis> in een
paar toetsaanslagen verwijderen. (Onnodig te zeggen dat je dit
<Emphasis/NIET</Emphasis> in moet typen). Experimenteer niet als je
root bent. In feite is het beter niets als root te doen, tenzij het absoluut
noodzakelijk is. Dit is geen kwestie van beveiliging, maar eerder
één van stabiliteit. Je systeem draait veel beter als het
je voor domme fouten kan behouden.
</para>
<para>Misschien dat je de opdracht <command>su</command> comfortabeler
vindt dan als root in te loggen. <command>su</command> geeft je de
mogelijkheid de identiteit van een ander gebruiker aan te nemen, gewoonlijk
als root, tenzij je iemand anders opgeeft. (Je kunt het onthouden door er
aan te denken dat <command>su</command> staat voor Super User, alhoewel
anderen zeggen dat het voor Set UserID staat). Probeer het volgende:</para>
<para>Log in als jezelf, d.w.z. niet als root.
<GlossList>
<GlossEntry>
<glossterm>whoami</glossterm>
<glossdef><para>Bevestiging van je gebruikersnaam.</para></glossdef>
</glossentry>
<glossentry><glossterm>su</glossterm>
<glossdef><para>Geef de opdracht <Emphasis>su</Emphasis>.
Het zal je vragen om een wachtwoord; vul het root-wachtwoord in.
Als je het juiste wachtwoord geeft, zou je een nieuwe shell-prompt te zien
moeten krijgen. Standaard bevat de shell-prompt van de root-gebruiker een
<Emphasis>#</Emphasis> in plaats van een <Emphasis>$</Emphasis>.</para>
</glossdef>
</glossentry>
<glossentry>
<glossterm>whoami</glossterm>
<glossdef><para>Dit zou als je nieuwe gebruikersnaam "root" moeten geven.
</para></glossdef>
</glossentry>
<glossentry>
<glossterm>exit</glossterm>
<glossdef><para>Beëindig de root-shell. Je prompt
zal de <Emphasis>$</Emphasis> weer terugkrijgen.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>exit</glossterm>
<glossdef><para>Beëindig je eigen shell.</para></glossdef>
</glossentry>
</glosslist>
</para>
<para>
Wanneer je systeembeheertaken verricht, zou je zoveel mogelijk als jezelf
moeten doen. Gebruik vervolgens de opdracht <Emphasis>su</Emphasis> om
datgene te doen waarvoor root-privileges zijn vereist en typ
<Emphasis>exit</Emphasis> om die privileges uit te zetten, zodat er niet
langer de mogelijkheid bestaat dat je iets kunt beschadigen.</para>
<para>Je kunt <Emphasis>su</Emphasis> gebruiken om de identiteit van
iedere gebruiker op het systeem aan te nemen, niet slechts als root.
Hiervoor tik je in <Emphasis>su user</Emphasis> waar user de gebruiker
is die je worden wilt. Je zal natuurlijk wel hun wachtwoord moeten kennen,
tenzij je op dit moment root bent of ze geen wachtwoord hebben.
</para>
</sect1>
<sect1 id="start-VC"><title>Virtuele consoles</title>
<para>De Linux-kernel ondersteunt <Emphasis>virtuele consoles</Emphasis>. Dit is
een manier om je enkele scherm en toetsenbord te laten lijken alsof
het meerdere terminals zijn, die allemaal zijn aangesloten op hetzelfde
systeem. Gelukkig is het gebruik van virtuele consoles één van
de eenvoudigste dingen onder Debian: er zijn "sneltoetsen" voor het
snel schakelen tussen de consoles. Om dit uit te proberen log je in op je
systeem en typ je <Emphasis>A-F2</Emphasis> (gelijktijdig indrukken van de
<Emphasis>Alt</Emphasis>-toets, en <Emphasis>F2</Emphasis>, dat wil zeggen,
functietoets nummer 2).</para>
<para>Je bevindt je nu achter een andere loginprompt. Geen paniek:
je bevindt je nu op de virtuele console (VC) nummer 2!
Log hier in en doe wat -- meer <Emphasis>whoami</Emphasis>'s of wat dan
ook -- ter bevestiging dat dit een echte login-shell is. Nu kun je met
<Emphasis>A-F1</Emphasis> naar de virtuele console nummer 1 terugkeren.
Of je kunt naar een <Emphasis>derde</Emphasis> virtuele console gaan,
uiteraard via (<Emphasis>A-F3</Emphasis>).</para>
<para>Debian wordt standaard met zes virtuele consoles geactiveerd geleverd,
die worden benaderd met de Alt-toets en functietoetsen
<Emphasis>F1-F6</Emphasis> (technisch gesproken zijn er meer virtuele consoles
geactiveerd, maar op slechts 6 daarvan kan worden ingelogd. De anderen
worden gebruikt voor het X Window Systeem of andere speciale doelen). </para>
<para>Als je gebruik maakt van het X Window Systeem, zal het gewoonlijk
vanaf de eerste ongebruikte virtuele console opstarten -- waarschijnlijk VC 7.
Je zal ook <Emphasis>Ctrl</Emphasis> aan de toetsenreeks toe moeten voegen
om van de X virtuele console naar één van de eerste zes virtuele
consoles over te schakelen. Dus dat is <Emphasis>C-A-F1</Emphasis> om op VC 1
te komen. Maar je kunt van een tekst VC naar de X virtuele console gaan door
alleen gebruik te maken van <Emphasis>Alt</Emphasis>. Als je nooit uit X gaat,
hoef je je hier niet om te bekommeren; X schakelt automatisch bij het
opstarten naar zijn virtuele console.</para>
<para>Zodra je er aan gewend raakt, zullen virtuele consoles waarschijnlijk
een onmisbaar stuk gereedschap worden om veel tegelijkertijd te kunnen doen.
(Het X Window Systeem dient vrijwel hetzelfde doel, door te voorzien in
meerdere vensters in plaats van meerdere consoles). Je kunt op iedere VC
een ander programma uitvoeren of op één VC als root inloggen
en op een ander als jezelf.
Of iedereen in het gezin kan zijn eigen VC gebruiken --- dit is vooral
handig als je X gebruikt, in welk geval je verscheidene X-sessies op
verschillende virtuele consoles tegelijkertijd kunt draaien.</para>
</sect1>
<sect1 id="start-shutdown"><title>Afsluiten van het Systeem</title>
<para><Emphasis>Zet de computer niet zomaar uit! Je riskeert daarmee het
verlies van waardevolle gegevens!
</Emphasis></para>
<para>Als je de enige gebruiker op je computer bent, wil je de computer
misschien uitzetten als je er klaar mee bent.
<footnote><para>Zet de computer alleen uit als je voor die dag klaar bent,
om mogelijke verzwakking van een aantal hardware-componenten te voorkomen.
Het aan- en uitzetten zijn de twee belangrijkste redenen die bijdragen
aan slijtage van computercomponenten. Het éénmaal per dag aan- en
uitzetten is waarschijnlijk de beste compromis tussen je elektriciteitsnota en
de levensduur van je computer.
</para>
</footnote></para>
<para>
In tegenstelling tot de meeste DOS-versies, is het een slechte gewoonte
gewoon de aan-/uitknop van de computer te gebruiken wanneer je klaar bent
op je computer. Het is ook slecht om de computer (met de reset-knop) te
rebooten, zonder eerst de juiste voorzorgsmaatregelen te treffen.
De Linux-kernel heeft voor het verbeteren van de performance een
<Emphasis>disk cache</Emphasis>. Dit betekent dat het tijdelijk informatie
bewaart, bedoeld als permanente opslag in RAM: aangezien geheugen duizendmaal
sneller is dan een disk, zorgt dit ervoor dat veel bestandsbewerkingen sneller
worden uitgevoerd. De informatie die Linux in het geheugen heeft, wordt
periodiek echt naar disk geschreven. Dit wordt <Emphasis>syncing</Emphasis>
genoemd. Om je computer uit te zetten of opnieuw op te starten, moet je je
computer vertellen dat het alles uit het geheugen op moet schonen en het
permanent op moet slaan.
</para>
<para>Typ <Emphasis>reboot</Emphasis> om opnieuw op te starten, of druk
op <Emphasis>C-A-DEL</Emphasis> (dat wil zeggen Control, Alt, en Delete).</para>
<para>Om het systeem af te sluiten, moet je <Emphasis>root</Emphasis> zijn.
Typ als root gewoon de opdracht <Emphasis>shutdown -h now</Emphasis>. Hiermee
zal de gehele afsluitprocedure worden doorlopen, waaronder de opdracht
<Emphasis>sync</Emphasis> dat er voor zorgt dat de diskcache, zoals hierboven
werd beschreven, wordt opgeschoond. Wanneer je de melding
<Emphasis>System halted</Emphasis> ziet, is het veilig de
computer uit te zetten. Wellicht dat de computer zichzelf afsluit en
je dit bespaart, als je Advanced Power Management (APM) ondersteuning in
je kernel en BIOS hebt. In laptops is APM heel algemeen en het wordt ook
in bepaalde desktop moederborden ondersteund.</para>
<para>Een aantal mensen vindt het 't eenvoudigst om af te sluiten door
het indrukken van <Emphasis>C-A-DEL</Emphasis> om te rebooten, en vervolgens
de computer uit te zetten voordat de Linux-kernel weer opnieuw wordt geladen.
Als de kernel weer opnieuw wordt geladen, moet je echter weer wachten, tot het
daarmee klaar is en dan nogmaals juist rebooten om weer af te sluiten.</para>
</sect1>
</chapter>
<chapter id="basics"><title>De Basis</title>
<!-- <para>FIXME write a little intro here. -->
<sect1 id="basics-commandline"><title>De opdrachtregel en
<Emphasis>man</Emphasis> pages </title>
<para>We hebben de <Emphasis>opdrachtregel</Emphasis> reeds besproken, dat wil
zeggen de opdrachten die je achter de shell-prompt intikt. Deze sectie
beschrijft de structuur van de wat gecompliceerdere opdrachtregels.</para>
<para>Een minimale opdrachtregel bestaat uit slechts de naam van de
opdracht, zoals <Emphasis>whoami</Emphasis>. Maar er zijn andere
mogelijkheden. Je zou bijvoorbeeld in kunnen tikken:
<screen>
man whoami
</screen>
Met deze opdracht wordt verzocht om het online handboek voor het
<Emphasis>whoami</Emphasis> programma (wellicht dat je de spatiebalk in
moet drukken om door de documentatie te scrollen, of tik de
<Emphasis>q</Emphasis> in om te stoppen). Een wat gecompliceerder voorbeeld:
<screen>
man -k Postscript
</screen>
Deze opdrachtregel bestaat uit drie delen. Het begint met
de naam van de opdracht, <Emphasis>man</Emphasis>. Dan heeft het een
<Emphasis>optie</Emphasis> of <Emphasis>switch</Emphasis>,
<Emphasis>-k</Emphasis>, gevolgd door een <Emphasis>argument</Emphasis>,
<Emphasis>Postscript</Emphasis>. Sommige mensen refereren naar alles
behalve de naam van de opdracht als de <Emphasis>parameters</Emphasis>
van de opdracht. Dus zowel opties als argumenten zijn parameters.</para>
<para> Opties wijzigen de werking van een opdracht, waarbij bepaalde
mogelijkheden of functionaliteit worden ingeschakeld.
Gewoonlijk worden ze voorafgegaan door een <Emphasis>-</Emphasis>.
De GNU-utility's hebben voor deze opties ook een "lange variant";
de lange variant van <Emphasis>-k</Emphasis> is
<Emphasis>--apropos</Emphasis>. Tik <Emphasis>man -h</Emphasis> of
<Emphasis>man --help</Emphasis> in om een volledige lijst met opties voor
de <Emphasis>man</Emphasis>-opdracht te verkrijgen. Iedere opdracht heeft een
eigen set opties, alhoewel de meeste opdrachten de <Emphasis>--help</Emphasis>
en <Emphasis>--version</Emphasis> opties ondersteunen. Een aantal opdrachten
is excentriek: <Emphasis>tar</Emphasis> vereist bijvoorbeeld om
historische redenen voor de opties geen <Emphasis>-</Emphasis>.</para>
<para>Alles wat geen optie en niet de naam van een opdracht is, is een
<Emphasis>argument</Emphasis>. In dit geval, <Emphasis>Postscript</Emphasis>.
Argumenten kunnen vele doelen dienen; in het algemeen zijn het bestandsnamen
waarop de opdracht werkt. In dit geval is <Emphasis>Postscript</Emphasis>
het woord waarvan je wilt dat <command>man</command> het opzoekt.
In het geval van <Emphasis>man whoami</Emphasis>, was het argument de
opdracht waarover je informatie wilde.
</para>
<para>Uitpluizen van de opdrachtregel <Emphasis>man -k Postscript</Emphasis>:
<itemizedlist>
<ListItem><para><Emphasis>man</Emphasis>, de naam van de opdracht vertelt
de computer de manual pages op te zoeken. Deze voorzien in documentatie voor
opdrachten. Als voorbeeld, <Emphasis>man whoami</Emphasis> zal je documentatie
geven over de opdracht <Emphasis>whoami</Emphasis>.</para></ListItem>
<ListItem><para><Emphasis>-k</Emphasis>, de optie, wijzigt de werking van
<Emphasis>man</Emphasis>. Normaal gesproken verwacht <Emphasis>man</Emphasis>
als argument een naam van een opdracht, zoals
<Emphasis>whoami</Emphasis>, en zoekt de documentatie over die opdracht op.
Maar met de optie <Emphasis>-k</Emphasis> of <Emphasis>--apropos</Emphasis>
verwacht het dat het argument een sleutelwoord is. Vervolgens geeft het dan
een lijst met al die manual pages waarin dat sleutelwoord in de beschrijving
voorkomt.
</para></ListItem>
<ListItem><para><Emphasis>Postscript</Emphasis> is het argument; aangezien
we de optie <Emphasis>-k</Emphasis> gebruikte, is het 't sleutelwoord om naar
te zoeken.
</para>
</ListItem>
<ListItem><para><Emphasis>-k</Emphasis> en <Emphasis>Postscript</Emphasis>
zijn beiden parameters.</para></ListItem>
</Itemizedlist></para>
<para>Ga je gang en typ <Emphasis>man -k Postscript</Emphasis>, en je zal
een lijst te zien krijgen van alle manual pages op je systeem die iets
te maken hebben met Postscript. Als je niet zoveel software hebt
geïnstalleerd, krijg je in plaats daarvan mogelijk te zien
<Emphasis>Postscript: nothing appropriate</Emphasis>.</para>
</sect1>
<sect1 id="basics-commandline-description"><title>Beschrijven van de
opdrachtregel</title>
<para>Noot: Dit is een sectie die je over kunt slaan, voor het geval je
verder wilt gaan.
</para>
<para>Er is volgens traditie een beknopte wijze voor het beschrijven van
de opdrachten-<Emphasis>syntax</Emphasis>
<footnote><para><Emphasis>Syntax</Emphasis>
betekent de correcte wijze om diverse opties en argumenten te combineren.
</para></footnote> die je zou moeten kennen. Als voorbeeld,
als je <Emphasis>man man</Emphasis> intikt om de manual page over
<Emphasis>man</Emphasis> te krijgen, zal je verscheidene syntax-beschrijvingen
te zien krijgen die beginnen met de opdrachtnaam <Emphasis>man</Emphasis>.
Één daarvan ziet er ongeveer zo uit:
<screen>
man -k [-M path] keyword ...
</screen>
</para>
<para>Alles tussen blokhaken (<Emphasis>[]</Emphasis>) is een optionele eenheid.
Dus je hoeft de optie <Emphasis>-M</Emphasis> niet te gebruiken, maar als je het
doet, moet je een <Emphasis>path</Emphasis> argument gebruiken.
Je moet de optie <Emphasis>-k</Emphasis> en het <Emphasis>keyword</Emphasis>
argument gebruiken. De <Emphasis>...</Emphasis> betekent dat je meer kunt
hebben van hetgeen ervoor kwam, dus je zou verscheidene sleutelwoorden
op kunnen zoeken.</para>
<para>Laten we eens kijken naar één van de complexere
beschrijvingen van de manual page van <Emphasis>man</Emphasis>:
<screen>
man [-c|-w|-tZT device] [-adhu7V] [-m system[,...]] [-L
locale] [-para string] [-M path] [-P pager] [-r prompt] [-S
list] [-e extension] [[section] page ...] ...
</screen>
Het is niet nodig om dit allemaal door te nemen (en maak je er geen
zorgen om wat het allemaal betekent), maar let wel op de organisatie van
de beschrijving.
</para>
<para>Ten eerste, betekenen clusters met opties gewoonlijk dat je
één of meer ervan in verschillende combinaties kunt gebruiken,
dus <Emphasis>-adhu7V</Emphasis> betekent dat je ook
<Emphasis>-h</Emphasis> kunt gebruiken. Je kunt echter niet altijd alle
combinaties gebruiken; deze beschrijving maakt dat niet duidelijk.
<Emphasis>-h</Emphasis> is bijvoorbeeld incompatibel met andere opties,
maar je zou <Emphasis>man -du</Emphasis> kunnen gebruiken. Helaas maakt
het formaat van de beschrijving dit niet duidelijk.
</para>
<para>Ten tweede betekent het symbool <Emphasis>|</Emphasis> "of". Dus je
kunt <Emphasis>óf</Emphasis> de <Emphasis>-c</Emphasis>, de
<Emphasis>-w</Emphasis>,
<Emphasis>óf</Emphasis> de <Emphasis>-tZT</Emphasis> opties,
gevolgd door een <Emphasis>device</Emphasis>-argument gebruiken.</para>
<para>Ten derde, kun je blokhaken nesten, aangezien ze een optionele
<Emphasis>eenheid</Emphasis> aangeven. Dus als je
een <Emphasis>section</Emphasis> hebt, moet je ook een
<Emphasis>page</Emphasis> hebben, aangezien <Emphasis>page</Emphasis> niet
optioneel is binnen de <Emphasis>[[section] page]</Emphasis> eenheid.</para>
<para>Het is niet nodig dit allemaal te onthouden, refereer gewoon naar
deze sectie als je documentatie leest.</para>
</sect1>
<!--sect1 id="basics-files"><title>Bestanden en Directories</title>-->
<sect1 id="basics-files-intro"><title>Introductie in bestanden</title>
<para><Emphasis>Bestanden</Emphasis> zijn een faciliteit voor het opslaan en
het organiseren van informatie, analoog aan papieren documenten.
Ze zijn in <Emphasis>directory's</Emphasis> georganiseerd, wat op een
aantal andere systemen <Emphasis>folders</Emphasis> wordt genoemd. Laten we
eens kijken naar de organisatie van bestanden op een Debian-systeem:
<glosslist>
<glossentry <glossterm><Emphasis>/</Emphasis></glossterm>
<glossdef><para>Een simpele <Emphasis>/</Emphasis> stelt de root-directory
voor. Alle andere bestanden en directory's
bevinden zich in de root-directory. Als je uit de DOS/Windows wereld komt,
is <Emphasis>/</Emphasis> zeer vergelijkbaar met wat
<Emphasis/C:/ voor DOS is, dat is de root van het bestandssysteem.
Een opmerkelijk verschil tussen DOS en Linux is echter, dat DOS verscheidene
bestandssystemen bijhoudt: <Emphasis/C:/ (de eerste harddisk), <Emphasis/A:/
(het eerste diskettestation), <Emphasis/D:/ (óf de CD-ROM, óf
de tweede harddisk) terwijl Linux alle bestanden onder dezelfde <Emphasis>/
</Emphasis> root heeft georganiseerd. Zie de <XRef LinkEnd="disks-mount"> voor
meer details.</para></glossdef>
</glossentry>
<glossentry><glossterm><Emphasis>/home/janeq</Emphasis></glossterm>
<glossdef><para>Dit is de home-directory van gebruiker
"janeq". Lezend van links naar rechts, begin je om bij deze directory
te komen in de root-directory, ga je van daaruit naar <Emphasis>home</Emphasis>,
en dan naar <Emphasis>janeq</Emphasis>.</para></glossdef>
</glossentry>
<glossentry><glossterm><Emphasis>/etc/X11/XF86Config</Emphasis></glossterm>
<glossdef><para>Dit is het configuratiebestand voor het X Window Systeem. Het
komt voor in de <Emphasis>X11</Emphasis> subdirectory van de
<Emphasis>/etc</Emphasis> directory. <Emphasis>/etc</Emphasis> is op zijn
beurt een subdirectory van de root-directory <Emphasis>/</Emphasis>.</para>
</glossdef>
</glossentry>
</glosslist></para>
<para>Wat opmerkingen:
<itemizedlist>
<ListItem><para>Bestandsnamen zijn hoofdlettergevoelig. Dat wil zeggen dat
<Emphasis>MYFILE</Emphasis> en <Emphasis>MyFile</Emphasis>
<Emphasis/verschillende</emphasis> bestanden zijn.</para></listitem>
<ListItem><para>De root-directory verwijst eenvoudig naar
<Emphasis>/</Emphasis>. Verwar deze "root" niet met de root-gebruiker, de
gebruiker op je systeem met "super bevoegdheden".</para></ListItem>
<ListItem><para>Iedere directory heeft een naam welke kan bestaan uit alle
letters of symbolen, <Emphasis>behalve</Emphasis> de <Emphasis>/</Emphasis>. De
root-directory vormt daarop een uitzondering; zijn naam is
<Emphasis>/</Emphasis> (uitgesproken als "slash" of "de root-directory") en
het kan niet worden hernoemd.</para></Listitem>
</itemizedlist></para>
<para>
<footnote><para>Ondanks dat je bijna alle letters of symbolen in een
bestandnaam <Emphasis>kunt</Emphasis> gebruiken, is het in de praktijk een
slecht idee. Het is beter tekens te vermijden, die op de opdrachtregel
vaak speciale betekenissen hebben, waaronder
<Emphasis>{ } ( ) [ ] ' ` " \ / > < | ; ! # & ^ *
% @</Emphasis>.
Voormijd in bestandsnamen ook het plaatsen van spaties.
Als je woorden in een naam van elkaar wilt scheiden, zijn de punt, het
koppelteken, en de underscore goede keuzes. Je zou ook ieder woord met een
hoofdletter kunnen laten beginnen.
<Emphasis>ZoalsDit</Emphasis>.</para>
</footnote></para>
<para>
<itemizedlist>
<ListItem><para>Ieder bestand of iedere directory wordt aangeduid met
een <Emphasis>volledig gekwalificeerde bestandsnaam</Emphasis> (FQN),
<Emphasis>absolute bestandsnaam</Emphasis>, of <Emphasis>pad</Emphasis>,
waarin de reeks directory's wordt aangegeven die moet worden doorlopen
om het te bereiken. De drie termen zijn synoniem. Alle absolute bestandsnamen
beginnen met de <Emphasis>/</Emphasis> directory, en er staat een
<Emphasis>/</Emphasis> tussen iedere directory of bestand in de
bestandsnaam. De eerste <Emphasis>/</Emphasis> is de naam van een
directory, maar de anderen zijn eenvoudigweg scheidingstekens om de
delen van de bestandsnaam van elkaar te onderscheiden.</para></listitem>
</itemizedlist></para>
<para>De hier gebruikte woorden kunnen verwarrend zijn.
Neem het volgende voorbeeld:
<screen>
/usr/share/keytables/us.map.gz
</screen>
Dit is een volledig gekwalificeerde bestandsnaam; een aantal mensen noemt
het een <Emphasis>path</Emphasis>. Mensen zullen echter naar alleen
<Emphasis>us.map.gz</Emphasis> ook als een bestandsnaam refereren.
<footnote><para>Er is ook nog een ander gebruik voor het woord "path"
<!-- FIXME crossref -->.
De bedoelde betekenis blijkt vaak duidelijk uit de context.
</para></footnote></para>
<itemizedlist>
<ListItem><para>Directories zijn in een boomstructuur gearrangeerd.
Alle absolute bestandsnamen beginnen bij de root-directory. De root-directory
heeft een aantal onderverdelingen, zoals <Emphasis>/etc</Emphasis> en
<Emphasis>/usr</Emphasis>. Deze subdirectory's zijn op hun beurt in nog meer
subdirectory's onderverdeeld, zoals <Emphasis>/etc/init.d</Emphasis> en
<Emphasis>/usr/local</Emphasis>. Het geheel wordt de "directory-structuur"
genoemd.</para>
<para>Je kunt aan een absolute bestandsnaam denken als een route van de basis
van een boom (<Emphasis>/</Emphasis>) naar het einde van een tak (een bestand).
Je zal mensen er ook over horen praten alsof de directory-structuur
een <Emphasis>familie</Emphasis>-stamboom is: dus subdirectory's hebben
"ouders" en een pad toont de complete afstamming van een bestand.</para>
<para>Er zijn ook relatieve paden die ergens anders beginnen dan
vanuit de root-directory. Hierover later meer.</para></ListItem>
<ListItem><para>Er is geen directory die met een fysiek device, zoals je
harddisk correspondeert. Dit verschilt van DOS en Windows, waar alle paden
met de naam van een apparaat, zoals <Emphasis>C:\</Emphasis> beginnen. De
directory-structuur is bedoeld als een afgeleide van de fysieke hardware,
dus je kunt het systeem gebruiken zonder te weten wat de hardware is.
Al je bestanden zouden zich op één disk kunnen bevinden --
of je zou 20 disks kunnen hebben, waarvan een aantal met een andere computer
elders op het netwerk zijn verbonden.
Dit is niet uit de directory-structuur op te maken, en bijna alle opdrachten
werken op dezelfde manier ongeacht de fysieke apparaten waarop je bestanden
zich in feite bevinden.
</para></listitem>
</itemizedlist>
<para>Maak je er geen zorgen om als het je nog niet helemaal duidelijk is.
Er komen nog heel veel voorbeelden.</para>
</sect1>
<sect1 id="basics-files"><title>Bestanden gebruiken: een tutorial</title>
<para>
Om je systeem te gebruiken, moet je weten hoe je bestanden en
directory's aanmaakt, verplaatst, hernoemt en verwijdert.
In deze sectie wordt beschreven hoe je dit met de standaard Debian
opdrachten doet.
</para>
<para> De beste manier om te leren is door het uit te proberen. Zolang als
je de root niet bent (en nog geen belangrijke persoonlijke bestanden hebt
aangemaakt), is er niets dat je al te serieus kunt verprutsen --
Begin meteen --- typ ieder van de volgende opdrachten in achter de prompt
en druk op enter:
<GlossList>
<glossentry>
<glossterm>pwd</glossterm>
<glossdef><para>Één directory wordt altijd
aangemerkt als de <Emphasis>huidige werkdirectory</Emphasis> voor de in gebruik
zijnde shell. Je kunt deze directory bekijken met het <Emphasis>pwd</Emphasis>
opdracht, wat staat voor Print Working Directory. <Emphasis>pwd</Emphasis>
drukt de naam van de directory af waar je in aan het werken bent ---
waarschijnlijk <Emphasis>/home/jenaam</Emphasis>.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>ls</glossterm>
<glossdef><para><Emphasis>ls</Emphasis> staat voor "lijst", als in "lijst
met bestanden". Als je <Emphasis>ls</Emphasis> intikt, toont het systeem
een lijst met alle bestanden in je huidige werkdirectory. Als je Debian net
hebt geïnstalleerd, kan het heel goed zijn dat je home-directory leeg is.
Als je werkdirectory leeg is, produceert <Emphasis>ls</Emphasis> geen uitvoer,
aangezien er geen bestanden zijn om weer te geven.</para></glossdef>
</glossentry>
<glossentry><glossterm>cd /</glossterm>
<glossdef><para><Emphasis>cd</Emphasis> betekent Change Directory (Verander van
directory). In dit geval vroeg je naar de root-directory te gaan.</para>
</glossdef></glossentry>
<glossentry><glossterm>pwd</glossterm>
<glossdef><para>Verifieer dat je in de root-directory aan het werken bent.
</para></glossdef></glossentry>
<glossentry><glossterm>ls</glossterm>
<glossdef><para>Kijk wat er zich in <Emphasis>/</Emphasis> bevindt.</para>
</glossdef></glossentry>
<glossentry>
<glossterm>cd</glossterm>
<glossdef><para>Het typen van <Emphasis>cd</Emphasis> zonder argumenten
selecteert je home-directory als je huidige werkdirectory ---
<Emphasis>/home/yourname</Emphasis>. Probeer dit met <Emphasis>pwd</Emphasis>
te verifiëren.</para></glossdef>
</glossentry>
</GlossList></para>
<para>Voor we verder gaan, zou je moeten weten dat er in feite twee
verschillende soorten bestandsnamen zijn. Een aantal daarvan begint met
<Emphasis>/</Emphasis>, de root-directory, zoals
<Emphasis>/etc/profile</Emphasis>. Dit worden <Emphasis>absolute</Emphasis>
bestandsnamen genoemd omdat ze naar hetzelfde bestand refereren ongeacht wat
je huidige directory is. De andere soort bestandsnaam is
<Emphasis>relatief</Emphasis>.</para>
<para>Twee directorynamen worden <Emphasis>alleen</Emphasis> in relatieve
bestandsnamen gebruikt: <Emphasis>.</Emphasis> en <Emphasis>..</Emphasis>.
De directory <Emphasis>.</Emphasis> verwijst naar de huidige directory en
<Emphasis>..</Emphasis> is de ouder-directory. Dit zijn "shortcut"
directory's. Ze komen in <Emphasis>iedere</Emphasis> directory voor. Zelfs de
root-directory heeft een ouder-directory --- het is zijn eigen ouder!</para>
<para>Dus bestandnamen met een <Emphasis>.</Emphasis> of
<Emphasis>..</Emphasis> zijn <Emphasis>relatief</Emphasis>, omdat hun
betekenis afhankelijk is van de huidige directory. Als ik in
<Emphasis>/usr/bin</Emphasis> ben en <Emphasis>../etc</Emphasis> intik,
dan refereer ik naar <Emphasis>/usr/etc</Emphasis>. Als ik in
<Emphasis>/var</Emphasis> ben en <Emphasis>../etc</Emphasis> intik, dan
refereer ik naar <Emphasis>/etc</Emphasis>. Merk op dat een bestandsnaam
zonder dat het begint met de root-directory impliciet begint met
<Emphasis>./</Emphasis>. Dus je kunt <Emphasis>local/bin</Emphasis> of
<Emphasis>./local/bin</Emphasis> typen en het betekent hetzelfde.</para>
<para>Een laatste handige tip: de tilde <Emphasis>~</Emphasis> is equivalent
aan je home-directory. Dus het typen van <Emphasis>cd ~</Emphasis> is
hetzelfde als het typen van <Emphasis>cd</Emphasis> zonder argumenten. Je kunt
ook zoiets typen als <Emphasis>cd ~/practice/mynsubdirectory</Emphasis> om naar
de directory <Emphasis>/home/jenaam/practice/mynsubdirectory</Emphasis> te
gaan. Op vergelijkbare wijze, is <Emphasis/~vincent/ equivalent aan de
home-directory van de gebruiker "vincent", welke waarschijnlijk iets is als
<Emphasis>/home/vincent</Emphasis>; dus <Emphasis>~vincent/docs/debian.ps</Emphasis> is equivalent aan <Emphasis>/home/vincent/doc/debian.ps</Emphasis>.</para>
<para>Nu dat je bekend bent met relatieve bestandsnamen, zijn hier nog wat
meer bestandsopdrachten om uit te proberen.
<Emphasis>cd</Emphasis> naar je home-directory voor je begint.
<Glosslist>
<glossentry><glossterm>mkdir practice</glossterm>
<glossdef><para>Maak in je home-directory
een directory met de naam <Emphasis>practice</Emphasis> aan. Je zal deze
directory gaan gebruiken om nog wat andere opdrachten uit te proberen.
Je kunt <Emphasis>ls</Emphasis> typen om te verifiëren dat je nieuwe
directory bestaat.</para></glossdef></glossentry>
<glossentry><glossterm>cd practice</glossterm>
<glossdef><para>Ga naar de directory <Emphasis>practice</Emphasis>.
</para></glossdef></glossentry>
<glossentry>
<glossterm>mkdir mysubdirectory</glossterm>
<glossdef><para>Maak een subdirectory van <Emphasis>practice</Emphasis>.
</para></glossdef>
</glossentry>
<glossentry>
<glossterm>cp /etc/profile .</glossterm>
<glossdef><para><Emphasis>cp</Emphasis> is
een afkorting voor "copy." <Emphasis>/etc/profile</Emphasis> is gewoon een
willekeurig bestand op je systeem, maak je er nu niet druk om wat het is.
We hebben het naar <Emphasis>.</Emphasis> gekopieerd ---
herinner je dat <Emphasis>.</Emphasis> gewoon betekent "de directory waarin
ik me nu bevind" oftewel de huidige werkdirectory. Dus we hebben een kopie van
<Emphasis>/etc/profile</Emphasis> aangemaakt, en het in onze
<Emphasis>practice</Emphasis> directory geplaatst. Probeer
<Emphasis>ls</Emphasis> in te typen om te verifiëren dat er in je
werkdirectory met de nieuwe <Emphasis>mysubdirectory</Emphasis>
inderdaad een bestand is met de naam
<Emphasis>profile</Emphasis>.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>more profile</glossterm>
<glossdef><para>Bekijk de inhoud van het
bestand <Emphasis>profile</Emphasis>. <Emphasis>more</Emphasis> wordt gebruikt
om de inhoud van tekstbestanden te bekijken. Het wordt
<Emphasis>more</Emphasis> genoemd, omdat het tegelijkertijd een
scherm vol van het bestand laat zien, en je op de spatiebalk moet drukken om
meer te zien te krijgen. <Emphasis>more</Emphasis> wordt beëindigd als
je aan het einde van het bestand bent gekomen of als je
<Emphasis>q</Emphasis> (quit) intikt.</para></glossdef>
</glossentry>
<glossentry><glossterm>more /etc/profile</glossterm>
<glossdef><para>Verifieer dat het origineel er net zo uitziet als de kopie
die je hebt aangemaakt.
</para></glossdef></glossentry>
<glossentry>
<glossterm>mv profile mysubdirectory</glossterm>
<glossdef><para><Emphasis>mv</Emphasis> staat voor "move". We hebben het bestand
<Emphasis>profile</Emphasis> vanuit de huidige directory naar de eerder
aangemaakte subdirectory verplaatst.
</para></glossdef>
</glossentry>
<glossentry>
<glossterm>ls</glossterm>
<glossdef><para>Verifieer dat <Emphasis>profile</Emphasis> zich niet langer
in de huidige directory bevindt.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>ls mysubdirectory</glossterm>
<glossdef><para>Verifieer dat <Emphasis>profile</Emphasis> naar
<Emphasis>mysubdirectory</Emphasis> is verplaatst.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>cd mysubdirectory</glossterm>
<glossdef><para>Verander van subdirectory.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>mv profile myprofile</glossterm>
<glossdef><para>Merk op dat in tegenstelling tot een aantal andere
besturingssystemen, er geen verschil is tussen het verplaatsen en hernoemen
van een bestand. Dus er is geen aparte <Emphasis>rename</Emphasis> opdracht.
Merk op dat het tweede opgegeven argument aan <Emphasis>mv</Emphasis> een
directory om het bestand of een directory naar te verplaatsen, of een nieuwe
bestandsnaam kan zijn. <Emphasis>cp</Emphasis> werkt op dezelfde manier.
Zoals gebruikelijk kun je <Emphasis>ls</Emphasis> intikken om het resultaat van
<Emphasis>mv</Emphasis> te zien.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>mv myprofile ..</glossterm>
<glossdef><para>Net als <Emphasis>.</Emphasis> betekent "de directory waar
ik me nu in bevind", betekent <Emphasis>..</Emphasis> "ouder van de huidige
directory", in dit geval de eerder aangemaakte directory
<Emphasis>practice</Emphasis>. Gebruik <Emphasis>ls</Emphasis> om te
verifiëren dat <Emphasis>myprofile</Emphasis> daar nu is.</para></glossdef>
</glossentry>
<glossentry><glossterm>cd ..</glossterm>
<glossdef><para>Wijzig van directory naar de ouder-directory --- in dit
geval <Emphasis>practice</Emphasis>,
waar je net <Emphasis>myprofile</Emphasis> in hebt geplaatst.</para></glossdef>
</glossentry>
<glossentry><glossterm>rm myprofile</glossterm>
<glossdef><para><Emphasis>rm</Emphasis>
betekent "remove" --- hiermee wordt <Emphasis>myprofile</Emphasis> verwijderd.
Wees voorzichtig! Het verwijderen van een bestand op een GNU/Linux systeem is
<Emphasis>permanent</Emphasis> --- er is geen undelete. Als je de opdracht
<Emphasis>rm</Emphasis> toepast, is het <Emphasis>verdwenen</Emphasis>,
<Emphasis>voor altijd</Emphasis>.
Wees voorzichtig! Het verwijderen van een bestand op een GNU/Linux systeem is
<Emphasis>permanent</Emphasis> --- er is geen undelete. Als je de opdracht
<Emphasis>rm</Emphasis> toepast, is het <Emphasis>verdwenen</Emphasis>,
<Emphasis>voor altijd</Emphasis>.
<!-- Ja, twee keer, om er zeker van te zijn dat de gebruiker het merkt...;) -->
</para></glossdef></glossentry>
<glossentry><glossterm>rmdir mysubdirectory</glossterm>
<glossdef><para><Emphasis>rmdir</Emphasis> is net als <Emphasis>rm</Emphasis>,
het geldt echter voor directory's. Merk op dat <Emphasis>rmdir</Emphasis>
alleen op lege directory's werkt --- als de directory bestanden bevat, moet
je die bestanden eerst verwijderen, of als alternatief
<Emphasis>rm -r</Emphasis> gebruiken in plaats van <Emphasis>rmdir</Emphasis>.
</para></glossdef></glossentry>
<!-- TO BE DELETED
<ListItem> <Emphasis>rmdir .</Emphasis> <para> Oops! That didn't work. Je kunt
een directory waar je op 't moment in aan het werken bent,
niet verwijderen.
Well, 'rmdir .' happens to work fine:
vince:/tmp# mkdir poil
vince:/tmp# cd poil
vince:/tmp/poil# rmdir .
vince:/tmp/poil# ls -al
total 0
vince:/tmp/poil# ls -al ../poil
ls: ../poil: No such file or directory
-->
<glossentry><glossterm>cd ..</glossterm>
<glossdef><para>Verlaat de huidige directory en ga naar zijn ouder-directory.
Nu kun je typen:</para></glossdef></glossentry>
<glossentry><glossterm>rmdir practice</glossterm>
<glossdef><para>Hiermee zullen de laatste overblijfselen van je oefensessie
worden verwijderd.
</para></glossdef>
</glossentry>
</GlossList></para>
<para>Zo, dus nu weet je hoe je bestanden en directory's kunt aanmaken,
kopiëren, verplaatsen, hernoemen en verwijderen.
Je leerde ook wat shortcuts, zoals het eenvoudigweg intikken van
<Emphasis>cd</Emphasis> om naar je home-directory te springen
en <Emphasis>.</Emphasis> en <Emphasis>..</Emphasis> om respectievelijk naar
de huidige directory en zijn ouder te refereren.
Vergeet ook het concept van de <Emphasis>root
directory</Emphasis>, of <Emphasis>/</Emphasis>, en de alias
<Emphasis>~</Emphasis> voor je home-directory niet.</para>
</sect1>
<sect1 id="basics-processes"><title>Processen </title>
<para>Eerder vermeldden we dat GNU/Linux een <Emphasis>multitasking</Emphasis>
systeem is. Het kan vele taken tegelijkertijd verrichten. Iedere taak wordt
een <Emphasis>proces</Emphasis> genoemd. De beste manier om hier gevoel voor
te krijgen is achter de shell-prompt <Emphasis>top</Emphasis> te typen.
Je zal een lijst krijgen met processen, die zijn gesorteerd naar gelang
hoeveel verwerkingstijd van de computer ze gebruiken.
De volgorde zal voor je ogen continue wijzigen.
Bovenaan het display staat wat informatie over het systeem: hoeveel gebruikers
zijn ingelogd, hoeveel processen er zijn, hoeveel geheugen je hebt en hoeveel
je gebruikt.
</para>
<para>In de meest linkse kolom, zie je de naam van de gebruiker als eigenaar
van ieder proces.
De meest rechtse kolom toont met welke opdracht het proces werd aangeroepen.
Het zal je waarschijnlijk opvallen dat <Emphasis>top</Emphasis> zelf,
door jou aangeroepen, vrijwel bovenaan de lijst staat (aangezien
<Emphasis>top</Emphasis> voortdurend controleert op CPU-gebruik, zal het actief
zijn en voor de controle CPU gebruiken).
</para>
<para>Let op alle opdrachten die eindigen op <Emphasis>d</Emphasis> --- zoals
<Emphasis>kflushd</Emphasis> en <Emphasis>inetd</Emphasis> ---
de <Emphasis>d</Emphasis> staat voor <Emphasis>daemon</Emphasis>
<footnote><para>daemon betekent van origine
Disks And Extensions MONitor</para></footnote>. Een daemon is een
niet-interactief proces, dat wil zeggen dat het door het systeem wordt
gedraaid en gebruikers zich er nooit om hoeven te bekommeren.
Daemons leveren services zoals een internet-verbinding, het afdrukken, of email.
</para>
<para>Tik nu de <Emphasis>u</Emphasis> in en geef <Emphasis>top</Emphasis> je
gebruikersnaam wanneer het daarom vraagt.
De opdracht <Emphasis>u</Emphasis> vraagt alleen die processen te tonen
die aan jou toebehoren; het staat je toe alle daemons en wat andere mensen dan
ook aan het doen zijn, te negeren. Wellicht dat de naam van je shell,
<Emphasis>bash</Emphasis>, je opvalt.
Je zal vrijwel altijd <Emphasis>bash</Emphasis> aan het draaien zijn.</para>
<para>Merk op dat kolom twee van het <Emphasis>top</Emphasis> display je het
<Emphasis>PID</Emphasis>, of Proces IDentificatie nummer toont. Aan ieder
proces is een uniek PID toegekend. Je kunt het PID gebruiken om individuele
processen te besturen --- hierover later meer. Een andere handige truc:
typ "?" om een lijst met <Emphasis>top</Emphasis> opdrachten te krijgen.</para>
<para>Misschien dat je je afvraagt wat het verschil is tussen een "proces"
en een "programma" --- in de praktijk gebruiken mensen de termen door elkaar.
Technisch gezien is het <Emphasis>programma</Emphasis> een set instructies door
een programmeur geschreven, en wordt het bewaard op disk. Het
<Emphasis>proces</Emphasis> is de werkende instantie van het programma dat
door Linux in het geheugen wordt bewaard. Maar zo belangrijk is het niet de
termen strict gescheiden te houden.</para>
<para>Veel van je interactie met een computer heeft te maken met
het besturen van processen. Je zal ze willen starten, stoppen en zien
in welke staat ze zich bevinden. Je primaire hulpmiddel hiervoor is de
<Emphasis>shell</Emphasis>.</para>
</sect1>
<sect1 id="basics-shell"><title>De shell</title>
<para>De <Emphasis>shell</Emphasis> is een programma dat een wisselwerking
met je computer mogelijk maakt. Het wordt een shell genoemd omdat het in een
omgeving voor je voorziet om in te werken --- een soort klein
elektronisch thuis voor als je computert.
<!--(Think hermit crab.)--></para>
<para>De eenvoudigste functie van de shell is andere programma's op te
starten. Je typt de naam van het programma dat je uit wilt voeren,
gevolgd door de gewenste argumenten, en de shell vraagt het systeem
vervolgens het programma voor je uit te voeren.</para>
<para>Natuurlijk voorzien ook grafische window systemen in deze behoeften.
Technisch gezien voorziet Windows 95 in een grafische shell, en het
X Window Systeem is een andere soort grafische shell
--- maar "shell" wordt in 't algemeen met als betekenis
"opdrachregel-shell" gebruikt.</para>
<para>Onnodig te zeggen dat hackers die onder shells werken, niet
tevreden zijn met een simpelweg opstarten van opdrachten. Je shell heeft
een verbijsterend aantal comfortabele speciale mogelijkheden als je daar
gebruik van wilt maken.
</para>
<Para>Er zijn ontelbare verschillende shells beschikbaar; de meeste daarvan zijn
gebaseerd op de <Emphasis>Bourne shell</Emphasis> of de <Emphasis>C
shell</Emphasis>, twee van de oudste shells. De programmanaam van de originele
Bourne shell is <command>sh</command> en die van de C-shell is
<command>csh</command>. Bourne shell varianten
zijn onder andere de Bourne Again Shell van het GNU-project
(<Emphasis>bash</Emphasis>, de standaardshell van Debian), de Korn shell
(<command>ksh</command>), en de Z shell
(<command>zsh</command>). Ook is er <command>ash</command>, een
implementatie van oudsher van de Bourne shell. De meest algemene
C-shell variant is <command>tcsh</command> (de <Emphasis>t</Emphasis>
is een eerbewijs aan de TENEX en TOPS-20 besturingssystemen,
die wat van de inspiratie opleverde van
<Emphasis>tcsh</Emphasis>'s verbeteringen aan
<Emphasis>csh</Emphasis>).</para>
<para>Bash is voor nieuwe gebruikers waarschijnlijk de beste keuze.
Het is de standaard, en heeft alle speciale mogelijkheden die je
waarschijnlijk nodig zal hebben.
Maar alle shells hebben loyale opvolgers; als je wilt experimenteren,
installeer dan verschillende shell-packages en wijzig je shell
met de opdracht <command>chsh</command>. Tik slechts
<Emphasis>chsh</Emphasis> in, vul een wachtwoord in als daarom wordt gevraagd,
en kies een shell. Wanneer je de volgende keer inlogt, zal je
je nieuwe shell gebruiken.</para>
</sect1>
<sect1 id="basics-jobs"><title>Beheren van processen met Bash</title>
<para>Debian is een multitasking systeem, dus je hebt een manier nodig om
meer dan één ding tegelijkertijd te doen. Grafische
omgevingen zoals X voorzien hierin op natuurlijke wijze; ze staan
tegelijkertijd meerdere vensters op het scherm toe. Natuurlijk voorziet
Bash (of iedere andere shell) in vergelijkbare mogelijkheden.</para>
<para>Eerder maakte je gebruik van <command>top</command> om de verschillende
processen op het systeem te bekijken. Je shell voorziet in een aantal
comfortabele wijzen om alleen de processen die je vanaf de opdrachtregel
hebt opgestart bij te houden. Iedere opdrachtregel start een
<Emphasis>job</Emphasis> (ook een <Emphasis>process group</Emphasis> genoemd)
om door de shell te worden uitgevoerd. Een job kan bestaan uit een enkel
proces of een set processen in een <Emphasis>pipeline</Emphasis> ---
meer over pipelines later. <!-- [FIXME xref] --></para>
<para>Door het invoeren van een opdracht zal een job worden gestart.
Probeer eens het intikken van <Emphasis>man cp</Emphasis> en de man page van
<Emphasis>cp</Emphasis> zal op het scherm verschijnen.
De shell gaat naar de achtergrond en keert terug wanneer
je klaar bent met het lezen van de manual page
(of <Emphasis>q</Emphasis> intikt om het te stoppen in plaats van er
geheel doorheen te scrollen).</para>
<para>Maar stel dat je de manual page aan het lezen bent, en even iets anders
wilt doen. Geen probleem. Typ terwijl je aan het lezen bent <Emphasis>C-z</Emphasis> om de huidige voorgrondtaak <Emphasis>uit te stellen</Emphasis>, en de
shell in de voorgrond te plaatsen. Wanneer je een taak uitstelt, zal Bash je
er eerst wat informatie over geven, en vervolgens geeft het je een
shell-prompt. Je zal op het scherm iets te zien krijgen als:
<screen>
NAME
cp - copy files
SYNOPSIS
cp [options] source dest
cp [options] source... directory
Options:
[-abdfilprsuvxPR] [-S backup-suffix] [-V {numbered,exist
ing,simple}] [--backup] [--no-dereference] [--force]
[--interactive] [--one-file-system] [--preserve] [--recur
sive] [--update] [--verbose] [--suffix=backup-suffix]
[--version-control={numbered,existing,simple}] [--archive]
[--parents] [--link] [--symbolic-link] [--help] [--ver
sion]
DESCRIPTION
--More--
[1]+ Stopped man cp
$
</screen>
</para>
<para>Merk de laatste twee regels op.
De voorlaatste is de job informatie, en vervolgens krijg je een shell-prompt.
</para>
<para>Bash wijst aan iedere opdrachtregel die je vanuit de shell draait
een <Emphasis>job nummer</Emphasis> toe.
Dit geeft je de mogelijkheid eenvoudig naar het proces te refereren.
In dit geval is <Emphasis>man cp</Emphasis> job nummer 1,
wat wordt weergegeven als <Emphasis>[1]</Emphasis>. De <Emphasis>+</Emphasis>
betekent dat dit de laatste job was die je in de voorgrond had.
Bash vertelt je ook de huidige status --- <Emphasis>Stopped</Emphasis> --- en
de opdrachtregel van de job.
</para>
<para>Er is heel veel dat je met jobs kunt doen. Probeer met <Emphasis>man
cp</Emphasis> nog steeds uitgesteld, dit:
<Glosslist>
<Glossentry><glossterm>man ls</glossterm>
<glossdef><para>Start een nieuwe job.</para></glossdef>
</glossentry>
<glossentry><glossterm>C-z</glossterm>
<glossdef><para>Stel de job <Emphasis>man ls</Emphasis> uit door het
indrukken van de Control-toets en kleine letter <Emphasis>z</Emphasis>;
je zou de job informatie te zien moeten krijgen.
</para></glossdef>
</glossentry>
<glossentry><glossterm>man mv</glossterm>
<glossdef><para>Start nog een andere job.</para></glossdef>
</glossentry>
<glossentry><glossterm>C-z</glossterm>
<glossdef><para>Stel het uit.</para></glossdef>
</glossentry>
<glossentry><glossterm>jobs</glossterm>
<glossdef><para>Vraag Bash om een weergave van de huidige taken:
<screen>
$ jobs
[1] Stopped man cp
[2]- Stopped man ls
[3]+ Stopped man mv
$
</screen>
Bemerk de <Emphasis>-</Emphasis> en <Emphasis>+</Emphasis>, die respectievelijk
de voorlaatste en laatste in de voorgrond geplaatste jobs aanduiden.</para>
</glossdef></glossentry>
<glossentry><glossterm>fg</glossterm>
<glossdef><para>Plaats de laatste in de achtergrond geplaatste taak
(<Emphasis>man mv</Emphasis>, degene met de <Emphasis>+</Emphasis>) weer
in de voorgrond. Als je op de spatiebalk drukt, zal de man page verdergaan
met scrollen.</para></glossdef></glossentry>
<glossentry><glossterm>C-z</glossterm>
<glossdef><para>Stel <Emphasis>man mv</Emphasis> opnieuw uit.</para></glossdef>
</glossentry>
<glossentry><glossterm>fg %1</glossterm>
<glossdef><para>Je kunt naar iedere job refereren door voor het nummer
een <Emphasis>%</Emphasis> te plaatsen. Als je <Emphasis>fg</Emphasis>
gebruikt zonder een job aan te geven, dan wordt uitgegaan van de laatste
actieve job.
</para></glossdef>
</glossentry>
<glossentry><glossterm>C-z</glossterm>
<glossdef><para>Stel <Emphasis>man cp</Emphasis> nogmaals uit.</para></glossdef>
</glossentry>
<glossentry><glossterm>kill %1</glossterm>
<glossdef><para>Kill job 1. Bash zal de job informatie rapporteren:
<screen>
$ kill %1
[1]- Terminated man cp
$
</screen>
Bash vraagt slechts de job te stoppen, en soms zal een job dit niet
willen doen. Als de job niet wordt beëindigd, kun je de optie
<Emphasis>-9</Emphasis> aan kill toevoegen om het verzoek te stoppen en
het op te dragen te stoppen.
Als voorbeeld:
<screen>
$ kill -9 %1
[1]- Killed man mv
$
</screen>
De optie <Emphasis>-9</Emphasis> killt geforceerd en onvoorwaardelijk de
job. <footnote><para>In technische termen zendt
<Emphasis>kill</Emphasis> gewoon een signaal. Standaard verzendt het een
signaal dat verzoekt om beëindiging.
(<Emphasis>TERM</Emphasis>, of signaal 15); maar je kunt ook een signaal
opgeven, en signaal 9 (<Emphasis>KILL</Emphasis>) is het signaal dat
de beëindiging forceert.
De opdrachtnaam <Emphasis>kill</Emphasis> is niet noodzakelijk juist voor
wat betreft het gezonden signaal; het zenden van het signaal
<Emphasis>TSTP</Emphasis> (terminal stop) bijvoorbeeld, stelt het proces
uit, en staat toe dat het later wordt voortgezet.
</para></footnote>
<!-- FIXME
Wat is het verschil (is dat er?) tussen SIGSTOP (19) en SIGTSTP (20) ???
Zeg 't me (vincent@debian.org) als je het weet...
--></para></glossdef></glossentry>
<glossentry>
<glossterm>top</glossterm>
<glossdef><para>Breng het <Emphasis>top</Emphasis> display weer tevoorschijn.
Geef de opdracht <Emphasis>u</Emphasis> in <Emphasis>top</Emphasis> om alleen
je eigen processen te zien. Zoek in de rechterkolom naar de
<Emphasis>man ls</Emphasis> en <Emphasis>man mv</Emphasis>
opdrachten. <Emphasis>man cp</Emphasis> zal er niet staan aangezien je de
opdracht kill er op toepaste. <Emphasis>top</Emphasis> toont je de
systeemprocessen overeenkomstig je jobs; merk op dat het PID links op het
scherm niet correspondeert met het job nummer.
</para>
<para>Wellicht dat je je processen niet kunt vinden omdat ze zich
onderaan het scherm bevinden; als je X gebruikt, kun je de
<Emphasis>xterm</Emphasis> van grootte wijzigen om dit probleem op te lossen.
</para>
<para>Zelfs deze simpele taken bestaan in feite uit meerdere
processen, waaronder het <Emphasis>man</Emphasis> proces en de
pager <Emphasis>more</Emphasis> welke het tegelijkertijd scrollen van een
pagina afhandelt. Wellicht merk je dat ook de <Emphasis>more</Emphasis>
processen in <Emphasis>top</Emphasis> zichtbaar zijn.</para></glossdef>
</glossentry>
</GlossList></para>
<para>Je kunt er waarschijnlijk zelf wel achter komen hoe de resterende
jobs kunnen worden opgeruimd. Je kunt ze zowel killen (met de
<Emphasis>kill</Emphasis> opdracht) of ieder in de voorgrond plaatsen
(met <Emphasis>fg</Emphasis>) en ze beëindigen.
Onthoud dat de opdracht <Emphasis>jobs</Emphasis> je de lijst met
bestaande jobs en de status van deze jobs geeft.
</para>
<para>Een laatste opmerking: de documentatie van Bash is tamelijk goed,
maar het is in het Info helpsysteem te vinden in plaats van in de
man pages. Typ <Emphasis>info bash</Emphasis> om het te lezen. Zie <XRef
LinkEnd="docs-info"> voor instructies over het gebruik van het
<Emphasis>info</Emphasis> programma.
Bash bevat ook een zeer goede samenvatting van de opdrachten, die toegankelijk
zijn via de opdracht <Emphasis/help/. <Emphasis/help/ toont een lijst
met beschikbare onderwerpen; meer informatie over ieder onderwerp is
toegankelijk via de opdracht
<Emphasis/help naam van onderwerp/; Probeer bijvoorbeeld het intikken van
<screen/help cd/. Hiermee krijg je de details van de <Emphasis/-P/ en
<Emphasis/-L/ argumenten die door <Emphasis/cd</Emphasis> worden herkend.</para>
</sect1>
<sect1 id="basics-bash"><title>Een paar Bash kenmerken</title>
<para>In deze sectie worden slechts een paar van de in het algemeen meest
gebruikte Bash kenmerken behandeld; zie <XRef LinkEnd="shell"> voor een meer
complete bespreking.</para>
</sect1>
<sect1 id="basics-bash-completion"><title>Tab Voltooiïng</title>
<para>De Bash-shell is in staat de bestandsnaam of de opdracht wat je
in probeert te typen, te raden, en kan het nog niet volledig getypte opdracht
automatisch voor je aanvullen. Typ gewoon het begin van een opdracht of een
bestandsnaam en druk op <Emphasis>TAB</Emphasis>. Als Bash een enkele unieke
aanvulling vindt, zal het 't woord afmaken en er een spatie achter plaatsen.
Als het meerdere mogelijke aanvullingen vindt, zal het dat deel aanvullen dat
alle aanvullingen gemeen hebben en een beep genereren.
Je kunt dan zoveel tekens van het woord invullen dat het 't weer uniek maakt,
en nogmaals op <Emphasis>TAB</Emphasis> drukken. Als het geen aanvullingen
vindt, zal het slechts een beep genereren.
</para>
</sect1>
<!-- FIXME XXX
<sect1> <title>Meer mogelijkheden? Zo niet, elimineer deze sectie dan.
</title>
-->
<sect1 id="basics-identity"><title>Je identiteit beheren</title>
<para>Op Unix lijkende systemen zijn multi-user, en dus heb je je eigen
elektronische identiteit als een gebruiker op het systeem.
Typ <Emphasis>finger je-gebruikersnaam</Emphasis> om de informatie te
bekijken die voor het publiek toegankelijk is. Om de naam en de shell die
hier worden weergegeven, te wijzigen, kun je de opdrachten
<Emphasis>chfn</Emphasis> en <Emphasis>chsh</Emphasis> gebruiken. Alleen de
superuser kan je login (gebruikersnaam) en directory wijzigen. Je bemerkt
dat het aangeeft "No plan" -- een "plan" is gewoon wat informatie welke je
voor anderen beschikbaar kunt stellen.
Om een plan aan te maken, plaats je de informatie waarvan je wilt dat andere
mensen die kunnen zien in een bestand met de naam
<Emphasis>.plan</Emphasis> --- hiervoor gebruik je een teksteditor
(zie <XRef LinkEnd="editor">). Vervolgens pas je op jezelf de opdracht
finger toe om je plan te bekijken.
Anderen kunnen de opdracht finger toepassen om je plan te zien en om te
controleren of je nieuwe mail hebt ontvangen of je mail leest.
</para>
<para>Merk op dat deze finger informatie standaard voor het gehele Internet
beschikbaar is. Lees over het configureren van <Emphasis>inetd</Emphasis> en
het bestand <Emphasis>/etc/services</Emphasis> als je dit niet wilt ---
eventueel kan een beschrijving worden aangetroffen in het installatie-handboek,
voor 't moment zou je de man pages kunnen proberen, of gewoon wat onzin als
finger informatie in het bestand kunnen plaatsen.
</para>
</sect1>
</chapter>
<chapter id="docs-info"><title>Lezen van documentatie en hulp verkrijgen
</title>
<sect1 id="docs-sources"><title>Soorten documentatie</title>
<para>Helaas is de documentatie op Unix lijkende systemen een beetje
ongeorganiseerd. Onder Debian, kun je documentatie in ieder geval
op de volgende plaatsen aantreffen:
<itemizedlist>
<ListItem><para>man pages, te lezen met de opdracht man.</para></listitem>
<ListItem><para>info pages, te lezen met de opdracht info.</para></listitem>
<ListItem><para>De /usr/doc/package directory's, waar package de naam is van het
Debian package.</para></listitem>
<ListItem><para>/usr/doc/HOWTO/ bevat de Linux
Documentatie Project's HOWTO documenten, als je de Debian packages
hebt geïnstalleerd waarin ze zich bevinden.</para></listitem>
<ListItem><para>Veel opdrachten accepteren een -h of --help
optie. Typ de naam van de opdracht gevolgd door één van deze
opties om het uit te proberen.</para></listitem>
<ListItem><para>Het Debian Documentatie Project heeft een aantal
handleidingen geschreven, waaronder deze handleiding.
Controleer het op <ULink url="http://www.debian.org/~elphick/ddp/">hun homepage</ULink>.</para></listitem>
<ListItem><para>Op de <ULink url="http://www.debian.org/support/">Debian support page</ULink> staat een FAQ en andere bronnen.
Je kunt ook de
<ULink url="http://www.linux.org">Linux web site</ULink> proberen.</para></listitem>
<ListItem><para>Je kunt veel commerciële boeken met behulpzame
informatie kopen. De meeste mensen prijzen de merknaam O'Reilly hoog aan.
Neem echter ondersteunde vrij te wijzigen en herdistribueerbare
handboeken, zoals dit handboek, in overweging als dat mogelijk is.
Als je een papieren versie wilt, dan ondersteunt de aanschaffing van
vrije handboeken van het Free Software Foundation
(beschikbaar bij vele boekwinkels, zoals Borders, en direct via de FSF)
de aanmaak van meer vrije software.
</para></listitem>
</itemizedlist></para>
<para>De verwarrende variëteit aan documentatie-bronnen bestaat
om vele redenen. Van <Emphasis>info</Emphasis> wordt bijvoorbeeld
verondersteld dat het <Emphasis>man</Emphasis> vervangt, maar
<Emphasis>man</Emphasis> is nog niet verdwenen. Het is echter prettig te weten
dat er zoveel documentatie bestaat!</para>
<para>Dus waar voor hulp te zoeken? Hier zijn wat suggesties:
<itemizedlist>
<ListItem><para>Gebruik de <Emphasis>man</Emphasis> pages en de
<Emphasis>--help</Emphasis> of <Emphasis/-h/ optie om snel een
samenvatting van de syntax en opties van een opdracht te verkrijgen.
Gebruik ook <Emphasis>man</Emphasis> als een programma nog geen
<Emphasis>info</Emphasis> page heeft.</para></listitem>
<ListItem><para>Gebruik <Emphasis>info</Emphasis> als een programma
<Emphasis>info</Emphasis> documentatie heeft.</para></listitem>
<ListItem><para>Als niets hiervan werkt, kijk dan in de directory
<Emphasis>/usr/doc/packagename</Emphasis>.</para></listitem>
<ListItem><para><Emphasis>/usr/doc/packagename</Emphasis> heeft vaak voor
Debian specifieke informatie, zelfs als er een man page of info page is.
</para></listitem>
<ListItem><para>Gebruik de <Emphasis>HOWTO's</Emphasis> voor instructies over
hoe iets bepaalds in te stellen, of informatie over je specifieke hardware.
In de Ethernet HOWTO staat bijvoorbeeld een schat aan informatie over
ethernet-kaarten, en in de PPP HOWTO wordt in detail uitgelegd hoe PPP in te
stellen.</para></listitem>
<ListItem><para>Gebruik de handboeken van het Debian Documentatie Project
voor uitleg over begrippen en Debian-specifieke informatie.</para></listitem>
<ListItem><para>Als dit allemaal niet lukt, vraag iemand er dan om. Zie
de <XRef LinkEnd="docs-support">.</para>
</listitem>
</itemizedlist>
</para>
<para>Het gebruik van <Emphasis>man</Emphasis> pages is hierboven besproken
in de <XRef LinkEnd="basics-commandline">. (Het is zeer eenvoudig: druk op de
spatiebalk om naar de volgende pagina te gaan, en tik de
<Emphasis>q</Emphasis> in om te stoppen met lezen).
<Emphasis>info</Emphasis>, het bekijken van bestanden in
<Emphasis>/usr/doc</Emphasis>, en het vragen om hulp van iemand worden
in dit hoofdstuk besproken.
</para>
</sect1>
<!--
<sect1 id="docs-info"><title>Het gebruik van info</title>
<para>Een beknopte samenvatting/tutorial van toetsaanslagen, benoem
TkInfo, verontschuldig voor ridiculous keystrokes.</para>
</sect1>
<sect1 id="docs-textfiles"><title>Bekijken van tekstbestanden met more en less
</title>
<para>Gebruik deze om een aantal docs te bekijken. Benoem zless en wanneer
het te gebruiken.
</para>
</sect1>
-->
<sect1 id="docs-howtos"><title>HOWTO's </title>
<para>In aanvulling op hun boeken, heeft het Linux Documentatie Project een
serie beknopte documenten gemaakt die beschrijven hoe een bepaald aspect
van GNU/Linux kan worden ingesteld. De SCSI-HOWTO beschrijft bijvoorbeeld
wat van de complicaties over het gebruik van SCSI
--- een standaardwijze waarop met devices wordt gecommuniceerd --- met
GNU/Linux. In het algemeen staat in de HOWTO's wat specifiekere informatie
over bepaalde hardware configuraties, en ze zullen beter bijgewerkt zijn dat
dit handboek.</para>
<para>Er zijn Debian packages voor de HOWTO's. doc-linux-text bevat
de diverse HOWTO's in tekstvorm; terwijl het doc-linux-html package
de HOWTO's in (surprise!) browsable HTML-formaat bevat.
Tevens valt op te merken dat Debian packages heeft met vertalingen van
de HOWTO's in diverse talen waar je misschien de voorkeur aangeeft
als Engels je moedertaal niet is. <footnote><para>Debian heeft
packages voor de Duitse, Franse, Spaanse, Italiaanse, Japanse, Koreaanse,
Poolse, Zweedse en Chinese versies van de HOWTO's; gewoonlijk beschikbaar in
het package doc-linux-taalcode, waarbij voor de taalcode
<Emphasis/fr/ wordt gebruikt voor Frans, <Emphasis/es/ voor Spaans,
enz...</para></footnote> Als je dit hebt geïnstalleerd, zouden ze in
<Emphasis>/usr/doc/HOWTO</Emphasis> moeten staan. Mogelijk kun je echter op het
net recentere versies aantreffen, zie
<Ulink url="LDP Project home page">http://sunsite.unc.edu/LDP/</Ulink>.</para>
</sect1>
<sect1 id="docs-support"><title>Van iemand hulp verkrijgen</title>
<para>De juiste plaats voor het vragen om hulp met Debian is de
debian-user mailing list <email>debian-user@lists.debian.org</email>. Als
je IRC (Internet Relay Chat) weet te gebruiken, dan is er een
<Emphasis>#debian</Emphasis> kanaal op <Emphasis>irc.debian.org</Emphasis>.
Je kunt algemene GNU/Linux hulp aantreffen in de
<Emphasis>comp.os.linux.*</Emphasis> Usenet hiërarchie. Je kunt Usenet
vragen en antwoorden terugzoeken met de
<Ulink url="http://www.dejanews.com">DejaNews service</Ulink>. Het is ook
mogelijke betaalde adviseurs in te huren voor de levering van gegarandeerde
ondersteuningsdiensten.
<ULink url ="http://www.debian.org">De Debian web site</ULink> heeft
meer informatie over veel van deze bronnen.</para>
<para>Nogmaals, vraag de auteurs van deze tutorial alsjeblieft
<Emphasis>niet</Emphasis> om hulp. We weten waarschijnlijk toch het antwoord
niet op je specifieke probleem; als je een mail stuurt naar
<Emphasis>debian-user</Emphasis>, zal je sneller reacties krijgen en reacties
die van meer kwaliteit zijn.
</para>
<para>Blijf altijd beleefd en onderneeem zelf een poging door het lezen
van de documentatie. Denk er aan dat Debian een inspanning is van
vrijwilligers en mensen je een gunst bewijzen door hun tijd te geven
je te helpen. Velen van hen brengen voor dezelfde diensten per dag honderden
dollars in rekening.
</para>
</sect1>
<sect1 id="docs-support-posting"><title>Wel of niet stellen van een vraag
</title>
<para>
<itemizedlist>
<ListItem><para>Lees wel eerst de vanzelfsprekende documentatie. Zaken
zoals opdrachtopties en wat een opdracht doet zullen daar te vinden zijn.
</para></listitem>
<ListItem><para>Kijk in de HOWTO-documenten als je vraag gaat over het
instellen van zoiets als PPP of Ethernet.</para></listitem>
<ListItem><para>Probeer je ervan te verzekeren dat het antwoord niet in deze
tutorial staat (alhoewel we ons realiseren dat een index hierbij behulpzaam
zou kunnen zijn---we werken eraan!).</para></listitem>
<ListItem><para>Wees niet bang te vragen, nadat je een poging hebt
ondernomen het op te zoeken.
</para></listitem>
<ListItem><para>Wees niet bang te vragen naar uitleg om begrippen,
adviezen en andere zaken die vaak niet in de documentatie
zijn te vinden.</para></listitem>
<ListItem><para>Sluit informatie in welke relevant lijkt. Bijna altijd
zal je de Debian-versie die je gebruikt, willen vermelden.
Wellicht dat je ook de versie van alle van toepassing zijnde packages
wilt vermelden: de opdracht <Emphasis>dpkg --status
naam van package</Emphasis> geeft je deze informatie. Het is ook handig
wat te zeggen over wat je tot dusverre hebt geprobeerd en wat het
resultaat daarvan was. Neem alsjeblieft de exacte foutmeldingen er in
op, als die er zijn.
</para></listitem>
<ListItem><para>Verontschuldig je niet voor je onwetendheid, of maak geen
excuus voor dat je een newbie bent. Er is geen reden voor dat iedereen een
GNU/Linux expert zou moeten zijn om het te gebruiken, net zo min als dat
iedereen een monteur zou moeten zijn om een auto te gebruiken.
</para></listitem>
<ListItem><para>Post geen mail in HTML. Een aantal versies van
Netscape en de Internet Explorer zullen in HTML posten in plaats van
in gewone tekst. De meeste mensen zullen deze post zelfs niet
lezen, omdat ze in de meeste mail-programma's moeilijk te lezen is.
Er zou ergens een instelling voor moeten komen in de voorkeuren om
HTML te deactiveren.</para></listitem>
<ListItem><para>Wees beleefd. Denk er aan dat Debian een inspanning
is van allemaal vrijwilligers, en iedereen die je helpt doet dit alleen
maar omdat het een aardig persoon is.
</para></listitem>
<ListItem><para>Mail je vraag nogmaals naar de lijst als je na verscheidene
dagen nog geen reactie hebt ontvangen.
Misschien dat er heel veel berichten waren en dat er overheen werd gekeken.
Of misschien dat niemand het antwoord weet ---
als niemand het de tweede keer beantwoord, dan is die kans groot.
Mogelijk wil je bij de tweede keer wat meer informatie invoegen.
</para></listitem>
<ListItem><para>Beantwoord zelf vragen, als je het antwoord weet.
Debian is ervan afhankelijk dat iedereen zijn aandeel levert --- als
je een vraag stelt, en iemand anders stelt later dezelfde vraag, dan weet
je wat te antwoorden. Doe het dan ook!
</para></listitem>
</itemizedlist></para>
</sect1>
<!--
<sect1 id="docs-sysinfo"><title>Informatie van het systeem verkrijgen</title>
<para>Bij de diagnose van problemen of het vragen om hulp, zal je
informatie over je systeem nodig hebben. Hier zijn een aantal manieren
om hier aan te komen.
</para>
FIXME : detail this commands a bit more ;)
<para> /var/log/*, dmesg, uname -a
</sect1>
-->
</chapter>
<chapter id="shell"> <title>Gebruiken van de shell</title>
<!-- FIXME XXX
<sect1 id="shell-jobs"><title>Meer over job control</title>
<para>Fill in job control details not covered earlier, kill -9.
Kill works on the PID.
-->
<sect1 id="shell-variables"><title>Omgevingsvariabelen</title>
<para>Ieder proces heeft een <Emphasis>omgeving</Emphasis> waarmee het
verbonden is. Een omgeving bestaat uit een verzameling
<Emphasis>omgevingsvariabelen</Emphasis>. Een variabele is een veranderlijke
waarde met een vaste naam. Als voorbeeld, zou de naam <Emphasis>EMAIL</Emphasis>
naar de waarde <Emphasis>joe@nowhere.com</Emphasis> kunnen verwijzen.
De waarde kan variëren --- <Emphasis>EMAIL</Emphasis> zou ook kunnen
verwijzen naar <Emphasis>jane@somewhere.com</Emphasis>.</para>
<para>Aangezien je shell net als ieder ander proces een proces is, heeft het
een omgeving. Je kunt de omgeving van je shell bekijken door het intikken
van de opdracht <Emphasis>printenv</Emphasis>. Bij deze wat voorbeelduitvoer:
<screen>
PAGER=less
HOSTNAME=icon
MAILCHECK=60
MOZILLA_HOME=/usr/local/lib/netscape
PS1=$
USER=hp
MACHTYPE=i486-pc-linux-gnu
EDITOR=jed
DISPLAY=:0.0
LOGNAME=hp
EMAIL=hp@pobox.com
SHELL=/bin/bash
HOSTTYPE=i486
OSTYPE=linux-gnu
HISTSIZE=150
HOME=/home/hp
TERM=xterm-debian
TEXEDIT=jed
PATH=/home/hp/local/bin:/usr/sbin:/home/hp/.bin:/home/hp/local/bin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:.
_=/usr/bin/printenv
</screen>
</para>
<para>Op je systeem zal de uitvoer anders zijn, maar wel vergelijkbaar.
</para>
<para>Met omgevingsvariabelen heb je een manier om het systeem te configureren.
De variabele <Emphasis>EDITOR</Emphasis> laat je bijvoorbeeld
je voorkeurseditor voor het posten van nieuws, schrijven van email, enzovoort
selecteren. De variabele <Emphasis>HISTSIZE</Emphasis> vertelt Bash
hoeveel opdrachtregels in de historie bij te houden; je kunt dan met de
pijltjestoets naar boven zoveel opdrachtregels terug.
</para>
<para>Het instellen van omgevingsvariabelen is simpel. Zodra je
hebt geleerd hoe, zal je ze waarschijnlijk automatisch in
willen stellen, als je inlogt; zie
<XRef LinkEnd="custom-shell"> voor instructies.</para>
<para>Probeer als oefening je shell-prompt en je viewer voor
je tekstbestand met omgevingsvariabelen in te stellen:
<glosslist>
<glossentry><glossterm>man less</glossterm>
<glossdef><para>Bekijk het online handboek
voor de opdracht <Emphasis>less</Emphasis>. Om je de tekst per scherm
tegelijkertijd te laten bekijken, roept <Emphasis>man</Emphasis> een
<Emphasis>pager</Emphasis> aan die je iedere keer dat je op de spatiebalk
drukt, een nieuwe pagina met tekst toont. Standaard maakt het gebruik van een
pager genaamd <Emphasis>more</Emphasis>.</para>
<para>Ga je gang en werp een vluchtige blik op de man page van
<Emphasis>less</Emphasis>, een uitgebreide pager. Scroll naar een
nieuwe pagina door de spatiebalk in te drukken; druk op <Emphasis>q</Emphasis>
om te stoppen. <Emphasis>more</Emphasis> zal ook automatisch stoppen als
je het einde van de man page bereikt.</para></glossdef>
</glossentry>
<glossentry><glossterm>export PAGER=less</glossterm>
<glossdef><para>Na het lezen
over de voordelen van <Emphasis>less</Emphasis>, wil je het wellicht
gebruiken om man pages te lezen. Stel hiervoor de omgevingsvariabele
<Emphasis>PAGER</Emphasis> in.</para>
<para>De opdracht om een omgevingsvariabele onder bash in te stellen, heeft
altijd dit formaat: <Emphasis>export NAME=value</Emphasis>.
Mocht je ooit <command>tcsh</command> of een andere afgeleide van de
C-Shell draaien, dan is de equivalente opdracht
<command>setenv NAME value</command>.</para>
<para><Emphasis>export</Emphasis> betekent het verplaatsen van de variabele
van de shell naar de omgeving. Dit betekent dat ook andere programma's dan de
shell ze kunnen benaderen.</para></glossdef>
</glossentry>
<glossentry><glossterm>echo $PAGER</glossterm>
<glossdef><para>Dit is de makkelijkste manier om de waarde van een variabele
te bekijken. <Emphasis>$PAGER</Emphasis> vertelt de
shell de waarde van de variabele <Emphasis>PAGER</Emphasis>
in te voegen <Emphasis>voordat</Emphasis> de opdracht wordt aangeroepen.
<Emphasis>echo</Emphasis> kaatst zijn argument terug: in
dit geval, echoot het de huidige waarde van <Emphasis>PAGER</Emphasis>,
namelijk <Emphasis>less</Emphasis>.</para></glossdef>
</glossentry>
<glossentry><glossterm>man more</glossterm>
<glossdef><para>Lees de handleiding van <Emphasis>more</Emphasis>.
Deze keer zou <Emphasis>man</Emphasis> de pager
<Emphasis>less</Emphasis> moeten hebben aangeroepen.</para>
<para><Emphasis>less</Emphasis> heeft veel mogelijkheden die in
<Emphasis>more</Emphasis> ontbreken.
Je kunt bijvoorbeeld met de <Emphasis>b</Emphasis>-toets
terugscrollen. Je kunt je met de cursorpijlen ook naar beneden en boven
verplaatsen (zelfs zijwaarts). <Emphasis>less</Emphasis> eindigt niet
wanneer het 't einde van de man page bereikt; het wacht totdat je de
<Emphasis>q</Emphasis> intikt.</para></glossdef>
</glossentry>
<glossentry><glossterm>PAGER=more man more</glossterm>
<glossdef><para>Als je tijdelijk een andere instelling wilt, kun je een
nieuwe waarde plaatsen die alleen effect heeft voor de huidige opdrachtregel.
Plaats de <Emphasis>NAME=value</Emphasis> aan het begin van de opdrachtregel
gevolgd door de uit te voeren opdracht.
Laat <Emphasis>export</Emphasis> achterwege.</para>
<para>Je kunt wat <Emphasis>less</Emphasis>-specifieke opdrachten,
zoals <Emphasis>b</Emphasis> uitproberen, om te verifiëren dat ze
met <Emphasis>more</Emphasis> werken en je inderdaad gebruik maakt van
<Emphasis>more</Emphasis>.
<!-- FIXME
Onder mijn Debian 2.1, heeft /bin/more een functionerende 'b'.
We zullen een andere specifieke mogelijkheid van 'less' moeten bedenken.
--></para></glossdef>
</glossentry>
<glossentry><glossterm>echo $PAGER</glossterm>
<glossdef><para>De waarde van
<Emphasis>PAGER</Emphasis> zou nog steeds <Emphasis>less</Emphasis>
moeten zijn; de instelling van hierboven was slechts tijdelijk.
</para></glossdef>
</glossentry>
<glossentry><glossterm>unset PAGER</glossterm>
<glossdef><para>Als je geen pager meer
in wilt stellen, kun je de opdracht <Emphasis>unset</Emphasis> op de
variabele toepassen. <Emphasis>man</Emphasis> zal dan standaard gebruik maken
van <Emphasis>more</Emphasis>, net als dat 't deed voor je de variabele
instelde.
</para></glossdef>
</glossentry>
<glossentry><glossterm>echo $PAGER</glossterm>
<glossdef><para>Aangezien <Emphasis>PAGER</Emphasis> is verwijderd, zal
<Emphasis>echo</Emphasis> niets afdrukken.
</para></glossdef>
</glossentry>
<glossentry><glossterm>PS1=hello:</glossterm>
<glossdef><para>Wijzig gewoon voor de lol je shell-prompt.
<Emphasis>$</Emphasis> wordt <Emphasis>hello:</Emphasis>.</para>
<para><Emphasis>export</Emphasis> is niet nodig, omdat we de werking
van de shell zelf wijzigen. Er is geen reden de variabele naar de
omgeving te exporteren zodat andere programma's het kunnen zien.
Technisch gesproken is <Emphasis>PS1</Emphasis> een
<Emphasis>shell variabele</Emphasis> in plaats van een omgevingsvariabele.
</para>
<para>Als je dat zou willen, zou je de shell-variabele kunnen
<Emphasis>exporteren</Emphasis> waarbij je het naar een omgevingsvariabele
transformeert. Vervolgens zouden andere programma's het dan kunnen zien:
Met name de <Emphasis>kinderen</Emphasis> van het huidige
shell-proces. De volgende sectie legt dit uit.</para></glossdef>
</glossentry>
</glosslist></para>
</sect1>
<sect1 id="shell-variables-parents"><title>Ouder- en kindprocessen
</title>
<para>Alle processen zijn afkomstig van een eerder proces, wat hun
<Emphasis>ouder proces</Emphasis> wordt genoemd.
<footnote><para>Misschien dat je hier een kip en ei probleem ziet.
Er is een origineel proces dat alle anderen start; het is procesnummer 1,
<Emphasis>init</Emphasis>. Je kunt het zien door het intikken van
<Emphasis>ps u 1</Emphasis>.</para>
</footnote>
De opdracht <command>ps</command> is een handig hulpmiddel voor het
verkennen van processen, en het kan worden gebruikt om de verhoudingen
tussen ouder-kind te bestuderen.
<ItemizedList>
<ListItem><para><Emphasis>ps f</Emphasis>
Deze opdracht vraagt een lijst te tonen van
processen die aan jou toebehoren, in een formaat waarmee wordt getoond
hoe processen met elkaar in verband staan.</para></listitem>
</ItemizedList></para>
<para><Emphasis>ps f</Emphasis> zou de volgende uitvoer kunnen tonen:
<screen>
$ ps f
PID TT STAT TIME
7270 p5 S 0:00 bash
15980 p5 R 0:00 \_ ps f
19682 p4 S 0:00 bash
15973 p4 S 0:00 \_ man ps
15976 p4 S 0:00 \_ sh -c /bin/gzip -dc '/var/catman/cat1/ps.1.gz' | { export MAN_PN LESS; MAN_PN='ps(1)'; LESS="$LESS\$-Pm\:\$i
15977 p4 S 0:00 \_ /bin/gzip -dc /var/catman/cat1/ps.1.gz
15978 p4 S 0:00 \_ sh -c /bin/gzip -dc '/var/catman/cat1/ps.1.gz' | { export MAN_PN LESS; MAN_PN='ps(1)'; LESS="$LESS\$-Pm\
15979 p4 S 0:00 \_ less
$
</screen></para>
<para>Hier kun je zien dat ik een aantal processen, waaronder
twee shells, heb draaien. De shells hebben kindprocessen: shellproces
7270 heeft kindproces 15980 (<Emphasis>ps f</Emphasis>) en shell 19682
heeft kindproces 15973 (<Emphasis>man ps</Emphasis>).
<Emphasis>man ps</Emphasis> heeft op zijn beurt een complexe
set subprocessen aangeroepen om een manpage te kunnen tonen.
Maak je er nu niet druk om wat deze subprocessen doen.
</para>
<para>Ouders en kinderen hebben een complexe verhouding.
Meestal is het zo dat als een ouder afsterft, het kind ook af zal sterven.
Zo kun je een hele set processen killen --
--- je kunt bijvoorbeeld door het killen van het ouderproces, 15973 in
het voorbeeld hiervoor, alle kinderen van <Emphasis>man ps</Emphasis> killen.
</para>
<para>Kinderen erven de omgevingsvariabelen, en een
aantal kenmerken zoals de huidige werkdirectory van hun ouders.</para>
<para>Als een shell een opdracht uitvoert, brengt het de opdracht voort als
een kindproces. Dus de opdracht <Emphasis>man</Emphasis> erft de omgeving
van de shell; als je de variabele <Emphasis>PAGER</Emphasis> hebt ingesteld, zal
<Emphasis>man</Emphasis> het kunnen zien.</para>
<para>Als het je niet is gelukt een variabele te
<Emphasis>exporteren</Emphasis> zal alleen de shell zelf het zien, en zal het
niet aan de kinderen, zoals <Emphasis>man</Emphasis> worden doorgegeven.</para>
</sect1>
<sect1 id="shell-path"><title>Waar opdrachten te vinden zijn:
de variabele <Emphasis>PATH</Emphasis></title>
<para>Als je een opdracht in de shell intikt, zal het deze opdracht
op je harddisk op moeten zoeken voordat het dit uit kan voeren.
Als de shell de hele disk door had moeten zoeken, zou het erg langzaam zijn;
Het zoekt in plaats daarvan in een lijst met bestanden die in de
omgevingsvariabele <Emphasis>PATH</Emphasis> staan. Deze lijst met
directory's leggen het <Emphasis>zoekpad</Emphasis> van de shell aan; als
je een opdracht invoert, doorzoekt het iedere directory naar het door
jou verzochte programma dat moet worden uitgevoerd.
</para>
<para>Wellicht dat je de variabele <Emphasis>PATH</Emphasis> moet wijzigen als
je zelf programma's in een niet-standaard lokatie installeert.</para>
<para>De waarde van <Emphasis>PATH</Emphasis> is een door dubbele punten
gescheiden lijst met directory's. De standaardwaarde ervan op Debian-systemen is:
<screen>
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
</screen></para>
<para>Deze waarde is gedefinieerd in het bestand
<Emphasis>/etc/profile</Emphasis> en geldt voor alle gebruikers. Je kunt deze
waarde eenvoudig wijzigen, net als je iedere andere omgevingsvariabele wijzigt.
</para>
<para>Als je de opdracht <Emphasis>ls</Emphasis> typt, zal de shell eerst
in <Emphasis>/usr/local/bin</Emphasis> zoeken; <Emphasis>ls</Emphasis> is
daar niet, dus zal het <Emphasis>/usr/bin</Emphasis> proberen; als dat
mislukt, zal het <Emphasis>/bin</Emphasis> controleren. Daar zal het
<Emphasis>/bin/ls</Emphasis> ontdekken, het zoeken stoppen en het programma
<Emphasis>/bin/ls</Emphasis> uitvoeren. Als
<Emphasis>/usr/bin/X11/ls</Emphasis> bestond (het is niet zo, maar doe even
alsof), zou het worden genegeerd.</para>
<para>Je kunt met de opdracht <Emphasis>type</Emphasis> zien welke
<Emphasis>ls</Emphasis> de shell zal gaan gebruiken.
<Emphasis>type ls</Emphasis> zal als antwoord
<Emphasis>/bin/ls</Emphasis> opleveren --- probeer het zelf.</para>
<para>Probeer te vragen waar <Emphasis>type</Emphasis> zelf voorkomt:
<screen>
$ type type
type is a shell builtin
</screen>
</para>
<para><Emphasis>type</Emphasis> is eigenlijk geen programma; het is een
functie waarin door de shell is voorzien. Je gebruikt het echter net als een
extern programma. <footnote><para>Als je een afgeleide van de C-Shell draait,
is het equivalente ingebouwde opdracht voor <Emphasis>type</Emphasis>
<Emphasis>which</Emphasis>.</para>
</footnote></para>
<para>Er zijn zo een aantal opdrachten; typ <Emphasis>man
builtins</Emphasis> om de beschrijving in de manpage ervan te lezen. In
het algemeen, hoef je niet te weten of een opdracht een ingebouwde opdracht
of een echt programma is; ingebouwde opdrachten zullen echter niet in de
uitvoer van <Emphasis>ps</Emphasis> of <Emphasis>top</Emphasis> verschijnen,
aangezien het geen aparte processen zijn. Ze maken slechts onderdeel uit van
de shell.</para>
</sect1>
<sect1 id="custom-shell-aliases"><title>Aliassen en shell-functies</title>
<para>Als je vaak eenzelfde opdracht gebruikt, wordt je er wellicht moe van het
in te tikken. <Emphasis>bash</Emphasis> laat je kortere
<Emphasis>aliassen</Emphasis> voor je opdrachten schrijven. Je kunt ook
<Emphasis>shell-functies</Emphasis> schrijven, wat aangepaste opdrachten
samengesteld uit verscheidene andere opdrachten zijn.
</para>
<para>Stel dat je altijd de <Emphasis>--almost-all</Emphasis> en
<Emphasis>--color=auto</Emphasis> opties met <Emphasis>ls</Emphasis> gebruikt.
Je raakt al gauw moe van het typen van <Emphasis>ls --almost-all
--color=auto</Emphasis>. Dus maak je een alias:
<screen>
alias myls='ls --almost-all --color=auto'
</screen>
</para>
<para>Nu kun je <Emphasis>myls</Emphasis> typen in plaats van de volledige
opdracht. Om te zien wat <Emphasis>myls</Emphasis> werkelijk is, start je
de opdracht <Emphasis>type myls</Emphasis> op. Je kunt met
<Emphasis>alias</Emphasis> een lijst met de gedefinieerde aliassen per regel
te zien krijgen.</para>
<para>Shell-functies zijn iets flexibeler dan aliassen. Een alias substitueert
gewoon een langere opdracht als je een kortere opdracht intikt. Functies
laten je gebruik maken van een serie opdrachten om een actie uit te
voeren.</para>
<para>Laten we allereerst eens bekijken hoe hier een shell-functie
in plaats van een alias voor kan worden gebruikt:
<screen>
myls() {
ls --almost-all --color=auto $*
}
</screen>
</para>
<para>Dit wordt een <Emphasis>functiedefinitie</Emphasis> genoemd, omdat
het de functie een naam (<Emphasis>myls</Emphasis>) geeft, en vervolgens
de betekenis van de naam definieert (een aantal uit te voeren opdrachten).
Om een functie te definiëren, schrijf je zijn naam, gevolgd door
<Emphasis>()</Emphasis>. Sluit dan de uit te voeren opdrachten in binnen de
accolades (<Emphasis>{}</Emphasis>). Het deel omsloten door de accolades
staat bekend als de <Emphasis>body</Emphasis> van de functie.</para>
<para>Naar de argumenten van de functie kan worden gerefereerd als
<Emphasis>$*</Emphasis>. Dus als je typt:
<screen>
myls /usr /etc
</screen>
zal <Emphasis>$*</Emphasis> bestaan uit de twee argumenten
<Emphasis>/usr /etc</Emphasis>.
Als er geen argumenten zijn, dan zal <Emphasis>$*</Emphasis>
leeg zijn.</para>
<para>Je kunt ook met behulp van nummers naar de argumenten refereren.
Dus <Emphasis>$1</Emphasis> zou in de body van de functie worden vervangen
door <Emphasis>/usr</Emphasis>, en <Emphasis>$2</Emphasis> zou worden
vervangen door <Emphasis>/etc</Emphasis>. Typ deze functie (je kunt het
achter de shell-prompt intypen; druk na iedere regel op de return):
<screen>
print_arguments() {
echo "Eerste argument: $1"
echo "Tweede argument: $2"
echo "Alle argumenten: $*"
}
</screen>
</para>
<para>Je kunt met de opdracht <Emphasis>type</Emphasis> verifiëren
dat je de functiedefinitie correct hebt ingevoerd;
<Emphasis>type print_arguments</Emphasis> zal retourneren:
<screen>
print_arguments is a function
print_arguments ()
{
echo "Eerste argument: $1";
echo "Tweede argument: $2";
echo "Alle argumenten: $*"
}
</screen>
</para>
<para>Probeer de functie uit. Als je <Emphasis>print_arguments een
twee</Emphasis> opgeeft, zal het weergeven:
<screen>
Eerste argument: een
Tweede argument: twee
Alle argumenten: een twee
</screen>
</para>
<para>Er zijn heel wat complexere dingen die je met een shell-functie
kunt doen; je bent slechts beperkt tot je verbeelding.
<!--Zie <XRef LinkEnd="advanced-scripting"> voor meer.--> </para>
</sect1>
<sect1 id="shell-io"><title>Invoer en uitvoer besturen</title>
<para>Stdin, stdout, pipelines, en redirectie</para>
<para>Ieder proces heeft op z'n minst drie verbindingen met de
buitenwereld. De <Emphasis>standaard input</Emphasis> is één
bron van de data van het proces; de
<Emphasis>standaard output</Emphasis> is een plaats waarnaar het proces
gegevens stuurt; en de <Emphasis>standaard error</Emphasis> is een
plaats waarnaar het proces zijn foutmeldingen kan sturen. (Deze worden
vaak afgekort tot <Emphasis>stdin</Emphasis>, <Emphasis>stdout</Emphasis>,
en <Emphasis>stderr</Emphasis>.)</para>
<para>De woorden `bron' en `plaats' zijn doelbewust vaag.
Deze standaard input en -output locaties kunnen door de gebruiker
worden gewijzigd; dit kan het scherm zijn, het toetsenbord, een bestand,
en zelfs een netwerkverbinding.
De gebruiker kan aangeven welke locaties moeten worden gebruikt.
</para>
<para>Als je een programma vanuit de shell draait, komt de standaard
input gewoonlijk vanaf je toetsenbord en standaard output en error gaan
beiden naar je scherm. Je kunt de shell echter vragen deze standaardwaarden
te wijzigen.
</para>
<para>Als voorbeeld zendt de opdracht <Emphasis>echo</Emphasis> zijn uitvoer
naar standaard output, normaal gesproken is dit het scherm. Maar je kunt
het in plaats daarvan met het <Emphasis>output redirectie teken</Emphasis>,
'<Emphasis>></Emphasis>' naar een bestand sturen.
Om bijvoorbeeld het woord "Hello" in het bestand
<Emphasis>mijn-bestand</Emphasis> te plaatsen:
<screen>
echo Hello > mijn-bestand
</screen>
</para>
<para>Gebruik <Emphasis>cat</Emphasis> of je tekstbestandpager
(<Emphasis/more/ of <Emphasis/less/) om de inhoud van
<Emphasis>mijn-bestand</Emphasis> te bekijken.</para>
<para>Je kunt de standaard input van een opdracht wijzigen met het
<Emphasis>input redirectie teken</Emphasis>, '<Emphasis><</Emphasis>'.
<Emphasis>more < mijn-bestand</Emphasis> bijvoorbeeld, zal de inhoud van
<Emphasis>mijn-bestand</Emphasis> tonen. In de praktijk is dit niet nuttig;
voor het gemak accepteert de opdracht <Emphasis>more</Emphasis> een
bestandsnaam als argument.
Dus je kunt heel eenvoudig aangeven <Emphasis>more mijn-bestand</Emphasis> en
het effect zal hetzelfde zijn.</para>
<para>Onder de motorkap betekent <Emphasis>more < mijn-bestand</Emphasis>
dat de shell <Emphasis>mijn-bestand</Emphasis> opent, en het vervolgens
de inhoud doorgeeft aan de standaard input van
<Emphasis>more</Emphasis>. <Emphasis>more mijn-bestand</Emphasis>,
zonder het redirectie-teken, betekent dat de opdracht
<Emphasis>more</Emphasis> een argument ontvangt,
<Emphasis>mijn-bestand</Emphasis>, zelf het bestand opent en het vervolgens
het bestand weergeeft.
</para>
<para>Er is echter een reden voor de dubbele functionaliteit.
Je kunt bijvoorbeeld de standaarduitvoer van de ene opdracht verbinden
met de standaardinvoer van de andere opdracht.
Dit wordt een <Emphasis>pipeline</Emphasis> genoemd, en het maakt gebruik van
het <Emphasis>pipe symbool</Emphasis>, '<Emphasis>|</Emphasis>'.</para>
<para>Misschien dat je de GNU General License in spiegelbeeld wilt zien..
Hiervoor gebruik je de opdracht <Emphasis>tac</Emphasis>
(het is <Emphasis>cat</Emphasis>, maar dan omgekeerd). Probeer het uit:
<screen>
tac /usr/doc/copyright/GPL
</screen>
</para>
<para>Helaas gaat het te snel voorbij om het te kunnen lezen. Dus krijg je
slechts een paar paragrafen te zien. De oplossing is een pipeline:
<screen>
tac /usr/doc/copyright/GPL | more
</screen>
</para>
<para>Hierbij wordt de standaard output van <Emphasis>tac</Emphasis> genomen,
wat de GPL in spiegelbeeld is, en wordt het naar de standaard input van
<Emphasis>more</Emphasis> gezonden.</para>
<para>Je kunt zoveel opdrachten als je wilt aanelkaar koppelen.
Stel dat je een onverklaarbare wens hebt iedere
<Emphasis>G</Emphasis> te vervangen door een
<Emphasis>Q</Emphasis>; hiervoor gebruik je als volgt de opdracht
<Emphasis>tr G Q</Emphasis>:
<screen>
tac /usr/doc/copyright/GPL | tr G Q | more
</screen>
</para>
<para>Je zou hetzelfde effect kunnen verkrijgen als je gebruik maakt van
tijdelijke bestanden en redirectie.
Als voorbeeld:
<screen>
tac /usr/doc/copyright/GPL > tmpfile
tr G Q < tmpfile > tmpfile2
more < tmpfile2
rm tmpfile tmpfile2
</screen>
</para>
<para>Een pipeline is overduidelijk comfortabeler.</para>
</sect1>
<!--sect1 id="shell-modifiers"><title>Specifying how and when to run
commands <para>"modifiers" like batch, at, nohup, nice</title>-->
<sect1 id="shell-wildcards"><title>Bestandsnaam uitbreiding ("Wildcards")</title>
<para>Vaak wil je dat een opdracht op een groep bestanden werkt.
"Wildcards" worden gebruikt om een <Emphasis>bestandsnaam-uitbreidingspatroon
</Emphasis> aan te maken: een serie tekens en wildcards wat tot een lijst
met bestandsnamen wordt uitgewerkt.
Het patroon <Emphasis>/etc/*</Emphasis> wordt bijvoorbeeld uitgebreid tot
een lijst met alle bestanden in <Emphasis>/etc</Emphasis>
<footnote><para>In werkelijkheid worden bestanden beginnend met een
<Emphasis>.</Emphasis> niet in de uitwerking van
<Emphasis>*</Emphasis> opgenomen.</para></footnote><Emphasis>*</Emphasis>
is een wildcard die voor iedere serie tekens kan staan, dus het patroon
<Emphasis>/etc/*</Emphasis> zal worden uitgewerkt tot een lijst met alle
bestandsnamen die met <Emphasis>/etc/</Emphasis> beginnen.</para>
<para>Deze lijst met bestanden is vooral handig als een set argumenten
voor een opdracht. Als voorbeeld, de <Emphasis>/etc</Emphasis> directory
bevat een serie subdirectory's genaamd <Emphasis>rc0.d</Emphasis>,
<Emphasis>rc1.d</Emphasis>, enz. Om hiervan de inhoud te bekijken, zou je
normaal gesproken typen:
<screen>
ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d /etc/rcS.d
</screen>
</para>
<para>Dit is langdradig. In plaats daarvan kun je de
<Emphasis>?</Emphasis> wildcard gebruiken:
<screen>
ls /etc/rc?.d
</screen>
</para>
<para><Emphasis>/etc/rc?.d</Emphasis> wordt uitgewerkt tot een lijst
met bestandsnamen die beginnen met <Emphasis>rc</Emphasis>, gevolgd door elk
enkel teken, gevolgd door <Emphasis>.d</Emphasis>.</para>
<para>Beschikbare wildcards zijn:
<glosslist>
<glossentry><glossterm>*</glossterm>
<glossdef><para>Komt overeen met iedere groep bestaande uit 0 of meer tekens.
</para></glossdef>
</glossentry>
<glossentry><glossterm>?</glossterm>
<glossdef><para>Komt overeen met exact één teken.
</para></glossdef>
</glossentry>
<glossentry><glossterm>[...]</glossterm>
<glossdef><para>Als je een aantal tekens in blokhaken omsluit, is het
resultaat een wildcard welke overeenkomt met die tekens.
<Emphasis>[abc]</Emphasis> komt bijvoorbeeld overeen met zowel a, als b,
als c. Als je na de eerste blokhaak een <Emphasis>^</Emphasis> toevoegt,
wordt de betekenis omgedraaid; dus <Emphasis>[^abc]</Emphasis>
komt overeen met elk teken dat geen a, b, of c is. Je kunt een bereik
opnemen, zoals <Emphasis>[a-j]</Emphasis>, welke overeenkomt met alles tussen
een a en een j. De overeenkomst is hoofdlettergevoelig, dus je moet
<Emphasis>[a-zA-Z]</Emphasis> opgeven om alle tekens toe te staan.</para></glossdef>
</glossentry>
</glosslist></para>
<para>Uitbreidingspatronen zijn simpel, zodra je wat concrete voorbeelden
hebt gezien:
<glosslist>
<glossentry><glossterm>*.txt</glossterm>
<glossdef><para>Hiermee krijg je een lijst met bestandsnamen die eindigen
op <Emphasis>.txt</Emphasis>, aangezien de
<Emphasis>*</Emphasis> met werkelijk alles overeenkomt.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>*.[hc]</glossterm>
<glossdef><para>Dit geeft je een lijst met bestandsnamen die eindigen
op <Emphasis>.h</Emphasis> of <Emphasis>.c</Emphasis>.
</para></glossdef></glossentry>
<glossentry>
<glossterm>a??</glossterm>
<glossdef><para>Dit geeft je alle bestandsnamen bestaande uit drie
letters die met een <Emphasis>a</Emphasis> beginnen.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>[^a]??</glossterm>
<glossdef><para>Dit geeft je alle bestandsnamen bestaande uit drie letters
die <Emphasis>niet</Emphasis> beginnen met een <Emphasis>a</Emphasis>.
</para></glossdef>
</glossentry>
<glossentry>
<glossterm>a*</glossterm>
<glossdef><para>Dit geeft je iedere bestandsnaam die begint met een
<Emphasis>a</Emphasis>, ongeacht uit hoeveel tekens de bestandsnaam bestaat.
</para></glossdef>
</glossentry>
</glosslist></para>
<!-- FIXME XXX
<sect1 id="shell-quoting"><title>Quoting</title>
<para> When to quote and why
-->
</sect1>
<sect1><title>Interactief/niet-interactief <!-- FIXME move this --></title>
<Para>Bash heeft twee verschillende modi: <Emphasis>interactief</Emphasis> en
<Emphasis>niet-interactief</Emphasis>. Interactief betekent dat je er in
kunt typen, en het dingen voor je kunt laten doen. Niet-interactieve shells
interpreteren shell-scripts, vergelijkbaar met DOS batch-bestanden.
Je geeft een lijst uit te voeren opdrachten en het voert ze uit, maar dan
zonder je tussenkomst. Je ziet alle ingetypte opdrachten niet. Natuurlijk zal
alle uitvoer ergens worden geregistreerd (de standaarduitvoer, of stdout,
normaal gesproken het scherm of een logbestand). We zullen later wat meer
ingaan op de niet-interactieve shell.
</para>
</sect1>
<sect1 id="interactive-shells"><title>Interactieve shells</title>
<Para>Het zal wat langer duren eer men interactieve shells machtig is, juist
omdat ze zo krachtig zijn -- je zal waarschijnlijk nooit alles leren!
Er is gewoon zoveel dat een shell kan doen, en natuurlijk is het altijd aan
verandering onderhevig. We zullen het hier over <Emphasis>bash</Emphasis>
hebben en over wat basisopdrachten welke je leven met een shell er eenvoudiger
op zullen maken. Onder bash kan men verscheidene verschillende dingen
aan de gang hebben, en dit kan verwarring opleveren.
</para>
<Para>Een shell is een Regel Georiënteerde- of opdrachregel omgeving.
De shell wacht altijd op je met een prompt wanneer het wacht op wanneer
je iets doet. De standaard debian-prompt is een $.
Achter de $-prompt kun je opdrachten intikkken om linux te vertellen dat
het iets moet doen, het kan de naam van een programma zijn, of het kan
een "interne" opdracht zijn waarin de shell voor je gemak voorziet.
</para>
<!-- FIXME
<sect1 id="non-interactive-shells"><title>Non-interactive shells</title>
-->
</sect1>
</chapter>
<chapter id="files"><title>Meer over bestanden</title>
<para>In de <XRef LinkEnd="basics-files"> behandelden we het verplaatsen/
hernoemen van bestanden met <Emphasis>mv</Emphasis>, het kopiëren met
<Emphasis>cp</Emphasis>, verwijderen met <Emphasis>rm</Emphasis>, het
verwijderen van directory's met <Emphasis>rmdir</Emphasis>,
en het aanmaken van directory's met <Emphasis>mkdir</Emphasis>. In dit hoofdstuk
zullen wat meer aspecten over bestanden worden behandeld.
</para>
<sect1 id="files-permissions"><title>Permissies</title>
<para>GNU en Unix systemen zijn zo ingesteld dat ze het toestaan dat
meerdere mensen van dezelfde computer gebruik maken, waarbij bepaalde
bestanden privé behouden blijven of bepaalde mensen worden behoed
voor het aanpassen van bepaalde bestanden. Je kunt dit voor jezelf
verifiëren:
</para>
<para>Log in als jezelf, d.w.z. <Emphasis>NIET</Emphasis> als root.
<GlossList>
<glossentry><glossterm>whoami</glossterm>
<glossdef><para>Verifieert dat je geen root bent.</para></glossdef>
</glossentry>
<glossentry><glossterm>rm /etc/resolv.conf</glossterm>
<glossdef><para>Je zou de melding "Permission denied" moeten krijgen.
<Emphasis>/etc/resolv.conf</Emphasis> is een
essentieel systeemconfiguratiebestand --- je hebt geen toestemming het
te wijzigen of te verwijderen, tenzij je root bent.
Hiermee wordt voorkomen dat je het systeem per ongeluk verprutst,
en als het een publiek toegankelijke computer is, zoals één op
kantoor of school, voorkomt het dat gebruikers het systeem expres verprutsen.
</para></glossdef></glossentry>
</GlossList></para>
<para>Typ nu <Emphasis>ls -l /etc/resolv.conf</Emphasis>.
Hiermee krijg je uitvoer die er ongeveer zo uitziet:
<screen>
-rw-r--r-- 1 root root 119 Feb 23 1997 /etc/resolv.conf
</screen>
</para>
<para>De <Emphasis>-l</Emphasis> optie aan <Emphasis>ls</Emphasis> verzoekt
om al die aanvullende informatie.
De info aan de rechterkant is makkelijk - de grootte van het bestand is
<Emphasis/119/ bytes, de datum van de laatste keer dat het bestand werd
gewijzigd is <Emphasis/Feb 23 1997/, de naam van het bestand is
<Emphasis>/etc/resolv.conf</Emphasis>. Aan de linkerkant van het scherm
wordt het wat gecompliceerder.
</para>
<para>Als eerste een korte technische uitleg: de
<Emphasis>-rw-r--r--</Emphasis> is de <Emphasis>mode</Emphasis> van het bestand,
de <Emphasis>1</Emphasis> is het aantal hardlinks naar dit bestand (of het
aantal bestanden in een directory), en de twee keer <Emphasis>root</Emphasis>
zijn de gebruiker en de groep welke eigenaar zijn van het bestand.</para>
<para>Zo dat was cryptisch. Laten we dit eens langzaam doornemen (behalve
het deel over de hardlinks --- zie daarvoor de <Xref LinkEnd="advanced-files-hardlinks">).</para>
</sect1>
<sect1 id="files-permissions-groups"><title>Bestandseigenaarschap</title>
<para>Ieder bestand heeft twee eigenaren --- een gebruiker en een groep. Het
voorbeeld hiervoor is wat verwarrend, aangezien er zowel een groep met de naam
<Emphasis>root</Emphasis> als ook een gebruiker <Emphasis>root</Emphasis> is.
Groepen zijn gewoon verzamelingen gebruikers aan wie collectief permissie is
verleend om een gedeelte van het systeem te benaderen.
Een goed voorbeeld is een groep <Emphasis>spellen</Emphasis>.
Je zou bijvoorbeeld je systeem zo kunnen hebben ingesteld dat alleen
de mensen in een groep <Emphasis>games</Emphasis> permissie hebben om
spellen te kunnen spelen.
</para>
<para>Een wat praktischer voorbeeld: stel dat je een computer voor een
school aan het instellen bent. Wellicht wil je dat bepaalde bestanden
alleen voor leraren toegankelijk zijn, niet voor studenten, dus
plaats je alle leraren in een enkele groep. Dan kun je het systeem
vertellen dat bepaalde bestanden aan de leden van de groep
<Emphasis>leraren</Emphasis> toebehoren, en dat niemand anders die bestanden
kan benaderen.</para>
<para>Hiermee kun je groepen op je systeem verkennen:
<GlossList>
<glossentry>
<glossterm>groups</glossterm>
<glossdef><para>Als je dit achter de shell-prompt
intikt, zal worden aangegeven van welke groepen je lid bent.
Het is zeer waarschijnlijk dat je slechts lid bent van één
groep, welke identiek is aan je gebruikersnaam.</para></glossdef>
</glossentry>
<glossentry><glossterm>more /etc/group</glossterm>
<glossdef><para>Dit bestand geeft
een opsomming van de groepen die op je systeem voorkomen. Merk de
groep <Emphasis>root</Emphasis> op (de enige deelnemer van deze groep is de
root-gebruiker), en de groep die correspondeert met je gebruikersnaam.
Er zijn ook groepen als <Emphasis>dialout</Emphasis>
(gebruikers die permissie hebben om via de modem
te bellen), en <Emphasis>floppy</Emphasis> (gebruikers die het
diskettestation mogen gebruiken). Je systeem is waarschijnlijk niet
zodanig geconfigureerd dat het gebruik maakt van deze groepen --- vermoedelijk
kan alleen root op dit moment gebruik maken van het diskettestation en de modem.
Probeer <Emphasis>man group</Emphasis> te lezen voor details over dit bestand.
</para></glossdef></glossentry>
<glossentry><glossterm>ls -l /home</glossterm>
<glossdef><para>Observeer hoe iedere directory van de gebruiker
in eigendom is van die gebruiker en de persoonlijke groep van die gebruiker.
(Als je Debian net hebt geïnstalleerd,
kan het zijn dat je de enige gebruiker bent).</para></glossdef>
</glossentry>
</GlossList></para>
</sect1>
<sect1 id="files-permissions-mode"><title>Mode</title>
<para>Naast dat ieder bestand en iedere directory als eigenaar een gebruiker
en groep heeft, hebben beiden ook een mode, waarmee wordt vastgesteld wie
toestemming heeft om het bestand te lezen, beschrijven en uit te voeren.
Er zijn nog wat andere dingen die door de mode worden vastgesteld, maar
dat zijn geavanceerde onderwerpen en die zullen we voor nu overslaan.
</para>
<para>De mode ziet er in de uitvoer van <Emphasis>ls</Emphasis> als volgt uit:
<Emphasis>-rw-r--r--</Emphasis>. Er zijn hier tien "elementen", en de mode
bestaat eigenlijk uit twaalf bits (denk aan bits als schakelingen die
aan of uit kunnen zijn). Maar nu zullen we slechts negen van deze bits in
aanmerking nemen: degenen die de permissies
<Emphasis>read</Emphasis>, <Emphasis>write</Emphasis>, en
<Emphasis>execute</Emphasis> regelen voor de
<Emphasis>gebruiker</Emphasis> die eigenaar is van het bestand, de
<Emphasis>groep</Emphasis> die eigenaar is van het bestand, en
<Emphasis>anderen</Emphasis>
(iedereen op het systeem, soms genoemd <Emphasis>world</Emphasis>).</para>
<para>Merk op dat drie soorten permissies (read, write,
execute) maal drie sets mensen die permissies kunnen hebben
(gebruiker, groep, anderen) een totaal geeft van negen elementen.</para>
<para>In de mode regel, geeft het eerste "element" het type van het bestand.
De <Emphasis>-</Emphasis> betekent in dit geval dat het een regulier
bestand is. Als het een <Emphasis>d</Emphasis> was, zouden we naar een directory
aan het kijken zijn. Er zijn nog andere mogelijkheden maar die zijn te
gecompliceerd om hier nu op in te gaan
(zie de <XRef LinkEnd="advanced-files-permissions">).</para>
<para>De resterende negen "elementen" worden gebruikt om de 12 bits
waaruit de mode van het bestand bestaat, weer te geven.
De basis 9 bits (read, write, en execute voor gebruiker, groep, en anderen)
worden weergegeven als drie blokken met <Emphasis>rwx</Emphasis>. </para>
<para>Dus als alle permissies aan staan en dit een regulier bestand is, zal
de mode er als volgt uitzien: <Emphasis>-rwxrwxrwx</Emphasis>. Als het
een directory zou zijn met alle permissies uit voor anderen en volledige
permissies voor gebruiker en groep, zou het er uitzien als
<Emphasis>drwxrwx---</Emphasis>.</para>
<para>(De resterende drie bits worden weergegeven door het wijzigen van de
<Emphasis>x</Emphasis> in <Emphasis>s</Emphasis>, <Emphasis>t</Emphasis>,
<Emphasis>S</Emphasis>, of <Emphasis>T</Emphasis>, maar dit is een
gecompliceerd onderwerp dat we bewaren voor de
<XRef LinkEnd="advanced-files-permissions">.)</para>
<para>Voor reguliere bestanden, hebben de "read", "write" en "execute"
permissies de volgende betekenissen:
<itemizedlist>
<ListItem><para>Read permissie, aangegeven door <Emphasis>r</Emphasis>,
geeft permissie de inhoud van een bestand te bestuderen. Voor directory's
geeft het permissie de inhoud van een directory weer te geven.</para>
</listitem>
<ListItem><para>Write permissie, aangegeven door <Emphasis>w</Emphasis>, geeft
permissie wijzigingen aan het bestand aan te brengen. Voor directory's,
geeft het permissie om bestanden in de directory aan te maken en ze te
verwijderen.
</para></listitem>
<ListItem><para>Execute permission, aangegeven door <Emphasis>x</Emphasis>,
geeft permissie het bestand als een opdracht uit te voeren. Het heeft
overduidelijk alleen zin de execute permissie in te stellen als het bestand
in feite een opdracht is.
</para>
<para>Aangezien directory's nooit kunnen worden uitgevoerd, heeft de
execute bit een andere betekenis. Voor directory's betekent de execute
permissie dat bestanden in de directory kunnen worden benaderd.
Merk op dat hier sprake is van een wisselwerking met write-permissies:
execute permissies moeten worden ingesteld om bestanden in een directory
<Emphasis>ook maar enigszins</Emphasis> te kunnen benaderen, dus zonder execute
permissie op een directory, is write-permissie zinloos.
Execute permissie voor directory's wordt vaak "zoek" permissie genoemd,
aangezien het eigenlijk niets te maken heeft met het uitvoeren.
"Bestandstoegangs" permissie zou waarschijnlijk nog een betere naam
zijn.
</para></listitem>
</itemizedlist></para>
<para>Directory modes zijn een beetje verwarrend, dus hier zijn wat
voorbeelden van de effecten bij diverse combinaties:
<GlossList>
<glossentry><glossterm>r--</glossterm>
<glossdef><para>De gebruiker, groep, of anderen met deze permissies mogen
de inhoud van de directory weergeven, maar verder niets. De bestanden in
de directory kunnen niet worden gelezen, veranderd, verwijderd of op
enige wijze worden gemanipuleerd. De enige toegestane actie is het
lezen van de directory zelf, dat wil zeggen, zien welke bestanden het
bevat.
</para></glossdef></glossentry>
<glossentry>
<glossterm>rw-</glossterm>
<glossdef><para>Write permissie heeft geen effect bij
de afwezigheid van execute permissie, dus deze mode gedraagt zich net als
de mode van hiervoor.</para></glossdef></glossentry>
<glossentry><glossterm>r-x</glossterm>
<glossdef><para>Deze mode staat toe dat de bestanden in een directory
kunnen worden weergegegeven, en geeft permissie die bestanden te benaderen.
Bestanden kunnen echter niet worden aangemaakt of verwijderd.
<Emphasis>Benaderen</Emphasis> betekent dat je bestanden kunt bekijken,
wijzigen of uitvoeren zoals de permissies voor de bestanden zijn ingesteld.
</para></glossdef></glossentry>
<glossentry><glossterm>--x</glossterm>
<glossdef><para>Bestanden in deze directory kunnen worden benaderd,
maar de inhoud van de directory kan niet worden weergegeven, dus je zal
van te voren moeten weten naar welk bestand je zoekt (tenzij je goed kunt
gokken). Bestanden kunnen niet worden aangemaakt of verwijderd.</para>
</glossdef></glossentry>
<glossentry><glossterm>rwx</glossterm>
<glossdef><para>Je kunt met de bestanden in deze directory alles
doen wat je wilt, zolang als het is toegestaan door de permissies van de
bestanden zelf.</para></glossdef></glossentry>
</glosslist></para>
<para>Write permissie voor directory's geeft aan of je bestanden in een directory
kunt verwijderen --- een read-only bestand kan worden verwijderd, als je
permissie hebt de directory te beschrijven waarin het bestand zich bevindt.
Je kunt een bestand uit een read-only directory niet
verwijderen, zelfs niet als je wijzigingen aan het bestand mag aanbrengen.
Bestandspermissies hebben niets te maken met het verwijderen van
bestanden.
</para>
<para>Dit betekent ook dat als je de eigenaar bent van een directory,
je er tevens bestanden uit kunt verwijderen, zelfs als die bestanden aan
root toebehoren.
</para>
<para>Execute permissie op directory's stelt vast of je toegang hebt
tot bestanden --- en of de bestandspermissies erbij worden betrokken.
<Emphasis>Als</Emphasis> je execute permissies hebt voor een directory
worden de bestandspermissies voor die directory relevant. Anders doen
bestandspermissies er niet toe; je kunt de bestanden toch niet benaderen.
</para>
<para>Als je execute permissie hebt voor een directory, bepalen de
bestandspermissies of je de inhoud van het bestand kunt lezen, het bestand
kunt wijzigen, en/of het bestand als een opdracht uit kunt voeren.
</para>
<para>Tot besluit, permissie om permissies van een bestand of directory
te wijzigen heeft geen invloed op de permissies van dat bestand of die
directory. Je kunt juist altijd de permissies van de bestanden of
directory's waarvan je de eigenaar bent, wijzigen, zolang het je is
toegestaan het bestand te benaderen,
maar niet van de bestanden waarvan iemand anders de eigenaar is.
Dus als je een bestand ook maar enigszins kunt benaderen
(dat wil zeggen dat je execute permissie hebt voor de
directory waarin het bestand zich bevindt) dan kun je de permissies ervan
veranderen.
</para>
<para>Dit betekent dat je permissies van jezelf niet permanent kunt
verwijderen omdat je ze altijd terug kunt geven. Stel dat je de write
permissie voor de gebruiker verwijderd van een bestand, waarvan je de eigenaar
bent, probeer het bestand dan eens te wijzigen. Het zal niet worden toegestaan, maar je kunt jezelf de write-permissie altijd teruggeven en het bestand
<Emphasis>dan</Emphasis> wijzigen. De enige manier om de mogelijkheid
kwijt te raken om de permissies terug te zetten is als je de toegang tot
het bestand geheel kwijtraakt.
</para>
</sect1>
<sect1 id="files-permissions-tutorial"><title>Permissies in praktijk</title>
<para>In deze sectie demonstreren we via een korte schermsessie
hoe permissies worden gebruikt.
</para>
<para>Om permissies te wijzigen, zullen we gebruik maken van de opdracht
<Emphasis>chmod</Emphasis>.
<GlossList>
<glossentry><glossterm>cd; touch mijn-bestand</glossterm>
<glossdef><para>Er zijn hier een paar nieuwe trucs.
Als eerste kun je <Emphasis>;</Emphasis> gebruiken om twee opdrachten
op één regel te plaatsen. Je kunt het bovenstaande typen als:
<screen>
$ cd
$ touch mijn-bestand
</screen>
of als:
<screen>
$ cd; touch mijn-bestand
</screen>
en uiteindelijk gebeurt er hetzelfde.</para>
<para>Ter herinnering <Emphasis>cd</Emphasis> op zichzelf brengt je
terug naar je home-directory. <Emphasis>touch</Emphasis> wordt normaal
gesproken gebruikt om de wijzigingsdatum aan te passen van het bestand
naar de huidige tijd, maar het heeft nog een andere interessante
mogelijkheid: als het bestand niet bestaat maakt <Emphasis>touch</Emphasis>
het bestand aan. Dus gaan we het gebruiken om een bestand aan te maken
waar we mee kunnen oefenen. Gebruik <Emphasis>ls -l</Emphasis> als
bevestiging dat het bestand werd aangemaakt, en om naar de permissies
te kijken:
<screen>
$ ls -l
-rw-r--r-- 1 havoc havoc 0 Nov 18 22:04 mijn-bestand
</screen>
</para>
<para>Uiteraard zullen de tijd en gebruiker/groepsnaam anders zijn als
je het uitprobeert. De grootte van het bestand is 0,
aangezien <Emphasis>touch</Emphasis> een leeg bestand aanmaakt.
<Emphasis>-rw-r--r--</Emphasis> is de standaardwaarde van de permissie mode
onder Debian.
<!-- FIXME (je kunt dit wijzigen - zie FIXME: voeg een verwijzing toe naar
umask)
--></para></glossdef></glossentry>
<glossentry><glossterm>chmod u+x mijn-bestand</glossterm>
<glossdef><para>Deze opdracht betekent het toevoegen van de
(<Emphasis>+</Emphasis>) execute (<Emphasis>x</Emphasis>) permissies
voor de gebruiker (<Emphasis>u</Emphasis>) die de eigenaar is van het bestand.
Gebruik <Emphasis>ls -l</Emphasis> om het effect te bekijken.</para></glossdef>
</glossentry>
<glossentry><glossterm>chmod go-r mijn-bestand</glossterm>
<glossdef><para>Hier hebben we met
(<Emphasis>-</Emphasis>) de read permissie (<Emphasis>r</Emphasis>)
voor de groep (<Emphasis>g</Emphasis>) en voor alle anderen die eigenaar
zijn van het bestand (others/alle anderen, <Emphasis>o</Emphasis>)
weggehaald. Gebruik wederom <Emphasis>ls -l</Emphasis> om de effecten te
verifiëren.
</para></glossdef>
</glossentry>
<glossentry><glossterm>chmod ugo=rx mijn-bestand</glossterm>
<glossdef><para>Hier hebben we de permissies met
(<Emphasis>=</Emphasis>) voor de gebruiker, groep en anderen op
read en execute ingesteld. Hiermee worden de permissies
<Emphasis>exact</Emphasis> zo ingesteld als wat je hebt opgegeven en
worden alle andere permissies verwijderd.
Dus allen zouden nu moeten zijn ingesteld op <Emphasis>rx</Emphasis>
en van allen zou de permissie <Emphasis>w</Emphasis> nu moeten zijn
verwijderd. Nu kan niemand meer naar het bestand schrijven.
</para></glossdef></glossentry>
<glossentry><glossterm>chmod a-x mijn-bestand</glossterm>
<glossdef><para><Emphasis>a</Emphasis> is een
sneltoets voor <Emphasis>ugo</Emphasis>, of "allen". Dus alle
<Emphasis>x</Emphasis> permissies zouden nu uit moeten zijn gezet.
</para></glossdef></glossentry>
<glossentry><glossterm>rm mijn-bestand</glossterm>
<glossdef><para>We verwijderen het bestand, maar zonder
write-permissies. <Emphasis>rm</Emphasis> zal vragen of je het zeker weet:
<screen>
rm: remove `mijn-bestand', overriding mode 0444?
</screen>
Je zou moeten reageren door het typen van <Emphasis>y</Emphasis> en het
indrukken van de enter-toets.
Dit is een kenmerk van <Emphasis>rm</Emphasis> en geen feit
van permissies - permissies om een bestand te verwijderen komt van
de directory-permissies, en je hebt write-permissie in de directory.
<Emphasis>rm</Emphasis> probeert echter behulpzaam te zijn, uitmakend dat
als je het bestand niet wilt wijzigen, (en write-permissie dus verwijderde),
je het ook niet wilt verwijderen, dus vraagt het 't je.
</para></glossdef>
</glossentry>
</glosslist></para>
<para>Wat was dat gedoe met <Emphasis>0444</Emphasis> in de vraag van
<Emphasis>rm</Emphasis>? De permissie-mode is een twaalf-cijferig
binair nummer, zoals <Emphasis>000100100100</Emphasis>.
<Emphasis>0444</Emphasis> is dit binaire nummer voorgesteld als een
octaal (grondtal 8) nummer, wat de conventionele manier is om
een mode te schrijven.
Dus je kunt <Emphasis>chmod 444 mijn-bestand</Emphasis> typen
in plaats van <Emphasis>chmod ugo=r mijn-bestand</Emphasis>. Dit wordt
volledig uitgelegd in de
<XRef LinkEnd="advanced-files-permissions">.</para>
</sect1>
<sect1 id="files-tour"><title>Welke bestanden bevinden zich op mijn
systeem? Waar kan ik mijn eigen bestanden plaatsen?</title>
<para>Laten we nu als leidraad de bestanden en directory's nemen die
je hebt aangemaakt toen je Debian installeerde, nu je door de
directory-structuur kunt navigeren.
<Emphasis>cd</Emphasis> naar iedere directory en
typ <Emphasis>ls</Emphasis> om te inhoud te bekijken, als je nieuwsgierig
bent. Probeer <Emphasis>ls | more</Emphasis> als de listing niet op het
scherm past, <Emphasis>|</Emphasis> is het "pipe" teken, wat gewoonlijk op
dezelfde toets is te vinden als de backslash.
<glosslist>
<glossentry>
<glossterm>/</glossterm>
<glossdef><para>Zoals reeds vermeld, is dit de root-directory,
waarin zich alle andere directory's bevinden.</para>
</glossdef>
</glossentry>
<glossentry>
<glossterm>/root</glossterm>
<glossdef><para>Maar verwar <Emphasis>/</Emphasis> niet met
<Emphasis>/root</Emphasis>! <Emphasis>/root</Emphasis> is de
home-directory van de root-gebruiker, of superuser. Het is een
directory genaamd <Emphasis>/root</Emphasis>, maar het is niet
<Emphasis>de</Emphasis> root-directory <Emphasis>/</Emphasis>.
</para></glossdef>
</glossentry>
<glossentry>
<glossterm>/home</glossterm>
<glossdef><para>Dit is waar alle normale gebruikers --- dat wil zeggen, alle
gebruikers behalve root --- hun home-directory's hebben.
Home-directory's worden genoemd naar de gebruiker van wie ze zijn,
zoals bijvoorbeeld <Emphasis>/home/jane</Emphasis>. Als je gebruik maakt van
een groot systeem zoals op een school of in een bedrijf, kan het zijn dat
de systeembeheerder aanvullende directory's met home-directory's heeft
aangemaakt: zoals bijvoorbeeld <Emphasis>/home1</Emphasis> en
<Emphasis>/home2</Emphasis>. Op een aantal andere systemen, zal je een
aanvullend niveau met subdirectory's zien:
<Emphasis>/home/students/username</Emphasis>,
<Emphasis>/home/staff/username</Emphasis>, enz...</para>
<para>Je home-directory is waar je al je persoonlijke werk, email en
andere documenten, en persoonlijke configuratie-voorkeuren plaatst.
Het is je thuis op het systeem.</para></glossdef>
</glossentry>
<glossentry><glossterm>/bin</glossterm>
<glossdef><para>Deze directory bevat "binaire bestanden", uitvoerbare
bestanden die essentieel zijn voor de werking van het systeem.
Voorbeelden zijn de shell (<Emphasis>bash</Emphasis>), en bestandsopdrachten
zoals <Emphasis>cp</Emphasis>.</para>
</glossdef></glossentry>
<glossentry><glossterm>/sbin</glossterm>
<glossdef><para>Deze directory bevat "systeem binaries", utility's die de
root-gebruiker of systeembeheerder wellicht wil gebruiken, maar die je
vermoedelijk niet bij de dagelijkse activiteiten gebruikt.
</para></glossdef>
</glossentry>
<glossentry><glossterm>/usr</glossterm>
<glossdef><para><Emphasis>/usr</Emphasis> bevat de meeste bestanden waar
je in zal zijn geïnteresseerd.
Het heeft veel subdirectory's: <Emphasis>/usr/bin</Emphasis> en
<Emphasis>/usr/sbin</Emphasis> lijken veel op <Emphasis>/bin</Emphasis>
en <Emphasis>/sbin</Emphasis>, behalve dat de directory's in
<Emphasis>/usr</Emphasis> niet worden aangemerkt als "essentieel voor de
werking van het systeem".
</para>
<para>Ondanks dat <Emphasis>/usr</Emphasis> niet essentieel is voor de
werking van de computer, bevat deze directory de applicaties die je gebruikt
om het echte werk te doen. In <Emphasis>/usr</Emphasis> zijn ook de
<Emphasis>/usr/man</Emphasis>, <Emphasis>/usr/info</Emphasis>, en
<Emphasis>/usr/doc</Emphasis> directory's te vinden --- hierin staan
respectievelijk de manual pages, info pages, en andere documentatie. En vergeet
<Emphasis>/usr/games</Emphasis> niet!</para></glossdef>
</glossentry>
<glossentry><glossterm>/usr/local</glossterm>
<glossdef><para>Het Debian-systeem installeert niets in deze directory.
Je zou het moeten gebruiken als je software installeert die je zelf gaat
compileren of enige software die geen deel uitmaakt van een Debian package.
Je kunt software ook in je home-directory installeren, als je de enige
zal zijn die het gaat gebruiken.
</para></glossdef>
</glossentry>
<glossentry><glossterm>/etc</glossterm>
<glossdef><para><Emphasis>/etc</Emphasis> bevat alle
systeemomvattende configuratiebestanden. Wanneer je iets wilt wijzigen dat
gevolgen heeft voor alle gebruikers op je computer --- zoals hoe je
een verbinding tot stand brengt met het internet, of wat voor soort
videokaart je hebt -- zal je waarschijnlijk als root in moeten loggen en
een bestand in <Emphasis>/etc</Emphasis> moeten wijzigen.</para></glossdef>
</glossentry>
<glossentry><glossterm>/tmp</glossterm>
<glossdef><para>Hier zijn tijdelijke bestanden te vinden, de meeste daarvan
zijn door het systeem aangemaakt. Deze directory wordt gewoonlijk op reguliere
basis verwijderd, of iedere keer dat je het systeem reboot. Je kunt hier
bestanden in aanmaken als je dat wilt, maar wees je er bewust van dat ze
mogelijk automatisch worden verwijderd.
</para></glossdef>
</glossentry>
<glossentry><glossterm>/var</glossterm>
<glossdef><para><Emphasis>/var</Emphasis> bevat
"variabele" bestanden, die het systeem automatisch wijzigt.
Inkomende mail wordt bijvoorbeeld hier opgeslagen. Het systeem houdt een log
bij van zijn eigen acties. Er bevinden zich hier bovendien een aantal andere
automatisch gegenereerde bestanden.
Wellicht dat je vooral bent geïnteresseerd in de inhoud van
<Emphasis>/var/log</Emphasis>, waarin je foutmeldingen aan zal treffen en
waardoor je kunt proberen uit te zoeken wat er met je systeem aan de hand
is als er iets verkeerd gaat.
</para></glossdef>
</glossentry>
</glosslist></para>
<para>
Klaarblijkelijk bevinden er zich veel meer directory's op het systeem,
te veel om ze allemaal te beschrijven.
<!-- FIXME include reference to the FHS? --></para>
<para>
Voor wijzigende dingen, zal je jezelf gewoonlijk beperken tot je
home-directory en <Emphasis>/etc</Emphasis>. Op een Debian-systeem,
is er zeldzaam een aanleiding om iets anders te wijzigen,
omdat al het andere automatisch voor je is geïnstalleerd.
</para>
<para><Emphasis>/etc</Emphasis> wordt gebruik om het
<Emphasis>systeem</Emphasis> als geheel te configureren.
Je zal je eigen home-directory, een subdirectory van
<Emphasis>/home</Emphasis> gebruiken, voor het configureren van je eigen
voorkeuren en het opslaan van je persoonlijke gegevens.
De gedachte hierachter is dat je jezelf op dagelijkse basis
beperkt tot <Emphasis>/home/je-naam</Emphasis>, zodat er
geen kans is dat je iets kunt breken. Bij gelegenheid kun je
als root inloggen om iets in een systeemomvattende directory te wijzigen,
maar alleen dan wanneer absoluut noodzakelijk.
Je zal natuurlijk geen root-toegang hebben als je Debian op een
school of organisatie wordt gebruikt en iemand anders de systeembeheerder is, en
je zal dan slechts je home-directory kunnen wijzigen. Dit legt een
beperking op wat je met het systeem kunt doen.
</para>
</sect1>
<sect1 id="file-manager"><title>Een bestandsbeheerder gebruiken</title>
<para>In plaats van het handmatig verplaatsen van bestanden, kun je een
<Emphasis>bestandsbeheerder</Emphasis> gebruiken. Als je veel bestanden
verplaatst, kan een bestandsbeheerder je werk efficiënter maken.
Er zijn bestandsbeheerders gebaseerd op tekst, zoals de GNU Midnight Commander
(typ <command/mc/), en een aantal bestandsbeheerders voor het X Window Systeem
(bijvoorbeeld <command/gmc/ voor de X Window versie van de GNU Midnight
Commander).</para>
<para>Het beschrijven hiervan valt buiten het kader van dit handboek;
maar misschien dat je ze wilt uitproberen als de opdrachtregel
niet voldoet aan wat je nodig hebt.</para>
</sect1>
</chapter>
<chapter id="editor"><title>Aanmaken en wijzigen van tekstbestanden</title>
<sect1 id="editor-textfile"><title>Wat is een tekstbestand?</title>
<para>Een <Emphasis>tekstbestand</Emphasis> is gewoon een normaal bestand
dat voor mensen leesbare tekst bevat.
Er is op geen enkele manier verder iets speciaals aan.
Het andere soort bestand, een binair bestand, is bedoeld om door de computer
te worden geïnterpreteerd.
</para>
<para>Je kunt elk van beiden soorten bestanden met de bestandspager
<command>less</command> bekijken, tenminste als je het installeerde
(installeer het als je het niet hebt, het is heel handig).
Typ <Emphasis>less /etc/profile</Emphasis>
om een voorbeeldtekstbestand te bekijken --- merk op dat je de tekens kunt
lezen, zelfs als de betekenis ervan onduidelijk is. Typ <Emphasis>less
/bin/ls</Emphasis> om een binair bestand te bekijken; zoals je kunt zien, is
het programma <Emphasis>ls</Emphasis> niet bedoeld om door mensen gelezen te
worden.</para>
<para>Het verschil tussen de twee soorten bestanden is zuiver een kwestie
van wat er in staat, in tegenstelling tot op een aantal andere systemen
(zoals DOS of MacOS) die de bestanden in feite anders behandelen.
</para>
<para>Tekstbestanden kunnen shell-scripts, documentatie, copyright vermeldingen,
of enige andere door mensen te lezen tekst bevatten.
</para>
<para>Als bijkomstige omstandigheid illustreert dit het verschil
tussen <Emphasis>broncode</Emphasis> en <Emphasis>binaire uitvoerbare
bestanden</Emphasis>. <Emphasis>/bin/ls</Emphasis> is een binair uitvoerbaar
bestand dat je bij Debian kunt downloaden, maar je kunt ook een tekstbestand
downloaden waarin wordt aangegeven hoe <Emphasis>/bin/ls</Emphasis> aan te
maken. Dit tekstbestand is de broncode.
<Emphasis>/bin/ls</Emphasis> vergeleken met <Emphasis>/etc/profile</Emphasis>
illustreert hoe belangrijk broncode is als iemand wil begrijpen hoe een
stuk software aan te passen.
Vrije software voorziet jou en je adviseurs in al deze belangrijke broncode.
</para>
</sect1>
<sect1 id="editor-editor"><title>Teksteditors</title>
<para>Een <Emphasis>teksteditor</Emphasis> is een programma welke wordt
gebruikt voor het aanmaken en wijzigen van de inhoud van tekstbestanden.
De meeste besturingssystemen hebben een teksteditor;
DOS heeft <command>edit</command>, Windows heeft
<command>Notepad</command>, MacOS heeft <command>SimpleText</command>.</para>
<para>Debian voorziet in een verbijsterende variëteit aan
teksteditors. <command>vi</command> en <command/emacs/ zijn de twee
klassiekers, vermoedelijk het meest indrukwekkend en de meest gebruikten.
Zowel <command>vi</command> als <command/emacs/ zijn heel complex en
vereisen wat oefening, maar ze kunnen het wijzigen van tekst uiterst
efficiënt maken. <command/emacs/ draait zowel in een terminal als onder
het X Window Systeem;
<command>vi</command> draait normaal gesproken in een terminal, maar
de variant <command>vim</command> heeft een <Emphasis>-g</Emphasis> optie
waarmee het mogelijk is er onder X mee te werken.
</para>
<para>Eenvoudige editors zijn onder andere <command>nedit</command>,
<command>ae</command>, <command>jed</command>, en
<command>xcoral</command>. <command>nedit</command> en
<command>xcoral</command> voorzien in makkelijk-te-gebruiken
grafische interfaces voor het X Window Systeem. Er zijn tevens verscheidene
<command>vi</command> varianten, en een Emacs variant genaamd
<command/XEmacs/.</para>
<para>Deze tutorial zal het gebruik van enig speciale editor niet in detail
behandelen, alhoewel we in het kort <command>vi</command> introduceren,
aangezien het klein en snel is en het bijna altijd beschikbaar is, en mogelijk
moet je het ongeacht je voorkeurseditor ooit gebruiken. Emacs voorziet zelf
in een uitstekende interactieve tutorial; laad Emacs met de opdracht
<Emphasis>emacs</Emphasis> en typ <Emphasis>F1 t</Emphasis> om het te lezen.
Emacs is een uitstekende keuze voor nieuwe gebruikers die geïnteresseerd
zijn in een editor voor algemeen gebruik of programmeren.
</para>
</sect1>
<sect1 id="editor-vi"><title>Aanmaken en wijzigen van een tekstbestand
met <command>vi</command></title>
<para><command>vi</command> (uitgesproken als "vee eye") is echt de enige
editor die met bijna ieder op Unix lijkend besturingssysteem wordt
geleverd, en Debian vormt daarop geen uitzondering. <command>vi</command> werd
oorspronkelijk geschreven op de Universiteit van California in
Berkeley. De naam van de editor is een afkorting van "visual", waarbij wordt
gerefereerd naar het feit dat
<command>vi</command> voorziet in een visueel display van het tekstbestand;
dit werd ooit als een unieke mogelijkheid aangemerkt, wat je een idee geeft
van hoe oud het programma is.
</para>
<para>Het is wat moeilijk aan <command>vi</command> gewend te raken, maar
het heeft krachtige mogelijkheiden. In het algemeen raden we een nieuwe
gebruiker aan Emacs voor de dagelijkse taken zoals voor programmeren te
gebruiken. <command>vi</command> is echter soms wat comfortabeler of het
is de enige beschikbare editor; het is ook een veel kleiner bestand om te
downloaden.
</para>
<para>De volgende bespreking over <command>vi</command> zou ook voor
<command>vi</command> varianten zoals <command>elvis</command>
en <command>vim</command> moeten gelden.</para>
</sect1>
<sect1 id="editor-vi-creating"><title>Aanmaken van een bestand</title>
<GlossList>
<glossentry><glossterm>vi testfile</glossterm>
<glossdef><para>Roep vi aan vanuit je home-directory door het intikken van
<Emphasis>vi</Emphasis> gevolgd door de naam van het bestand dat je aan wilt
maken. Je zal een scherm te zien krijgen met aan de linkerkant een kolom
tildes (<Emphasis>~</Emphasis>). <command>vi</command> bevindt zich nu in de
opdrachtmodus. Alles dat je zal typen wordt als een opdracht opgevat, niet
als inhoud om aan het bestand toe te voegen. Je moet een opdracht typen om tekst
in te kunnen voegen.</para></glossdef></glossentry>
<glossentry><glossterm>i</glossterm>
<glossdef><para>De twee basisopdrachten om in te voeren zijn
<Emphasis>i</Emphasis>, wat betekent "voeg de tekst rechts van de cursor in
die ik van plan ben in te gaan tikken", en <Emphasis>a</Emphasis>,
wat betekent "voeg tekst toe aan de rechterkant van de cursor die
ik van plan ben in te gaan tikken". Aangezien je je aan het begin van het
bestand bevindt, zouden beiden werken.
We kozen naar willekeur <Emphasis>i</Emphasis>.</para>
<para>Typ wat tekst in; hier is een diepzinnige stelling
van de filosoof Charles Sanders Peirce, als je zelf niets kunt bedenken:
<screen>
And what, then, is belief? It is the demi-cadence
which closes a musical phrase in the symphony of our
intellectual life. We have seen that it has just
three properties: First, it is something that we are
aware of; second, it appeases the irritation of doubt;
and, third, it involves the establishment in our
nature of a rule of action, or, say for short, a
habit.
</screen>
</para>
<para>Druk na iedere regel op <Emphasis>RET</Emphasis>, aangezien
<Emphasis>vi</Emphasis> niet automatisch naar de volgende regel zal gaan;
druk op de <Emphasis>ESC</Emphasis> als je gereed bent met typen om de invoeg
of toevoeg modus te verlaten en naar de opdrachtmodus terug te keren.
</para></glossdef></glossentry>
<glossentry><glossterm>:wq</glossterm>
<glossdef><para>Als je bij het typen van deze opdracht alles goed hebt gedaan,
zou het onderaan je scherm moeten verschijnen, onder alle
<Emphasis>~</Emphasis> tekens. De <Emphasis>:</Emphasis> vertelt
<command>vi</command> dat je een serie opdrachten gaat geven; de
<Emphasis>w</Emphasis> betekent naar het bestand te schrijven wat je zojuist
hebt ingetikt --- in de meeste nieuwe programma's wordt dit "opslaan" genoemd
--- en de <Emphasis>q</Emphasis> betekent <command>vi</command> te verlaten.
Dus je zou terug achter de prompt moeten zijn. </para></glossdef>
</glossentry>
<glossentry><glossterm>cat testfile</glossterm>
<glossdef><para><Emphasis>cat</Emphasis> zal het bestand dat je typte op het
scherm weergeven.</para></glossdef>
</glossentry>
</GlossList>
<para>Verwijder <Emphasis>testfile</Emphasis> niet, we zullen het in de
volgende tutorial sectie nog gebruiken.
</para>
<para>Als je <command>vi</command> gebruikt, denk er dan altijd aan dat
het indrukken van <Emphasis>ESC</Emphasis> je naar de opdrachtmodus terug
zal brengen. Dus als je in de war raakt, druk dan een paar maal op
<Emphasis>ESC</Emphasis> en begin opnieuw.
</para>
<para><command>vi</command> heeft de ergerlijke neiging een beep te
genereren wanneer je iets doet dat je niet zou moeten doen, zoals het
typen van een onbekende opdracht; laat dit je niet opschrikken.</para>
</sect1>
<sect1 id="editor-vi-editing"><title>Wijzigen van een bestaand bestand</title>
<para>Om <Emphasis>vi</Emphasis> te gebruiken, hoef je alleen de
<XRef LinkEnd="editor-vi-editing-movement">
en de <XRef LinkEnd="editor-vi-editing-deletion"> te lezen. In latere secties
worden gevorderde mogelijkheden uitgelegd, maar die zijn niet strict
noodzakelijk, alhoewel vaak efficiënter en minder langdradig.</para>
<sect2 id="editor-vi-editing-movement"><title>Door een bestand manoeuvreren
</title>
<para>Om door een bestand te manoeuvreren, staat <command>vi</command>
je toe de pijltjestoetsen te gebruiken. De traditionele toetsen werken
echter ook; dit zijn de <Emphasis>h</Emphasis> voor links,
de <Emphasis>j</Emphasis> voor naar beneden, de <Emphasis>k</Emphasis>
voor naar boven en de <Emphasis>l</Emphasis> voor rechts.
Deze toetsen zijn zo gekozen omdat ze zich aangrenzend op de basisrij
van het toetsenbord bevinden, en dus makkelijk te typen zijn. Veel mensen
gebruiken ze in plaats van de pijltjestoetsen, omdat ze met je vingers
sneller te bereiken zijn.
</para>
<glossList>
<glossentry><glossterm>vi testfile</glossterm>
<glossdef><para>Open het bestand dat je eerder met <command>vi</command>
aanmaakte.
Manoeuvreer door het bestand met de pijltjestoetsen of de
<Emphasis>hjkl</Emphasis> toetsen. Als je de cursor te ver in een bepaalde
richting probeert te verplaatsen, zal
<command>vi</command> een beep genereren en dit weigeren; als je er tekst
in wilt plaatsen, moet je een invoegopdracht, zoals
<Emphasis>i</Emphasis> of <Emphasis>a</Emphasis> gebruiken.</para></glossdef>
</glossentry>
<glossentry><glossterm>:q</glossterm>
<glossdef><para>Beëindig <command>vi</command></para></glossdef>
</glossentry>
</GlossList>
</sect2>
<sect2 id="editor-vi-editing-deletion"><title>Verwijderen van tekst</title>
<GlossList>
<glossentry>
<glossterm>vi testfile</glossterm>
<glossdef><para>Open je bestand practice weer.</para></glossdef>
</glossentry>
<glossentry><glossterm>dd</glossterm>
<glossdef><para>De <Emphasis>dd</Emphasis> opdracht verwijdert een regel;
de bovenste regel van het bestand zou er nu niet meer moeten zijn.</para>
</glossdef></glossentry>
<glossentry>
<glossterm>x</glossterm>
<glossdef><para><Emphasis>x</Emphasis> verwijdert een enkel teken; de eerste
letter van de tweede regel zal worden verwijderd. Delete en backspace werken
om historische redenen niet in <command>vi</command>. <footnote><para>Het
toetsenbord van een aantal zeer oude terminals (van de 60'r jaren) had
geen BackSpace- of Delete-toets.</para></footnote> Een aantal
<command>vi</command> varianten, zoals <command>vim</command>
zullen je backspace en delete laten gebruiken.</para></glossdef>
</glossentry>
<glossentry><glossterm>10x</glossterm>
<glossdef><para>Als je een nummer voor een opdracht intikt,
zal het de opdracht zoveel malen herhalen. Dus dit zal 10 tekens verwijderen.
</para></glossdef></glossentry>
<glossentry><glossterm>2dd</glossterm>
<glossdef><para>Je kunt ook met de <Emphasis>dd</Emphasis> opdracht een
nummer gebruiken, waardoor twee regels worden verwijderd.</para></glossdef>
</glossentry>
<glossentry><glossterm>:q</glossterm>
<glossdef><para>Dit zal een fout veroorzaken, omdat je het bestand
hebt gewijzigd en het nog niet hebt opgeslagen. Er zijn twee manieren om
dit te voorkomen; je kunt gebruik maken van <Emphasis>:wq</Emphasis>, dus
het bestand wegschrijven op het moment dat je eruit gaat,
of je kunt afsluiten zonder opslaan:</para></glossdef></glossentry>
<glossentry><glossterm>:q!</glossterm>
<glossdef><para>Met een uitroepteken vertel je
<command>vi</command> dat je het werkelijk meent,
en het zou moeten stoppen, zelfs als het bestand niet werd opgeslagen.
Als je <Emphasis>:q!</Emphasis> gebruikt, zullen je verwijderingen niet
worden opgeslagen in <Emphasis>testfile</Emphasis>; als je
<Emphasis>:wq</Emphasis> gebruikt, zullen ze wel worden opgeslagen.
</para></glossdef>
</glossentry>
<glossentry><glossterm>cat testfile</glossterm>
<glossdef><para>Bekijk terug achter de shell-prompt het bestand
<Emphasis>testfile</Emphasis>. Het zou nu kleiner moeten zijn
als je <Emphasis>:wq</Emphasis> gebruikte, of ongewijzigd als je
<Emphasis>:q!</Emphasis> gebruikte.</para></glossdef>
</glossentry>
</GlossList>
<para><Emphasis>:q!</Emphasis> is een uitstekende opdracht om te onthouden,
omdat je het kunt gebruiken te ontsnappen als je hopeloos verward raakt,
en denkt het bestand dat je aan het wijzigen was, te hebben geruïneerd.
Druk gewoon een paar keer op <Emphasis>ESC</Emphasis> om er zeker
van te zijn dat je je in de opdrachtmodus bevindt en typ dan
<Emphasis>:q!</Emphasis>. Dit garandeert je dat je uit
<command>vi</command> gaat zonder dat er schade is aangericht.
</para>
<para>Je weet nu alles wat je nodig hebt voor de basisbewerkingen;
invoegen, verwijderen, opslaan en afsluiten. In de volgende secties worden
handige opdrachten beschreven om dingen wat sneller te doen;
je kunt ze overslaan als je dat wilt.
</para>
</sect2>
<sect2 id="editor-vi-editing-moremoving"><title>Verfijnde verplaatsing</title>
<para>Er zijn veel verplaatsingsopdrachten, hier is een korte samenvatting:
<glosslist>
<glossentry><glossterm>w</glossterm>
<glossdef><para>Verplaats de cursor naar het begin van het volgende woord.
</para></glossdef>
</glossentry>
<glossentry><glossterm>e</glossterm>
<glossdef><para>Verplaats de cursor naar het einde van het volgende woord.
</para></glossdef>
</glossentry>
<glossentry><glossterm>E</glossterm>
<glossdef><para>Verplaats de cursor naar het einde van het volgende woord.
voor een spatie</para></glossdef>
</glossentry>
<glossentry><glossterm>b</glossterm>
<glossdef><para>Verplaats de cursor naar het begin van het vorige woord.</para>
</glossdef></glossentry>
<glossentry><glossterm>0 (nul)</glossterm>
<glossdef><para>Verplaats de cursor naar het begin van de regel.</para>
</glossdef></glossentry>
<glossentry><glossterm>^</glossterm>
<glossdef><para>Verplaats de cursor naar het eerste woorde van de huidige regel.
</para></glossdef></glossentry>
<glossentry><glossterm>$</glossterm>
<glossdef><para>Verplaats de cursor naar het einde van de regel.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>RET</glossterm>
<glossdef><para>Verplaats de cursor naar het begin van de volgende regel.</para>
</glossdef></glossentry>
<glossentry><glossterm>-</glossterm>
<glossdef><para>Verplaats de cursor naar het begin van de vorige regel.</para>
</glossdef></glossentry>
<glossentry><glossterm>G</glossterm>
<glossdef><para>Verplaats de cursor naar het einde van het bestand.</para>
</glossdef></glossentry>
<glossentry><glossterm>1G</glossterm>
<glossdef><para>Verplaats de cursor naar het begin van het bestand.</para>
</glossdef></glossentry>
<glossentry><glossterm>nG</glossterm>
<glossdef><para>Verplaats de cursor naar regelnummer n.</para></glossdef>
</glossentry>
<glossentry><glossterm>C-G</glossterm>
<glossdef><para>Toon het huidige regelnummer.</para></glossdef>
</glossentry>
<glossentry><glossterm>H</glossterm>
<glossdef><para>Verplaats de cursor naar de bovenste regel op het scherm.
</para></glossdef></glossentry>
<glossentry><glossterm>M</glossterm>
<glossdef><para>Verplaats de cursor naar het midden van het scherm.</para>
</glossdef></glossentry>
<glossentry><glossterm>L</glossterm>
<glossdef><para>Verplaats de cursor naar de laatste regel op het scherm.
</para></glossdef></glossentry>
<glossentry><glossterm>n|</glossterm>
<glossdef><para>Verplaats de cursor naar kolom n.</para></glossdef>
</glossentry>
</glosslist></para>
<para>Het scherm zal automatisch scrollen wanneer de cursor de bovenkant
of de onderkant van het scherm bereikt. Er zijn alternatieve opdrachten
waarmee het scrollen van de tekst kan worden bestuurd.
<glosslist>
<glossentry><glossterm>C-f</glossterm>
<glossdef><para>Scroll een scherm voorwaarts.</para></glossdef>
</glossentry>
<glossentry><glossterm>C-b</glossterm>
<glossdef><para>Scroll een scherm terugwaarts.</para></glossdef>
</glossentry>
<glossentry><glossterm>C-d</glossterm>
<glossdef><para>Scroll een half scherm omlaag.</para></glossdef>
</glossentry>
<glossentry><glossterm>C-u</glossterm>
<glossdef><para>Scroll een half scherm omhoog.</para></glossdef>
</glossentry>
</glosslist></para>
</sect2>
<sect2 id="editor-vi-editing-numbers"><title>Opdrachten herhalen</title>
<para>Zoals hiervoor vermeld kun je een opdracht vaak laten voorafgaan door
een nummer om die opdracht meerdere malen te herhalen. Als voorbeeld, de
<Emphasis>l</Emphasis>-toets verplaatst de cursor naar links;
<Emphasis>10l</Emphasis> verplaatst de cursor 10 posities naar links.</para>
<para>Als je een aantal spaties voor wat tekst in wilt voegen, zou je een
nummer kunnen gebruiken met de insert-opdracht.
Voer het nummer n in, vervolgens de <Emphasis>i</Emphasis>
gevolgd door een <Emphasis>SPATIE</Emphasis> en de
<Emphasis>ESC</Emphasis>-toets. Als het goed is krijg je nu n spaties.
</para>
<para>De opdrachten die iets met regels doen, gebruiken een nummer om
naar regelnummers te refereren.
De <Emphasis>G</Emphasis> is een goed voorbeeld; als je
het laat voorafgaan door een nummer, zal het naar die regel gaan.
</para>
</sect2>
<sect2 id="editor-vi-editing-advanced"><title>Geavanceerde referentie
<!-- <para>FIXME move to appendix? (V: IMO, yes) --></title>
<para>In deze sectie wordt een uitgebreidere lijst met te gebruiken opdrachten
gegeven. Het dient slechts ter referentie; probeer de opdrachten uit om te zien
wat ze doen, als je dat wilt.</para>
<para>Invoegopdrachten
<glosslist>
<glossentry><glossterm>a</glossterm>
<glossdef><para>Voeg toe rechts van de cursor</para></glossdef>
</glossentry>
<glossentry><glossterm>A</glossterm>
<glossdef><para>Voeg toe aan het einde van de regel.</para></glossdef>
</glossentry>
<glossentry><glossterm>i</glossterm>
<glossdef><para>Voeg tekst links van de cursor in.</para></glossdef>
</glossentry>
<glossentry><glossterm>I</glossterm>
<glossdef><para>Voeg tekst in links van het
eerste niet-blanco teken op de huidige regel.</para></glossdef>
</glossentry>
<glossentry><glossterm>o</glossterm>
<glossdef><para>Open een nieuwe regel onder de huidige regel en voeg tekst
in.</para></glossdef></glossentry>
<glossentry><glossterm>O</glossterm>
<glossdef><para>Open een nieuwe regel boven de huidige regel en voeg tekst
in.</para></glossdef></glossentry>
</glosslist></para>
<para>Verwijderopdrachten:
<glosslist>
<glossentry>
<glossterm>x</glossterm>
<glossdef><para>Verwijder het teken onder de cursor.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>dw</glossterm>
<glossdef><para>Verwijder vanaf de huidige positie tot aan het einde
van het woord.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>dd</glossterm>
<glossdef><para>Verwijder de huidige regel.</para></glossdef>
</glossentry>
<glossentry><glossterm>D</glossterm>
<glossdef><para>Verwijder vanaf de huidige positie tot aan het einde
van de regel.</para></glossdef></glossentry>
</glosslist></para>
<para>Gecombineerde opdrachten kunnen krachtiger zijn. In het bijzonder
de <Emphasis>d</Emphasis> gevolgd door een verplaatsingsopdracht
verwijdert vanaf de cursor tot aan de plaats die je vroeg een verplaatsing
uit te voeren. Wat voorbeelden:
<glosslist>
<glossentry>
<glossterm>dnw</glossterm>
<glossdef><para>Verwijdert n woorden (<Emphasis>ndw</Emphasis> werkt ook).
</para></glossdef>
</glossentry>
<glossentry><glossterm>dG</glossterm>
<glossdef><para>Verwijder vanaf de huidige positie tot aan het einde van
het bestand.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>d1G</glossterm>
<glossdef><para>Verwijder vanaf de huidige positie tot aan het begin
van het bestand.</para></glossdef>
</glossentry>
<glossentry><glossterm>d$</glossterm>
<glossdef><para>Verwijder vanaf de huidige positie tot aan het einde
van de regel (zelfde als <Emphasis>D</Emphasis>).</para></glossdef>
</glossentry>
<glossentry>
<glossterm>dn$</glossterm>
<glossdef><para>Verwijder vanaf de huidige regel tot
aan het einde van de n-de regel.</para></glossdef>
</glossentry>
</glosslist></para>
<para>Undo opdrachten:
<glosslist>
<glossentry><glossterm>u</glossterm>
<glossdef><para>Maakt de laatste opdracht ongedaan.</para></glossdef>
</glossentry>
<glossentry><glossterm>U</glossterm>
<glossdef><para>Maak alle wijzigingen van de huidige regel ongedaan.
</para></glossdef>
</glossentry>
<glossentry><glossterm>:e!</glossterm>
<glossdef><para>"Wijzig nogmaals". Zoals het afsluiten met
<Emphasis>:q!</Emphasis> en het opnieuw opstarten --- brengt je terug
naar de laatste keer dat je de opdracht
<Emphasis>:w</Emphasis> gaf om op te slaan.</para></glossdef>
</glossentry>
</glosslist></para>
<para>Je kunt een undo ongedaan maken, dus <Emphasis>uu</Emphasis> resulteert
in een ongedaan gemaakte, ofwel geen wijziging.</para>
<para>Vervangopdrachten:
<glosslist>
<glossentry><glossterm>rc</glossterm>
<glossdef><para>Vervang het teken onder de cursor door c.</para></glossdef>
</glossentry>
<glossentry><glossterm>R</glossterm>
<glossdef><para>Overschrijft tekst.</para></glossdef>
</glossentry>
<glossentry><glossterm>cw</glossterm>
<glossdef><para>Wijzigt het huidige woord.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>c$</glossterm>
<glossdef><para>Wijzigt tekst vanaf de huidige positie tot aan het einde
van de regel.</para></glossdef></glossentry>
<glossentry>
<glossterm>cnw</glossterm>
<glossdef><para>Wijzigt de volgende n woorden.(zelfde als ncw).</para>
</glossdef></glossentry>
<glossentry><glossterm>cn$</glossterm>
<glossdef><para>Wijzigt tot het einde van de n-de regel.</para></glossdef>
</glossentry>
<glossentry><glossterm>C</glossterm>
<glossdef><para>Wijzigt tot aan het einde van de regel (zelfde als c$).
</para></glossdef></glossentry>
<glossentry><glossterm>cc</glossterm>
<glossdef><para>Wijzigt de huidige regel.</para></glossdef>
</glossentry>
<glossentry><glossterm>s</glossterm>
<glossdef><para>Vervangt het huidige teken door de tekst die je typt.
</para></glossdef>
</glossentry>
<glossentry><glossterm>ns</glossterm>
<glossdef><para>Vervangt de volgende n tekens door de tekst die je typt.</para>
</glossdef></glossentry>
</glosslist></para>
<para>De opdrachten in de lijst hiervoor die je toestaan meer dan een
enkel teken tekst in te voeren, moeten worden afgesloten met de
<Emphasis>ESC</Emphasis>-toets, waarbij je naar de opdrachtmodus terugkeert.
</para>
<para>Knippen en plakken bestaat uit het eerst <Emphasis>yanken</Emphasis>
(knippen of kopiëren) van wat tekst waarbij het in een buffer
(of op een "klembord") wordt geplaatst; het te verplaatsen naar
de gewenste nieuwe lokatie; en de tekst vervolgens te plakken.
</para>
<para>Om tekst te knippen gebruik je de opdracht <Emphasis>y</Emphasis>
of een variant daarop:
<glosslist>
<glossentry><glossterm>yy</glossterm>
<glossdef><para>Kopieer de huidige regel.</para></glossdef>
</glossentry>
<glossentry><glossterm>nyy</glossterm>
<glossdef><para>Kopieer de volgende n regels.</para></glossdef>
</glossentry>
<glossentry><glossterm>yw</glossterm>
<glossdef><para>Kopieer een woord.</para></glossdef>
</glossentry>
<glossentry><glossterm>ynw</glossterm>
<glossdef><para>Kopieer n woorden.</para></glossdef>
</glossentry>
<glossentry><glossterm>y$</glossterm>
<glossdef><para>Kopieer de tekst tussen de cursor en het einde van de regel.
</para></glossdef>
</glossentry>
</glosslist></para>
<para>Plakopdrachten:
<glosslist>
<glossentry>
<glossterm>p</glossterm>
<glossdef><para>Plak aan de rechterkant van de cursor.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>P</glossterm>
<glossdef><para>Plak aan de linkerkant van de cursor.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>nP</glossterm>
<glossdef><para>Plak n kopieën links van de cursor.</para></glossdef>
</glossentry>
</glosslist></para>
<para>Bij het gebruik van <command>vi</command> binnen een xterm of het
gebruik van een variant op <command>vi</command> die X ondersteunt, kun je
voor het kopiëren van tekst ook de muis gebruiken. Zie
<XRef LinkEnd="X"> voor hoe je
onder X kunt kopiëren en plakken; zorg ervoor dat je je in de invoeg-modus
bevindt als je "plakt" anders zal de geplakte tekst als een opdracht worden
geïnterpreteerd.
</para>
<para>Als je iets verwijdert, wordt de verwijderde tekst naar een
buffer (klembord) gekopieerd; je kunt dan vervolgens de "plak"-opdrachten
gebruiken. Hiermee kun je dus knippen-en-plakken, terwijl de
<Emphasis>y</Emphasis>-opdrachten resulteren in kopiëren-en-plakken.
</para>
<para><command>vi</command> heeft opdrachten om naar tekst te zoeken.
Je kunt ze ook als verplaatsingsopdrachten gebruiken, als je naar een
bepaald woord of teken wilt gaan.</para>
<para>De eenvoudigste zoekopdrachten zoeken naar tekens.
<glosslist>
<glossentry><glossterm>fc</glossterm>
<glossdef><para>Zoek naar het volgende teken c rechts of onder de huidige
positie.</para></glossdef>
</glossentry>
<glossentry><glossterm>Fc</glossterm>
<glossdef><para>Zoek naar het volgende teken c links of boven de huidige
positie.</para></glossdef>
</glossentry>
<glossentry><glossterm>tc</glossterm>
<glossdef><para>Plaats de cursor naar rechts voor het teken c.</para></glossdef>
</glossentry>
<glossentry><glossterm>Tc</glossterm>
<glossdef><para>Verplaats de cursor naar links op het teken volgend op de
voorafgaande c.
</para>
</glossdef>
</glossentry>
<glossentry><glossterm>;</glossterm>
<glossdef><para>Herhaal de laatste zoekopdracht naar een teken.
</para></glossdef></glossentry>
<glossentry><glossterm>,</glossterm>
<glossdef><para>Hetzelfde als <Emphasis>;</Emphasis>, maar draait de
richting van de oorspronkelijke opdracht om.</para></glossdef>
</glossentry>
</glosslist></para>
<para>Als het teken waar je naar zocht niet werd gevonden, zal
<command>vi</command> een beep genereren of je één of ander
soort signaal geven.</para>
<para><command>vi</command> laat je naar iedere tekst zoeken, niet alleen naar
een teken.
<glosslist>
<glossentry><glossterm>/tekst</glossterm>
<glossdef><para>Zoekt rechts en naar beneden voor het volgende voorkomen
van tekst.</para></glossdef>
</glossentry>
<glossentry><glossterm>?tekst</glossterm>
<glossdef><para>Zoekt links en naar boven voor het volgende voorkomen van
tekst.</para></glossdef>
</glossentry>
<glossentry><glossterm>n</glossterm>
<glossdef><para>Herhaal de laatste <Emphasis>/</Emphasis> of
<Emphasis>?</Emphasis> opdracht.</para></glossdef>
</glossentry>
<glossentry><glossterm>N</glossterm>
<glossdef><para>Herhaal het laatste <Emphasis>/</Emphasis> of
<Emphasis>?</Emphasis> in de tegengestelde richting.</para></glossdef>
</glossentry>
</glosslist></para>
<!--<para>When using the <Emphasis>/</Emphasis> or <Emphasis>?</Emphasis>
commands a line will be cleared along the bottom of the screen. You enter the
text to search for followed by <Emphasis>RET</Emphasis>.</para>-->
<para>De tekst in de opdracht <Emphasis>/</Emphasis> of <Emphasis>?</Emphasis>
is in feite een <Emphasis>reguliere expressie</Emphasis>, zie de
<Xref LinkEnd="text-tools-regexps">.</para>
</sect2>
</sect1>
</chapter>
<chapter id="custom-shell"><title>Aanpassen van de shell</title>
<sect1 id="custom-shell-dotfiles"><title>.rc bestanden en <Emphasis>ls -a</Emphasis></title>
<para>Als je <Emphasis>ls</Emphasis> typt, worden bestanden beginnend met
een punt niet weergegeven. Volgens traditie beginnen bestanden met
configuratie-informatie, gebruikersvoorkeuren, enzovoort, met een punt
(in de tekst die hierop volgt, wordt voor de engelse benaming 'dotfiles'
gekozen); deze bestanden zijn tijdens je dagelijkse werk verborgen en uit het
zicht. Voorbeelden van dotfiles zijn <Emphasis>~/.emacs</Emphasis>,
<Emphasis>~/.newsrc</Emphasis>, <Emphasis>~/.bashrc</Emphasis>,
<Emphasis>~/.xsession</Emphasis>, <Emphasis>~/.fvwmrc</Emphasis>, enz...
Deze bestanden worden respectievelijk gebruikt door Emacs, newsreaders,
de Bash-shell, het X Window Systeem, en de <command>fvwm</command> window
manager. Het is gebruikelijk de naam van een dotfile te laten eindigen op
<Emphasis>rc</Emphasis>, maar een aantal programma's doet dit niet. Er zijn
tevens directory's die met een punt beginnen, zoals
<Emphasis>~/.gimp</Emphasis> en <Emphasis>~/.netscape</Emphasis>, waarin
voorkeuren voor de Gimp en Netscape zijn opgeslagen.
</para>
<para>Soms zal een programma automatisch een dotfile
aanmaken; Netscape staat je bijvoorbeeld toe je voorkeuren via een
grafische dialoog te wijzigen en slaat vervolgens je keuzes op.
Andere keren zal je ze zelf met een teksteditor aan moeten maken;
dit is de traditionele manier om het te doen, maar je moet het specifieke
formaat van ieder bestand leren ---
in het begin niet zo comfortabel, maar het kan je heel veel kracht geven.
</para>
<para>Om dotfiles te kunnen zien, moet je met
<Emphasis>ls</Emphasis> de optie <Emphasis>-a</Emphasis> gebruiken. De
lange vorm van <Emphasis>-a</Emphasis> is <Emphasis>--all</Emphasis>, voor
als je dat eenvoudiger vindt om te onthouden.
Je kunt ook de <Emphasis>-A</Emphasis> of <Emphasis>--almost-all</Emphasis>
gebruiken, waarbij alle dotfiles worden opgenomen,
behalve de <Emphasis>.</Emphasis> en <Emphasis>..</Emphasis> ---
onthoud dat <Emphasis>.</Emphasis> de huidige directory is en dat
<Emphasis>..</Emphasis> de ouder is van de huidige directory; aangezien
het gegarandeerd is dat deze zich in iedere directory bevinden, is er geen
echte reden om ze met <Emphasis>ls</Emphasis> weer te geven. Je weet al dat
ze er zijn.
</para>
</sect1>
<sect1 id="custom-shell-etc"><title>Systeemomvattende versus gebruikers-specifieke configuratie</title>
<para>Het is belangrijk te bedenken dat er twee verschillende soorten
configuraties op een Debian-systeem voorkomen.
<Emphasis>Systeemomvattende configuratie</Emphasis> beïnvloedt alle
gebruikers. Systeemomvattende instellingen worden in de directory
<Emphasis>/etc</Emphasis> aangemaakt. Je kunt hier bijvoorbeeld configureren
hoe het systeem een verbinding tot stand brengt met het internet; of
dat webbrowsers op het systeem altijd beginnen op de homepage van het bedrijf.
Aangezien je deze instellingen voor alle gebruikers wilt laten gelden, maak
je de wijzigingen in <Emphasis>/etc</Emphasis>. Voorbeelden van
configuratiebestanden in <Emphasis>/etc</Emphasis> zijn onder andere
<Emphasis>/etc/X11/XF86Config</Emphasis>, <Emphasis>/etc/lynx.cfg</Emphasis>,
en <Emphasis>/etc/ppp/options</Emphasis>. In feite zijn bijna alle bestanden
in <Emphasis>/etc</Emphasis> configuratiebestanden.</para>
<para>Normaal gesproken moet je root zijn om instellingen voor het gehele
systeem te wijzigen.</para>
<para><Emphasis>Gebruikersconfiguratie</Emphasis> is alleen van invloed op
een enkele gebruiker. Voor de gebruikersconfiguratie worden dotfiles gebruikt.
In het bestand <Emphasis>~/.newsrc</Emphasis> wordt bijvoorbeeld een lijst
bewaard met de Usenet (discussiegroep) artikelen die je hebt gelezen, en op
welke groepen je bent geabonneerd. Hierdoor is het mogelijk dat newsreaders
zoals <Emphasis>trn</Emphasis> of Netscape ongelezen artikelen weergeven
in de groepen waarin je bent geïnteresseerd.
Deze informatie zal voor iedere gebruiker op het systeem anders zijn, dus
iedere gebruiker heeft in zijn home-directory zijn eigen
<Emphasis>.newsrc</Emphasis> bestand.</para>
<!-- FIXME : needs to be written
<sect1 id="custom-shell-login"> Login shell vs. niet-login shell
<para> Het verschil, welke bestanden voor ieder te wijzigen
<sect1 id="custom-shell-profile"> Editing .bash_profile <para>A
little tutorial, perhaps set up some common environment
variables or handy aliases. <para>Use some neat text-editing
tricks. <para>describe <Emphasis>umask</Emphasis>
<sect1 id="custom-shell-changing"><title>Wijzigen van je shell</title>
<para>Just mention the possibility, and why one might want to do
it.
-->
</sect1>
</chapter>
<chapter id="X"><title>Het X Window Systeem </title>
<para>Dit hoofdstuk beschrijft de grafische gebruikersinterface van het
X Window Systeem. Er wordt vanuit gegaan dat je X reeds succesvol hebt
geconfigureerd zoals is beschreven in het Installatie Handboek (nogmaals,
het installatie-handboek is nog niet geschreven; voor nu zal je gebruik moeten
maken van de XFree86-HOWTO, de inhoud van
<Emphasis>/usr/doc/X11</Emphasis>, en dit hoofdstuk). Zodra je X hebt
geïnstalleerd, kun je je in de X-omgeving begeven door het intikken
van <Emphasis>startx</Emphasis> of via <Emphasis>xdm</Emphasis>, afhankelijk
van je keuze tijdens de configuratie.
</para>
<sect1 id="X-starting"><title>Starten van de X-omgeving</title>
<para>Er zijn twee manieren om X op te starten. De eerste is door X
handmatig te starten wanneer je het wilt gebruiken. Log hiervoor in
op één van de tekstconsoles, en typ
<Emphasis>startx</Emphasis>. Hierdoor zal X worden opgestart en zal er naar
de virtuele console van X worden overgeschakeld.</para>
<para>De tweede (en aanbevolen) manier is om X met <command>xdm</command>,
oftewel de X Display Manager te gebruiken. Om te beginnen geeft
<command>xdm</command> je een mooie grafische loginprompt op de
virtuele console van X (waarschijnlijk VC 7) en log je daar in.
</para>
<para>Standaard zal bij beide methoden ook een
<Emphasis>xterm</Emphasis> worden opgestart; een klein venster met
daarin een shell-prompt. Achter de shell-prompt kun je opdrachten typen
net als je dat zou doen op een tekst VC. Dus je kunt alle voorbeelden in
deze tutorial volgen door gebruik te maken van een
<Emphasis>xterm</Emphasis>; het enige verschil tussen een
<Emphasis>xterm</Emphasis> en de tekstconsole is dat je niet op de
<Emphasis>xterm</Emphasis> hoeft in te loggen, aangezien je reeds onder
X bent ingelogd.
</para>
<para>Er is tevens veel dat je alleen onder X kunt doen, wat in dit
hoofdstuk zal worden behandeld.
</para>
<para>Één opmerking: de standaard <Emphasis>xterm</Emphasis>
heeft een klein lettertype. Als je een kleine monitor of zeer hoge resolutie
of slecht zicht hebt, wil je dit wellicht corrigeren.
Volg deze stappen:
<ItemizedList>
<ListItem><para>Verplaats de muisaanwijzer in het midden van het
<Emphasis>xterm</Emphasis> venster.</para></listitem>
<ListItem><para>Houd tegelijkertijd de <Emphasis>Control</Emphasis>-toets
en de <Emphasis>rechter</Emphasis> muisknop ingedrukt. Hierdoor krijg je een
font-menu.
</para></listitem>
<ListItem><para>Wijs het font aan dat je wilt en laat de muisknop weer los.
</para></listitem>
</ItemizedList></para>
</sect1>
<sect1 id="X-intro"><title>Intro: Wat is X</title>
<para>Een GUI (Graphical User Interface) maakt onderdeel uit en is een
deel van de Windows of Mac besturingssystemen. Het is in principe onmogelijk
een applicatie voor die systemen te schrijven die geen gebruik maken van
de GUI, en de systemen kunnen niet effectief vanaf de opdrachtregel
worden gebruikt. GNU/Linux is meer <Emphasis>modulair</Emphasis>, dat wil
zeggen, samengesteld uit veel kleine, onafhankelijke componenten die wel
of niet kunnen worden gebruikt overeenkomstig iemand's behoeften en
voorkeuren. Één van deze componenten is het X Window Systeem,
of gewoon X. <footnote><para>Het wordt soms ook X11 of X Window genoemd. Merk
alsjeblieft op dat "X Windows" <Emphasis/niet/ correct is en dat je puristen
waarschijnlijkt beledigt als je deze onjuiste term gebruikt.
</para></footnote></para>
<para>X zelf is een middel voor programma's om met je muis en videokaart
te communiceren, zonder te weten wat voor soort muis en videokaart je hebt.
Dat wil zeggen dat het een <Emphasis>abstractie</Emphasis> is van de
grafische hardware. Gebruikersapplicaties communiceren in de taal van X, met
X; X vertaalt dit dan naar de taal van je speciale hardware. Dit betekent
dat programma's slechts éénmaal hoeven te worden geschreven,
en dat ze op ieders computer werken.
</para>
<para>In X jargon, staat het programma die met de hardware communiceert, bekend
als een <Emphasis>X-server</Emphasis>. Gebruikersapplicaties die de X-server
vragen vensters en grafische afbeeldingen op het scherm af te beelden,
worden <Emphasis>X-clients</Emphasis> genoemd.
In de X-server is een <Emphasis>video-driver</Emphasis> opgenomen, dus je
moet een X-server hebben die met je videokaart overeenkomt.
</para>
<para>De X-server voorziet niet in mogelijkheden, zoals het aanpassen
van de grootte en herarrangeren van vensters, wat men mogelijk van
een GUI zou verwachten. Een speciale X-client, een
<Emphasis>window manager</Emphasis> genoemd, tekent kaders en titelbalken
voor vensters, past de grootte van vensters aan en arrangeert ze, en voorziet
in faciliteiten voor het vanuit een menu starten van andere X-clients.
Specifieke window managers kunnen aanvullende mogelijkheden hebben.
</para>
<para>Window managers beschikbaar op een Debian-systeem zijn onder andere
<Emphasis>fvwm</Emphasis>, <Emphasis>fvwm2</Emphasis>,
<Emphasis>icewm</Emphasis>, <Emphasis>afterstep</Emphasis>,
<Emphasis>olvwm</Emphasis>, <Emphasis>wmaker</Emphasis>,
<Emphasis>mwm</Emphasis>, <Emphasis>twm</Emphasis>,
en <Emphasis>enlightenment</Emphasis>.
Je zal ze waarschijnlijk allemaal willen proberen en je favoriete er uitkiezen.
<ULink url="X11.org">http://www.x11.org</ULink> is een mooie
site voor informatie over window managers en ander leuk spul over X).</para>
<para>Noch de X-server, noch de window manager voorziet in een
<Emphasis>bestandsbeheerder</Emphasis>; dat wil zeggen dat er geen
vensters met icons zijn voor je bestanden en directory's.
Je kunt een bestandsbeheerder als een aparte applicatie starten; er zijn er
veel van beschikbaar, alhoewel er helaas nog geen goeie zijn die zijn
gebaseerd op icons.
Het GNOME desktopproject is echter een op icons gebaseerde bestandsbeheerder
en ander GUI-mogelijkheden aan het ontwikkelen.
Zie <Ulink url="de GNOME project home page">http://www.gnome.org</ULink> voor
het laatste nieuws hierover.</para>
<para>Een laatste mogelijkheid van X is zijn <Emphasis>netwerk
transparantheid</Emphasis>, wat betekent dat het er voor X-clients niet
toe doet, of ze met een X-server op dezelfde computer of een X-server
ergens op het netwerk communiceren. In de praktijk betekent dit dat je
een programma op een krachtiger remote computer uit kunt laten voeren en
het op je desktop computer kunt laten weergeven.
</para>
</sect1>
<sect1 id="X-basics"><title>Basis X-bewerkingen</title>
<!--sect1 id="X-basics-mouse"><title>De muis</title>-->
<para>De muis werkt in X vrijwel hetzelfde als onder andere systemen,
behalve dat het drie muisknoppen heeft. Als je muis er slechts twee heeft,
kun je de derde (middelste) knop emuleren door op beide muisknoppen
tegelijkertijd te klikken. Dit is een soort truc en 't is hinderlijk, dus
het is waarschijnlijk geen slecht idee te investeren in een 3-knops muis
van $15. Ze zijn bij zo'n beetje iedere computerwinkel te krijgen.
</para>
<para>De muisknoppen zijn genummerd van links naar rechts, uitgaande van
een rechtshandige muis, dus knop één zit links, twee in het
midden, drie rechts. Het kan zijn dat in de documentatie gebruik wordt
gemaakt van zowel de nummers als de lokaties.
</para>
<para>X heeft een eenvoudige ingebouwde kopieer-en-plak faciliteit. Om
tekst te selecteren en te kopiëren, klik en sleep je met de
linker-muisknop. Hiermee zou de tekst om te kopiëren moeten worden
geselecteerd, in de veronderstelling dat de applicatie die je gebruikt,
kopieer-en-plak ondersteuning biedt.
Om de tekst te plakken, klik je met de middelste muisknop in een andere
X-applicatie. Als je bijvoorbeeld een email
met daarin een URL ontvangt, kun je de URL met de linkermuisknop selecteren en
vervolgens in het veld "Location" met de middelste muisknop klikken
om het er in te plakken.
</para>
</sect1>
<sect1 id="X-basics-clients"><title>X-clients</title>
<para>Programma's die met de X-server communiceren worden X-clients
genoemd. De meeste van deze programma's zullen de X-server verzoeken
vensters op het scherm weer te geven.
</para>
<para>Je start een X-client op dezelfde manier als dat je enig ander
Debian-programma start. Typ simpelweg de naam van de client op de
opdrachtregel. Probeer
<Emphasis>xterm</Emphasis> in een bestaande xterm in te tikken, en er
zal een nieuwe xterm-client op het scherm verschijnen.
</para>
<para>Wellicht bemerk je dat de oorspronkelijk xterm nu onbruikbaar is,
aangezien je shell net zo lang wacht totdat de tweede xterm wordt afgesloten.
Je kunt ter voorkoming van dit probleem, de X-client in de achtergrond uitvoeren
--- voeg een <Emphasis>&</Emphasis> toe na de naam van de opdracht,
zoals: <Emphasis>xterm &</Emphasis>. Als je dit vergeet, kun je een
draaiend proces in de achtergrond plaatsen. Stel het proces eerst met
<Emphasis>C-z</Emphasis> uit, en plaats het dan in de achtergrond met
de opdracht <Emphasis>bg</Emphasis>.</para>
<para>Als je een programma vaak gebruikt, voorziet je window manager
meestal wel in een manier om dat programma in een comfortabel grafisch
menu te plaatsen.
</para>
</sect1>
<sect1 id="X-basics-trouble"><title>Probleemoplossing</title>
<para>Soms is het niet mogelijk de foutmeldingen te zien te krijgen als
je een X-client vanuit een grafisch menu opstart en het faalt daarin.
Eventuele foutmeldingen zijn te vinden in het bestand
<Emphasis>~/.xsession-errors</Emphasis>.</para>
</sect1>
<sect1 id="X-basics-leaving"><title>Afsluiten van de X-omgeving</title>
<para>Om X af te sluiten, zal je een menu moeten gebruiken. Helaas
voor beginners is dit voor iedere window manager weer anders, en de
meeste window managers kunnen op vele manieren worden geconfigureerd.
Als er een voor de hand liggend menu is, zoek hier dan in naar
"Exit" of "Close Window Manager". Klik op alle muisknoppen op de
achtergrond van het scherm als je geen menu ziet.
Als dit allemaal niet lukt, kun je de X-server geforceerd killen
door het indrukken van de toetscombinatie <Emphasis>C-A-Backspace</Emphasis>.
Het geforceerd killen van de server heeft tot gevolg dat alle niet
opgeslagen gegevens in open applicaties verloren zullen gaan.
</para>
</sect1>
<sect1 id="X-startup"><title>Aanpassen van je X startup</title>
<para>Als je X start, zal Debian een aantal shell-scripts uitvoeren, die
je window manager en andere X-clients opstarten.
Standaard zullen een window manager, een
<Emphasis>xconsole</Emphasis> en een <Emphasis>xterm</Emphasis>
voor je worden opgestart.</para>
<para>Als je het opstartscript van X aan wilt passen, moet in het bestand
<Emphasis>/etc/X11/config</Emphasis> een regel voorkomen met
<Emphasis>allow-user-xsession</Emphasis>. Word root en voeg de regel
nu toe, als dit niet zo is. Log vervolgens weer in als jezelf en
ga verder met de tutorial. <footnote><para>Je kunt zien hoe het
opstartscript van X onder Debian werkt in het bestand
<Emphasis>/etc/X11/Xsession</Emphasis>. Merk op dat de werking van
<Emphasis>/etc/X11/Xsession</Emphasis> niet kan worden gewijzigd door
het aanpassen van het bestand <Emphasis>/etc/X11/config</Emphasis>,
waarin een paar systeemomvattende voorkeuren worden gespecificeerd.
</para></footnote></para>
<para>Je maakt een uitvoerbaar shell-script, genaamd
<Emphasis>.xsession</Emphasis>, in je home-directory aan, om de
clients van je keuze uit te laten voeren wanneer X wordt opgestart.
<GlossList>
<glossentry><glossterm>touch ~/.xsession</glossterm>
<glossdef><para>Hiermee wordt het bestand aangemaakt.</para></glossdef>
</glossentry>
<glossentry><glossterm>chmod u+x ~/.xsession</glossterm>
<glossdef><para>Maak het bestand uitvoerbaar.</para></glossdef>
</glossentry></GlossList></para>
<para>Zodra <Emphasis>.xsession</Emphasis> is aangemaakt, moet je het
met je favoriete teksteditor wijzigen om het iets nuttigs te laten doen.
Je kunt in dit script alles doen wat je wilt. Als de processen in het script
echter worden beëindigd, zal ook X worden afgesloten.
</para>
<para>In praktijk betekent dit vaak dat je het script afsluit met een
aanroep naar <Emphasis>exec</Emphasis>. <!-- FIXME xref explaining
exec vs. backgrounded vs. normal--> Het programma dat je met
<Emphasis>exec</Emphasis> laat uitvoeren, zal het script-proces zelf
vervangen, dus opdrachten na de regel
<Emphasis>exec</Emphasis> zullen worden genegeerd.
Het programma na exec wordt de nieuwe "eigenaar" van het script-proces,
wat betekent dat X zal worden afgesloten als het proces van dit nieuwe
programma wordt beëindigd.
</para>
<para><!-- FIXME : replace occurences of fvwm by a more modern WM?
wmaker, enlightenment or icewm seem better candidates -->
Stel dat je .xsession eindigt met de regel: <Emphasis>exec
fvwm</Emphasis>. Dit betekent dat de window manager <Emphasis>fvwm</Emphasis>
zal worden uitgevoerd wanneer X wordt opgestart. Als je de window manager
fvwm verlaat, zal de X sessie eindigen en zullen alle andere clients worden
afgesloten.
Je hoeft hier geen window manager te gebruiken; je zou net zo goed
<Emphasis>exec xterm</Emphasis> kunnen gebruiken, in welk geval het intikken
van <Emphasis>exit</Emphasis> in die bepaalde xterm er voor zou zorgen dat
de gehele X-sessie tot een einde zou komen.
</para>
<para>Als je voor de <Emphasis>exec</Emphasis> andere clients wilt
draaien, zal je ze in de achtergrond uit moeten voeren.
Anders pauzeert <Emphasis>.xsession</Emphasis> totdat iedere client wordt
afgesloten, en zal dan pas verder gaan met de volgende regel.
Zie de vorige sectie over het in de achtergrond uitvoeren van jobs.
<!-- FIXME xref --> (aan het eind plaats je dus een ampersand, b.v.
<Emphasis>xterm &</Emphasis>).</para>
<para>Je kunt echter profijt hebben van dit gedrag. Als je opdrachten
aan het einde van je X-sessie wilt draaien, kun je een
<Emphasis>.xsession</Emphasis> laten uitvoeren met een window manager of
iets dergelijks en wachten totdat het wordt afgesloten. Dat wil zeggen,
het achterwege laten van de <Emphasis>exec</Emphasis> en de
<Emphasis>&</Emphasis>, er slechts <Emphasis>fvwm</Emphasis>
zelf in plaatsen. Plaats dan de opdrachten van je keuze achter
<Emphasis>fvwm</Emphasis>.</para>
<para>Het zou waarschijnlijk kunnen helpen als je een paar
<Emphasis>.xsession</Emphasis> voorbeeldbestanden bekijkt. In alle
voorbeelden, vervang je <Emphasis>fvwm</Emphasis> door de window manager
van je keuze.</para>
<para>De eenvoudigste <Emphasis>.xsession</Emphasis> draait slechts een
window manager:
<screen>
exec fvwm
</screen>
Hiermee zal fvwm worden uitgevoerd, en de X-sessie eindigt wanneer fvwm
wordt afgesloten. Als je het zonder de <Emphasis>exec</Emphasis> doet,
zal het er op lijken alsof alles zich hetzelfde gedraagt, maar achter
de schermen zal <Emphasis>.xsession</Emphasis> rondhangen in afwachting
van fvwm, en <Emphasis>.xsession</Emphasis> zal afsluiten nadat fvwm is
afgesloten. Het gebruik van <Emphasis>exec</Emphasis> is iets beter omdat
fvwm <Emphasis>.xsession</Emphasis> vervangt in plaats dat het afwachtend
achterlaat. Je kunt de opdracht <Emphasis>ps</Emphasis> of
<Emphasis>top</Emphasis> gebruiken om dit te verifiëren.</para>
<para>Een wat nuttiger <Emphasis>.xsession</Emphasis> voert een paar
clients uit voordat het de window manager opstart, wellicht wil je
bijvoorbeeld een aantal xterms en een xclock als je X start. Geen probleem:
<screen>
xterm &
xterm &
xclock &
exec fvwm
</screen>
Twee xterms en een xclock starten in de achtergrond op, en daarna wordt
de window manager gestart. Als je de window manager beëindigd, zul
je ook X verlaten.</para>
<para>Misschien dat je het uit wilt proberen zonder ze in de
achtergrond te plaatsen, gewoon om te zien wat er dan gebeurt. Doe het volgende:
<screen>
xterm
xclock
exec fvwm
</screen>
xterm zal starten, en op je wachten totdat je het beëindigd. Daarna
zal xclock starten; je moet xclock stoppen voordat fvwm zal worden opgestart.
De opdrachten zullen in reeks worden opgestart, aangezien het script net
zo lang wacht tot ieder programma is afgesloten.</para>
<para>Je kunt van de gelegenheid gebruik maken door een sequentiële
uitvoering te gebruiken. Misschien dat je bij wilt houden wanneer je iedere
dag stopt met werken:
<screen>
xterm &
xclock &
fvwm
date >> ~/logout-time
</screen>
Hiermee zal een xterm en een xclock worden afgesplitst, vervolgens zal
fvwm worden uitgevoerd en wordt er gewacht totdat het stopt. Als je
fvwm afsluit, zal het naar de laatste regel gaan, waarmee de huidige
datum en tijd aan het bestand <Emphasis>~/logout-time</Emphasis> zal worden
toegevoegd.</para>
<para>Als laatste, kun je een ander programma dan de window manager
laten vaststellen wanneer X wordt afgesloten:
<screen>
xclock &
fvwm &
exec xterm
</screen>
Dit script zal xclock en fvwm in de achtergrond uitvoeren, en zichzelf dan
door een xterm vervangen. Als je de xterm afsluit, zal je X-sessie worden
beëindigd.
</para>
<para>De beste manier om te leren hoe je <Emphasis>.xsession</Emphasis>
kunt gebruiken is door dingen uit te proberen. Nogmaals, weer er zeker
van dat je <Emphasis>chmod</Emphasis> toepast om het uitvoerbaar te maken
--- dit is een veelvoorkomende fout.
</para>
</sect1>
<!-- FIXME : Needs to be completed
<sect1 id="X-custom"><title>X aanpassen</title>
<para>How to customize keymap,
concept of X resources <para>What's in /etc/X11/config (or
perhaps just a reference to the /usr/doc/ file on this).
<sect1 id="X-wm"> Customizing the window manager <para>A little
tutorial. Pretty much have to pick a particular one to
discuss for this section.
-->
</chapter>
<chapter id="text-tools"><title>Tekst tools</title>
<para>head, tail, grep, wc, tr, sed, perl enzovoort</para>
<sect1 id="text-tools-regexps"><title>Reguliere expressies</title>
<para>Een reguliere expressie is een beschrijving van een set tekens.
Deze beschrijving kan worden gebruikt om door een bestand te zoeken naar
tekst welke <Emphasis>overeenkomt</Emphasis> met de reguliere expressie.
Reguliere expressies zijn analoog aan shell-wildcards
(zie de <XRef LinkEnd="shell-wildcards">), maar ze zijn gecompliceerder
en krachtiger.</para>
<para>Een reguliere expressie is samengesteld uit tekst en
<Emphasis>metacharacters</Emphasis>. Een metacharacter is gewoon een teken
met een speciale betekenis. Metacharacters zijn onder andere:
<Emphasis> . * [] - \ ^ $</Emphasis>.</para>
<para>Als een reguliere expressie uit alleen tekst bestaat (geen
metacharacters), dan komt het overeen met die tekst. Als voorbeeld, de reguliere
expressie '<Emphasis>mijn reguliere expressie</Emphasis>' komt overeen
met de tekst '<Emphasis/mijn reguliere expressie/', en niets anders.
Reguliere expressies zijn meestal hoofdlettergevoelig.</para>
<para>Je kunt de opdracht <Emphasis>egrep</Emphasis> gebruiken om alle regels
in een bestand weer te geven die een reguliere expressie bevatten. De
syntax ervan is:
</para>
<para><Emphasis>egrep 'regexp' filename1 ... </Emphasis>
<footnote><para>De enkele aanhalingstekens zijn niet altijd nodig, maar
het kan nooit kwaad.</para></footnote></para>
<para>Om bijvoorbeeld alle regels in de GPL op te zoeken met daarin het
woord GNU, typ je:
<screen>
egrep 'GNU' /usr/doc/copyright/GPL
</screen>
</para>
<para><Emphasis>egrep</Emphasis> zal de regel naar standaard output afdrukken.
</para>
<para>Als je alle regels met daarin <Emphasis>freedom</Emphasis>,
gevolgd door wat onbepaalde tekst, gevolgd door
<Emphasis>GNU</Emphasis> wilt, tik je in:
<screen>
egrep 'freedom.*GNU' /usr/doc/copyright/GPL
</screen>
</para>
<para>De <Emphasis>.</Emphasis> betekent "elk teken"; de <Emphasis>*</Emphasis> betekent "nul of meer van het voorafgaande," in dit geval "nul of
meer van elk teken." Dus <Emphasis>.*</Emphasis> komt zo'n beetje met
alle tekst overeen. <Emphasis>egrep</Emphasis> maakt alleen een vergelijking
op basis van een regel-per-regel, dus <Emphasis>freedom</Emphasis> en
<Emphasis>GNU</Emphasis> moeten op dezelfde regel voorkomen.</para>
<para>Hier is een samenvatting van reguliere expressie metacharacters:
<glosslist>
<glossentry>
<glossterm>.</glossterm>
<glossdef><para>Komt overeen met ieder enkel teken behalve een newline.
</para></glossdef></glossentry>
<glossentry><glossterm>*</glossterm>
<glossdef><para>Komt overeen met nul of meer voorkomens van het
voorgaande. Dus de expressie <Emphasis>a*</Emphasis>
komt overeen met 0 of meer kleine letters <Emphasis>a</Emphasis>, en
<Emphasis>.*</Emphasis> komt overeen met nul of meer tekens.</para></glossdef>
</glossentry>
<glossentry><glossterm>[tekens]</glossterm>
<glossdef><para>Tussen de blokhaken moeten één of meer tekens
staan; de gehele expressie tussen blokhaken komt overeen met exact
één teken uit de set. Dus <Emphasis>[abc]</Emphasis> komt
overeen met een <Emphasis>a</Emphasis>,
een <Emphasis>b</Emphasis>, of een <Emphasis>c</Emphasis>; het komt niet
overeen met 0 tekens, en het komt niet overeen met andere tekens dan
deze drie.
</para></glossdef></glossentry>
<glossentry><glossterm>^</glossterm>
<glossdef><para>Verankert je zoekopdracht aan het begin van de regel.
De expressie <Emphasis>^De</Emphasis> komt alleen overeen met
<Emphasis>De</Emphasis> aan het begin van een regel; er mogen
geen spaties of andere tekst voor <Emphasis>De</Emphasis> voorkomen. Als
je spaties toe wilt staan, kun je 0 of meer spatie-tekens als volgt
toevoegen: <Emphasis>^ *De</Emphasis>.</para></glossdef>
</glossentry>
<glossentry><glossterm>$</glossterm>
<glossdef><para>Verankering aan het einde van de regel.
<Emphasis>end$</Emphasis> vereist dat de tekst <Emphasis>end</Emphasis> aan
het einde van de regel voorkomt, zonder
tussenliggende spaties of tekst.</para></glossdef></glossentry>
<glossentry><glossterm>[^tekens]</glossterm>
<glossdef><para><Emphasis>^</Emphasis> draait de betekenis van een door
blokhaken omsloten lijst met tekens om.
Dus <Emphasis>[^abc]</Emphasis> komt overeen met ieder enkel teken,
<Emphasis>behalve</Emphasis> a, b, of c.</para></glossdef>
</glossentry>
<glossentry><glossterm>[teken-teken]</glossterm>
<glossdef><para>Je kunt bereiken in een door blokhaken omsloten lijst
opnemen. Gebruik <Emphasis>[a-z]</Emphasis> om enkel en alleen een
vergelijking met kleine letters te maken. Je kunt van meer dan één
bereik gebruik maken; dus om het passend te maken met de eerste of laatste
drie letters van het alfabet, gebruik je <Emphasis>[a-cx-z]</Emphasis>.
Voor het verkrijgen van elke letter, hoofd- of kleine letter, gebruik je
<Emphasis>[a-zA-Z]</Emphasis>. Je kunt bereiken met enkele
tekens en met het <Emphasis>^</Emphasis> metacharacter combineren;
Bijvoorbeeld <Emphasis>[^a-zBZ]</Emphasis> heeft als betekenis "alles behalve
een kleine letter, hoofdletter B, of hoofdletter Z."
</para></glossdef>
</glossentry>
<glossentry><glossterm>()</glossterm>
<glossdef><para>Net als in een mathematische expressie, kun je
haakjes gebruiken om delen van de reguliere expressie te groeperen.
</para></glossdef></glossentry>
<glossentry><glossterm>|</glossterm>
<glossdef><para><Emphasis>|</Emphasis> betekent "of" --- je kunt het
gebruiken om te voorzien in een serie alternatieve expressies.
Het is gebruikelijk de alternatieven tussen haakjes te plaatsen, zoals
<Emphasis>c(ad|ab|at)</Emphasis>; dit komt overeen met
<Emphasis>cad</Emphasis> of <Emphasis>cab</Emphasis> of
<Emphasis>cat</Emphasis>. Zonder haakjes zou het in plaats daarvan
overeenkomen met <Emphasis>cad</Emphasis> of <Emphasis>ab</Emphasis> of
<Emphasis>at</Emphasis>.</para></glossdef></glossentry>
<glossentry><glossterm>\</glossterm>
<glossdef><para>Ontdoet een teken van zijn speciale betekenis;
als je naar een letterlijke <Emphasis>*</Emphasis> wilt zoeken, typ je
<Emphasis>\*</Emphasis>. De slash betekent dat de gebruikelijke betekenis
van <Emphasis>*</Emphasis> moet worden genegeerd.
</para></glossdef>
</glossentry>
</glosslist></para>
<para>Hier zijn nog wat meer voorbeelden, om je te helpen het in de vingers
te krijgen:
<glosslist>
<glossentry><glossterm>c.pe</glossterm>
<glossdef><para>komt overeen met <Emphasis>cope</Emphasis>,
<Emphasis>cape</Emphasis>, <Emphasis>caper</Emphasis></para></glossdef>
</glossentry>
<glossentry><glossterm>c\.pe</glossterm>
<glossdef><para>komt overeen met <Emphasis>c.pe</Emphasis>, <Emphasis>c.per
</Emphasis></para></glossdef>
</glossentry>
<glossentry><glossterm>sto*para</glossterm>
<glossdef><para>komt overeen met <Emphasis>stp</Emphasis>,
<Emphasis>stop</Emphasis>, <Emphasis>stoop</Emphasis></para></glossdef>
</glossentry>
<glossentry><glossterm>car.*n</glossterm>
<glossdef><para>komt overeen met <Emphasis>carton</Emphasis>,
<Emphasis>cartoon</Emphasis>, <Emphasis>carmen</Emphasis></para></glossdef>
</glossentry>
<glossentry><glossterm>xyz.*</glossterm>
<glossdef><para>Komt overeen met <Emphasis>xyz</Emphasis> en alles wat
daar achter komt; een aantal tools, zoals <Emphasis>egrep</Emphasis>, zullen
het alleen overeen laten komen tot aan het einde van de regel.
</para></glossdef>
</glossentry>
<glossentry><glossterm>^De</glossterm>
<glossdef><para>Komt overeen met <Emphasis>De</Emphasis> aan het begin van
een regel.</para></glossdef>
</glossentry>
<glossentry><glossterm>atime$</glossterm>
<glossdef><para>Komt overeen met <Emphasis>atime</Emphasis> aan het einde
van een regel.</para></glossdef>
</glossentry>
<glossentry><glossterm>^Alleen$</glossterm>
<glossdef><para>Komt overeen met een regel die bestaat uit slechts het
woord <Emphasis>Alleen</Emphasis> --- geen spaties, geen andere tekens,
niets. Slechts <Emphasis>Alleen</Emphasis> is toegestaan.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>b[aou]rn</glossterm>
<glossdef><para>Komt overeen met <Emphasis>barn</Emphasis>,
<Emphasis>born</Emphasis>, <Emphasis>burn</Emphasis></para></glossdef>
</glossentry>
<glossentry>
<glossterm>Ver[D-F]</glossterm>
<glossdef><para>Komt overeen met <Emphasis>VerD</Emphasis>,
<Emphasis>VerE</Emphasis>, <Emphasis>VerF</Emphasis></para></glossdef>
</glossentry>
<glossentry>
<glossterm>Ver[^0-9]</glossterm>
<glossdef><para>Komt overeen met <Emphasis>Ver</Emphasis> gevolgd door een
teken niet zijnde een cijfer.
</para></glossdef>
</glossentry>
<glossentry>
<glossterm>the[ir][re]</glossterm>
<glossdef><para>Komt overeen met <Emphasis>their</Emphasis>,
<Emphasis>therr</Emphasis>, <Emphasis>there</Emphasis>,
<Emphasis>theie</Emphasis></para></glossdef>
</glossentry>
<glossentry>
<glossterm>[A-Za-z][A-Za-z]*</glossterm>
<glossdef><para>komt overeen met elk woord dat uit alleen letters en
op z'n minst één letter bestaat. Zal niet overeenkomen met
nummers of spaties.
</para></glossdef>
</glossentry>
</glosslist></para>
<!-- FIXME : Give a few other regular expressions examples
besides egrep? -->
</sect1>
</chapter>
<chapter id="file-tools"><title>Bestandstools</title>
<!--
<sect1 id="file-tools-backup"><title>Backuptools</title>
<para> FIXME this section is clearly incomplete
<para>tar, cpio, dump; ook op grote schaal kopiëren, cp -a enz.</para>
<para> (Perhaps something on how to back up only /home and /etc
if you only have a floppy drive, since many home users won't
have a tape drive)</para>
<para> How to use tar to copy lots of files, or back up your
files. Tarballs. I'm thinking this should be a brief
section aimed at single-user systems, with a more thorough
sysadmin discussion in a different manual.</para>
<para>Backup commands (contributed by Oliver Elphick, section
to be cleaned up and elaborated):</para>
<para>dump - dumps one filesystem at a time; its command
options assume that you are using half-inch tape (maximum
45Mb per reel) so it's a bit annoying when using DAT (2Gb
or more). Probably the best for regular backups. Can't be
used for NFS-mounted filesystems.</para>
<para>cpio - `find [directory's] -print | cpio -ovH newc -B
>/dev/st0'</para>
<para>tar - `tar cvf /dev/st0 [directory's]'</para>
<para>afio - like cpio; supports pre-compression of files
before archiving.</para>
<para>tob - front-end voor afio</para>
</sect1>
-->
<sect1 id="file-tools-compression"><title>Bestandscompressie met <Emphasis>gzip</Emphasis></title>
<para>Vaak zal het prettig zijn om een bestand kleiner te maken:
bijvoorbeeld om het sneller te kunnen downloaden, of zodanig dat het minder
ruimte op je disk in beslag neemt. Het programma waarmee je dit kunt doen,
heet <Emphasis>gzip</Emphasis> (GNU Zip).
<GlossList>
<!-- FIXME : gziping my /etc/profile only shrinks it by 17 bytes (from
178 downto 161). Consider using another screen (the GPL?)
-->
<glossentry>
<glossterm>cd; cp /etc/profile ./mijn-voorbeeld-bestand</glossterm>
<glossdef><para>
Ga naar je home-directory en kopieer dan een willekeurig gekozen
bestand (<Emphasis>/etc/profile</Emphasis>) naar je huidige directory waarbij
je het tijdens dit proces hernoemt in
<Emphasis>mijn-voorbeeld-bestand</Emphasis>. Dit geeft ons een bestand om
mee te spelen bij het gebruik van <Emphasis>gzip</Emphasis>.
</para></glossdef></glossentry>
<glossentry><glossterm>ls -l</glossterm>
<glossdef><para>Toon de inhoud van de huidige directory.
Let op de grootte van <Emphasis>mijn-voorbeeld-bestand</Emphasis>.
</para></glossdef></glossentry>
<glossentry>
<glossterm>gzip mijn-voorbeeld-bestand</glossterm>
<glossdef><para>Comprimeer <Emphasis> mijn-voorbeeld-bestand</Emphasis>.
</para></glossdef></glossentry>
<glossentry><glossterm>ls -l</glossterm>
<glossdef><para> Observeer het resultaat: <Emphasis>
mijn-voorbeeld-bestand</Emphasis> wordt nu
<Emphasis>mijn-voorbeeld-bestand.gz </Emphasis> genoemd. Het is ook wat kleiner.
</para></glossdef></glossentry>
<glossentry>
<glossterm>gunzip mijn-voorbeeld-bestand.gz; ls -l</glossterm>
<glossdef><para>Decomprimeer. Observeer dat
<Emphasis>mijn-voorbeeld-bestand</Emphasis> naar zijn oorspronkelijke
staat is teruggekeerd.
Merk op dat voor het decomprimeren gebruik wordt gemaakt van
<Emphasis>gunzip</Emphasis>, geen <Emphasis>gzip</Emphasis>.
</para></glossdef></glossentry>
<glossentry>
<glossterm>rm mijn-voorbeeld-bestand</glossterm>
<glossdef><para>Verwijder het bestand, aangezien het slechts diende
om er mee te oefenen.
</para></glossdef></glossentry>
</Glosslist></para>
</sect1>
<sect1 id="file-tools-split"><title>Bestanden in kleinere stukken opdelen</title>
<para>Soms is een bestand te groot dat het op een disk past, of
wil je geen groot bestand via het net in een enkele keer verzenden.
Je kunt het bestand met het utility <Emphasis>split</Emphasis>
splitsen, en het met het utility <Emphasis>cat</Emphasis>
(con<Emphasis>cat</Emphasis>enate) weer samenvoegen.
<GlossList>
<glossentry><glossterm>cd; cp /bin/bash mijn-bestand; ls -l mijn-bestand
</glossterm>
<glossdef><para>Kopieer het uitvoerbare bestand <Emphasis>bash</Emphasis>
naar een bestand in je home-directory met de naam
<Emphasis>mijn-bestand</Emphasis>. Let er op dat
<Emphasis>mijn-bestand</Emphasis> iets meer dan 400.000 bytes, of zo rond
de 400 kilobytes in beslag neemt.
</para></glossdef></glossentry>
<glossentry><glossterm>split -b100k mijn-bestand mijn-voorvoegsel</glossterm>
<glossdef><para>Splits het bestand in delen van 100 kilobytes,
waarbij de delen worden genoemd <Emphasis>mijn-voorvoegselaa</Emphasis>,
<Emphasis>mijn-voorvoegselab</Emphasis>, enz. Typ <Emphasis>ls -l</Emphasis>
om het resultaat te bekijken.
</para>
<para>Je kunt ieder getal na de <Emphasis>-b</Emphasis> opgeven: kies iets
dat zin heeft. Als je de <Emphasis>k</Emphasis> weglaat, zal het worden
opgevat als bytes in plaats van kilobytes. Als je de <Emphasis>m</Emphasis>
gebruikt in plaats van de <Emphasis>k</Emphasis>, zal het worden opgevat als
megabytes.</para></glossdef></glossentry>
<glossentry><glossterm>cat mijn-voorvoegsel* >>
mijn-nieuwe-bestand</glossterm>
<glossdef><para>Schakel alle bestanden aaneen en schrijf ze naar
<Emphasis>mijn-nieuwe-bestand</Emphasis>. (De <Emphasis>*</Emphasis> en
<Emphasis>>></Emphasis> zijn trucs waarover je in een ander hoofdstuk
leert.
<!-- FIXME xref -->.)
</para></glossdef></glossentry>
<glossentry><glossterm>rm mijn-bestand mijn-nieuwe-bestand mijn-voorvoegsel*</glossterm>
<glossdef><para>Verwijder alles.
</para></glossdef></glossentry>
</GlossList></para>
</sect1>
<sect1 id="file-tools-find"><title>Naar bestanden zoeken</title>
<para>Er zijn twee verschillende mogelijkheden om naar bestanden te zoeken:
<Emphasis>find</Emphasis> en <Emphasis>locate</Emphasis>.
<Emphasis>find</Emphasis> zoekt naar de werkelijke bestanden in hun huidige
staat. <Emphasis>locate</Emphasis> doorzoekt een index die
iedere morgen om 6:42 a.m. door het systeem wordt gegenereerd
(dit is een <Emphasis>cron</Emphasis> job, elders in dit handboek uitgelegd
<!-- FIXME xref -->). <Emphasis>locate</Emphasis> zal geen bestanden kunnen
vinden die werden aangemaakt nadat de index werd gegenereerd.
Het is echter veel sneller, aangezien <Emphasis>locate</Emphasis> een
index doorzoekt -- zoals het gebruik van een index in een boek
in plaats van het doorzoeken van het gehele boek.</para>
<para>Doe alsof je je niet meer kunt herinneren waar het X configuratiebestand
<Emphasis>XF86Config</Emphasis> voorkomt, om de twee manieren waarop er naar
bestanden kan worden gezocht, met elkaar te vergelijken.
<GlossList>
<glossentry><glossterm>locate XF86Config</glossterm>
<glossdef><para>Dit zou tamelijk snel moeten gaan.
Je zal een lijst met bestandsnamen krijgen waarin de string
<Emphasis>XF86Config</Emphasis> voorkomt, vergelijkbaar met het volgende:
<screen>
/etc/X11/XF86Config
/usr/X11R6/lib/X11/XF86Config
/usr/X11R6/lib/X11/XF86Config.eg
/usr/X11R6/man/man5/XF86Config.5x.gz
</screen>
</para></glossdef></glossentry>
<glossentry><glossterm>find / -name XF86Config</glossterm>
<glossdef><para>Je zal heel wat diskactivitiet horen, en dit zal heel wat
langer duren. Het resultaat ziet er ongeveer zo uit:
<screen>
/etc/X11/XF86Config
/usr/X11R6/lib/X11/XF86Config
find: /var/spool/cron/atjobs: Permission denied
find: /var/spool/cron/atspool: Permission denied
find: /var/lib/xdm/authdir: Permission denied
</screen>
</para>
<para>Merk op dat <Emphasis>find</Emphasis> alleen bestanden vindt die
<Emphasis>exact</Emphasis> <Emphasis>XF86Config</Emphasis> zijn genoemd,
in plaats van dat het alle bestanden waarin deze reeks letters voorkomt,
retourneert.
Ook probeerde <Emphasis>find</Emphasis> echt iedere directory
op het systeem te doorzoeken - inclusief die waarvoor je geen leespermissies
hebt. Dus die welke de "Permission denied" meldingen opleverde.
</para>
<para>Bovendien is de syntax anders.
Je moest aangeven in elke directory moest worden gezocht ---
<Emphasis>/</Emphasis> --- terwijl <Emphasis>locate</Emphasis>
automatisch de root-directory koos. En je moest opgeven dat je op naam zocht,
door de optie <Emphasis>-name</Emphasis>. Je zou ook naar bestanden hebben
kunnen zoeken die aan veel andere kriteria voldoen, zoals de wijzigingsdatum
of de eigenaar. Voor het met <command/find/ zoeken naar bestanden wiens
namen voldoen aan XF86Config, zou je een reguliere expressie hebben
moeten gebruiken <!-- FIXME xref -->: <Emphasis>find / -name
'*XF86Config*'</Emphasis>. Zoals met de meeste opdrachtregeltools accepteert
<command/find/ reguliere expressies als argumenten.
</para></glossdef></glossentry>
</GlossList></para>
<para>In het algemeen is <Emphasis>find</Emphasis> een krachtiger hulpmiddel
en is <Emphasis>locate</Emphasis> sneller voor alledaagse snelle zoekopdrachten.
Het volledige bereik aan mogelijke zoekopdrachten zou lange tijd in beslag
nemen om uit te leggen: typ voor meer details
<Emphasis>info find</Emphasis>, waarmee de zeer grondige info pages over
<Emphasis>find</Emphasis> en <Emphasis>locate</Emphasis> te voorschijn
worden gehaald.</para>
</sect1>
<sect1 id="file-tools-file"><title>Vaststellen van de inhoud van bestanden</title>
<para>Debian wordt geleverd met een utility waarmee de inhoud van een
bestand kan worden geraden. Het is niet altijd correct.
Het is echter redelijk accuraat en je kunt het gebruiken om je systeem te
verkennen.
<GlossList>
<glossentry><glossterm>file /bin/cp</glossterm>
<glossdef><para>Je zou iets te zien moeten krijgen als:
<screen>
/bin/cp: ELF 32-bit LSB executable, Intel 386, version 1, stripped
</screen></para>
<para>Het technische deel overslaand, dit is een uitvoerbaar bestand voor
Intel-computers.</para></glossdef></glossentry>
<glossentry><glossterm>file /etc/init.d/boot</glossterm>
<glossdef><para> Geeft deze response:
<screen>
/etc/init.d/boot: Bourne shell script text
</screen>
Wat betekent dat dit een tekstbestand is, met daarin een
Bourne shell script.</para></glossdef></glossentry>
</GlossList></para>
</sect1>
</chapter>
<chapter id="disks"><title>Het gebruik van disks</title>
<sect1 id="disks-concepts"><title>Concepten</title>
<para>Waarschijnlijk is het een goed idee wat theorie uit te leggen voordat
we het mechanisme van het gebruik van disks gaan bespreken. In het bijzonder
het concept <Emphasis>bestandssysteem</Emphasis>.
<!-- opmerking vd vertaler: dit stuk weggelaten omdat dit gaat over de Engelse spelling
van het woord file system <footnote><para>Een aantal mensen spelt het als twee woorden, d.w.z.
"bestands systeem. A quick poll of man pages (<Emphasis>man -k
filesystem</Emphasis>, <Emphasis>man -k 'file system'</Emphasis>)
reveals about an even split. Dus spel ik het als één woord.
</para>
</footnote>
-->
Dit is verwarrend omdat het verscheidene betekenissen heeft.
</para>
<itemizedlist>
<ListItem><para><Emphasis>Het</Emphasis> bestandssysteem verwijst naar de
gehele directory-structuur, te beginnen met de root-directory
<Emphasis>/</Emphasis>, zoals hiervoor is beschreven.</para></listitem>
<ListItem><para>Een "bestandssysteem" betekent in het algemeen iedere
organisatie van bestanden en directory's op een bepaald fysiek device.
"Organisatie" betekent de hiërarchische directory-structuur, en iedere
andere informatie over bestanden die men bij zou kunnen houden: de
grootte, wie permissie heeft ze te wijzigen, enz.
Dus je zou één bestandssysteem op je harddisk kunnen hebben,
en een ander op iedere diskette.
</para></listitem>
<ListItem><para>"Bestandssysteem" wordt ook gebruikt in de betekenis van
een <Emphasis>type</Emphasis> bestandssysteem.
MS-DOS en Windows 3.1 organiseren bestanden bijvoorbeeld op een bepaalde
manier, met bepaalde regels: bestandsnamen kunnen bijvoorbeeld uit slechts 8
tekens bestaan, en er wordt geen informatie over permissies opgeslagen.
Linux noemt dit het <Emphasis>msdos</Emphasis> bestandssysteem.
Linux heeft ook zijn eigen bestandssysteem, genaamd
het <Emphasis>ext2</Emphasis> bestandssysteem (versie twee van het
<Emphasis>ext</Emphasis> bestandssysteem). Je zal het <Emphasis>ext2</Emphasis>
bestandssysteem zo'n beetje continue gebruiken, tenzij je bestanden vanuit een
ander besturingssysteem benadert of andere speciale vereisten hebt.
</para></listitem>
</itemizedlist>
<para>Op ieder fysiek device dat je voor het opslaan van bestanden wenst
te gebruiken moet op z'n minst een bestandssysteem voorkomen.
Dit betekent een bestandssysteem in de tweede betekenis - een hiërarchie
van bestanden en directory's, samen met informatie hierover.
Natuurlijk heeft ieder bestandssysteem een type, dus de derde betekenis zal
bovendien ook in 't spel zijn. Als je meer dan één
bestandssysteem op een enkel device hebt, kan ieder bestandssysteem van een
ander type zijn --- wellicht dat je zowel een DOS-partitie als een
Linux-partitie op je harddisk hebt.
</para>
<para>Het is belangrijk onderscheid te maken tussen het bestandssysteem
en de low-level formattering van de disk. In de wereld van DOS en Macintosh
wordt het bestandssysteem een high-level format genoemd. Wanneer je onder
één van deze besturingssystemen een disk formatteert,
pas je gewoonlijk zowel een low-level format toe als dat je er een
bestandssysteem (high-level format) op aanmaakt.
Onder GNU en Unix-systemen, heeft men het gewoonlijk over gewoon
"formatteren" in de betekenis van een low-level format,
en "het maken van een bestandssysteeem" met als betekenis high-level format.
</para>
<para>Formattering heeft te maken met de bijzonderheden van een bepaald
fysiek device, zoals de exacte fysieke lokatie van je gegevens op een
diskette (bijvoorbeeld aan de rand of dichtbij het midden van de disk).
Het bestandssysteem is het niveau aan organisatie waar je je druk om moet
maken --- namen van directory's en bestanden, hun groottes, enz.
</para>
</sect1>
<sect1 id="disks-mount"><title><Emphasis>mount</Emphasis> en
<Emphasis>/etc/fstab</Emphasis></title>
<para>Deze sectie beschrijft hoe een diskette of Zip-disk kan
worden gemount, de <Emphasis>/dev</Emphasis> directory, en het distribueren
van de directory-structuur over meerdere fysieke apparaten of partities.</para>
</sect1>
<sect1 id="disks-mount-mounting"><title>Mounten van een bestandssysteem</title>
<para>Onder een GNU/Linux-systeem is er geen noodzakelijke overeenkomst
tussen directory's en fysieke devices, zoals die er onder Windows wel is,
waar iedere drive zijn eigen directory-structuur heeft die met een letter wordt
aangegeven (zoals <Emphasis>C:\</Emphasis>).</para>
<para>In plaats daarvan bevinden zich op ieder fysiek device, zoals een
harddisk of diskette, één of meer bestandssystemen.
Om een bestandssysteem toegankelijk te maken, wordt er een bepaalde
directory in een ander bestandssysteem aan toegekend.
Ter voorkoming van cirkelvormigheid, bevindt het root bestandssysteem
(met daarin de root-directory <Emphasis>/</Emphasis>) zich niet in enig
ander bestandssysteem -- je moet het automatisch benaderen wanneer je
Debian boot.
</para>
<para>Een directory in het ene bestandssysteem welk een ander bestandssysteem
bevat, staat bekend als een <Emphasis>mount-point</Emphasis>. Een
mount-point is een directory in een eerste bestandssysteem op een device
(zoals je harddisk) die een tweede bestandssysteem "bevat", misschien
op een ander device (zoals een diskette). Om een bestandssysteem te
benaderen, moet je het op een mount-point mounten.
</para>
<para>Dus als voorbeeld, wil je misschien een CD op het mount-point
<Emphasis>/cdrom</Emphasis> mounten. Dit betekent dat als je in de
directory <Emphasis>/cdrom</Emphasis> gaat kijken, je de inhoud van de
CD te zien zal krijgen. De <Emphasis>/cdrom</Emphasis> directory zelf bevindt
zich eigenlijk op je harddisk. Voor alle praktische doeleinden wordt
de inhoud van de CD onderdeel van het root bestandssysteem, en
als je opdrachten typt en programma's gebruikt maakt het geen verschil
wat de echte fysieke lokatie van de bestanden is.
Je zou een directory op je harddisk genaamd <Emphasis>/cdrom</Emphasis> kunnen
hebben aangemaakt, en er wat bestanden in hebben kunnen geplaatst, en alles
zou op exact dezelfde wijze blijven functioneren.
Zodra je een bestandssysteem hebt gemount, is het niet nodig aandacht te
schenken aan fysieke devices.
</para>
<para>Het is echter wel nodig naar de devices zelf te verwijzen voordat je
een bestandssysteem mount of een bestanddssysteem op een disk aanmaakt waarop
er zich nog geen bevindt. Alle devices hebben namen, en deze bevinden zich in de
<Emphasis>/dev</Emphasis> directory. Als je nu <Emphasis>ls /dev</Emphasis>
intikt, zal je een tamelijk lange lijst met alle mogelijke devices te zien
krijgen, die je ooit ook maar op je Debian-systeem zou kunnen hebben.
</para>
<para>Mogelijke devices zijn onder andere:
<footnote><para>Dit is geen veelomvattende lijst. In het algemeen zal in de
documentatie voor een bepaald device of programma terug te vinden zijn welke
device naam je moet gebruiken. Er zijn honderden verschillende device namen.
Een tamelijk complete (alhoewel niet zeer gedetailleerde) lijst zou op je
systeem beschikbaar moeten zijn in het bestand
<Emphasis>/usr/src/linux/Documentation/devices.txt</Emphasis>.</para>
</footnote></para>
<itemizedlist>
<listitem><para>/dev/hda is IDE drive A. In het algemeen zal dit een harddisk
zijn. IDE verwijst naar het type drive - mocht je niet weten wat dat betekent.
Waarschijnlijk heb je een dergelijke drive, omdat het de meest algemene is.
Je DOS/Windows <Emphasis>C:\</Emphasis> partitie zal zeer waarschijnlijk op
deze drive voorkomen.
</para></listitem>
<ListItem><para><Emphasis>/dev/hdb</Emphasis> is IDE drive B, zoals je
wellicht al geraden zal hebben. Dit zou een tweede harddisk kunnen zijn, of
misschien is het wel een CD-ROM drive.
Drives A en B zijn de eerste en tweede (master en slave) drives op de
primaire IDE-controller. Drives C en D zijn de eerste en tweede drives op
de secundaire controller.
</para></listitem>
<ListItem><para><Emphasis>/dev/hda1</Emphasis> is de eerste
<Emphasis>partitie</Emphasis> van IDE drive A, het is gebruikelijk dat deze
onder een DOS of Windows-systeem <Emphasis>C:\</Emphasis> wordt genoemd. Merk
op dat aan verschillende drives een letter is toegekend, terwijl specifieke
partities van die drives bovendien zijn genummerd.
</para></listitem>
<ListItem><para><Emphasis>/dev/sda</Emphasis> is SCSI-disk A. SCSI is als
IDE, alleen als je niet wat wat het is, heb je waarschijnlijk
<Emphasis>geen</Emphasis> van deze drives. Ze zijn niet zo algemeen in
Intel PC's voor thuisgebruik, alhoewel ze vaak in servers en Macintoshes
worden aangetroffen.
<footnote><para>SCSI-devices hebben een gecompliceerder naamschema dan
IDE-devices, voornamelijk omdat SCSI meer gebruiken heeft.
De partities van een SCSI disk hebben de vorm
<Emphasis>/dev/sda[1-9a-f]</Emphasis>, dat wil zeggen,
<Emphasis>/dev/sda</Emphasis>
(of <Emphasis>sdb</Emphasis> of <Emphasis>sdc</Emphasis>,
enz.) gevolgd door een nummer of letter in de reeks
<Emphasis>1--9</Emphasis> of <Emphasis>a--f</Emphasis>.
<Emphasis>/dev/scd0</Emphasis> is
het eerste SCSI CDROM device; algemene devices zoals
scanners zouden er uit kunnen zien als <Emphasis>/dev/sg0</Emphasis>;
<Emphasis>/dev/st0</Emphasis> is een SCSI tape drive.</para></footnote></para>
</listitem>
<ListItem><para><Emphasis>/dev/fd0</Emphasis> is het eerste diskettestation,
gewoonlijk <Emphasis>A:\</Emphasis> onder DOS. Aangezien diskettes geen
partities hebben, hebben ze slechts nummers, in plaats van het letter-nummer
schema die voor harddisks worden gebruikt.
Voor diskettestations verwijzen de nummers naar het station, en voor harddisks
verwijzen de nummers naar de partities.
</para></listitem>
<ListItem><para><Emphasis>/dev/ttyS0</Emphasis> is de eerste seriële
poort (<Emphasis/COM1:/ onder DOS). <Emphasis>/dev</Emphasis> bevat de namen
van vele devices, niet slechts van de diskdrives.
</para></listitem>
</itemizedlist>
<para>Om een bestandssysteem te mounten, willen we Linux aangeven, het
bestandssysteem dat het op een bepaald device vindt te associëren
met een bepaald mount-point. Tijdens dit proces, kan het zijn dat we Linux
aan moeten geven naar welk soort bestandssysteem het moet zoeken.
</para>
</sect1>
<sect1 id="disks-mount-cdromexample"><title>Voorbeeld: Mounten van een CD-ROM
</title>
<para>Als een eenvoudige demonstratie, zullen we nu het mounten van een
CD-ROM doorlopen, zoals degene die je mogelijk hebt gebruikt om Debian
te installeren. Je moet hier root voor zijn, dus wees voorzichtig;
wanneer je root bent, heb je de bevoegdheden om het gehele systeem te
verprutsen, in plaats van alleen je eigen bestanden. Bij deze opdrachten
wordt ervan uitgegaan dat er zich een CD in je drive bevindt; je zou er nu
één in de drive moeten doen.
<GlossList>
<glossentry><glossterm>su</glossterm>
<glossdef><para>Als je dit nog niet hebt gedaan, moet je óf als
root inloggen, óf root-privileges verkrijgen met de opdracht
<Emphasis>su</Emphasis> (super user). Als je
<Emphasis>su</Emphasis> gebruikt, voer dan het root-wachtwoord in wanneer
daar om wordt gevraagd.</para>
</glossdef></glossentry>
<glossentry><glossterm>ls /cdrom</glossterm>
<glossdef><para>Kijk wat er zich in de
<Emphasis>/cdrom</Emphasis> directory bevindt voordat je begint.
Als je geen <Emphasis>/cdrom</Emphasis> directory hebt, kan het zijn
dat je er één aan moet maken met
<Emphasis>mkdir /cdrom</Emphasis>.</para></glossdef></glossentry>
<glossentry><glossterm>mount</glossterm>
<glossdef><para>Het typen van slechts
<Emphasis>mount</Emphasis> zonder argumenten geeft de huidige gemounte
bestandssystemen weer.</para></glossdef></glossentry>
<glossentry><glossterm>mount -t iso9660 CD-device /cdrom</glossterm>
<glossdef><para>Voor deze opdracht zou je in de opdrachtregel
hierboven CD-device door de naam van je CD-ROM device moeten vervangen.
Als je het niet zeker weet, is <Emphasis>/dev/cdrom</Emphasis> een
goede gok aangezien deze symbolische link op het systeem tijdens het
installatie-proces zou moeten zijn aangemaakt.
Probeer verschillende IDE-devices uit, als dat niet lukt:
<Emphasis>/dev/hdc</Emphasis>, enz. Je zou een bericht te zien moeten krijgen
als:
<screen>
mount: block device /dev/hdc is write-protected, mounting read-only
</screen>
</para>
<para>De <Emphasis>-t</Emphasis> optie geeft het type bestandssysteem
aan, in dit geval <Emphasis>iso9660</Emphasis>. De meeste CD's
zijn <Emphasis>iso9660</Emphasis>. Het volgende argument is de naam van
het te mounten device, en het laatste argument is het mount-point.
Er zijn nog veel andere argumenten voor <Emphasis>mount</Emphasis>; zie de
manual page voor details.</para>
<para>Wellicht bemerk je dat het CDROM-station niet opengaat, zodra het
is gemount. Je moet het station unmounten voordat je de CD verwijdert.
</para></glossdef></glossentry>
<glossentry><glossterm>ls /cdrom</glossterm>
<glossdef><para>Bevestig dat <Emphasis>/cdrom</Emphasis> nu datgene bevat
wat er op de CD in je drive staat.
</para></glossdef></glossentry>
<glossentry><glossterm>mount</glossterm>
<glossdef><para>Kijk nogmaals naar de lijst met bestandssystemen, en
bemerk dat je CD-drive nu is gemount.
</para></glossdef></glossentry>
<glossentry><glossterm>umount /cdrom</glossterm>
<glossdef><para>Dit unmount de CD.
Nu is het veilig om de CD uit de drive te halen.
Neem er kennis van dat de opdracht <Emphasis>umount</Emphasis> zonder "n"
is, ook al wordt het gebruik om het bestandssysteem te
u<Emphasis>n</Emphasis>mounten.
</para></glossdef></glossentry>
<glossentry><glossterm>exit</glossterm>
<glossdef><para>Blijf niet als root ingelogd. Log gewoon voor de
zekerheid onmiddellijk uit.
</para></glossdef></glossentry>
</GlossList>
</para>
</sect1>
<sect1 id="disks-mount-fstab"><title><Emphasis>/etc/fstab</Emphasis>:
Automatiseren van het mount-proces</title>
<para>Het bestand <Emphasis>/etc/fstab</Emphasis> (het staat voor
"file system table") bevat beschrijvingen van bestandssystemen die
je vaak mount. Deze bestandssystemen kunnen dan met een kortere
opdracht worden gemount, zoals <Emphasis>mount /cdrom</Emphasis>.
Je kunt bestandssystemen ook zodanig configureren dat ze automatisch
worden gemount wanneer het systeem boot. Je zal waarschijnlijk al
je harddisk bestandssystemen willen mounten als je boot.</para>
<para>Bekijk dit bestand nu, door het intikken van <Emphasis>more
/etc/fstab</Emphasis>. Het zal twee of meer ingangen hebben die
automatisch werden geconfigureerd toen je het systeem installeerde.
Het ziet er waarschijnlijk ongeveer zo uit:
<screen>
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump > <pass>
/dev/hda1 / ext2 defaults 0 1
/dev/hda3 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/hda5 /tmp ext2 defaults 0 2
/dev/hda6 /home ext2 defaults 0 2
/dev/hda7 /usr ext2 defaults 0 2
/dev/hdc /cdrom iso9660 ro,noauto 0 0
/dev/fd0 /floppy auto noauto,sync 0 0
</screen>
</para>
<para>De eerste kolom geeft een opsomming van het bestandssysteem waarop
het device voorkomt. De tweede geeft het mount-point, de derde het type
bestandssysteem. De regel beginnend met <Emphasis>proc</Emphasis> is een
speciaal bestandssysteem <!-- explained in FIXME xref -->. De
swap-partitie (in het voorbeeld <Emphasis>/dev/hda3</Emphasis>) heeft geen
mount-point, dus in de kolom met mount-points staat
<Emphasis>none</Emphasis>.</para>
<para>De laatste drie kolommen vereisen misschien wat uitleg.</para>
<para>De vijfde kolom wordt gebruikt door het <Emphasis>dump</Emphasis>
utility om te beslissen wanneer een backup moet worden gemaakt van het
bestandssysteem. In de meeste gevallen kun je hier een
<Emphasis>0</Emphasis> plaatsen. <!-- FIXME xref dump/backup --></para>
<para>De zesde kolom wordt door <Emphasis>fsck</Emphasis> gebruikt om te
beslissen in welke volgorde bestandssystemen te controleren wanneer je het
systeem boot. Voor het root bestandssysteem zou in dit veld een
<Emphasis>1</Emphasis> moeten staan, voor bestandssystemen die niet hoeven
te worden gecontroleerd (zoals de swap-partitie) zou een
<Emphasis>0</Emphasis> moeten staan, en
voor alle andere bestandssystemen zou een <Emphasis>2</Emphasis> moeten
zijn ingevuld. <!-- FIXME: cross ref to <Emphasis>fsck</Emphasis> -->
Het is waard te vermelden dat de swap-partitie niet exact een bestandssysteem
is in die zin dat het geen bestanden en directory's bevat, maar het wordt door
de Linux-kernel als secundair geheugen gebruikt.
Om historische redenen, worden de swap-partities echter nog steeds in
dezelfde lijst weergegeven als de bestandssystemen.
</para>
<para>In kolom vier staan één of meer opties die worden
gebruikt bij het mounten van het bestandssysteem.
Hier is een beknopte opsomming (een aantal hiervan hebben waarschijnlijk
nog niet veel zin --- ze zijn voor toekomstige referentie):
<glosslist>
<glossentry><glossterm>async en sync</glossterm>
<glossdef><para>Doe I/O synchronoon of
asynchroon. Synchrone I/O schrijft wijzigingen aan bestand onmiddellijk weg,
terwijl asynchrone I/O gegevens in buffers mag behouden om het later weg
te schrijven, om reden van efficiëncy.
<!-- FIXME: cross ref to section on sync for
full explanation. Also, should recommend when to
choose one or the other. --></para></glossdef></glossentry>
<glossentry>
<glossterm>ro en rw</glossterm>
<glossdef><para>Mount het bestandssysteem read-only of read-write.
Als het niet nodig is dat je veranderingen op dit bestandssysteem aanbrengt,
kun je het beter read-only mounten, zodat je er niet per ongeluk een rommeltje
van maakt. Bovendien zouden ook read-only devices (zoals CD-ROM apparaten en
diskettes met schrijfprotectie tabs) read-only moeten worden gemount.
</para></glossdef></glossentry>
<glossentry><glossterm>auto en noauto</glossterm>
<glossdef><para>Als het systeem boot, of wanneer je
<Emphasis>mount -a</Emphasis> intikt, probeert <Emphasis>mount</Emphasis>
alle bestandssystemen te mounten die in <Emphasis>/etc/fstab</Emphasis> staan
opgesomd. Als je niet wilt dat een bestandssysteem automatisch wordt gemount,
zou je gebruik moeten maken van de optie <Emphasis>noauto</Emphasis>.
Het is waarschijnlijk een goed idee bij verwijderbare media, zoals diskettes,
gebruik te maken van <Emphasis>noauto</Emphasis>, omdat er wel of geen disk
in de drive kan zitten. Deze bestandsssystemen zal je gewoonlijk pas
handmatig willen mounten nadat een disk in de drive is gedaan.
</para></glossdef></glossentry>
<glossentry>
<glossterm>dev en nodev</glossterm>
<glossdef><para>Gebruik of negeer device-bestanden op dit bestandssysteem.
Mogelijk dat je <Emphasis>nodev</Emphasis> wilt gebruiken als je de root-directory van een ander systeem op je systeem mount --- je zal niet willen dat je
systeem de devices op de andere computer zal proberen te gebruiken.
</para></glossdef></glossentry>
<glossentry><glossterm>user en nouser</glossterm>
<glossdef><para>Sta toe of verbiedt dat gewone gebruikers het bestandssysteem
kunnen mounten. <Emphasis>nouser</Emphasis> betekent dat alleen root het
bestandssysteem kan mounten. Dit is de normaal getroffen maatregel.
Je zou gebruik kunnen maken van de optie <Emphasis>user</Emphasis>
om het diskettestation zonder root te hoeven zijn, te benaderen.
</para></glossdef></glossentry>
<glossentry>
<glossterm>exec en noexec</glossterm>
<glossdef><para>Sta de uitvoering van bestanden op dit bestandssysteem
wel of niet toe. Je hebt deze opties waarschijnlijk niet nodig.
</para></glossdef></glossentry>
<glossentry>
<glossterm>suid en nosuid</glossterm>
<glossdef><para>Sta wel of niet toe dat de suid bit gevolgen heeft.
Je hebt deze opties waarschijnlijk niet nodig.</para></glossdef></glossentry>
<glossentry>
<glossterm>defaults</glossterm>
<glossdef><para>Equivalent aan: <Emphasis>rw</Emphasis>, <Emphasis>dev</Emphasis>,
<Emphasis>suid</Emphasis>, <Emphasis>exec</Emphasis>, <Emphasis>auto</Emphasis>,
<Emphasis>nouser</Emphasis>, <Emphasis>async</Emphasis>. Je kunt
<Emphasis>defaults</Emphasis> gevolgd door andere opties specificeren om
specifieke aspecten van <Emphasis>defaults</Emphasis> te overschrijven.
</para></glossdef></glossentry>
</glosslist></para>
</sect1>
<sect1 id="disks-mount-removable"><title>Verwijderbare disks (floppies, Zip disks, enz.)</title>
<para>Voeg de volgende regels toe aan het bestand <Emphasis>/etc/fstab</Emphasis>:
<screen>
/dev/sda1 /mnt/zip ext2 noauto,user 0 0
/dev/sda4 /mnt/dos msdos noauto,user 0 0
</screen>
Vanaf dat moment, zal het mogelijk zijn, de DOS geformatteerde Zip-disks met
de opdracht <Emphasis>mount /mnt/dos</Emphasis>, en Linux geformatteerde
Zip-disks met de opdracht <Emphasis>mount /mnt/zip</Emphasis> te mounten.
<footnote><para>Als je SCSI-harddisks in je systeem hebt, zal je in het
voorbeeld hierboven <Emphasis>sda</Emphasis> moeten veranderen in
<Emphasis>sdb</Emphasis> of <Emphasis/sdc/, enz...</para></footnote>
</para>
</sect1>
<!-- FIXME : Moet nog worden geschreven
<sect1 id="disks-preparing"><title>Disks voorbereiden</title>
voor gebruik: formatteren en aanmaken van een bestandssysteem
<para>
</sect>
<sect1 id="disks-lilo"><title>LILO</title>
<para>Hoe het te configureren, slechts de basis
<chapter id="printers"><title>Gebruiken van printers</title>
<sect1 id="printers-commands"><title>lpr en friends</title>
<para>lprm, lpq
<sect1 id="printers-setup"><title>Instellen van printers</title>
<chapter id="network"> <title>Instellen van networking </title>
<para>(single-user dialup or single-user office machine. any other
possibilities we should cover?)
<sect1 id="network-config"><title>Relevante bestanden in /etc</title>
<sect1 id="network-ethernet"> ethernet
-->
<sect1 id="network-ppp"><title>PPP</title>
<!--sect1 id="network-ppp-introduction"><title>Introductie</title>-->
<para>Als je via een telefoonlijn een verbinding met het internet tot stand
wilt brengen, gebruik je hiervoor PPP (het Point-To-Point Protocol). Dit is
de standaardmethode die door ISP's (Internet Service Providers) wordt geboden
om verbinding te maken met het internet. In aanvulling op het gebruik van PPP
om je ISP te bellen, kun je de computer naar inkomende connecties laten
luisteren --- dit laat je je computer vanaf een remote lokatie bellen.
</para>
<para>Deze sectie is een beknopte gids zonder opschik voor het
instellen van PPP onder Debian. Zie de uitstekende
<ULink url="PPP HOWTO">http://metalab.unc.edu/LDP/HOWTO/PPP-HOWTO.html</Ulink>
van het Linux Documentatie Project, als het er op aankomt dat je meer details
nodig hebt. De HOWTO gaat er in meer detail op in als je er in bent
geïnteresseerd of als je unieke vereisten hebt.
</para>
</sect1>
<sect1 id="network-ppp-preparation"><title>Voorbereiding</title>
<para>Het configureren van PPP onder GNU/Linux is ongecompliceerd, zodra je
alle benodigde informatie hebt. Debian maakt het je zelf nog makkelijker
met zijn eenvoudige configuratie-tools.
</para>
<para>Zorg dat je alle door je ISP geleverde informatie hebt, voor je
begint. Dit zou onder andere kunnen zijn:
<itemizedlist>
<ListItem><para>Gebruikersnaam of login</para></listitem>
<ListItem><para>Wachtwoord</para></listitem>
<ListItem><para>Je static IP (Internet Protocol) adres, als die er is
(deze zien er ongeveer zo uit <Emphasis>209.81.8.242</Emphasis>)</para>
</listitem>
<ListItem><para>Bitmask (dit ziet er ongeveer zo uit
<Emphasis>255.255.255.248</Emphasis>)</para></listitem>
<ListItem><para>De IP-adressen van de name-server van je ISP (of DNS).</para>
</listitem>
<ListItem><para>Een eventuele speciale login-procedure die door de ISP wordt
verlangd.</para>
</listitem>
</itemizedlist></para>
<para>Vervolgens zal je in je hardware-setup willen investeren:
of je modem met GNU/Linux werkt, en op welke seriële poort het
is aangesloten.
</para>
<para>Er is een simpele regel waarmee kan worden vastgesteld of je
modem zal werken. Als het een "WinModem" of "host-based modem" is, zal het
niet werken. Deze modems zijn goedkoop omdat ze zeer weinig functionaliteit
bieden, en vereisen dat de computer de tekortkomingen ervan opvangt.
Helaas betekent dit dat ze complex te programmeren
zijn, en fabrikanten stellen de specificaties in het algemeen niet beschikbaar
voor ontwikkelaars.</para>
<para>Als je een modem hebt met op een eigen kaart aanwezige elektronica, zou
je er helemaal geen problemen mee moeten krijgen.
</para>
<para>Onder GNU/Linux systemen, worden de seriële poorten voorgesteld
door <Emphasis>/dev/ttyS0</Emphasis>, <Emphasis>/dev/ttyS1</Emphasis>,
enzovoort. Je modem is haast ongetwijfeld verbonden met óf poort 0
oacute;f poort 1, equivalent aan <Emphasis>COM1:</Emphasis> en
<Emphasis>COM2:</Emphasis> onder Windows. Als je niet weet waar je modem aan
verbonden is, kan <Emphasis>wvdialconf</Emphasis> proberen het te detecteren
(zie hieronder); probeer anders gewoon beiden en kijk welke werkt.
</para>
<para>Als je met je modem wilt communiceren of je ISP wilt bellen zonder
gebruik te maken van PPP, kun je het programma <Emphasis>minicom</Emphasis>
gebruiken. Mogelijk moet je het minicom package nog installeren, voordat het
programma beschikbaar is.</para>
</sect1>
<sect1 id="network-ppp-wvdial"><title>De gemakkelijke manier: <Emphasis>wvdial</Emphasis></title>
<para>De eenvoudigste manier om PPP aan de gang te krijgen, is met het
programma <Emphasis>wvdial</Emphasis>. Het maakt wat redelijke gissingen
en probeert het voor je in te stellen. Als het werkt, heb je geluk.
Als het 't verkeerde gist, zal je wat handmatig moeten doen.</para>
<para>Overtuig jezelf ervan dat je de volgende packages hebt geïnstalleerd:
<itemizedlist>
<ListItem><para><Emphasis>ppp</Emphasis></para></listitem>
<ListItem><para><Emphasis>ppp-pam</Emphasis></para></listitem>
<ListItem><para><Emphasis>wvdial</Emphasis></para></listitem>
</itemizedlist></para>
<para>Wanneer je het package <Emphasis>wvdial</Emphasis> installeert,
kan het zijn dat je de mogelijkheid krijgt het te configureren. Volg anders
voor het instellen van <Emphasis>wvdial</Emphasis> de volgende eenvoudige
stappen:
<ItemizedList>
<ListItem><para>Login als root, met behulp van <Emphasis>su</Emphasis>
zoals in een eerder hoofdstuk is beschreven.
</para></listitem>
<ListItem><para><Emphasis>touch /etc/wvdial.conf</Emphasis>
<Emphasis>touch</Emphasis> zal een leeg bestand aanmaken als het bestand
niet bestaat --- het configuratieprogramma vereist een bestaand bestand.
</para></listitem>
<ListItem><para><Emphasis>wvdialconf /etc/wvdial.conf</Emphasis>
</para>
<para>Dit betekent dat je een configuratiebestand genaamd
<Emphasis>/etc/wvdial.conf</Emphasis> aan het maken bent.</para></listitem>
<ListItem><para>Beantwoord alle vragen die op het scherm verschijnen.
<Emphasis>wvdialconf</Emphasis> zal ook scannen naar je modem en je
vertellen op welke seriële poort het is aangesloten; wellicht dat je
voor toekomstige referentie hier een aantekening van wilt maken.
</para></listitem>
<ListItem><para><Emphasis>/etc/wvdial.conf</Emphasis> zou er nu ongeveer
zo uit moeten zien:
<screen>
[Dialer Defaults]
Modem = /dev/ttyS1
Baud = 115200
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 S11=55 +FCLASS=0
; Phone = [Target Phone Number]
; Username = [Your Login Name]
; Password = [Your Password]
</screen>
</para>
<para>Vervang de informatie tussen blokhaken door de juiste informatie
en verwijder de puntkomma's aan het begin van de van toepassing zijnde
regels en je bent klaar! Zo zou een compleet <Emphasis>wvdial.conf</Emphasis>
bestand er ongeveer uit moeten zien:
<screen>
[Dialer Defaults]
Modem = /dev/ttyS1
Baud = 115200
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 S11=55 +FCLASS=0
Phone = 5551212
Username = beavis
Password = password
</screen>
</para></listitem>
</ItemizedList></para>
<para>Nu dat <Emphasis>wvdial.conf</Emphasis> is ingesteld, maak je een
verbinding met je ISP door het intikken van
<Emphasis>wvdial</Emphasis>. Als dit niet werkt, zal je je waarschijnlijk
moeten verdiepen in een handmatige PPP-configuratie.
</para>
</sect1>
<sect1 id="network-ppp-pppd"><title>Handmatige instelling</title>
<para>Dit is nog steeds niet zo moeilijk, alhoewel het iets moeilijker
is dan met <Emphasis>wvdial</Emphasis>. De snel-en-eenvoudige samenvatting:
typ als root <Emphasis>pppconfig</Emphasis>, beantwoord de vragen,
typ dan <Emphasis>pon</Emphasis> om in te loggen, en <Emphasis>poff</Emphasis>
om uit te loggen. <!--We zullen er echter in meer detail op ingaan.--></para>
<!-- FIXME <para> NOT FINISHED FIXME (finish inserting all of Ivan's stuff) -->
</sect1>
</chapter>
<chapter id="dpkg"><title>Verwijderen en installeren van software</title>
<sect1 id="dpkg-dpkg"><title>Het <command>dpkg</command> package utility </title>
<!-- FIXME say something about it?
<sect1 id="dpkg-what"><title>Wat een packagebeheer utility doet</title>
-->
<para>Het is gebruikelijk dat een applicatie of utility programma uit
nogal wat bestanden bestaat.
Dit kunnen bibliotheekbestanden zijn, gegevensbestanden zoals spelscenario's
of ikonen, configuratiebestanden, manual pages en documentatie.
Je zal er ongetwijfeld voor willen zorgen dat je alle bestanden die je nodig
hebt op de juiste plaats hebt, als je het programma installeert.
</para>
<para>Je zou ook de mogelijkheid willen hebben, het programma te de-installeren.
Wanneer je iets de-installeert, wil je er ook zeker van zijn dat alle ermee
verbonden bestanden zijn verwijderd. Als echter een programma dat je nog
steeds op het systeem hebt, die bestanden nodig heeft, wil je er zeker van
zijn ze te behouden.
</para>
<para>Als laatste zou je een programma ook willen kunnen upgraden. Wanneer
je een upgrade uitvoert, wil je verouderde bestanden verwijderen en nieuwe
bestanden toevoegen, zonder daarmee enig onderdeel van het systeem
te ruïneren.
</para>
<para>Het Debian package-systeem lost deze problemen op. Het maakt het je
mogelijk software <Emphasis>packages</Emphasis>, handige kleine bundels met
programma-bestanden en informatie die de computer helpen ze juist te beheren,
te installeren, verwijderen en upgraden. De bestandsnamen van Debian-packages
eindigen op de extensie <Emphasis>.deb</Emphasis>, en ze zijn beschikbaar
op de ftp-site of op je officiële Debian CD-ROM.
</para>
<!-- FIXME : Moet nog worden geschreven...
<sect1 id="dpkg-ftp"> Verkrijgen van de bestanden
<para> Organisatie van de ftp-site, CD
<para> Vermeld niet-us packages.
<para> Beschrijf stabiele vs. onstabiele distributies.
-->
<!--<sect1 id="dpkg-apt"> Apt-->
</sect1>
<sect1 id="apt-config"><title>Apt configureren</title>
<para>Debian levert nu een tool genaamd Apt (voor "A Package Tool") om
beheerders te helpen eenvoudiger software toe te voegen of te verwijderen.
Je eerste taak zal bestaan uit het aanpassen van het configuratiebestand
<Emphasis>/etc/apt/sources.list</Emphasis>.
Deze package resource list wordt gebruikt om archieven van het package
distributie-systeem dat op het systeem in gebruik is te lokaliseren.
De soure-list is ontworpen om ieder aantal actieve sources en een
variëteit aan source media te ondersteunen.
In het bestand staat één source per regel met datgene
waar de meeste voorkeur naar uitgaat bovenaan.
Het formaat van een <Emphasis>sources.list</Emphasis> record is:
<screen>deb uri distributie [component1] [component2] [...]</screen>
De URI voor het deb type moet de basis van de Debian-distributie aangeven,
van waaruit APT de benodigde informatie kan vinden.
distributie kan een exact path specificeren, in welk geval de componenten
achterwege moeten worden gelaten en distributie moet eindigen op een slash (/).
Dit is handig voor als er slechts een bepaalde sub-sectie van het archief
aangeduid door de URI van belang is.
Als distributie geen exact path specificeert, moet er op z'n minst
één component aanwezig zijn.
</para>
<para>De huidige herkende URI typen zijn cdrom, file, http, en ftp.
<glosslist>
<glossentry><glossterm>file</glossterm>
<glossdef><para>Met het file-schema is het mogelijk dat een willekeurige
directory in het bestandssysteem als archief in aanmerking wordt genomen.
Dit is handig voor NFS-mounts en lokale mirrors of archieven.
</para></glossdef>
</glossentry>
<glossentry><glossterm>cdrom</glossterm>
<glossdef><para>Met het cdrom-schema is het mogelijk APT als lokale CDROM-drive
met media swapping te gebruiken. Gebruik het programma apt-cdrom(8) om
cdrom-records in de source-list aan te maken.
</para></glossdef>
</glossentry>
<glossentry><glossterm>http</glossterm>
<glossdef><para>Het http-schema specificeert een HTTP-server voor het archief.
Als een omgevingsvariabele $http_proxy in het formaat http://server:port/ is
ingesteld, zal de proxy-server aangegeven in $http_proxy worden
gebruikt. Gebruikers van authenticatie HTTP/1.1 proxy's mogen een string in
het formaat http://user:pass@server:port/ gebruiken. Dit is een onveilige
authenticatie methode.
</para></glossdef>
</glossentry>
<glossentry><glossterm>ftp</glossterm>
<glossdef><para>Het ftp-schema specificeert een FTP-server voor het archief.
APT's FTP functioneren is hoog configurabel; zie voor meer informatie de
apt.conf(5) manual page.</para></glossdef>
</glossentry>
<glossentry><glossterm>copy</glossterm>
<glossdef><para>Het copy-schema is identiek aan het file-schema behalve
dat de packages naar de cache-directory worden gekopieerd in plaats van dat
ze direct vanaf hun lokatie worden gebruikt.
Dit is handig voor die mensen die een zip-disk gebruiken om bestanden
met APT te kopiëren.
</para></glossdef></glossentry>
</glosslist></para>
<para>Een paar voorbeelden:
<screen>deb http://www.debian.org/archive stable main contrib</screen></para>
<para>Maak gebruik van HTTP om het archief op www.debian.org te benaderen,
en gebruikt hiervoor de stable/main en stable/contrib gebieden.
<screen>deb ftp://ftp.debian.org/debian unstable main contrib non-free</screen>
</para>
<para>Gebruik FTP op het archief op ftp.debian.org, onder de /debian
directory te benaderen en gebruikt hierbij de unstable/main, unstable/contrib
en unstable/non-free gebieden.
<screen>deb ftp://ftp.debian.org/debian stable main</screen></para>
<para>Gebruik FTP om het archief op ftp.debian.org, onder de /debian
directory te benaderen, en gebruik het stable/main gebied.
</para>
<para>Als deze regel evenals die in het vorige voorbeeld in
<Emphasis>sources.list</Emphasis> voorkomt, wordt voor beide resource regels
een enkele FTP-sessie gebruikt.
<screen>deb file:/home/vincent/debian stable main contrib non-free</screen>
Gebruik het lokaal opgeslagen archief (of NFS gemounte) op
/home/vincent/debian voor stable/main, stable/contrib, en stable/non-free.
</para>
<!-- FIXME: Add an screen with the cdrom: access method -->
</sect1>
<sect1 id="apt-usage"><title>Gebruiken van apt-get.</title>
<para>
<Emphasis>apt-get</Emphasis> is de command-regel tool voor het hanteren
van packages en kan worden aangemerkt als de gebruikers
"back-end" naar apt. <Emphasis>apt-get</Emphasis> is zeer ongecompliceerd
in het gebruik.
<screen>apt-get [options] [command] [package ...]</screen></para>
<para>Waar <Emphasis>command</Emphasis> staat voor één van:
<glosslist>
<glossentry><glossterm>update</glossterm>
<glossdef><para>update wordt gebruikt voor het hersynchroniseren van
de package overzichtsbestanden vanuit hun bronnen.
De overzichten met beschikbare packages worden opgehaald
vanuit de locatie(s) gespecificeerd in <Emphasis>/etc/apt/sources.list
</Emphasis>. Met deze opdracht worden bijvoorbeeld bij het gebruik van een
Debian-archief de Packages.gz bestanden opgehaald en gescand, waardoor
informatie over nieuwe en bijgewerkte packages beschikbaar is.
Een update zou altijd voor een <Emphasis>upgrade dist-upgrade</Emphasis>
moeten worden verricht.
</para></glossdef>
</glossentry>
<glossentry><glossterm>upgrade</glossterm>
<glossdef><para>upgrade wordt gebruikt om de nieuwste versies van alle
thans geïnstalleerde packages op het systeem vanuit de bronnen
opgesomd in <Emphasis>/etc/apt/sources.list</Emphasis> te installeren.
Op het moment geïnstalleerde packages waar nieuwe versies van
beschikbaar zijn, worden opgehaald en bijgewerkt; onder geen enkele voorwaarde
zullen thans geïnstalleerde packages worden verwijderd, of zullen nog
niet geïnstalleerde packages worden opgehaald en geïnstalleerd.
Nieuwe versies van thans geïnstalleerde packages die zonder het wijzigen
van de installatie-status van een andere package niet kunnen worden bijgewerkt,
zullen in hun huidige versie blijven.
Eerst moet een <Emphasis>apt-get update</Emphasis> worden uitgevoerd zodat
apt-get weet dat er nieuwe versies van packages beschikbaar zijn.
</para></glossdef>
</glossentry>
<glossentry><glossterm>dist-upgrade</glossterm>
<glossdef><para><Emphasis>dist-upgrade</Emphasis>, in aanvulling op de
uitvoering van de functie <Emphasis>upgrade</Emphasis>, gaat het ook op
intelligente wijze om met het wijzigen van afhankelijkheden bij nieuwe
versies van packages; een "slim" conflict resolutie systeem, en het zal
proberen de belangrijkste packages te upgraden en als dit nodig is ten koste
van de minder belangrijke packages. In het bestand
<Emphasis>/etc/apt/sources.list</Emphasis> staat een
lijst met de lokaties waarvan de gewenste package bestanden op te halen.</para></glossdef>
</glossentry>
<glossentry><glossterm>install</glossterm>
<glossdef><para><command>install</command> wordt gevolgd door één
of meer packages die voor de installatie zijn gewenst. Ieder package is
de naam van een package, niet de volledig gekwalificeerde bestandsnaam
(onder een Debian GNU/Linux-systeem zou <Emphasis/lsdo/ het argument zijn en
niet <Emphasis/ldso_1.9.6-2.deb/). Alle packages vereist door de package(s)
gespecificeerd voor installatie zullen ook worden opgehaald en
geïnstalleerd. Het <Emphasis>/etc/apt/sources.list</Emphasis> bestand
wordt gebruikt om de gewenste packages te lokaliseren.
Als er een koppelteken aan de naam van het package is toegevoegd (zonder
tussenliggende spaties), zal het aangegeven package worden verwijderd als het is
geïnstalleerd. Dit laatste kenmerk mag worden gebruikt om door
<Emphasis/apt-get/'s conflict resolutie systeem gemaakte beslissingen te
overschrijven.
</para></glossdef>
</glossentry>
<glossentry><glossterm>remove</glossterm>
<glossdef><para><command>remove</command> is identiek aan install behalve
dat de packages worden verwijderd in plaats van geïnstalleerd.
Als aan de naam van het package een plus-teken is toegevoegd
(zonder tussenliggende spatie), zal het geïndentificeerde package worden
geïnstalleerd.</para></glossdef>
</glossentry>
<glossentry><glossterm>check</glossterm>
<glossdef><para><command>check</command> is een diagnostische tool; het werkt
de package cache bij en controleert op gebrekkige packages.</para></glossdef>
</glossentry>
<glossentry><glossterm>clean</glossterm>
<glossdef><para><command>clean</command> ruimt de lokale opslagplaats met
opgehaalde package bestanden op. Het verwijdert alles behalve het lock bestand
vanuit <Emphasis>/var/cache/apt/archives/</Emphasis> en <Emphasis>/var/cache/apt/archives/partial/</Emphasis>.</para></glossdef>
</glossentry>
</glosslist></para>
<para>De meest nuttige opties zijn:
<glosslist>
<glossentry><glossterm>-m</glossterm>
<glossdef><para>Negeer eventueel ontbrekende packages.</para></glossdef>
</glossentry>
<glossentry><glossterm>-d</glossterm>
<glossdef><para>Download alleen de benodigde packages, maar installeer
ze niet.</para></glossdef>
</glossentry>
<glossentry><glossterm>-f</glossterm>
<glossdef><para>Herstel gebrekkige afhankelijkheden; Start
<command>apt-get -f</command> install om automatisch de afhankelijkheids
problemen op je systeem te repareren.
</para></glossdef>
</glossentry>
</glosslist></para>
</sect1>
<!--<sect1 id="dpkg-dselect"><title>Gebruiken van dselect.</title>-->
<sect1 id="dpkg-commandline"><title>Handmatig gebruiken van dpkg</title>
<para>De eenvoudigste manier om een enkel package te installeren dat je
hebt gedownload is met de opdracht <Emphasis>dpkg -i</Emphasis>
(als afkorting van <Emphasis>dpkg --install</Emphasis>).
Stel dat je het package <Emphasis>icewm_0.8.12-1.deb</Emphasis> hebt
gedownload en je het graag wilt installeren.
Log eerst in als root en tik dan in:
<screen>
dpkg -i icewm_0.8.12-1.deb
</screen>
en icewm versie 0.8.12 zal worden geïnstalleerd. Als je reeds een
oudere versie had, zal dpkg het upgraden in plaats van het naast elkaar
installeren van beide versies.
</para>
<para>Als je een package wilt verwijderen, heb je twee opties:
De eerste is het meest intuïtief:
<screen>
dpkg -r icewm
</screen>
Hiermee zal het package icewm worden verwijderd (<Emphasis>-r</Emphasis>
is een afkorting voor <Emphasis>--remove</Emphasis>). Je geeft bij
<Emphasis>--remove</Emphasis> alleen 'icewm' op, terwijl
<Emphasis>--install</Emphasis> de volledige <Emphasis/.deb/ vereist.</para>
<para><Emphasis>--remove</Emphasis> zal configuratiebestanden voor het
package op je systeem achterlaten. Een configuratiebestand is gedefinieerd
als ieder bestand dat je mogelijk hebt gewijzigd om het programma voor je
systeem of je voorkeuren aan te passen. Op deze manier hoef je alles
geen tweede keer in te stellen, als je het package later herinstalleert.
</para>
<para>Het kan echter zijn dat je ook de configuratiebestanden wilt
verwijderen, dus dpkg voorziet ook in een <Emphasis>--purge</Emphasis>
optie. <Emphasis>dpkg --purge icewm</Emphasis> zal alle laatste bestanden
geassocieerd met het icewm package permanent verwijderen.
</para>
</sect1>
</chapter>
<chapter id="troubleshooting"><title>Probleemoplossing</title>
<sect1 id="troubleshooting-frozen"><title>Debian is bevroren of gecrasht!</title>
<para>Als je Debian systeem bevriest, is het mogelijk een bug en crasht het
systeem. Echter eerlijk gezegd gebeurt dit niet zo vaak --- veel mensen
overkomt maanden, of zelfs jaren geen crash, zelfs niet bij zwaar gebruikt.
GNU/Linux is uiterst betrouwbaar. Als je vaker problemen hebt, dan is er
waarschijnlijk iets mis; vraag om hulp
(zie de <XRef LinkEnd="docs-support">).</para>
<para>Het komt echter vaker voor dat het scherm bevriest door een bug in
de X-server, vooral wanneer ervan en naar de X virtuele console wordt
overgeschakeld. Bij de nieuwere X-servers is het waarschijnlijker dat dit
gebeurt of dat ze gewoon crashen; het is voor het XFree86 project moeilijk
bij te blijven met de laatste mogelijkheden van alle beschikbare video-kaarten.
</para>
<para>Als het scherm bevriest, is het systeem meestal nog steeds actief,
er is vanaf de console gewoon geen wisselwerking meer mogelijk.
Als je op een netwerk bent aangesloten, zou het mogelijk moeten zijn om
vanaf een ander werkstation in te loggen. Zodra je bent ingelogd,
kun je op ordelijke wijze rebooten (d.w.z. typ <Emphasis>reboot</Emphasis>).
Als je niet op een netwerk bent aangesloten, zal het indrukken van
<Emphasis>C-A-DEL</Emphasis> meestal wel werken.
Als dit geen van beiden lukt, kan het zijn dat je het systeem gewoon af
moet sluiten en <Emphasis>fsck</Emphasis> de disk bij de volgende boot
moet laten repareren.
</para>
</sect1>
<sect1 id="troubleshooting-termgarbage"><title>Mijn terminal functioneert niet
zoals het hoort
</title>
<para>Soms zal je terminal in reverse mode geraken, zal het weigereren naar
een nieuwe regel te gaan en wanneer je de return-toets indrukt, zal het rommel
op je scherm weergeven, of op andere wijze niet juist werken. Dit komt bijna
altijd door een poging een binair bestand met <Emphasis>cat</Emphasis> of
<Emphasis>more</Emphasis> te bekijken (soms wordt het ook door een bug in het
programma veroorzaakt). Je kunt proberen het te herstellen door het invoeren
van de opdracht <Emphasis>reset</Emphasis>. Als dit geen resultaat oplevert,
probeer dan het intikken van <Emphasis/echo C-vESCc/ (dwz: druk op C-v, dan
ESC, en dan 'c'). Log uit en weer in, als ook dat niet lukt.</para>
<para>Het probleem is dat terminals met speciale
<Emphasis>control sequences</Emphasis> worden bestuurd waarmee wordt
aangegeven dat de terminal moet overgaan op reverse video-mode, de cursor
moet positioneren, enz. Als je een binair bestand naar de terminal
stuurt, is het mogelijk dat deze control sequences in het bestand voorkomen.
De terminal raakt hierdoor van slag.</para>
</sect1>
<sect1 id="troubleshooting-vi"><title>De computer genereert een beep wanneer ik een toets indruk en mijn scherm toont een tekstbestand en/of een heleboel
<Emphasis>~</Emphasis> symbolen. </title>
<para>Je bent per ongeluk in <Emphasis>vi</Emphasis> vast komen te zitten.
Zie de <Xref LinkEnd="editor-vi">.</para>
</sect1>
</chapter>
<chapter id="advanced"><title>Geavanceerde onderwerpen</title>
<!-- <para>FIXME : Question
(Should advanced topics be here? I think it would be nice
to have some of these, just to show people the possibilities
and give some conceptual explanation that won't really be in a
reference manual. Also it always feels nice to make it to a
chapter called "advanced topics". Self-esteem booster for the
newbie. :)</para>-->
<!-- FIXME : Needs to be written
<sect1 id="advanced-scripting"> Introduction to shell scripting
<sect1 id="advanced-scripting-why">Wat en waarom
<para>Automatiseer eenvoudige taken.
<sect1 id="advanced-scripting-screen"> Een eenvoudig voorbeeld
<para>Ideën?
<sect1 id="advanced-files">Geavanceerde bestanden
-->
<sect1 id="advanced-files-hardlinks"><title>De werkelijke aard van bestanden: hardlinks en inodes</title>
<para>Ieder bestand op je systeem wordt voorgesteld door een
<Emphasis>inode</Emphasis> (voor Informatie Node; uitgesproken als "ai-node"):
in een inode staat alle informatie over het bestand.
Een inode is echter niet direct zichtbaar.
In plaats daarvan is iedere inode in het bestandssysteem door één
of meer <Emphasis>hard links</Emphasis> gelinkt. Hard links
bevatten de naam van het bestand, en het inode-nummer. De inode bevat het
bestand zelf, d.w.z. de lokatie van de informatie die op disk wordt
opgeslagen , zijn toegangspermissies, het type van het bestand, enzovoort.
Het systeem kan ieder inode terugvinden zodra het 't inode-nummer heeft.
</para>
<para>Een enkel bestand kan meer dan één link hebben.
Dit betekent dat meerdere bestandsnamen naar hetzelfde bestand verwijzen
(dat wil zeggen dat ze zijn verbonden met hetzelfde inode-nummer).
Je kunt echter geen hardlinks over bestandssystemen heen maken:
alle hardlinks moeten naar een bepaald bestand (inode) op hetzelfde
bestandssysteem zijn. Dit komt omdat ieder bestandssysteem zijn eigen set
inodes heeft, en er kunnen dus dubbele inode-nummers tussen bestandssystemen
zijn.</para>
<para>Aangezien alle hardlinks naar een gegeven inode naar
<Emphasis>hetzelfde bestand</Emphasis> verwijzen, kun je wijzigingen aan het
bestand maken, verwijzend naar de naam ervan, en die wijzigingen dan
verwijzend naar een andere naam, bekijken. Probeer:
<GlossList>
<glossentry><glossterm>cd; echo "hello" > eerste-link</glossterm>
<glossdef><para><Emphasis>cd</Emphasis> naar je home-directory en maak een
bestand aan genaamd <Emphasis>eerste-link</Emphasis> met het woord "hello".
Wat je in feite hebt gedaan is het doorsturen van de uitvoer van
<Emphasis>echo</Emphasis> (<Emphasis>echo</Emphasis> echoot gewoon terug
wat je het hebt opgegeven), waarbij de uitvoer in
<Emphasis>eerste-link</Emphasis> werd geplaatst. Zie het hoofdstuk over
shells voor een volledige uitleg.
<!-- FIXME xref --></para>
</glossdef></glossentry>
<glossentry><glossterm>cat eerste-link</glossterm>
<glossdef><para>Bevestig de inhoud van <Emphasis>eerste-link</Emphasis>.</para>
</glossdef></glossentry>
<glossentry><glossterm>ln eerste-link tweede-link</glossterm>
<glossdef><para>Maak een hardlink aan: <Emphasis>tweede-link</Emphasis> verwijst
nu naar dezelfde inode als <Emphasis>eerste-link</Emphasis>.</para></glossdef>
</glossentry>
<glossentry><glossterm>cat tweede-link</glossterm>
<glossdef><para>Constateer dat <Emphasis>tweede-link</Emphasis> hetzelfde is als
<Emphasis>eerste-link</Emphasis></para>
</glossdef></glossentry>
<glossentry><glossterm>ls -l</glossterm>
<glossdef><para>Het aantal hardlinks weergegeven voor
<Emphasis>eerste-link</Emphasis> en <Emphasis>tweede-link</Emphasis> is 2.
</para></glossdef></glossentry>
<glossentry><glossterm>echo "change" >> tweede-link</glossterm>
<glossdef><para>Dit is een andere shell redirectie truc - maak je geen zorgen
om de details. We hebben het woord "change" toegevoegd aan
<Emphasis>tweede-link</Emphasis>. Constateer dit met
<Emphasis>cat tweede-link</Emphasis>.</para></glossdef></glossentry>
<glossentry><glossterm>cat eerste-link</glossterm>
<glossdef><para><Emphasis>eerste-link</Emphasis> bevat ook het woord "change"!
Dit komt doordat <Emphasis>eerste-link</Emphasis> en
<Emphasis>tweede-link</Emphasis> naar <Emphasis>hetzelfde bestand</Emphasis>
verwijzen. Het doet er niet toe hoe je het noemt wanneer je het wijzigt.
</para></glossdef></glossentry>
<glossentry><glossterm>chmod a+rwx eerste-link</glossterm>
<glossdef><para>Wijzig de permissies van <Emphasis>eerste-link</Emphasis>.
Geef een <Emphasis>ls -l</Emphasis> als bevestiging dat de permissies van
<Emphasis>tweede-link</Emphasis> ook zijn veranderd. Dit betekent dat de
permissie informatie in de inode wordt bewaard, niet in links.
</para></glossdef></glossentry>
<glossentry><glossterm>rm eerste-link</glossterm>
<glossdef><para>Verwijder deze link. Dit is een subtiliteit
van <Emphasis>rm</Emphasis> --- het verwijdert werkelijk links.
geen bestanden. Typ nu <Emphasis>ls -l</Emphasis> en zie dat
<Emphasis>tweede-link</Emphasis> er nog steeds is. Het aantal hardlinks voor
<Emphasis>tweede-link</Emphasis> is verlaagd naar één.</para></glossdef></glossentry>
<glossentry><glossterm>rm tweede-link</glossterm>
<glossdef><para>Verwijder de andere link. Wanneer er geen links meer
naar een bestand zijn, verwijdert Linux het bestand zelf, dat wil zeggen,
zijn inode.
</para></glossdef></glossentry>
</GlossList></para>
<para>Alle bestanden werken op deze manier --- zelfs speciale typen
bestanden, zoals devices (b.v. <Emphasis>/dev/hda</Emphasis>).</para>
<para>Een directory is gewoon een lijst met bestandsnamen en
inode-nummers, dat wil zeggen, een lijst met hardlinks.
Als je een hardlink aanmaakt, voeg je slechts een naam-nummer paar toe
aan een directory. Als je een bestand verwijdert, ben je gewoon een
hardlink vanuit een directory aan het verwijderen.
</para>
</sect1>
<sect1 id="advanced-files-types"><title>Type bestanden</title>
<para>Één detail dat we tot nu toe verborgen hebben gehouden, is
dat de Linux kernel bijna alles als een bestand in aanmerking neemt.
Tevens directory's en devices: het zijn slechts speciale soorten bestanden.
</para>
<para>Zoals je je misschien kunt herinneren, wordt door het eerste teken van een
<Emphasis>ls -l</Emphasis> het type bestand weergegeven.
Voor een gewoon bestand, zal dit gewoon een <Emphasis>-</Emphasis> zijn.
Andere mogelijkheden zijn:
<itemizedlist>
<ListItem><para><Emphasis>d</Emphasis> (directory)</para></listitem>
<ListItem><para><Emphasis>l</Emphasis> (symbolische link)</para></listitem>
<ListItem><para><Emphasis>b</Emphasis> (block device)</para></listitem>
<ListItem><para><Emphasis>c</Emphasis> (character device)</para></listitem>
<ListItem><para><Emphasis>p</Emphasis> (named pipe) </para></listitem>
<ListItem><para><Emphasis>s</Emphasis> (socket)</para></listitem>
</itemizedlist></para>
<sect2 id="advanced-files-types-symlinks"><title>Symbolische links</title>
<para>Symbolische links (worden ook wel symlinks of soft links genoemd)
zijn de andere soort links naast hardlinks. Een symlink
is een speciaal bestand dat "verwijst naar" een hardlink op ieder
gemount bestandssysteem. Wanneer je de inhoud van een symlink probeert te lezen,
geeft het de inhoud van het bestand waarnaar het verwijst in plaats van de
inhoud van de symlink zelf. Aangezien directory's, devices en andere symlinks
typen bestanden zijn, kun je niet met een symlink hiernaar verwijzen.
</para>
<para>Dus een hardlink bestaat uit een bestandsnaam en
een inode-nummer. Een bestand is eigenlijk een inode: een lokatie op de disk,
type bestand, permissie mode, enz. Een symlink is een inode dat de naam
van een hard link bevat.
Door een symlink vormt een bestandsnaam met een andere bestandsnaam een koppel,
terwijl door een hardlink een bestandsnaam met een inode-nummer wordt gekoppeld.
</para>
<para>Alle hardlinks naar hetzelfde bestand hebben gelijke status.
Dat wil zeggen dat de ene net zo goed is als de ander; als je
een bewerking op de ene uitvoert is dat hetzelfde als wanneer je die bewerking
op één van de anderen uitvoert.
Dit komt doordat hardlinks allen naar dezelfde inode verwijzen.
Bewerkingen op symlinks, aan de andere kant,
hebben soms effect op de inode van de symlink (die met de naam van een
hardlink) en soms effect op de hardlink waarnaar verwezen wordt.
</para>
<para>Er zijn een aantal belangrijke verschillen tussen symlinks en
hardlinks:
<itemizedlist>
<ListItem><para>Symlinks kunnen bestandssystemen doorkruisen. Dit komt omdat de
volledige bestandsnaam, te beginnen bij de root-directory, er in staat,
en alle volledige bestandsnamen zijn uniek.
Aangezien hardlinks naar inode-nummers verwijzen, en inode-nummers alleen
binnen een enkel bestandssysteem uniek zijn,
zouden ze dubbelzinnig zijn als het bestandssysteem niet bekend was.
</para></ListItem>
<ListItem><para>Je kunt wel symlinks, maar geen hardlinks naar directory's
aanmaken. Iedere directory heeft hardlinks --- de weergave ervan in de
ouderdirectory, zijn <Emphasis>.</Emphasis> entry, en de
<Emphasis>..</Emphasis> entry in ieder van zijn subdirectory's
--- maar om het bestandssysteem orde op te leggen, zijn er geen andere
hardlinks naar directory's toegestaan. Het gevolg daarvan is dat het aantal
bestanden in een directory gelijk is aan het aantal hard links naar die
directory minus twee (je trekt de naam van de directory en de link
<Emphasis>.</Emphasis> ervan af).</para></ListItem>
<ListItem><para>Je kunt alleen een hardlink maken naar een bestaand bestand,
omdat er een inode-nummer moet zijn waarnaar het verwijst. Je kunt echter wel
een symlink naar ieder bestand aanmaken, ongeacht of een dergelijke
bestandsnaam in werkelijkheid bestaat.
</para></ListItem>
<ListItem><para>Het verwijderen van een symlink verwijdert slechts de
link. Het heeft geen effect op het bestand waarnaar werd gelinkt.
Het verwijderen van de enige hardlink naar een bestand verwijdert
het bestand.</para></ListItem>
</itemizedlist></para>
<para>Probeer:
<Glosslist>
<glossentry><glossterm>cd; ln -s /tmp/me MyTmp</glossterm>
<glossdef><para><Emphasis>cd</Emphasis> naar je home-directory.
<Emphasis>ln</Emphasis> met de <Emphasis>-s</Emphasis> optie maakt een
symbolische link; in dit geval één genaamd
<Emphasis>MyTmp</Emphasis> welke naar de
bestandsnaam <Emphasis>/tmp/me</Emphasis> verwijst.</para></glossdef>
</glossentry>
<glossentry><glossterm>ls -l MyTmp</glossterm>
<glossdef><para>De uitvoer zou er ongeveer zo uit moeten zien:
<screen>
lrwxrwxrwx 1 havoc havoc 7 Dec 6 12:50 MyTmp -> /tmp/me
</screen>
De datum en gebruiker/groepsnamen zullen voor jou natuurlijk anders zijn.
Merk op dat het type bestand een
<Emphasis>l</Emphasis> is, waarmee wordt aangegeven dat dit een symbolische
link is. Let ook op de permissies - symbolische links hebben altijd deze
permissies. Als je de opdracht <Emphasis>chmod</Emphasis> op een symlink
probeert toe te passen, zal het in werkelijkheid de permissies van het bestand
waarnaar het verwijst wijzigen.
</para></glossdef></glossentry>
<glossentry><glossterm>chmod 700 MyTmp</glossterm>
<glossdef><para>Je zal de foutmelding "No such file or directory"
krijgen, omdat het bestand <Emphasis>/tmp/me</Emphasis> niet bestaat.
Merk op dat je er toch een symlink naar aan zou kunnen maken.
</para></glossdef></glossentry>
<glossentry><glossterm>mkdir /tmp/me</glossterm>
<glossdef><para>Maak de directory <Emphasis>/tmp/me</Emphasis> aan.</para>
</glossdef></glossentry>
<glossentry><glossterm>chmod 700 MyTmp</glossterm>
<glossdef><para>Zou nu moeten werken.</para>
</glossdef></glossentry>
<glossentry><glossterm>touch MyTmp/mijn-bestand</glossterm>
<glossdef><para>Maak een bestand aan in <Emphasis>MyTmp</Emphasis>.</para>
</glossdef></glossentry>
<glossentry><glossterm>ls /tmp/me</glossterm>
<glossdef><para>Het bestand werd eigenlijk aangemaakt in
<Emphasis>/tmp/me</Emphasis>.</para></glossdef></glossentry>
<glossentry><glossterm>rm MyTmp</glossterm>
<glossdef><para>Verwijder de symbolische link. Merk op dat hiermee de
link wordt verwijderd, niet datgene waarnaar het verwijst. Dus je gebruikt
<Emphasis>rm</Emphasis> niet <Emphasis>rmdir</Emphasis>.
</para></glossdef></glossentry>
<glossentry><glossterm>rm /tmp/me/mijn-bestand; rmdir /tmp/me</glossterm>
<glossdef><para>Ruim achter je op.</para></glossdef></glossentry>
</GlossList></para>
</sect2>
</sect1>
<sect1 id="files-misc-types-devices"><title>Devicebestanden</title>
<para>Devicebestanden refereren naar fysieke of virtuele devices op je
systeem, zoals je harddisk, videokaart, scherm of toetsenbord. Een voorbeeld
van een virtueel device is de console
voorgesteld door <Emphasis>/dev/console</Emphasis>.</para>
<para>Er zijn twee soorten devices: <Emphasis>character
devices</Emphasis> kunnen per teken tegelijkertijd worden benaderd,
dat wil zeggen dat de kleinste eenheid data die naar het device kan worden
geschreven of van het device kan worden ingelezen een teken (byte) is.</para>
<para><Emphasis>Block devices</Emphasis> moeten in grotere eenheden,
genaamd blokken, worden benaderd, welke een aantal tekens bevatten.
Je harddisk is een block device.</para>
<para>Je kunt device-bestanden net als andere soorten bestanden lezen
en schrijven, alhoewel het heel goed mogelijk is dat er voor mensen
onbegrijpelijke brabbeltaal in het bestand staat.
Het is waarschijnlijk niet zo'n goed idee om willekeurige gegevens naar
deze bestanden weg te schrijven. Soms is het echter wel handig: je kunt
bijvoorbeeld een postscript bestand naar het printer device
<Emphasis>/dev/lp0</Emphasis> dumpen, of modem-opdrachten naar het
device-bestand voor de van toepassing zijnde seriële poort zenden.
</para>
<!-- FIXME : Moet nog worden geschreven
<sect3 id="advanced-files-types-devices-creating"> Hoe device-bestanden
aan te maken.
<para> <Emphasis>MAKEDEV</Emphasis>
</sect1>
-->
</sect1>
<sect1 id="advanced-files-types-devices-null"><title>/dev/null</title>
<para><Emphasis>/dev/null</Emphasis> is een speciaal devicebestand dat alles
verwerpt wat je ernaar wegschrijft. Als je iets niet wilt, gooi het dan in
<Emphasis>/dev/null</Emphasis>. Het is in essentie een bodemloze put.
Als je <Emphasis>/dev/null</Emphasis> inleest, krijg je onmiddellijk een
end-of-file (EOF) teken. <Emphasis>/dev/zero</Emphasis> is vergelijkbaar,
je krijgt echter een <Emphasis>\0</Emphasis>-teken als je er vanuit probeert
te lezen. (niet hetzelfde als het nummer nul).</para>
</sect1>
<sect1 id="advanced-files-types-pipes"><title>Named pipes (FIFO's)</title>
<para>Een named pipe is een bestand dat als een pipe functioneert.
Je plaatst iets in het bestand en het komt er aan de andere kant weer uit.
Dus wordt het een FIFO genoemd, of First-In-First-Out: het eerste dat
je in de pipe plaatst is het eerste wat er aan de andere kant weer uitkomt.
</para>
<para>Als je naar een named pipe schrijft, zal het proces dat naar de
pipe schrijft niet eindigen totdat de er naar toe geschreven informatie
vanuit de pipe wordt gelezen. Als je vanuit een named pipe leest, zal
het lezende proces net zolang wachten totdat er iets te lezen is voordat
het eindigt. De grootte van de pipe is altijd nul --- er worden geen gegevens
in bewaard, het koppelt slechts twee processen net zoals met het symbool
<Emphasis>|</Emphasis> van de shell.
Aangezien deze pipe echter een naam heeft, hoeven de twee processen niet
op dezelfde opdrachtregel voor te komen of zelfs door dezelfde gebruiker
te hoeven uitgevoerd.
</para>
<para>Je kunt het als volgt uitproberen:
<GlossList>
<glossentry>
<glossterm>cd; mkfifo mypipe</glossterm>
<glossdef><para>Maak de pipe.</para></glossdef>
</glossentry>
<glossentry>
<glossterm>echo "hello" > mypipe &</glossterm>
<glossdef><para>Plaats een proces in de achtergrond waarmee wordt geprobeerd
"hello" naar de pipe te schrijven.
Het proces keert niet terug vanuit de achtergrond; het wacht op iemand die
vanuit de pipe leest.
</para></glossdef>
</glossentry>
<glossentry>
<glossterm>cat mypipe</glossterm>
<glossdef><para>Op dit punt zou het <Emphasis>echo</Emphasis>-proces terug
moeten keren, aangezien <Emphasis>cat</Emphasis> vanuit de pipe leest, en
het <Emphasis>cat</Emphasis>-proces zal <Emphasis>hello</Emphasis> afdrukken.
</para></glossdef></glossentry>
<glossentry>
<glossterm>rm mypipe</glossterm>
<glossdef><para>Je kunt pipes net als ieder ander bestand verwijderen.
</para></glossdef></glossentry>
</GlossList></para>
</sect1>
<sect1 id="advanced-files-types-sockets"><Title>Sockets</title>
<para>Sockets zijn vergelijkbaar met pipes, ze werken alleen over het netwerk.
Dit is hoe je computer networking doet: mogelijk heb je weleens gehoord van
"WinSock"; sockets voor Windows.</para>
<para>We zullen hier niet verder op ingaan, omdat er waarschijnlijk geen
gelegenheid zal zijn waarin je ze gebruikt, tenzij je gaat programmeren.
Als je op je computer echter een bestand ziet gemarkeerd met type
<Emphasis>s</Emphasis>, dan weet je wat het is.
</para>
</sect1>
<sect1 id="advanced-files-proc"><title>Het <Emphasis>proc</Emphasis> bestandssysteem</title>
<para>De Linux-kernel stelt een speciaal bestandssysteem beschikbaar,
die onder Debian-systemen onder <Emphasis>/proc</Emphasis> is gemount. Dit
is een "pseudo-filesystem" --- het bestaat niet echt op één
van je fysieke devices.</para>
<para>Het <Emphasis>proc</Emphasis> bestandssysteem bevat informatie over
het systeem en draaiende processen. Een aantal "bestanden" in
<Emphasis>/proc</Emphasis> zijn voor mensen redelijk te begrijpen
(probeer <Emphasis>cat /proc/meminfo</Emphasis> of
<Emphasis>cat /proc/cpuinfo</Emphasis>) terwijl een aantal anderen
uit een vreemde verzameling cijfers bestaat. Vaak maken systeemutility's hier
gebruik van om informatie bijeen te vergaren en het je
op een wat begrijpelijker manier te presenteren.</para>
<para>Mensen raken vaak in paniek wanneer ze één bestand
in het bijzonder opmerken --- <Emphasis>/proc/kcore</Emphasis> --- welke
in het algemeen zeer groot is. Dit is (min of meer) een kopie van de inhoud
van het geheugen van je computer. Het wordt gebruikt voor het debuggen van
de kernel. Het bestaat in feite nergens, dus maak je geen zorgen om de grootte
ervan.
</para>
<para>Als je alles wilt weten over datgene in
<Emphasis>/proc</Emphasis>, typ je <Emphasis>man 5 proc</Emphasis>.</para>
</sect1>
<sect1 id="advanced-files-permissions"><title>Geavanceerde aspecten van
bestandspermissies</title>
<sect2 id="advanced-files-permissions-absolute"><title>Numierieke argumenten
gebruiken met <Emphasis>chmod</Emphasis></title>
<para>Eerder in dit hoofdstuk, noemde we in 't kort dat je met gebruik
van nummers bestandspermissies in kunt stellen.
De numerieke notatie wordt een absolute mode genoemd, als tegengestelde
van de symbolische notatie (e.g. <Emphasis>u+rx</Emphasis>) wat vaak
een relatieve mode wordt genoemd. Dit omdat het nummer een exact
in te stellen mode aangeeft, en het symbool specificeert slechts een
te maken wijziging (b.v. "voeg voor de gebruiker read en execute-permissie toe").</para>
<para>De numerieke mode bestaat uit een serie cijfers in het octale
stelsel of twaalf binaire cijfers. Ieder octaal cijfer (grondtal is acht)
wordt voorgesteld door drie binaire cijfers:
één octaal cijfer en drie binaire cijfers zijn twee manieren
om de decimale cijfers 0 tot en met 7 weer te geven.
</para>
<para>Het afleiden van een bepaalde mode is tamelijk ongecompliceerd.
Je telt eenvoudigweg de gewenste modes bij elkaar op, of trekt de modes
ervan af die je niet wilt. Als voorbeeld,
gebruikerspermissies, met alleen de read-permissie aangezet, zou in binair
<Emphasis>100</Emphasis> opleveren. Gebruikerspermissies met alleen de
write-permissie aangezet zou in binair <Emphasis>010</Emphasis> zijn.
Gebruikerspermissies met zowel read als write aangezet zou
<Emphasis>100 + 010 = 110</Emphasis> zijn. Als alternatief zou je het
in het octale stelsel kunnen zetten: <Emphasis>4 + 2 = 6</Emphasis>.</para>
<para>Voor de volledige mode, tel je gewoon de cijfers uit deze tabel
bij elkaar op:
<screen>
0001 anderen, execute
0002 anderen, write
0004 anderen, read
0010 groep, execute
0020 groep, write
0040 groep, read
0100 gebruiker, execute
0200 gebruiker, write
0400 gebruiker, read
1000 sticky bit
2000 zet group id
4000 zet user id
</screen>
</para>
<para>Beslis eerst welke permissies je in wilt stellen, als je de tabel
wilt gebruiken. Tel de nummers voor die permissies dan bijelkaar op.
Het totaal is je mode. Om bijvoorbeeld mode
<Emphasis>0755</Emphasis> te verkrijgen:
<screen>
0001 o=x
0004 o=r
0010 g=x
0040 g=r
0100 u=x
0200 u=w
+ 0400 u=r
-------
0755 u=rwx go=rw
</screen>
</para>
<para>Je zou deze mode eigenlijk gewoon <Emphasis>755</Emphasis> noemen,
zonder de voorafgaande <Emphasis>0</Emphasis>, omdat <Emphasis>chmod</Emphasis>
aan het begin van de mode automatisch nullen toevoegt
--- <Emphasis>7</Emphasis> betekent mode <Emphasis>0007</Emphasis>.</para>
<para>Voor het instellen van een bestand op <Emphasis>755</Emphasis>,
zou je typen <Emphasis>chmod 755 mijn-bestand</Emphasis>.</para>
<para><Emphasis>755</Emphasis> is een vrij algemene mode voor directory's,
aangezien het iedereen toestaat de directory te gebruiken, maar alleen
de eigenaar kan bestanden in de directory aanmaken en verwijderen.
<Emphasis>644</Emphasis> is de analoge mode voor bestanden, en is ook vrij
algemeen.
Het staat iedereen toe het bestand te gebruiken, alleen de eigenaar kan
het wijzigen.
Voor uitvoerbare bestanden is <Emphasis>755</Emphasis> een algemene mode;
dit is gewoon <Emphasis>644</Emphasis> plus permissie om uit te voeren
(<Emphasis>644 + 111 = 755</Emphasis>).</para>
</sect2>
<!-- FIXME : Moet nog worden geschreven
<sect1 id="advanced-files-permissions-suid">Making files suid/sgid
<para>
</sect1>
<sect1 id="advanced-files-permissions-sticky">Instellen van de sticky bit
<para>
</sect1>
-->
<!--
<sect1 id="advanced-files-chattr"><title>chattr</title>-->
<!-- FIXME : Moet nog worden geschreven -->
<!--<para>Een handige tip?
<sect1 id="advanced-files-copying"><title>Large-scale copying</title>
<para>cp -a and variants on the theme. </para>
<para>hoe een oud systeem naar een nieuw systeem te kopiëren.</para>
<para>FIXME whoops, I also listed this topic under Backup
Tools. need to decide.</para>
</sect1>
<sect1 id="advanced-files-undocumented"><title>Other concepts not
yet covered, but should be</title>
<para> fsck, dd, fdisk, etc. </para>
<para>what package is a file in? <para>
MSDOS vs. Mac vs. Unix text files sync</para> </sect1>
<sect1 id="advanced-kernel"> Compileren van de kernel
<para>Hoe, wat en waarom</para>
</sect1>
<sect1 id="advanced-security"><title>Een paar woorden over beveiliging</title>
<para>The basics of security from a user standpoint. Maintaining
one's privacy. What other users can see of your account. </para>
<sect1 id="advanced-programming">Programmeren onder Linux
<para>Iets over de Linux programmeeromgeving. Aimed
at, say, people taking CS101. Nothing on <Emphasis>how</Emphasis> to
program, just Emacs, gcc, gdb, ddd, etc. as programming
tools.
<para> Likely based on debug.tex
<chapter id="next"> <title>Where to from here? </title>
<sect1 id="next-manuals">Andere te lezen Debian handboeken
<sect1 id="next-resources">Andere bronnen
<para>Een paar goede URL's, verwijzingen naar meta-documenten.
<chapter id="helping"><title>Meewerken aan Debian: Hoe kan ik helpen?</title>
<sect1 id="helping-bugs"> Submit bug reports
<para>How to do that with the "bug" package
<sect1 id="helping-other"> Other things
<para>Whatever we want to say here.
<chapter id="apps-appendix"> <title> A brief survey of available applications </title>
<para>(Would this be useful? Or does dselect really do the job? It
seems like there are a significant number of debian-user and
newsgroup questions to the effect of "I'm looking for an
application that does X". We could just list what exists, more
or less, maybe recommend one option over another when there's
an obvious choice).</para>
<sect1 id="A-apps-whatever"> (Subtitles could copy the structure of the menu system)
</chapter>
-->
</sect1>
</chapter>
<chapter id="components-appendix"><title>Samenvatting van de componenten van een GNU/Linux-systeem </title>
<para>Misschien dat het je wat onduidelijk is wat GNU/Linux nu exact is.
Wat is de Linux-kernel, vs. de GNU-utility's, vs. het X
Window Systeem? Hier is een klein ASCII-diagram waarmee wordt getoond hoe
het allemaal met elkaar in verband staat.
(mijn verontschuldigingen, het is niet erg aantrekkelijk).</para>
<screen>
Window Manager ----- Gnome Programs/Libraries (in ontwikkeling)
| | ----------/ \
| | / ---------\
| X Clients Programma's/Applicaties ---- Shared Libraries
| | \ | /
\ | ---------------\ | /-----------
X Server -------------- Linux Kernel
| / |
| /--------------- |
Videokaart -------- Andere Computer Hardware (Geheugen, disk, enz.)
</screen>
<para>De X-server en X-clients <Emphasis>zijn</Emphasis>
applicaties, maar het zijn applicaties die op speciale manier een wisselwerking
met de video-hardware en andere applicaties aangaan.
</para>
<para>De window manager is een speciale X-Client, en dus ook een applicatie.
Alle X-programma's maken gebruik van de Shared Libraries, maar
in het diagram verschijnt geen lijn.</para>
<para>Wanneer het Gnome (GNU Network Object Model Environment) project
klaar is, zal het helpen de X-omgeving met een speciale set programma's
en library's te verenigen, waarbij er sprake zal zijn van een wisselwerking
tussen de window manager en andere X-clients.
</para>
<para>De GNU utility's zijn kleine programma's die eenvoudige taken
verrichten: zoals bijvoorbeeld <Emphasis>mv</Emphasis>,
<Emphasis>cp</Emphasis>, <Emphasis>tar</Emphasis>.</para>
</chapter>
<chapter id="booting-appendix">
<title>Booten van het systeem</title>
<!-- FIXME really this section requires finding out exactly
what options the install disks offer, and how the install
disks word things. "Boot from hard disk," "make a floppy,"
etc.
[FIXME really also they've already figured out how to
boot, since it's part of installation, so perhaps ditch this
section entirely - it's too long anyway. -->
<para>In dit hoofdstuk wordt beschreven wat er gebeurt tijdens het GNU/Linux
bootproces.
</para>
<para>
Hoe je je systeem boot is afhankelijk van hoe het systeem bij
de installatie van Debian is ingesteld. Zeer waarschijnlijk hoef je slechts
de computer aan te zetten. Maar het kan zijn dat je eerst een diskette
in het diskettestation moet doen.
</para>
<para>Linux wordt door een programma met de naam LILO, of LInux LOader
geladen. LILO kan ook andere besturingssystemen laden, en je vragen welk
systeem je geladen wilt hebben.
</para>
<para>Het eerste wat er gebeurt als je een Intel PC aanzet, is dat de
BIOS wordt uitgevoerd. BIOS staat voor Basic Input Output System. Het is
een programma dat permanent in de computer op chips, die alleen kunnen
worden gelezen, is opgeslagen. Het voert wat minimale testen uit, en kijkt
dan of er zich een diskette in de eerste diskdrive bevindt. Als het er
één vindt, zoekt het naar een "bootsector" op die disk, en
start dan met het uitvoeren van de code als die er is. Als er een disk is,
maar geen bootsector, zal de BIOS een melding afdrukken vergelijkbaar met:
<screen>
Non-system disk or disk error
</screen>
Het verwijderen van de disk en het indrukken van een toets zal er voor
zorgen dat het bootproces weer verdergaat.
</para>
<para>Als er zich geen diskette in de drive bevindt, zoekt de BIOS op de
harddisk naar een master boot record (MBR). Het zal de daar gevonden
code uitvoeren, waarmee het besturingssysteem wordt geladen.
Op GNU/Linux systemen, kan het zijn dat LILO, de LInux LOader
de MBR inneemt, en GNU/Linux zal laden.</para>
<para>Dus als je opteerde LILO op je harddisk te installeren, dan zou je
het woord LILO te zien moeten krijgen, als je computer opstart. Op dat punt,
kun je de linker <Emphasis>Shift</Emphasis>-toets indrukken om te selecteren
welk besturingssysteem te laden - druk op <Emphasis>Tab</Emphasis> voor een
lijst met opties. Typ één van deze opties in en druk op return.
LILO zal het gevraagde besturingssysteem booten.</para>
<para>Als je de <Emphasis>Shift</Emphasis>-toets niet indrukt, zal LILO
na ongeveer 5 seconden automatisch het standaard besturingssysteem laden.
Als je dit wilt, kun je het systeem dat LILO automatisch laadt en hoe lang
het wacht voordat het er één automatisch laadt, aanpassen.
<!-- - zie [FIXME crossref] -->.</para>
<para>Als je LILO niet op je harddisk installeerde, heb je waarschijnlijk
een <Emphasis>bootdisk</Emphasis> aangemaakt. LILO zal zich op de
bootdisk bevinden. Het enige dat je hoeft te doen, is de disk in de diskdrive
te doen voordat je de computer aanzet en de BIOS zal het vinden voordat het
de MBR op de harddisk controleert. Om terug te keren naar een niet-Linux OS,
haal je de bootdisk uit de drive en herstart je de computer
(zorg ervoor dat je vanuit Linux de juiste procedure voor het herstarten
volgt, zie de <XRef LinkEnd="start-shutdown"> voor details.)</para>
<para>LILO laadt de Linux-kernel vanaf disk, en laat het de kernel dan
overnemen. (De kernel is het centrale programma van het besturingssysteem,
aan de leiding van alle andere programma's). De kernel
verwerpt de BIOS en LILO.</para>
<para>Onder niet-Intel platformen, werkt 't iets anders. Maar zodra je
boot, is alles min of meer hetzelfde.
</para>
<para>Linux zoekt naar het type hardware waarop het draait.
Het wil weten welke typen harddisks je hebt, of je wel of geen busmuis
hebt, of je wel of niet bent aangesloten op een netwerk, en nog andere
dergelijke zaken. Linux kan tussen boots niets onthouden, dus
stelt het deze vragen iedere keer als 't opstart. Gelukkig stelt het
deze vragen niet aan <Emphasis>jou</Emphasis>---het ondervraagt de
hardware! Tijdens het booten, zal de Linux-kernel meldingen op het scherm
weergeven waarin het beschrijft wat 't aan het doen is.
</para>
<para>Het ondervragingsproces kan op je systeem problemen veroorzaken, maar
als dit 't doet, was dit waarschijnlijk al zo toen je GNU/Linux voor het eerst
installeerde. Raadpleeg de installatie-instructies als je
problemen ondervindt, of vraag 't op een discussielijst.
</para>
<para>De kernel beheert louter andere programma's, dus zodra het tevreden
is dat alles ok is, moet het een ander programma starten
om iets nuttigs te kunnen doen. Het programma dat door de kernel wordt gestart,
wordt <command>init</command> genoemd. Nadat de kernel
<command>init</command> start, start het geen ander programma meer.
De kernel wordt een manager en een voorziener van services.
</para>
<para>Zodra <command>init</command> is opgestart, voert het een aantal
scripts (bestanden met opdrachten) uit, die het systeem voor gebruik
voorbereiden: ze voeren wat routinezaken uit en
starten heel veel programma's op die bijvoorbeeld een loginprompt weergeven,
naar netwerkverbindingen luisteren, en een log bijhouden van de activiteiten
op de computer.
</para>
<!--
<para>FIXME describe boot scripts here.
-->
</chapter>
<chapter id="misc-appendix"><title>Diversen </title>
<para>Dit hoofdstuk bevat interessante informatie, zoals historische
notities, die niet in de rest van het handboek paste. Het kan in de toekomst
naar een ander handboek worden verplaatst, of in een daarmee samenhangend
hoofdstuk worden geplaatst.
</para>
<sect1 id="unix-history"><title>Unix Historie</title>
<para>In 1969, Bell Telephone Laboratories (Bell Labs, een divisie
van AT& T) werkte met General Electric en Project MAC van MIT aan het
schrijven van een besturingssysteem met de naam Multics. Om een lang verhaal
kort te maken, Bell Labs besloot dat het project nergens toe leidde en
stapte uit de groep. Hiermee bleef Bell Labs zonder goed besturingssysteem
achter.
</para>
<para>Ken Thompson en Dennis Ritchie besloten een besturingssysteem
te schetsen dat aan hun behoeften tegemoet kwam.
Bell Labs had een ongebruikte PDP-7 computer welke Thompson in gebruik wilde
nemen, dus implementeerde hij het systeem dat ze hadden ontworpen op die
machine. Als een woordspeling op Multics, gaf Brian Kernighan, een andere
onderzoeker van Bell Labs, het systeem de naam Unix. Het lukte de groep
een fonds te krijgen om een betere computer te kopen, een PDP-11,
door een plan voor te stellen een tekstverwerkingssysteem te schrijven.
In plaats van de tekstverwerker vanaf het begin te schrijven, maakte ze
een applicatie die onder Unix liep, die ze naar de PDP-11 overdroegen.
</para>
<para>Later, vond Dennis Ritchie de programmeertal "C" uit.
In 1973 werd Unix in C herschreven in plaats van in de
oorspronkelijke assembleertaal.
<footnote><para>Een "assembleertaal" is een nogal basis computertaal die
met een bepaald type computer verbonden is. Het wordt gewoonlijk als een
uitdaging gezien om er in te programmeren.
</para></footnote> In 1977 werd Unix naar een nieuwe computer overgezet door
een proces dat <Emphasis>porting</Emphasis> wordt genoemd weg van
de PDP machines waarop het voorheen had gedraaid. Dit werd bevorderd door
het feit dat Unix in C werd geschreven aangezien veel van de code gewoonweg
kon worden gecompileerd en niet opnieuw hoefde te worden geschreven.
</para>
<para>In de late 1970's, werd het AT& T verboden te concureren
in de computer-industrie, dus gaf het verscheidene college's en
universiteiten zeer goedkoop licenties. Het was buiten academische
instituties moeilijk te krijgen maar was tenslotte ook populair in het
bedrijfsleven. De Unix van vandaag is anders dan de
Unix van 1970. Het heeft twee belangrijke variaties:
System V, van Unix System Laboratories (USL), een
dochteronderneming van SCO<footnote><para>Voorheen was At& T de eigenaar
van USL en later was dit Novell </para></footnote>, en de Berkeley
Software Distributie (BSD). De USL versie is nu aan zijn vierde release,
van SVR4<footnote><para>Een cryptische manier om aan te geven:
"System Five, Release Four".</para></footnote>, terwijl de laatste BSD-versie
4.4 is. Er zijn echter naast deze twee versies veel verschillende Unix-versies.
De meest gepatenteerde versies van Unix zijn afgeleid van één van
deze twee groeperingen. De Unix-versies die werkelijk worden gebruikt,
verenigen gewoonlijk kenmerken van beide variaties.</para>
<para>Huidige gepatenteerde versies van Unix voor Intel PC's kosten
tussen de $500 en $2000, met uitzondering van Solaris x86 waarvan de
prijs door vrije Unix-klonen in het gedrang kwam en werd gedwongen tot
lagere prijzen.
</para>
</sect1>
<sect1><title>GNU/Linux Historie</title>
<para>Debian vindt zijn oorsprong in de oprichting van het GNU-project
in 1984 door Richard M. Stallman. GNU (GNU's Not Unix) is een
project van de Free Software Foundation; hun doel was en is het
Unix besturingssysteem door vrije software te vervangen.
Ze hadden in het begin van 1990 bijna een volledig besturingssysteem geschreven,
maar de kernel ontbrak. Gelukkig verscheen Linux om dit gemis op te vullen.
</para>
<para>De primaire auteur van de Linux-kernel is Linus Torvalds.
Sinds zijn oorspronkelijke versies, is het door ontelbare mensen in
de wereld verbeterd. Het is een kloon van het Unix besturingsssysteem,
geheel vanaf het begin af aan opnieuw geschreven.
Noch USL, noch de University of California,
Berkeley, was betrokken bij het schrijven van Linux. Één van
de interessantere feiten over Linux is dat de ontwikkeling gelijktijdig in
de wereld plaatsvindt. Mensen vanuit Australië tot Finland werken
aan Linux mee en zullen hier hopelijk mee door blijven gaan.
</para>
<para>Linux begon met een project om de 386 chip te verkennen.
Één van Linus eerdere projecten was een programma dat zou
overschakelen tussen het afdrukken van
<Emphasis>AAAA</Emphasis> en <Emphasis>BBBB</Emphasis>.
Dit ontwikkelde zich later in Linux.</para>
<para>Linux valt onder het copyright onder de voorwaarden van de GNU
General Public License (GPL). Dit is een licentie geschreven door
de Free Software Foundation (FSF) die is ontworpen om de software
vrij te houden. In 't kort, zegt het dat alhoewel er voor een kopie zo veel
als je wilt voor in rekening mag worden gebracht, je de persoon dit het kocht
niet kunt beletten het te verkopen, het weg te geven, of aan te passen. Het
betekent ook dat de source-code
<footnote><para>De <Emphasis>source-code</Emphasis> van een programma is wat
de menselijke programmeur leest en schrijft. Het wordt later in machine-code
vertaald die door de computer wordt geïnterpreteerd.
</para></footnote> beschikbaar moet zijn. Dit is handig voor
programmeurs. Iedereen kan Linux aanpassen en zelfs zijn aanpassingen
distribueren, op voorwaarde dat de code onder hetzelfde copyright behouden
blijft --- de GPL.
</para>
<para>Debian wordt GNU/Linux genoemd omdat het een product is van twee
grootscheepse ondernemingen, de Linux kernel en het GNU project.
Ons nog steeds richtend op slechts deze twee bijdragen, worden tienduizenden
medewerkers achterwege gelaten. Het is onmogelijk iedereen
bij te houden die Debian heeft gemaakt tot wat het vandaag is.
</para>
<para>De volgende twee lijsten, van leiders en release mijlpalen, vallen
onder het copyright door Software in the Public Interest en mogen worden
geherdistribueerd maar niet worden gewijzigd (en zijn daarom ook niet vertaald).
</para>
<para>Debian has had several leaders since its beginnings in 1993.
<ItemizedList Mark="Bullet" Spacing="Normal">
<ListItem><para>Ian Murdock founded Debian in August 1993 and led it
until March 1996. This effort was sponsored by the
FSF's GNU project for one year (November 1994 to
November 1995).</para></listitem>
<ListItem><para>Bruce Perens led Debian from April 1996 until December
1997</para></listitem>
<ListItem><para>Ian Jackson led Debian from January 1998 until February 1999.
</para></listitem>
<ListItem><para>Wichert Akkerman is the current Debian leader since February
1999.</para></listitem>
</itemizedlist></para>
<para>Here are a few of the major Debian release milestones:
<itemizedlist>
<ListItem><para>0.01-0.90 were released between August 1993 and December 1993
</para></listitem>
<ListItem><para>0.91 released January 1994 (around 30 developers, primitive packager)</para></listitem>
<ListItem><para>0.93R5 released in March 1995 (dpkg makes its first appearance) </para></listitem>
<ListItem><para>0.93R6 released in November 1995 (around 60 developers, a.out,
first dselect) </para></listitem>
<ListItem><para>1.0 was never released. It later became version 1.1 </para>
</listitem>
<ListItem><para>1.1 'Buzz' released June 1996 (474 packages, 2.0 kernel,
fully ELF, dpkg) </para></listitem>
<ListItem><para>1.2 'Rex' released December 1996 (848 packages, 120 developers) </para></listitem>
<ListItem><para>1.3 'Bo' released July 1997 (974 packages, 200 developers)
</para></listitem>
<ListItem><para>2.0 'Hamm' released July 1998 (1500+ packages, 400+ developers, glibc2) </para></listitem>
<ListItem><para>2.1 'Slink' is scheduled for release in early March 1999.
</para></listitem>
</itemizedlist></para>
</sect1>
<sect1><title>De versienummering van de Linux-kernel</title>
<para>
Het eerste nummer in het versienummer van Linux geeft werkelijk grote
revisies aan. Deze wijzigen zeer langzaam: op dit ogenblik is versie 2
de laatste versie. Het tweede nummer geeft minder belangrijke revisies
aan. Zelfs tweede nummers duiden op stabielere betrouwbare versies van Linux,
terwijl oneven nummer ontwikkelaars versies die vatbaarder voor fouten kunnen
zijn. Het laatste versienummer is het minst belangrijke release-nummer ---
iedere keer dat er een nieuwe versie wordt uitgegeven die mogelijk kleine
problemen herstelt of kleine mogelijkheden toevoegt, wordt dat nummer met
één verhoogd. Op het moment is de stabiele kernel 2.0, en de
ontwikkelaarskernel is 2.1. Als 2.1 klaar is, zal het de stabiele kernel 2.2
worden. De laatste versie van de stabiele kernel is thans 2.0.35, alhoewel
het goed mogelijk is dat dat tegen de tijd dat je dit leest, is gewijzigd.
De stabiele release 2.2 wordt spoedig verwacht.</para>
</sect1>
</chapter>
</book>
|