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 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492
|
.\" MAN PAGE COMMENTS to
.\"
.\" Chet Ramey
.\" Information Network Services
.\" Case Western Reserve University
.\" chet@ins.CWRU.Edu
.\"
.\" Last Change: Wed Apr 1 12:16:09 EST 1998
.\"
.\" Translated into Spanish on Wed 1 through Sat 18 July 1998 by
.\" Gerardo Aburruzaga Garca <gerardo@cica.es>
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.TH BASH 1 "1 Abril 1998" GNU
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
.\" It has to do with `@' appearing in the }1 macro.
.\" This is a problem on 4.3 BSD and Ultrix, but Sun
.\" appears to have fixed it.
.\" If you're seeing the characters
.\" `@u-3p' appearing before the lines reading
.\" `possible-hostname-completions
.\" and `complete-hostname' down in READLINE,
.\" then uncomment this redefinition.
.\"
.de }1
.ds ]X \&\\*(]B\\
.nr )E 0
.if !"\\$1"" .nr )I \\$1n
.}f
.ll \\n(LLu
.in \\n()Ru+\\n(INu+\\n()Iu
.ti \\n(INu
.ie !\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X
.br\}
.el \\*(]X\h|\\n()Iu+\\n()Ru\c
.}f
..
.\"
.\" File Name macro. This used to be `.PN', for Path Name,
.\" but Sun" doesn't seem to like that very much.
.\"
.de FN
\fI\|\\$1\|\fP
..
.SH NOMBRE
bash \- GNU Bourne-Again SHell (el Shell de Bourne otra vez, de GNU)
.SH SINOPSIS
.B bash
[opciones]
[fichero]
.SH DERECHOS DE COPIA
.\" En el original, ".if n ... (C) ..." O sea, "si estamos en nroff
.\" (por contraposicin a troff), ... se imprime (C) en vez de .
.\" Pero a m no me gusta; esto est diseado para leerse no con el
.\" cdigo ASCII sino con el ISO-Latin1, que tiene el carcter , as
.\" que por qu no utilizarlo? (N. del T.)
.if n Bash es Copyright \(co 1989, 1991, 1993, 1995, 1996 por la Free Software Foundation, Inc.
.if t Bash es Copyright \(co 1989, 1991, 1993, 1995, 1996 por la Free Software Foundation, Inc.
.SH DESCRIPCIN
.B Bash
es un intrprete de un lenguaje de rdenes compatible con \fBsh\fP que
ejecuta rdenes ledas desde la entrada estndar o desde un fichero.
.B Bash
tambin incorpora caractersticas tiles tomadas de los shells de
\fIKorn\fP y \fIC\fP (\fBksh\fP y \fBcsh\fP).
.PP
.B Bash
est pensado con la intencin de ser una implementacin conforme con
la especificacin POSIX de Shell y Herramientas, de la IEEE (Grupo de
Trabajo 1003\.2 de la IEEE).
.SH OPCIONES
Adems de las opciones de un solo carcter documentadas en la
descripcin de la orden interna \fBset\fP, \fBbash\fR
interpreta las siguientes opciones cuando es llamado:
.PP
.PD 0
.TP 10
.BI \-c "\| cadena\^"
Si la opcin
.B \-c
est presente, entonces las rdenes se leen de
.IR cadena .
Si hay argumentos tras la
.IR cadena ,
se asignan a los parmetros posicionales, empezando por
.BR $0 .
.TP
.B \-r
Si la opcin
.B \-r
est presente, entonces el shell se vuelve
.I restringido
(vea
.SM
.B "SHELL RESTRINGIDO"
ms abajo).
.TP
.B \-i
Si la opcin
.B \-i
est presente, el shell es
.IR interactivo .
.TP
.B \-s
Si la opcin
.B \-s
est presente, o si no quedan argumentos tras el procesado de las
opciones, entonces las rdenes se leen desde la entrada estndar. Esta
opcin permite definir los parmetros posicionales cuando se llama a
un shell interactivo.
.TP
.B \-D
Se muestra en la salida estndar una lista de cadenas de caracteres
entrecomilladas precedidas por \fB$\fP.
Estas cadenas son las que estn sujetas a traduccin cuando la
localizacin en curso no es C ni POSIX.
Esta opcin implica tambin la \fB\-n\fP; no se ejecuta ninguna orden.
.TP
.B \-\-
Un
.B \-\-
seala el fin de las opciones e inhabilita cualquier posterior
procesado de opciones. Cualesquier argumentos tras
.B \-\-
se tratan como nombres de fichero y argumentos. Un argumento
.B \-
es equivalente a \fB\-\-\fP.
.PD
.PP
.B Bash
tambin interpreta una variedad de opciones multi-carcter.
Estas opciones deben aparecer en la lnea de rdenes antes de las
opciones de un solo carcter para que puedan ser reconocidas.
.PP
.PD 0
.TP
.B \-\-dump\-po\-strings
Equivalente a \fB\-D\fP, pero la salida es en el formato de un fichero
\fBpo\fP (objeto portable), del \fIgettext\fP de GNU.
.TP
.B \-\-dump\-strings
Equivalente a \fB\-D\fP.
.TP
.B \-\-help
Muestra un mensaje de modo de empleo en la salida estndar y acaba con
xito.
.TP
.B \-\-login
Hace que
.B bash
acte como si se le hubiera llamado como un shell de entrada (vea
.SM
.B LLAMADA
ms abajo).
.TP
.B \-\-noediting
No utiliza la biblioteca de GNU
.B readline
para leer lneas de rdenes en interactivo.
.TP
.B \-\-noprofile
No lee ni el fichero de arranque de sistema
.FN /etc/profile
ni ninguno de los ficheros de inicio personales
.IR ~/.bash_profile ,
.IR ~/.bash_login ,
ni
.IR ~/.profile .
Por omisin,
.B bash
lee estos ficheros cuando se le llama como un shell de entrada (vea
.SM
.B LLAMADA
ms adelante).
.TP
.B \-\-norc
No lee ni ejecuta el fichero de inicio personal
.I ~/.bashrc
si el shell es interactivo.
Esta opcin est activa de forma predeterminada si el shell se llama como
.BR sh .
.TP
.B \-\-posix
Cambia el comportamiento de \fBbash\fP donde la operacin normal
difiera del estndar POSIX 1003.2, de forma que concuerde con ste.
.TP
\fB\-\-rcfile\fP \fIfichero\fP
Ejecuta rdenes desde
.I fichero
en vez de desde el fichero de inicio personal estndar
.I ~/.bashrc
si el shell es interactivo (vea
.SM
.B LLAMADA
ms abajo).
.TP
.B \-\-restricted
El shell se vuelve restringido (vea
.SM
.B "SHELL RESTRINGIDO"
ms abajo).
.TP
.B \-\-verbose
Equivale a \fB\-v\fP.
.TP
.B \-\-version
Muestra informacin en la salida estndar sobre la versin de esta
instanciacin de
.B bash
y acaba con xito.
.PD
.SH ARGUMENTOS
Si quedan argumentos tras el procesado de las opciones, y no se han
dado ni la opcin
.B \-c
ni la
.BR \-s ,
se supone que el primer argumento es el nombre de un fichero que
contiene rdenes del shell.
Si
.B bash
se llama de esta manera,
.B $0
se define con el nombre del fichero, y los parmetros posicionales se
definen con los restantes argumentos.
.B Bash
lee y ejecuta rdenes de este fichero, luego acaba.
El estado de salida de \fBbash\fP es el de la ltima orden ejecutada en
el guin.
Si no se ejecuta ninguna orden, el estado de salida es 0.
.SH LLAMADA
Un \fIshell de entrada\fP es aqul cuyo primer carcter del argumento
cero es un
.BR \- ,
o uno que ha sido llamado con la opcin
.BR \-\-login .
.PP
Un shell \fIinteractivo\fP es uno cuya entrada y salida estndares
estn conectadas a terminales (segn determina
.IR isatty (3)),
o uno que ha sido llamado con la opcin
.BR \-i .
.SM
Se define
.B PS1
y
.B $\-
incluye
.B i
si
.B bash
es interactivo,
permitiendo as a un guin del shell o a un fichero de arranque el
comprobar este estado.
.PP
Los siguientes prrafos describen cmo
.B bash
ejecuta sus ficheros de arranque.
Si cualquiera de los ficheros existe pero no puede leerse,
.B bash
informa de un error.
Las tildes de la se expanden en nombres de ficheros como se describe
ms abajo en
.B "Expansin de la tilde"
en la seccin
.SM
.BR EXPANSIN .
.PP
Cuando
.B bash
se llama como un shell de entrada interactivo, primero lee y ejecuta
rdenes desde el fichero \fI/etc/profile\fP, si es que existe.
Tras leer ese fichero, busca \fI~/.bash_profile\fP,
\fI~/.bash_login\fP, y \fI~/.profile\fP, en ese orden, y lee y ejecuta
rdenes del primero de ellos que exista y se pueda leer.
La opcin
.B \-\-noprofile
puede emplearse cuando se llame al shell para inhibir este
comportamiento.
.PP
Cuando un shell de entrada termina,
.B bash
lee y ejecuta rdenes desde el fichero \fI~/.bash_logout\fP, si existe.
.PP
Cuando se arranca un shell interactivo que no es de entrada,
.B bash
lee y ejecuta rdenes desde \fI~/.bashrc\fP, si es que existe.
Esto puede evitarse mediante la opcin
.BR \-\-norc .
La opcin \fB\-\-rcfile\fP \fIfichero\fP forzar a
.B bash
a leer y ejecutar rdenes desde \fIfichero\fP en vez de \fI~/.bashrc\fP.
.PP
Cuando
.B bash
se arranque de forma no interactiva, por ejemplo para ejecutar un
guin del shell, busca la variable
.SM
.B BASH_ENV
en el entorno, expande su valor si est definida, y utiliza el valor
expandido como el nombre de un fichero a leer y ejecutar.
.B Bash
se comporta como si se ejecutaran las siguientes rdenes:
.sp .5
.RS
\f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fR
.RE
.sp .5
pero el valor de la variable
.SM
.B PATH
no se emplea para buscar el nombre del fichero.
.PP
Si
.B bash
se llama con el nombre
.BR sh ,
intenta imitar el comportamiento de arranque de versiones histricas de
.B sh
tanto como sea posible, pero sin salirse del
estndar POSIX.
Cuando se llama como un shell interactivo de entrada, primero intenta
leer y ejecutar rdenes desde
.I /etc/profile
y
.IR ~/.profile ,
en ese orden.
La opcin
.B \-\-noprofile
puede emplearse para inhibir este comportamiento.
Cuando se llama como un shell interactivo con el nombre
.BR sh ,
.B bash
busca la variable
.SM
.BR ENV ,
expande su valor si est definida, y emplea el valor expandido como el
nombre de un fichero a leer y ejecutar.
Como un shell llamado como
.B sh
no intenta leer y ejecutar rdenes desde cualquier otro fichero de
arranque, la opcin
.B \-\-rcfile
no tiene efecto.
Un shell no interactivo llamado con el nombre
.B sh
no intenta leer ningn fichero de arranque.
Cuando se llama como
.BR sh ,
.B bash
entra en modo
.I posix
despus de leer los ficheros de arranque.
.PP
Cuando
.B bash
se arranca en modo
.IR posix ,
como ocurre cuando se da la opcin de lnea de rdenes
.BR \-\-posix ,
sigue el estndar POSIX para los ficheros de arranque.
En este modo, los shells interactivos expanden la variable
.SM
.B ENV
y se leen y ejecutan rdenes desde el fichero cuyo nombre es el valor
expandido de dicha variable.
No se lee ningn otro fichero de arranque.
.PP
.B Bash
intenta determinar cundo est siendo llamado por el demonio de shell
remoto, usualmente \fIrshd\fP.
Si
.B bash
determina que est siendo ejecutado por \fIrshd\fP, lee y ejecuta
rdenes desde \fI~/.bashrc\fP, si tal fichero existe y se puede leer.
Esto no lo har si se le llama con el nombre \fBsh\fP.
La opcin
.B \-\-norc
puede emplearse para inhibir este comportamiento, y la opcin
.B \-\-rcfile
puede utilizarse para forzar la lectura de otro fichero, pero
\fIrshd\fP no llama generalmente al shell con estas opciones ni
permite que se den.
.SH DEFINICIONES
.PP
Las siguientes definiciones se usan a travs del resto de este documento.
.PD 0
.TP
.B blanco
Un espacio en blanco o tabulacin (tab).
.TP
.B palabra
Una secuencia de caracteres considerados por el shell como una sola
unidad.
Tambin se conoce como un
.B lexema
(token).
.TP
.B nombre
Una
.I palabra
que consiste solamente en caracteres alfanumricos y subrayados, y
comienza con un carcter alfabtico o un subrayado. Tambin se llama
.BR identificador .
.TP
.B metacarcter
Un carcter que, cuando no est entrecomillado, separa palabras. Uno
de los siguientes:
.br
.RS
.PP
.if t \fB| & ; ( ) < > espacio tab\fP
.if n \fB| & ; ( ) < > espacio tab\fP
.RE
.PP
.TP
.B operador de control
Un \fIlexema\fP que realiza una funcin de control. Es uno de los
siguientes smbolos:
.RS
.PP
.if t \fB\(bv\(bv & && ; ;; ( ) | <nueva-lnea>\fP
.if n \fB|| & && ; ;; ( ) | <nueva-lnea>\fP
.RE
.PD
.SH "PALABRAS RESERVADAS"
\fIPalabras reservadas\fP son palabras que tienen un significado
especial para el shell. Las siguientes palabras se reconocen como
reservadas cuando no van entrecomilladas y, o son la primera palabra
de una orden simple (vea
.SM
.B GRAMTICA DEL SHELL
ms abajo) o la tercera palabra de una orden
.B case
o
.BR for :
.if t .RS
.PP
.B
.if n ! case do done elif else esac fi for function if in select then until while { } time [[ ]]
.if t ! case do done elif else esac fi for function if in select then until while { } time [[ ]]
.if t .RE
.RE
.SH "GRAMTICA DEL SHELL"
.SS rdenes simples
.PP
Una \fIorden simple\fP es una secuencia de asignaciones opcionales de
variables seguida por palabras separadas por \fBblancos\fP y
redirecciones, y terminadas por un \fIoperador de control\fP. La
primera palabra especifica la orden a ser ejecutada. Las palabras
restantes se pasan como argumentos a la orden pedida.
.PP
El valor devuelto de una \fIorden simple\fP es su estado de salida,
128+\fIn\^\fP si la orden ha terminado debido a la seal
.IR n .
.SS Tuberas
.PP
Una \fItubera\fP es una secuencia de una o ms rdenes separadas por
el carcter
.BR | .
El formato de una tubera es:
.RS
.PP
[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIorden\fP [ \fB|\fP \fIorden2\fP ... ]
.RE
.PP
La salida estndar de
.I orden
se conecta a la entrada estndar de
.IR orden2 .
Esta conexin se realiza antes que cualquier redireccin especificada
por la orden (vea
.SM
.B REDIRECCIN
ms abajo).
.PP
Si la palabra reservada
.B !
precede una tubera, el estado de salida de sta es el NO lgico del
de la ltima orden. De otro modo, el estado de la tubera es el de
salida de la ltima orden.
El shell espera que todas las rdenes de la tubera terminen antes de
devolver un valor.
.PP
Si la palabra reservada
.B time
precede una tubera, se informa del tiempo transcurrido, as como del
de usuario y sistema, consumido en la ejecucin de la tubera, cuando
sta termina.
La opcin \fB\-p\fP cambia el formato de salida al especificado por POSIX.
La variable
.SM
.B TIMEFORMAT
puede definirse como una cadena de caracteres de formato que
especifique cmo la informacin de tiempos debera mostrarse; vea la
descripcin de
.SM
.B TIMEFORMAT
bajo
.B "Variables del Shell"
ms abajo.
.PP
Cada orden en una tubera se ejecuta como un proceso separado (esto
es, en un subshell).
.SS Listas
.PP
Una \fIlista\fP es una secuencia de una o ms tuberas separadas por
uno de los operadores
.BR ; ,
.BR & ,
.BR && ,
o
.BR \(bv\(bv ,
y terminada opcionalmente por uno de
.BR ; ,
.BR & ,
o
.BR <nueva-lnea> .
.PP
De estos operadores de listas,
.B &&
y
.B \(bv\(bv
tienen igual precedencia, seguidos por
.B ;
y
.BR &,
que tienen igual precedencia.
.PP
Si una orden se termina mediante el operador de control
.BR & ,
el shell ejecuta la orden en \fIsegundo plano\fP en un subshell.
El shell no espera que la orden acabe, y el estado devuelto es 0. Las
rdenes separadas por un
.B ;
se ejecutan secuencialmente; el shell espera que cada orden termine,
por orden. El estado devuelto es el estado de salida de la ltima
orden ejecutada.
.PP
Los operadores de control
.B &&
y
.B \(bv\(bv
denotan listas Y (AND) y O (OR) respectivamente.
Una lista Y tiene la forma
.RS
.PP
\fIorden\fP \fB&&\fP \fIorden2\fP
.RE
.PP
.I orden2
se ejecuta si y slo si
.I orden
devuelve un estado de salida 0.
.PP
Una lista O tiene la forma
.RS
.PP
\fIorden\fP \fB\(bv\(bv\fP \fIorden2\fP
.PP
.RE
.PP
.I orden2
se ejecuta si y slo si
.I orden
devuelve un estado de salida distinto de cero. El estado de salida de
las listas Y y O es el de la ltima orden ejecutada en la lista.
.SS rdenes compuestas
.PP
Una \fIorden compuesta\fP es una de las siguientes:
.TP
(\fIlista\fP)
\fIlista\fP se ejecuta en un subshell. Despus de que la orden se
completa, las asignaciones a variables y rdenes internas que
afectaran al entorno del shell no permanecen en efecto. El estado de
retorno es el de salida de \fIlista\fP.
.TP
{ \fIlista\fP; }
\fIlista\fP se ejecuta simplemente en el entorno del shell en curso.
\fIlista\fP debe terminarse con un salto de lnea o un punto y coma.
Esto se conoce como una \fIorden de grupo\fP.
El estado de retorno es el de salida de
\fIlista\fP.
.TP
((\fIexpresin\fP))
La \fIexpresin\fP se evala de acuerdo a las reglas descritas abajo
bajo la seccin
.SM
.BR "EVALUACIN ARITMTICA" .
Si el valor de la expresin es distinto de cero, el estado de retorno
es 0; de otro modo el estado de retorno es 1. Esto es equivalente
exactamente a
\fBlet "\fIexpresin\fP"\fR.
.TP
\fB[[\fP \fIexpresin\fP \fB]]\fP
Devuelve un estado de 0 1 dependiendo de la evaluacin de la
expresin condicional \fIexpresin\fP.
Las expresiones se componen de las primarias descritas adelante bajo
.SM
.BR "EXPRESIONES CONDICIONALES" .
No tienen lugar divisin de palabras ni expansin de nombres de camino
en las palabras entre el \fB[[\fP y el \fB]]\fP; s se realizan la
expansin de tilde, expansin de parmetros y variables, expansin
aritmtica, sustitucin de orden, sustitucin de proceso y eliminacin
de comillas.
.if t .sp 0.5
.if n .sp 1
Cuando se emplean los operadores \fB==\fP y \fB!=\fP, la cadena a la
derecha del operador se considera un patrn y se hace concordar de
acuerdo a las reglas descritas ms adelante bajo el epgrafe
\fBConcordancia de patrones\fP.
El valor devuelto es 0 si la cadena concuerda o no concuerda con el
patrn, respectivamente, y 1 en otro caso.
Cualquier parte del patrn puede entrecomillarse para forzar la
concordancia como una cadena de caracteres pura.
.if t .sp 0.5
.if n .sp 1
Las expresiones pueden combinarse mediante los siguientes operadores,
listados en orden decreciente de precedencia:
.if t .sp 0.5
.if n .sp 1
.RS
.PD 0
.TP
.B ( \fIexpresin\fP )
Devuelve el valor de \fIexpresin\fP.
Esto puede emplearse para cambiar la precedencia normal de los operadores.
.TP
.B ! \fIexpresin\fP
Verdad si
.I expresin
es falsa.
.TP
\fIexpresin1\fP \fB&&\fP \fIexpresin2\fP
Verdad si ambas
.I expresin1
y
.I expresin2
son verdaderas.
.TP
.if t \fIexpresin1\fP \fB\(bv\(bv\fP \fIexpresin2\fP
.if n \fIexpresin1\fP \fB||\fP \fIexpresin2\fP
Verdad si una al menos de
.I expresin1
o
.I expresin2
es verdad.
.PD
.RE
.LP
Los operadores \fB&&\fP y
.if t \fB\(bv\(bv\fP
.if n \fB||\fP
no ejecutan \fIexpresin2\fP si el valor de
\fIexpresin1\fP es suficiente para determinar el valor de retorno de
la expresin condicional entera.
.TP
\fBfor\fP \fInombre\fP [ \fBin\fP \fIpalabra\fP; ] \fBdo\fP \fIlista\fP ; \fBdone\fP
La lista de palabras que va detrs de \fBin\fP se expande, generando
una lista de elementos. La variable \fInombre\fP se define como cada
elemento de la lista en cada iteracin, y \fIlista\fP se ejecuta cada
vez. Si la \fIpalabra\fP de \fBin\fP se omite, la orden \fBfor\fP
ejecuta \fIlista\fP una vez para cada parmetro posicional que est
definido (vea
.SM
.B PARMETROS
ms abajo).
El estado de retorno es el de salida de la ltima orden que se
ejecuta.
Si la expansin de los elementos despus del \fBin\fP resulta en una
lista vaca, no se ejecuta ninguna orden y el estado de salida es 0.
.TP
\fBselect\fP \fInombre\fP [ \fBin\fP \fIpalabra\fP; ] \fBdo\fP \fIlista\fP ; \fBdone\fP
La lista de palabras que sigue a \fBin\fP se expande, generando una
lista de elementos. El conjunto de palabras expandidas se muestra en
la salida estndar de errores, cada una precedida por un nmero. Si la
\fIpalabra\fP del \fBin\fP se omite, se muestran los parmetros
posicionales (vea
.SM
.B PARMETROS
ms abajo). Entonces se muestra el indicador
.B PS3
y se lee una lnea desde la entrada estndar.
Si la lnea consiste en un nmero correspondiente a una de las
palabras mostradas, entonces el valor de
.I nombre
se pone a esa palabra. Si la lnea est vaca, las palabras y el
indicador se muestran de nuevo. Si se lee EOF, la orden se
completa. Cualquier otro valor leda hace que
.I nombre
se ponga a un valor vaco. La lnea leda se guarda en la variable
.BR REPLY .
La
.I lista
se ejecuta tras cada seleccin hasta que se ejecute una orden
.B break
o
.BR return .
El estado de salida de
.B select
es el de la ltima orden ejecutada en
.IR lista ,
o cero si no se ha ejecutado ninguna orden.
.TP
\fBcase\fP \fIpalabra\fP \fBin\fP [ ( \fIpatrn\fP [ \fB|\fP \fIpatrn\fP ] \
... ) \fIlista\fP ;; ] ... \fBesac\fP
Una orden \fBcase\fP expande primero \fIpalabra\fP, e intenta hacerla
concordar contra cada \fIpatrn\fP por turnos, empleando las mismas
reglas de concordancia que para la expansin de nombres de caminos (vea
.B Expansin de nombre de camino
ms abajo). Cuando se encuentre una concordancia, se ejecuta la
\fIlista\fP correspondiente. Tras la primera concordancia, no se
intentan ms. El estado de salida es cero si no concuerda ningn
patrn. De otro modo, es el estado de salida de la ltima orden
ejecutada en \fIlista\fP.
.TP
\fBif\fP \fIlista\fP; \fBthen\fP \fIlista;\fP \
[ \fBelif\fP \fIlista\fP; \fBthen\fP \fIlista\fP; ] ... \
[ \fBelse\fP \fIlista\fP; ] \fBfi\fP
La
.I lista
.B if
se ejecuta. Si su estado de salida es cero, se ejecuta la
\fIlista\fP \fBthen\fP. De otro modo, se ejecuta por turno cada
\fIlista\fP \fBelif\fP, y si su estado de salida es cero, se ejecuta
la \fIlista\fP \fBthen\fP correspondiente y la orden se completa. Si
no, se ejecuta la \fIlista\fP \fBthen\fP si est presente. El estado
de salida es el de la ltima orden ejecutada, o cero si ninguna
condicin fue verdadera.
.TP
.PD 0
\fBwhile\fP \fIlista\fP; \fBdo\fP \fIlista\fP; \fBdone\fP
.TP
\fBuntil\fP \fIlista\fP; \fBdo\fP \fIlista\fP; \fBdone\fP
.PD
La orden \fBwhile\fP ejecuta continuamente la \fIlista\fP \fBdo\fP
siempre que la ltima orden de \fIlista\fP devuelva un estado de
salida cero. La orden \fBuntil\fP es idntica a la \fBwhile\fP,
excepto en que la comprobacin es al revs;
la
.I lista
.B do
se ejecuta mientras que la ltima orden en
.I lista
devuelva un estado de salida distinto de cero.
El estado de salida de las rdenes \fBwhile\fP y \fBuntil\fP es el de
la ltima orden de la \fIlista\fP \fBdo\fP ejecutada, o cero si no se
ejecut ninguna orden.
.TP
[ \fBfunction\fP ] \fInombre\fP () { \fIlista\fP; }
Esto define una funcin llamada \fInombre\fP. El \fIcuerpo\fP de la
funcin es la
.I lista
de rdenes entre { y } . Esta lista se ejecuta cada vez que se
especifica \fInombre\fP como el nombre de una orden simple. El estado
de salida de una funcin es el de la ltima orden ejecutada en el
cuerpo. (Vea
.SM
.B FUNCIONES
ms abajo.)
.SH COMENTARIOS
En un shell no interactivo, o en uno interactivo en el que la opcin
.B interactive_comments
de la orden interna
.B shopt
est activa (vea
.SM
.B "RDENES INCORPORADAS DEL SHELL"
ms abajo), una palabra que empiece por
.B #
hace que esa palabra y todos los caracteres que queden en esa lnea no
sean tenidos en cuenta. Un shell interactivo sin la opcin
.B interactive_comments
habilitada, no admite comentarios. La opcin
.B interactive_comments
est activa de forma predeterminada en shells interactivos.
.SH ENTRECOMILLADO
El \fIentrecomillado\fP se emplea para quitar el significado especial
para el shell de ciertos metacaracteres o palabras. Puede emplearse
para que no se traten caracteres especiales de forma especial, para
que palabras reservadas no sean reconocidas como tales, y para evitar
la expansin de parmetros.
.PP
Cada uno de los \fImetacaracteres\fP listados a continuacin bajo el
epgrafe
.SM
.B DEFINICIONES
tiene un significado especial para el shell y deben ser protegidos o
entrecomillados si quieren representarse a s mismos. Hay 3 mecanismos
de proteccin: el
.IR "carcter de escape" ,
comillas simples, y comillas dobles.
.PP
Una barra inclinada inversa no entrecomillada (\fB\e\fP) es el
.IR "carcter de escape" .
Preserva el valor literal del siguiente carcter que lo acompaa, con
la excepcin de <nueva-lnea>. Si aparece un par \fB\e\fP<nueva-lnea>
y la barra invertida no est ella misma entre comillas, el \fB\e\fP<nueva-lnea>
se trata como una continuacin de linea (esto es, se quita del flujo
de entrada y no se tiene efectivamente en cuenta).
.PP
Encerrar caracteres entre apstrofos preserva el valor literal de cada
carcter entre las comillas. Una comilla simple no puede estar entre
comillas simples, ni siquiera precedida de una barra invertida.
.PP
Encerrar caracteres entre comillas dobles preserva el valor literal de
todos los caracteres de dentro de las comillas, con la excepcin de
.BR $ ,
.BR ` ,
y
.BR \e .
Los caracteres
.B $
y
.B `
mantienen sus significados especiales dentro de comillas dobles. La
barra invertida mantiene su significado especial solamente cuando est
seguida por uno de los siguientes caracteres:
.BR $ ,
.BR ` ,
\^\fB"\fP\^",
.BR \e ,
o
.BR <nueva-lnea> .
Una comilla doble puede ser entrecomillada entre otras comillas dobles
precedindola de una barra invertida.
.PP
Los parmetros especiales
.B *
y
.B @
tienen un significado especial cuando estn entre comillas dobles (vea
.SM
.B PARMETROS
ms abajo).
.PP
Las palabras de la forma \fB$\fP'\fIcadena\fP' se tratan de forma
especial. La palabra se expanda a \fIcadena\fP, con los caracteres
protegidos par barra invertida reemplazados segn especifica el
estndar ANSI/ISO de C. Las secuencias de escape con barra invertida,
si estn presentes, se descodifican como sigue:
.RS
.PD 0
.TP
.B \ea
alerta (campana)
.TP
.B \eb
espacio-atrs
.TP
.B \ee
un carcter de escape (ESC)
.TP
.B \ef
nueva pgina
.TP
.B \en
nueva linea
.TP
.B \er
retorno de carro
.TP
.B \et
tabulacin horizontal
.TP
.B \ev
tabulacin vertical
.TP
.B \e\e
barra invertida
.TP
.B \e\fInnn\fP
el carcter cuyo cdigo es el valor octal \fInnn\fP (de uno a tres dgitos)
.TP
.B \ex\fInnn\fP
el carcter cuyo cdigo es el valor hexadecimal \fInnn\fP
.PD
.RE
.LP
El resultado traducido es entrecomillado con comillas simples, como si
el signo de dlar no hubiera estado presente.
.PP
Una cadena entre comillas dobles precedida por un signo de dlar
(\fB$\fP) har que la cadena se traduzca segn la localizacin en
curso. Si sta es \fBC\fP o \fBPOSIX\fP, el signo de dlar no se tiene
en cuenta.
Si la cadena se traduce y reemplaza, el reemplazo se entrecomilla con
comillas dobles.
.SH PARMETROS
Un
.I parmetro
es una entidad que almacena valores.
Puede ser un
.IR nombre ,
un nmero, o uno de los caracteres especiales listados a continuacin
bajo el epgrafe
.BR "Parmetros especiales" .
En lo que se refiere al shell, una
.I variable
es un parmetro identificado por un
.IR nombre .
.PP
Un parmetro est definido si se le ha asignado un valor. La cadena
vaca es un valor vlido. Una vez que una variable est definida, slo
puede quitarse de la lista de variables mediante la orden interna
.B unset
(vea
.SM
.B RDENES INTERNAS DEL SHELL
ms adelante).
.PP
A una
.I variable
se le puede asignar un valor mediante una sentencia de la forma
.RS
.PP
\fInombre\fP=[\fIvalor\fP]
.RE
.PP
Si no se da el
.IR valor ,
a la variable se asigna la cadena vaca. Todos los
.I valores
estn sujetos a expansin de tilde, de parmetros y variables, de
cadena, de orden, aritmtica, y eliminacin de comillas (vea
.SM
.B EXPANSIN
ms abajo). Si la variable tiene activado su atributo
.B integer
(vea
.B declare
ms abajo en
.SM
.BR "RDENES INTERNAS DEL SHELL" )
entonces
.I valor
est sujeto a expansin aritmtica incluso si no se emplea la
expansin $((...)) (vea
.B "Expansin aritmtica"
ms adelante).
No se realiza la divisin de palabras, con la excepcin de
\fB"$@"\fP como se explica ms adelante bajo el epgrafe
.BR "Parmetros especiales" .
La expansin de nombres de camino no se efecta.
.SS Parmetros posicionales
.PP
Un
.I parmetro posicional
es un parmetro denotado por uno o ms dgitos, distintos del simple
0. Los parmetros posicionales se asignan a partir de los argumentos
del shell cuando ste es llamado, y pueden ser reasignados mediante la
orden interna
.BR set .
Los parmetros posicionales no pueden ser asignados con sentencias de
asignacin. Los parmetros posicionales se reemplazan temporalmente
cuando se ejecuta una funcin del shell (vea
.SM
.B FUNCIONES
abajo).
.PP
Cuando un parmetro posicional consistente en ms de un solo dgito se
expande, debe rodearse por llaves (vea
.SM
.B EXPANSIN
abajo).
.SS Parmetros especiales
.PP
El shell trata de forma especial a ciertos parmetros. stos slo
pueden referenciarse; no se permite asignarles nada.
.PD 0
.TP
.B *
Se expande a los parmetros posicionales, empezando por 1. Cuando la
expansin ocurre entre comillas dobles, se expande a una sola palabra
con el valor de cada parmetro separado por el primer carcter de la
variable especial
.SM
.BR IFS .
Esto es, "\fB$*\fP" es equivalente
a "\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP", donde
.I c
es el primer carcter del valor de la variable
.SM
.BR IFS .
Si
.SM
.B IFS
no est definida, los parmetros se separan por espacios.
Si
.SM
.B IFS
es la cadena vaca, los parmetros se juntan sin ningn separador.
.TP
.B @
Se expande a los parmetros posicionales, empezando desde 1. Cuando la
expansin ocurre dentro de comillas dobles, cada parmetro se expande
a una palabra separada. Esto es, "\fB$@\fP" es equivalente a
"\fB$1\fP" "\fB$2\fP" ...
Cuando no hay parmetros posicionales, "\fB$@\fP" y
.B $@
se expanden a nada (esto es, se borran).
.TP
.B #
Se expande al nmero en base 10 de parmetros posicionales.
.TP
.B ?
Se expande al estado de la tubera ms recientemente ejecutada en
primer plano.
.TP
.B \-
Se expande a las opciones del shell activas actualmente segn se hayan
especificado en la llamada, mediante la orden interna
.BR set ,
o las que haya puesto el mismo shell (como la opcin
.BR \-i ).
.TP
.B $
Se expande al PID del shell. En un subshell (), se expande al PID del
shell actual, no al del subshell.
.TP
.B !
Se expande al PID de la orden ms recientemente ejecutada en segundo
plano (asncronamente).
.TP
.B 0
Se expande al nombre del shell o guin del shell. Este parmetro se
pone en el inicio del shell. Si
.B bash
se llama con un fichero de rdenes,
.B $0
se pone al nombre de ese fichero. Si
.B bash
se arranca con la opcin
.BR \-c ,
entonces
.B $0
se pone al primer argumento tras la cadena que se va a ejecutar, si
hay alguno presente. Si no, se pone al nombre de fichero empleado para
llamar a
.BR bash ,
como se da en el argumento cero.
.TP
.B _
En el arranque del shell, se pone al nombre absoluto de fichero del
shell o guin del shell que se est ejecutando, tal como se ha pasado
en la lista de argumentos.
Subsecuentemente, se expande al ltimo argumento de la orden anterior,
tras la expansin.
Tambin se pone al nombre completo del fichero de cada orden ejecutada,
y se pone en el entorno exportado a esa orden.
Cuando se est comprobando si hay correo nuevo, este parmetro
contiene el nombre del fichero de correo o buzn que se est
comprobando actualmente.
.PD
.SS Variables del shell
.PP
El shell pone automticamente las siguientes variables:
.PP
.PD 0
.TP
.B PPID
El PID del proceso padre del shell. Esta variable es de lectura exclusiva.
.TP
.B PWD
El directorio de trabajo actual como lo pone la orden
.BR cd .
.TP
.B OLDPWD
El directorio de trabajo anterior como lo puso la orden
.BR cd .
.TP
.B REPLY
La lnea de entrada leda por la orden interna
.B read
cuando no se le dan argumentos.
.TP
.B UID
Se expande al UID del usuario en curso, puesta en el arranque del
shell. Esta variable es de lectura exclusiva.
.TP
.B EUID
Se expande al UID efectivo del usuario en curso, puesta en el arranque del
shell. Esta variable es de lectura exclusiva.
.TP
.B GROUPS
Una variable vector conteniendo la lista de grupos de los que el
usuario actual es miembro. Esta variable es de lectura exclusiva.
.TP
.B BASH
Se expande al nombre completo del fichero empleado para llamar a esta
instancia de
.BR bash .
.TP
.B BASH_VERSION
Se expande a una cadena que describe la versin de esta instancia de
.BR bash .
.TP
.B BASH_VERSINFO
Una variable vector de lectura exclusiva cuyos miembros contienen
informacin de versin para esta instancia de
.BR bash .
Los valores asignados a los miembros del vector son como sigue:
.sp .5
.RS
.PD 0
.TP 24
.B BASH_VERSINFO[\fR0\fP]
El nmero mayor de versin (la \fIdistribucin\fP).
.TP
.B BASH_VERSINFO[\fR1\fP]
El nmero menor de versin (la \fIversin\fP).
.TP
.B BASH_VERSINFO[\fR2\fP]
El nivel de parcheo.
.TP
.B BASH_VERSINFO[\fR3\fP]
La versin de construccin.
.TP
.B BASH_VERSINFO[\fR4\fP]
El estado de la distribucin (por ejemplo, \fIbeta1\fP).
.TP
.B BASH_VERSINFO[\fR5\fP]
El valor de \fBMACHTYPE\fP.
.PD
.RE
.TP
.B SHLVL
Se incrementa en uno cada vez que se arranca una nueva instancia de
.BR bash .
.TP
.B RANDOM
Cada vez que este parmetro sea referenciado, se genera un entero
aleatorio entre 0 y 32767. La secuencia de nmeros aleatorios puede
iniciarse asignando un valor a
.SM
.BR RANDOM .
Si
.SM
.B RANDOM
no est definido, pierde sus propiedades especiales, incluso si
posteriormente es redefinido.
.TP
.B SECONDS
Cada vez que este parmetro es referenciado, se devuelve en l el
nmero de segundos transcurridos desde la llamada al shell. Si se
asigna un valor a
.SM
.BR SECONDS ,
el valor devuelto en posteriores referencias es el nmero de segundos
desde la asignacin ms el valor asignado.
Si
.SM
.B SECONDS
no est definido, pierde sus propiedades especiales, incluso si
posteriormente es redefinido.
.TP
.B LINENO
Cada vez que este parmetro es referenciado, el shell sustituye un
nmero en base 10 representando el nmero de lnea secuencial actual
(empezando por 1) dentro de un guin o funcin. Si no estamos en un
guin o funcin, no se garantiza que el valor sustituido tenga
significado.
Si
.SM
.B LINENO
no est definido, pierde sus propiedades especiales, incluso si
posteriormente es redefinido.
.TP
.B HISTCMD
El nmero de "historia", o ndice en la lista "histrica", de la orden
actual.
Si
.SM
.B HISTCMD
no est definido, pierde sus propiedades especiales, incluso si
posteriormente es redefinido.
.TP
.B DIRSTACK
Una variable vector (vea
.B Vectores
ms abajo) que aloja los contenidos actuales de la pila de
directorios. Los directorios aparecen en la pila en el orden en el que
se muestran con la orden interna
.BR dirs .
La asignacin a miembros de este vector puede emplearse para modificar
directorios que ya estn en la pila, pero entonces deben utilizarse
las rdenes internas
.B pushd
y
.B popd
para aadir y quitar directorios.
La asignacin a esta variable no cambiar el directorio de trabajo.
Si
.SM
.B DIRSTACK
no est definido, pierde sus propiedades especiales, incluso si
posteriormente es redefinido.
.TP
.B PIPESTATUS
Una variable vector (vea
.B Vectores
ms abajo) que contiene una lista de valores de estado de salida de
los procesos en la tubera en primer plano ejecutada ms recientemente
(que puede contener una sola orden).
.TP
.B OPTARG
El valor del ltimo argumento que es una opcin procesado por la orden
interna
.B getopts
(vea
.SM
.B RDENES INTERNAS DEL SHELL
ms abajo).
.TP
.B OPTIND
El ndice del siguiente argumento a ser procesado por la orden
interna
.B getopts
(vea
.SM
.B RDENES INTERNAS DEL SHELL
ms abajo).
.TP
.B HOSTNAME
Puesto automticamente al nombre del anfitrin (computador) actual.
.TP
.B HOSTTYPE
Puesto automticamente a una cadena que describe de forma unvoca el
tipo de mquina en la que
.B bash
se est ejecutando.
El valor predefinido depende del sistema.
.TP
.B OSTYPE
Puesto automticamente a una cadena que describe el sistema operativo
en el que
.B bash
se est ejecutando.
El valor predefinido depende del sistema. En Linux es "linux".
.TP
.B MACHTYPE
Puesto automticamente a una cadena que describe completamente el tipo
de sistema en el que
.B bash
se est ejecutando, en el formato estndar de GNU
\fIcpu-compaa-sistema\fP.
El valor predefinido depende del sistema.
.TP
.B SHELLOPTS
Una lista, de elementos separados por dos puntos, de opciones activas
del shell. Cada palabra en la lista es un argumento vlido para la
opcin
.B \-o
de la orden interna
.B set
(vea
.SM
.B "RDENES INTERNAS DEL SHELL"
abajo). Las opciones que aparecen en
.SM
.B SHELLOPTS
son aqullas que aparecen como
.I on
en \fBset \-o\fP.
Si esta variable est en el ambiente cuando
.B bash
empieza, cada opcin del shell en la lista se activar antes de leer
cualquier fichero de inicio.
Esta variable es de lectura exclusiva.
.PD
.PP
El shell hace uso de las siguientes variables. En algunos casos,
.B bash
asigna un valor predeterminado a una variable; estos casos se dicen
abajo.
.PP
.PD 0
.TP
.B IFS
El
.I Separador Interno de Campo
que se emplea para la divisin de palabras tras la expansin y para
dividir lneas en palabras con la orden interna
.BR read .
El valor predeterminado es ``<espacio><tab><nueva-lnea>''.
.TP
.B PATH
El camino de bsqueda para rdenes, programas ejecutables. Es una
lista de directorios separados por dos puntos en los cuales el shell
busca rdenes (vea
.SM
.B EJECUCIN DE RDENES
ms abajo). El camino predeterminado depende del sistema, y lo pone el
administrador que instala
.BR bash .
Un valor comn es ``/usr/local/bin:/bin:/usr/bin:.''.
.TP
.B HOME
El directorio inicial de trabajo del usuario en curso; el argumento
predeterminado para la orden interna \fBcd\fP.
El valor de esta variable se usa tambin cuando se realiza la
expansin de tilde.
.TP
.B CDPATH
El camino de bsqueda para la orden
.BR cd .
Es una lista de directorios separados por dos puntos en los cuales el
shell busca directorios destino especificados por la orden
.BR cd .
Un valor de muestra es ``.:~:/usr''.
.TP
.B BASH_ENV
Si este parmetro est definido cuando \fBbash\fP est ejecutando un
guin del shell, su valor se interpreta como un nombre de fichero que
contiene rdenes para iniciar el shell, como en
.IR ~/.bashrc .
El valor de
.SM
.B BASH_ENV
est sujeto a expansin de parmetros, sustitucin de rdenes y
expansin aritmtica, antes de ser interpretado como un nombre de
fichero.
.SM
.B PATH
no se usa para buscar el nombre de fichero resultante.
.TP
.B MAIL
Si este parmetro est puesto a un nombre de fichero y la variable
.SM
.B MAILPATH
no est definida,
.B bash
informa al usuario de la llegada de correo en el fichero
especificado.
.TP
.B MAILCHECK
Especifica cun a menudo (en segundos)
.B bash
comprueba si hay correo nuevo. El valor predeterminado es 60 s. Cuando
es tiempo de comprobar si hay correo, el shell lo hace antes de
mostrar el indicador primario. Si esta variable no est definida, el
shell no comprueba si hay correo nuevo.
.TP
.B MAILPATH
Una lista de nombres de fichero separados por dos puntos donde hay que
comprobar si hay correo nuevo. El mensaje que haya que mostrar cuando
llegue correo a un fichero particular puede especificarse separando el
nombre de fichero del mensaje con un '?'. Cuando se use en el texto
del mensaje, \fB$_\fP se expande al nombre del fichero de correo en curso.
Ejemplo:
.RS
.PP
\fBMAILPATH\fP='/var/spool/mail/bfox?"Tienes carta":~/shell\-mail?"$_ tiene carta!"'
.PP
.B Bash
proporciona un valor predeterminado para esta variable, pero la
localizacin de los ficheros de correo del usuario que emplea es
dependiente del sistema (e.g., /var/spool/mail/\fB$USER\fP).
.RE
.TP
.B PS1
El valor de este parmetro se expande (vea
.SM
.B INDICADORES
abajo) y se emplea como la cadena del indicador primario. El valor
predeterminado es ``\fB\es\-\ev\e$ \fP''.
.TP
.B PS2
El valor de este parmetro se expande como con
.B PS1
y se emplea como la cadena del indicador secundario. El valor
predeterminado es ``\fB> \fP''.
.TP
.B PS3
El valor de este parmetro se emplea como el indicador para la orden
.B select
(vea
.SM
.B GRAMTICA DEL SHELL
ms arriba).
.TP
.B PS4
El valor de este parmetro se expande como con
.B PS1
y el valor se imprime antes de cada orden que
.B bash
muestra durante una traza de ejecucin. El primer carcter de
.SM
.B PS4
se replica mltiples veces, tantas como sean necesarias, para indicar
mltiples niveles de indireccin. El valor predeterminado es ``\fB+ \fP''.
.TP
.B TIMEFORMAT
El valor de este parmetro se emplea como una cadena de formato para
especificar cmo debe mostrarse la informacin de tiempos para
tuberas precedidas por la palabra reservada
.BR time .
El carcter \fB%\fP introduce una secuencia de escape que se expande a
un valor de tiempo o a otra informacin.
Las secuencias de escape y sus significados son como sigue; los
corchetes denotan partes opcionales.
.sp .5
.RS
.PD 0
.TP 10
.B %%
Un \fB%\fP literal.
.TP
.B %[\fIp\fP][l]R
El tiempo total transcurrido en segundos.
.TP
.B %[\fIp\fP][l]U
El nmero de segundos de CPU gastados en modo usuario.
.TP
.B %[\fIp\fP][l]S
El nmero de segundos de CPU gastados en modo sistema.
.TP
.B %P
El porcentaje de CPU, computado como (%U + %S) %R.
.PD
.RE
.IP
La \fIp\fP opcional es un dgito que especifica la \fIprecisin\fP,
el nmero de decimales.
Un valor de 0 hace que no se muestre ningn decimal, ni el punto o
coma decimal.
Como mucho se pueden especificar tres decimales; valores de \fIp\fP
mayores de 3 se cambian a 3. Si \fIp\fP no se especifica, se usa
precisamente el valor 3.
.IP
La \fIl\fP opcional especifica un formato ms largo, incluyendo
minutos, en la forma \fIMM\fPm\fISS\fP.\fIFF\fPs.
El valor de \fIp\fP determina si se incluye o no la fraccin.
.IP
Si esta variable no est definida, \fBbash\fP acta como si tuviera el
valor \fB$'\enreal\et%3lR\enuser\et%3lU\ensys\t%3lS'\fP.
Si el valor es nulo, no se muestra ninguna informacin de tiempos.
Se aade un salto de lnea al final cuando se muestra la cadena de
formato.
.TP
.B HISTSIZE
El nmero de rdenes a recordar en la historia de rdenes (vea
.SM
.B HISTORIA
abajo). El valor predeterminado es 500.
.TP
.B HISTFILE
El nombre del fichero en el que se guarda la historia de rdenes (vea
.SM
.B HISTORIA
abajo). El valor predeterminado es \fI~/.bash_history\fP. Si no est
definido, no se guarda la historia de rdenes cuando se acaba un shell
interactivo.
.TP
.B HISTFILESIZE
El nmero mximo de lneas contenidas en el fichero de historia. Cuando
se asigna un valor a esta variable, el fichero de historia se trunca,
si es menester, para contener no ms de ese nmero de lneas. El valor
predeterminado es 500. El fichero de historia se trunca tambin a este
tamao tras escribir en l cuando un shell interactivo termina.
.TP
.B OPTERR
Si se pone al valor 1,
.B bash
muestra mensajes de error generados por la orden interna
.B getopts
(vea
.SM
.B RDENES INTERNAS DEL SHELL
abajo).
.SM
.B OPTERR
se inicia a 1 cada vez que se llama al shell o cuando se ejecuta un
guin del shell.
.TP
.B LANG
Empleado para determinar la categora de localizacin ("escenario")
para cualquier categora no seleccionada especficamente con una
variable de las que empiezan por \fBLC_\fP.
.TP
.B LC_ALL
Esta variable tiene preferencia sobre el valor de \fBLANG\fP y de
cualquier otra variable de las que empiecen por \fBLC_\fP
especificando una categora de localizacin.
.TP
.B LC_COLLATE
Esta variable determina el orden de clasificacin empleado cuando se
ordene el resultado de una expansin de nombres de caminos, y
determina el comportamiento de expresiones de rango, clases de
equivalencia, y secuencias de clasificacin dentro de expansiones de
nombres de caminos y concordancia de patrones.
.TP
.B LC_CTYPE
Esta variable determina la interpretacin de caracteres y el
comportamiento de clases de caracteres dentro de expansiones de
nombres de caminos y concordancia de patrones.
.TP
.B LC_MESSAGES
Esta variable determina la localizacin empleada para traducir cadenas
entrecomilladas con comillas dobles precedidas por un \fB$\fP.
.TP
.B PROMPT_COMMAND
Si est definido, el valor se ejecuta como una orden antes de mostrarse
cada indicador primario.
.TP
.B IGNOREEOF
Controla la accin de un shell interactivo al recibir un carcter
.SM
.B EOF
como sola entrada. Si est definido, el valor es el nmero de caracteres
.SM
.B EOF
consecutivos que deben teclearse como los primeros caracteres de una
lnea de entrada antes de que
.B bash
acabe. Si la variable existe pero no tiene un valor numrico, o
ninguno, el valor predeterminado es 10. Si no existe,
.SM
.B EOF
significa el final de la entrada para el shell.
.TP
.B TMOUT
Si se define a un valor mayor que cero, el valor se interpreta como el
nmero de segundos que hay que esperar una entrada despus de
mostrarse el indicador primario.
.B Bash
termina despus de esperar ese nmero de segundos si no recibe ninguna
entrada.
.TP
.B FCEDIT
El editor predeterminado para la orden interna
.BR fc .
.TP
.B FIGNORE
Una lista de sufijos separados por dos puntos que no hay que tener en
cuenta cuando se realice una terminacin de nombres de ficheros (vea
.SM
.B READLINE
abajo).
Un nombre de fichero cuyo sufijo concuerde con una de las entradas en
.SM
.B FIGNORE
se excluye de la lista de nombres de ficheros a completar.
Un valor de muestra es ``.o:~''.
.TP
.B GLOBIGNORE
Una lista de patrones separados por dos puntos que definen en conjunto
de nombres de ficheros que no hay que tener en cuenta en la expansin
de nombres de caminos. Si un nombre de fichero que concordaba en un
patrn de expansin de nombres de caminos tambin concuerda con uno de
los patrones en
.SM
.BR GLOBIGNORE ,
se quita de la lista de concordancias.
.TP
.B INPUTRC
El nombre de fichero para el de inicio de
.BR readline ,
en vez del predeterminado
.FN ~/.inputrc
(vea
.SM
.B READLINE
abajo).
.TP
.B HISTCONTROL
Si se define a un valor de
.IR ignorespace ,
las lneas que comiencen con un carcter
.B espacio
no se meten en la lista de historia. Si se pone a un valor de
.IR ignoredups ,
las lneas que concuerden con la ltima lnea de la historia, no se
meten.
Un valor de
.I ignoreboth
combina las dos opciones.
Si no est definido, o si lo est a otro valor distinto de los de
antes, todas las lneas ledas por el analizador lxico se guardan en
la lista de la historia, sujeto esto al valor de
.BR HISTIGNORE .
La funcin de esta variable ha sido tomada por
.BR HISTIGNORE .
La segunda lnea y siguientes de una orden compuesta multi-lnea no se
comprueban, y se aaden a la historia sin importar el valor de
.BR HISTCONTROL .
.TP
.B HISTIGNORE
Una lista de patrones separados por dos puntos empleados para decidir
qu lneas de rdenes deben guardarse en la lista de historia. Cada
patrn se ancla al principio de la lnea y debe especificar la lnea
completamente (no se aade ningn `\fB*\fP'). Cada patrn se comprueba
con la lnea tras aplicarse las comprobaciones especificadas por
.BR HISTCONTROL .
Adems de los caracteres normales de concordancia de patrones del
shell, `\fB&\fP' concuerda con la lnea de historia anterior.
`\fB&\fP' puede protegerse empleando una barra inversa. sta se quita
antes de intentarse una concordancia.
La segunda lnea y siguientes de una orden compuesta multi-lnea no se
comprueban, y se aaden a la historia sin importar el valor de
.BR HISTIGNORE .
.TP
.B histchars
Los dos o tres caracteres que controlan la expansin y separacin en
lexemas de la historia (vea
.SM
.B EXPANSIN DE HISTORIA
abajo). El primer carcter es el
.IR "carcter de expansin de historia" ,
el carcter que seala el comienzo de una expansin de historia,
normalmente `\fB!\fP'.
El segundo carcter es el carcter de
.IR "sustitucin rpida" ,
que se usa como una abreviatura para reejecutar la orden anterior,
sustituyendo una cadena por otra en la orden. El valor predeterminado
es `\fB^\fP'.
El tercer carcter, opcional, es el carcter que indica que el resto
de la lnea es un comentario cuando se encuentra como el primer
carcter de una palabra, normalmente es `\fB#\fP'. El carcter de
comentario de historia hace que la sustitucin de historia se salte en
el resto de palabras de la lnea. No hace que necesariamente el
analizador lxico del shell trate al resto de la lnea como un a un
comentario.
.TP
.B HOSTFILE
Contiene el nombre de un fichero con el mismo formato que
.FN /etc/hosts
que debera leerse cuando el shell necesite completar un nombre de
anfitrin (computador). El fichero puede ser cambiado
interactivamente; la siguiente vez que se intente completar un nombre
de computador,
.B bash
aade el contenido del nuevo fichero a la base de datos ya existente.
.TP
.B auto_resume
Esta variable controla cmo el shell interacta con el usuario para el
control de trabajos. Si esta variable est definida, las rdenes
simples de una palabra sin redireccin se tratan como candidatas para
reanudar un trabajo existente parado. No se permite ninguna
ambigedad; si hay ms de un trabajo que empiece con la cadena
tecleada, se selecciona el trabajo al que se ha accedido ms recientemente.
El
.I nombre
de un trabajo parado, en este contexto, es la lnea de rdenes
empleada para arrancarlo.
Si se define al valor
.IR exact ,
la cadena suministrada debe concordar exactamente con el nombre de un
trabajo parado; si se define como
.IR substring ,
la cadena suministrada necesita concordar con una subcadena del nombre
de un trabajo parado. El valor
.I substring
proporciona una funcionalidad anloga a la del identificador de trabajo
.B %?
(vea
.SM
.B CONTROL DE TRABAJOS
adelante). Si se pone a cualquier otro valor, la cadena suministrada
debe ser un prefijo del nombre de un trabajo parado; esto proporciona
una funcionalidad anloga a la del identificador de trabajo
.BR % .
.PD
.SS Vectores
.B Bash
proporciona variables vectores, monodimensionales. Cualquier variable
puede usarse como un vector; la orden interna
.B declare
declarar un vector explcitamente. No hay un lmite mximo en el
tamao de un vector, ni ningn requisito para que los miembros se
indexen o asignen de forma contigua. Los vectores se indexan empleando
enteros y su primer elemento es el de ndice cero, como en C.
.PP
Un vector se crea automticamente si se asigna algo a una variable con
la sintaxis \fInombre\fP[\fIndice\fP]=\fIvalor\fP. El
.I ndice
se trata como una expresin aritmtica que debe evaluarse a un nmero
mayor o igual a cero. Para declarar un vector explcitamente, emplee
.B declare \-a \fInombre\fP
(vea
.SM
.B RDENES INTERNAS DEL SHELL
abajo).
Tambin se acepta
.BR "declare \-a \fInombre\fP[\fIndice\fP]" ,
donde el \fIndice\fP no se tiene en cuenta. Se pueden especificar
atributos para una variable vector mediante las rdenes internas
.B declare
y
.BR readonly .
Cada atributo se aplica a cada uno de los miembros del vector.
.PP
Se asignan valores a los vectores mediante asignaciones compuestas de
la forma
\fInombre\fP=\fB(\fPvalor\fI1\fP ... valor\fIn\fP\fB)\fP, donde cada
\fIvalor\fP es de la forma [\fIndice\fP]=\fIcadena\fP. Slo
\fIcadena\fP es necesario. Si se suministra el ndice entre corchetes
y la asignacin, se asigna a ese ndice; si no, el ndice del elemento
asignado es el ltimo ndice al que la sentencia le asign algo, ms
uno. Los ndices empiezan en cero. Esta sintaxis tambin la acepta la
orden interna
.BR declare .
Se puede asignar a los elementos individuales del vector empleando la
sintaxis
\fInombre\fP[\fIndice\fP]=\fIvalor\fP, ya presentada antes.
.PP
Cualquier elemento de un vector puede referenciarse mediante
${\fInombre\fP[\fIndice\fP]}. Las llaves son necesarias para evitar
conflictos con la expansin de nombres de caminos. Si
\fIndice\fP es \fB@\fP o \fB*\fP, la palabra se expande a todos los
miembros de \fInombre\fP. Estos ndices difieren solamente cuando la
palabra aparece entre comillas dobles. Si la palabra est entre
comillas dobles,
${\fInombre\fP[*]} se expande a una sola palabra
con el valor de cada miembro del vector separados por el primer
carcter de la variable especial
.SM
.BR IFS ,
y ${\fInombre\fP[@]} expande cada elemento de
\fInombre\fP a una palabra separada. Cuando no hay miembros del vector,
${\fInombre\fP[@]} se expande a nada. Esto es anlogo a la expansin
de los parmetros especiales \fB*\fP y \fB@\fP (vea
.B Parmetros especiales
arriba). ${#\fInombre\fP[\fIndice\fP]} se expande a la longitud de
${\fInombre\fP[\fIndice\fP]}. Si \fIndice\fP es \fB*\fP o
\fB@\fP, la expansin es el nmero de elementos del vector.
Referenciar una variable vector sin ndice es equivalente a
referenciar el elemento cero.
.PP
La orden interna
.B unset
se emplea para destruir vectores. \fBunset\fP \fBnombre\fP[\fIndice\fP]
destruye el elemento del vector con el \fIndice\fP especificado.
\fBunset\fP \fInombre\fP, donde \fInombre\fP es un vector, o
\fBunset\fP \fInombre\fP[\fIndice\fP], donde
\fIndice\fP es \fB*\fP o \fB@\fP, borra el vector entero.
.PP
Las rdenes internas
.BR declare ,
.BR local ,
y
.B readonly
aceptan cada una una opcin
.B \-a
para especificar un vector (array). La orden interna
.B read
acepta una
.B \-a
para asignar una lista de palabras ledas desde la entrada estndar a
un vector. Las rdenes internas
.B set
y
.B declare
muestran valores de un vector en una manera tal que les permite ser
reutilizadas como asignaciones.
.SH EXPANSIN
La expansin se realiza en la lnea de rdenes una vez que la orden ha
sido dividida en palabras. Hay siete clases de expansin:
.IR "expansin de llaves" ,
.IR "expansin de tilde" ,
.IR "expansin de parmetro y variable" ,
.IR "sustitucin de orden" ,
.IR "expansin aritmtica" ,
.IR "divisin de palabras",
.IR "expansin de nombre de camino" .
.PP
La orden de las expansiones es: expansin de llaves, de tilde, de
parmetro, variable y aritmtica, y sustitucin de orden (hechas de
izquierda a derecha), divisin de palabras, y expansin de nombre de
camino.
.PP
En sistemas que puedan admitirla, hay una expansin adicional
disponible: \fIsustitucin de proceso\fP.
.PP
Slo la expansin de llaves, divisin de palabras, y expansin de
nombre de camino, pueden cambiar el nmero de palabras de la
expansin; las otras expanden una palabra simple a otra palabra
simple. Las nicas excepciones a esto son las expansiones de
"\fB$@\fP" y "\fB${\fP\fInombre\fP\fB[@]}\fP"
como se ha explicado ms arriba (vea
.SM
.BR PARMETROS ).
.SS Expansin de llaves
.PP
La
.I "expansin de llaves"
es un mecanismo por el cual pueden generarse cadenas arbitrarias. Este
mecanismo es similar a la \fIexpansin de nombre de camino\fP, pero
los nombres de ficheros no necesitan existir. Los patrones a ser
expandidos con la expansin de llaves toman la forma de un
.I prembulo
opcional seguido por una serie de cadenas separadas por comas entre un
par de llaves, seguido por un
.I post scriptum
opcional.
El prembulo sirve de prefijo a cada cadena de entre las llaves, y el
post scriptum se aade luego a cada cadena resultante, expandiendo de
izquierda a derecha.
.PP
Las expansiones de llaves pueden anidarse. Los resultados de cada
cadena expandida no se ordenan; se preserva el orden de izquierda a
derecha. Por ejemplo, a\fB{\fPd,c,b\fB}\fPe se expande a `ade ace abe'.
.PP
La expansin de llaves se realiza antes que cualquier otra, y
cualquier carcter especial para otras expansiones se preserva en el
resultado. Es estrictamente textual.
.B Bash
no aplica ninguna interpretacin sintctica al contexto de la
expansin ni al texto entre las llaves.
.PP
Una expansin de llaves correctamente formada debe contener llaves de
apertura y cierre sin entrecomillar, y por lo menos una coma sin
entrecomillar. Cualquier expansin de llaves formada incorrectamente se
deja tal cual. Una \fB{\fP o \fB,\fP puede protegerse con una barra
invertida para evitar que sea considerada como parte de una expansin
de llaves.
.PP
Esta construccin se emplea normalmente como una abreviatura cuando el
prefijo comn de las cadenas a generar es mayor que en el ejemplo de
antes:
.RS
.PP
mkdir /usr/local/src/bash/{old,new,dist,bugs}
.RE
o
.RS
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
.RE
.PP
La expansin de llaves introduce una pequea incompatibilidad con
versiones histricas de
.BR sh .
.B sh
no trata especialmente a las llaves de apertura o cierre cuando
aparecen como parte de una palabra, y las deja en la entrada.
.B Bash
quita las llaves de palabras, como una consecuencia de la expansin de
llaves. Por ejemplo, una palabra introducida a
.B sh
como \fIfichero{1,2}\fP
aparece as mismo en la entrada. La misma palabra se muestra como
.I fichero1 fichero2
tras la expansin hecha por
.BR bash .
Si se desea una compatibilidad estricta con
.BR sh ,
arranque
.B bash
con la opcin
.B +B
o inhabilite la expansin de llaves con la opcin
.B +B
de la orden interna
.B set
(vea
.SM
.B RDENES INTERNAS DEL SHELL
abajo).
.SS Expansin de tilde
.PP
Si una palabra comienza con un carcter tilde de la sin
entrecomillar (`\fB~\fP'), todos los caracteres que precedan a la
primera barra inclinada sin entrecomillar (o todos los caracteres, si
no hay ninguna barra inclinada sin proteger), se consideran un
\fIprefijo\-tilde\fP. Si ninguno de los caracteres en el prefijo-tilde
estn protegidos, los caracteres en el prefijo-tilde que siguen a la
tilde se tratan como un posible \fInombre de entrada\fP de usuario
(login).
Si este nombre de entrada es la cadena vaca, la tilde se reemplaza
con el valor del parmetro del shell
.SM
.BR HOME .
Si
.SM
.B HOME
no est definida, se sustituye en su lugar el directorio de trabajo
inicial del usuario que est ejecutando el shell.
De otra forma, el prefijo-tilde se reemplaza con el directorio de
trabajo inicial (de casa) asociado con el nombre de entrada
especificado.
.PP
Si el prefijo-tilde es un `~+', el valor de la variable del shell
.SM
.B PWD
reemplaza al prefijo-tilde.
Si el prefijo-tilde es un `~\-', el valor de la variable del shell
.SM
.BR OLDPWD ,
si est definido, se sustituye.
Si los caracteres que siguen a la tilde en el prefijo-tilde consisten
en un nmero \fIN\fP, prefijado opcionalmente por un `+' o un `\-', el
prefijo-tilde se reemplaza con el elemento correspondiente de la pila
de directorios, como lo mostrara la orden interna
.B dirs
llamada con el prefijo-tilde como argumento.
Si los caracteres tras la tilde en el prefijo-tilde consisten en un
nmero sin un `+' ni `\-' iniciales, se supone `+'.
.PP
Si el nombre de entrada es invlido, o si la expansin de tilde falla,
la palabra se deja tal cual.
.PP
A cada asignacin de variable se comprueba si hay prefijos-tilde sin
entrecomillar inmediatamente tras un
.B :
o un
.BR = .
En estos casos, la expansin de tilde tambin tiene lugar.
Consecuentemente, uno puede usar nombres de ficheros con tildes en
asignaciones a
.SM
.BR PATH ,
.SM
.BR MAILPATH ,
y
.SM
.BR CDPATH ,
y el shell asigna el valor expandido.
.SS Expansin de parmetro
.PP
El carcter `\fB$\fP' introduce la expansin de parmetro,
sustitucin de orden, o expansin aritmtica. El nombre de parmetro o
smbolo a ser expandido puede estar encerrado entre llaves, que son
opcionales pero sirven para proteger a la variable en la expansin de
caracteres que la sigan y puedan interpretarse como parte de su
nombre.
.PP
Cuando se empleen llaves, la de cierre es la primera `\fB}\fP'
no protegida con una barra invertida o en una cadena entrecomillada, y
no dentro de una expansin aritmtica empotrada, sustitucin de orden,
o expansin de parmetro.
.PP
.PD 0
.TP
${\fIparmetro\fP}
Se sustituye el valor de \fIparmetro\fP. Se requieren llaves cuando
.I parmetro
es un parmetro posicional de ms de un dgito,
o cuando
.I parmetro
viene seguido por un carcter que no debe interpretarse como parte de
su nombre.
.PD
.PP
Si el primer carcter de \fIparmetro\fP es un signo de cierre de exclamacin,
se introduce un nivel de indireccin de variable.
\fBBash\fP emplea el valor de la variable formada a partir del resto de
\fIparmetro\fP como el nombre de la variable; luego, esta variable se
expande y ese valor se emplea en el resto de la sustitucin, en vez del
propio valor de \fIparmetro\fP.
Esto se conoce como \fIexpansin indirecta\fP.
.PP
En cada uno de los casos anteriores, \fIpalabra\fP est sujeta a
expansin de tilde, expansin de parmetro, sustitucin de orden, y
expansin aritmtica. Cuando no se realiza la expansin de subcadena,
\fBbash\fP comprueba si un parmetro est sin definir o es nulo; si
omitimos los dos puntos la comprobacin slo es para la no definicin
del parmetro.
.PP
.PD 0
.TP
${\fIparmetro\fP\fB:\-\fP\fIpalabra\fP}
\fBEmplear valores predeterminados\fP.
Si
.I parmetro
no est definido o est vaco, se sustituye la expansin de
.IR palabra .
De otro modo, se sustituye el valor de
.IR parmetro .
.TP
${\fIparmetro\fP\fB:=\fP\fIpalabra\fP}
\fBAsignar valores predeterminados\fP.
Si
.I parmetro
no est definido o es nulo, la expansin de
.I palabra
se asigna a
.IR parmetro .
Luego, el valor de
.I parmetro
se sustituye. No se puede asignar nada de esta manera a los parmetros
posicionales ni a los especiales.
.TP
${\fIparmetro\fP\fB:?\fP\fIpalabra\fP}
\fBMuestra un error si no est definido o est vaco\fP.
Si
.I parmetro
es nulo o no est definido, la expansin de \fIpalabra\fP (o un
mensaje a tal efecto si
.I palabra
no est presente) se escribe en la salida estndar de errores y el
shell, si no es interactivo, acaba. De otra manera, se sustituye el
valor de \fIparmetro\fP.
.TP
${\fIparmetro\fP\fB:+\fP\fIpalabra\fP}
\fBEmplear un valor alternativo\fP.
Si
.I parmetro
est vaco o no est definido, no se sustituye nada; de otro modo, se
sustituye la expansin de
.IR palabra .
.TP
.PD 0
${\fIparmetro\fP\fB:\fP\fIdesplazamiento\fP}
.TP
${\fIparmetro\fP\fB:\fP\fIdesplazamiento\fP\fB:\fP\fIlongitud\fP}
.PD
\fBExpansin de subcadena.\fP
Expande hasta \fIlongitud\fP caracteres de \fIparmetro\fP,
empezando en los caracteres especificados por \fIdesplazamiento\fP.
Si se omite la \fIlongitud\fP, se expande a la subcadena de
\fIparmetro\fP, empezando en el carcter especificado por \fIdesplazamiento\fP.
\fIlongitud\fP y \fIdesplazamiento\fP son expresiones aritmticas (vea
.SM
.B
EVALUACIN ARITMTICA
ms abajo).
\fIlongitud\fP debe evaluarse a un nmero mayor o igual a cero.
Si \fIdesplazamiento\fP se evala a un nmero menor que cero, el valor
se emplea como un desplazamiento desde el final del valor de \fIparmetro\fP.
Si \fIparmetro\fP es \fB@\fP, el resultado es \fIlongitud\fP
parmetros posicionales empezando en \fIdesplazamiento\fP.
Si \fIparmetro\fP es un nombre de vector indexado por @ o *,
el resultado es \fIlongitud\fP miembros del vector empezando con
${\fIparmetro\fP[\fIdesplazamiento\fP]}.
La indexacin de la subcadena empieza por cero a menos que se empleen
los parmetros posicionales, en cuyo caso empieza por 1.
.TP
${\fB#\fP\fIparmetro\fP}
Se sustituye la longitud en caracteres del valor de \fIparmetro\fP.
Si
.I parmetro
es
.B *
o
.BR @ ,
el valor sustituido es el nmero de parmetros posicionales.
Si
.I parmetro
es un nombre de vector indexado por
.B *
o
.BR @ ,
el valor sustituido es el nmero de elementos en el vector.
.TP
.PD 0
${\fIparmetro\fP\fB#\fP\fIpalabra\fP}
.TP
${\fIparmetro\fP\fB##\fP\fIpalabra\fP}
.PD
La
.I palabra
se expande para producir un patrn lo mismo que en una expansin de
nombre de camino. Si el patrn concuerda con el principio del valor de
.IR parmetro ,
entonces el resultado de la expansin es el valor expandido de
.I parmetro
con el patrn ms corto que concuerde (el caso ``\fB#\fP) o con el
patrn ms largo que concuerde (el caso ``\fB##\fP'') eliminado.
Si
.I parmetro
es
.B @
o
.BR * ,
la operacin de borrado del patrn se aplica a cada parmetro
posicional por turnos, y la expansin es la lista resultante.
Si
.I parmetro
es una variable vector indexada con
.B @
o
.BR * ,
la operacin de borrado del patrn se aplica a cada miembro del vector
por orden, y la expansin es la lista resultante.
.TP
.PD 0
${\fIparmetro\fP\fB%\fP\fIpalabra\fP}
.TP
${\fIparmetro\fP\fB%%\fP\fIpalabra\fP}
.PD
La \fIpalabra\fP se expande para producir un patrn justo como en la
expansin de nombre de camino.
Si el patrn concuerda con una porcin del final del valor expandido de
.IR parmetro ,
entonces el resultado de la expansin es el valor expandido de
.I parmetro
con el patrn ms corto que concuerde (el caso ``\fB%\fP'') o el ms
largo (el caso ``\fB%%\fP'') borrado.
Si
.I parmetro
es
.B @
o
.BR * ,
la operacin de borrado del patrn se aplica a cada parmetro
posicional por orden, y la expansin es la lista resultante.
Si
.I parmetro
es una variable vector indexada por
.B @
o
.BR * ,
la operacin de borrado del patrn se aplica a cada miembro del vector
por orden, y la expansin es la lista resultante.
.TP
.PD 0
${\fIparmetro\fP\fB/\fP\fIpatrn\fP\fB/\fP\fIcadena\fP}
.TP
${\fIparmetro\fP\fB//\fP\fIpatrn\fP\fB/\fP\fIcadena\fP}
.PD
El \fIpatrn\fP se expande para producir un patrn justo como en la
expansin de nombre de camino.
\fIparmetro\fP se expande y la concordancia ms larga de \fIpatrn\fP
contra este valor se reemplaza por \fIcadena\fP.
En la primera forma, slo se reemplaza la primera concordancia.
La segunda forma hace que todas las concordancias de \fIpatrn\fP se
reemplacen con \fIcadena\fP.
Si \fIpatrn\fP empieza por \fB#\fP, debe concordar con el principio
de la \fIcadena\fP.
Si \fIpatrn\fP empieza por \fB%\fP, debe concordar con el final de
la \fIcadena\fP.
Si \fIcadena\fP est vaca, las concordancias de \fIpatrn\fP se borran
y el \fB/\fP que sigue al \fIpatrn\fP puede omitirse.
Si
.I parmetro
es
.B @
o
.BR * ,
la operacin de sustitucin se aplica a cada parmetro posicional por
orden, y la expansin es la lista resultante.
Si
.I parmetro
es una variable vector indexada por
.B @
o
.BR * ,
la operacin de sustitucin se aplica a cada miembro del vector por
orden, y la expansin es la lista resultante.
.SS Sustitucin de orden
.PP
\fILa sustitucin de orden\fP permite a la salida de una orden
reemplazar al nombre de la orden. Hay dos formas:
.PP
.RS
.PP
\fB$(\fP\fIorden\fP\|\fB)\fP
.RE
u
.RS
\fB`\fP\fIorden\fP\fB`\fP
.RE
.PP
.B Bash
realiza la expansin ejecutando \fIorden\fP y
reemplazando la sustitucin de orden con la salida estndar de la
orden, quitando los saltos de lnea finales.
Los saltos de lnea empotrados no se borran, pero pueden ser
eliminados durante la divisin de palabras.
La sustitucin de orden \fB$(cat \fIfichero\fP)\fR puede reemplazarse por
lo equivalente pero ms rpido \fB$(< \fIfichero\fP)\fR.
.PP
Cuando se emplea la forma de sustitucin al viejo estilo con las
comillas inversas, la barra invertida mantiene su significado literal
excepto cuando es seguida por
.BR $ ,
.BR ` ,
o
.BR \e .
La primera comilla inversa no precedida por una barra invertida
termina la sustitucin de orden.
Cuando se emplea la forma $(\^\fIorden\fP\|), todos los caracteres
entre los parntesis forman parte de la orden; ninguno se trata especialmente.
.PP
Las sustituciones de orden pueden anidarse. Para anidar cuando se
emplee la forma de comillas inversas, proteja las comillas inversas
internas con barras inversas.
.PP
Si la sustitucin aparece dentro de las dobles comillas, la divisin
de palabras y la expansin de nombres no se realiza en los resultados.
.SS Expansin aritmtica
.PP
La expansin aritmtica permite la evaluacin de una expresin
aritmtica y la sustitucin del resultado. El formato para la
expansin aritmtica es:
.RS
.PP
\fB$((\fP\fIexpresin\fP\fB))\fP
.RE
.PP
La
.I expresin
se trata como si estuviera entre comillas dobles, pero un signo de
doble comilla dentro de los parntesis no se trata especialmente.
Todos los lexemas en la expresin estn sujetos a expansin de
parmetro, expansin de cadena, sustitucin de orden, y eliminacin de
comillas.
Las sustituciones aritmticas pueden anidarse.
.PP
La evaluacin se realiza de acuerdo a las reglas listadas ms abajo en
.SM
.BR "EVALUACIN ARITMTICA" .
Si
.I expresin
no es vlida,
.B bash
imprime un mensaje indicando el fallo y no ocurre ninguna sustitucin.
.SS Sustitucin de proceso
.PP
La \fIsustitucin de proceso\fP se admite en sistemas que acepten
tuberas con nombre (\fIFIFOs\fP) o el mtodo \fB/dev/fd\fP de nombrar
ficheros abiertos.
Toma una de las formas siguientes:
\fB<(\fP\fIlista\^\fP\fB)\fP
o
\fB>(\fP\fIlista\^\fP\fB)\fP.
El proceso \fIlista\fP se ejecuta con su entrada o salida conectada a un
\fIFIFO\fP o a algn fichero en \fB/dev/fd\fP. El nombre de este fichero
se pasa como argumento a la orden en curso como el resultado de la
expansin. Si se emplea la forma \fB>(\fP\fIlista\^\fP\fB)\fP, escribir
en el fichero proporciona la entrada para \fIlista\fP. Si se emplea
la forma \fB<(\fP\fIlista\^\fP\fB)\fP, el fichero pasado como argumento
deber leerse para obtener la salida de \fIlista\fP.
.PP
Cuando est disponible, se realiza la \fIsustitucin de proceso\fP
simultneamente con la expansin de parmetro y variable, sustitucin
de orden y expansin aritmtica.
.SS Divisin de palabras
.PP
El shell examina los resultados de la
expansin de parmetro,
sustitucin de orden
y
expansin aritmtica
que no ocurrieron dentro de comillas dobles
para realizar la
.IR "divisin de palabras" .
.PP
El shell trata cada carcter de
.SM
.B IFS
como un delimitador, y divide los resultados de las otras expansiones
en palabras separadas por estos caracteres. Si
.SM
.B IFS
no est definido, o su
valor es exactamente
.BR <espacio><tab><nueva-lnea> ,
el valor predeterminado, entonces
cualquier secuencia de caracteres de
.SM
.B IFS
sirve para delimitar palabras. Si
.SM
.B IFS
tiene algn otro valor, entonces las secuencias de
los caracteres blancos
.B espacio
y
.B tabulador
no se tienen en cuenta al principio y al final de la palabra, siempre
que el carcter de espacio en blanco est en el valor de
.SM
.BR IFS
(un carcter de espacio en blanco de
.SM
.BR IFS ).
Cualquier carcter en
.SM
.B IFS
que no sea espacio en blanco de
.SM
.BR IFS ,
junto con cualquier carcter de espacio en blanco adyacente de
.SM
.BR IFS ,
delimita un campo.
Una secuencia de caracteres de espacio en blanco de
.SM
.B IFS
tambin se trata como un delimitador.
Si el valor de
.SM
.B IFS
es nulo, no se realiza la divisin de palabras.
.PP
Los argumentos nulos explcitos (\^\f3"\^"\fP o \^\f3'\^'\fP\^) se
mantienen. Los argumentos nulos no protegidos implcitos, resultantes
de la expansin de
.I parmetros
que no tienen valores, se eliminan.
Si un parmetro sin ningn valor se expande dentro de comillas dobles,
el resultado es un argumento nulo, y es mantenido.
.PP
Observe que si no hay expansin, tampoco se realiza la divisin de palabras.
.SS Expansin de nombre de camino
.PP
Tras la divisin de palabras,
a menos que la opcin
.B \-f
est puesta,
.B bash
examina cada palabra buscando los caracteres
.BR * ,
.BR ? ,
.BR ( ,
y
.BR [ .
Si uno de estos caracteres aparece, entonces la palabra se considera
como un
.IR patrn ,
y se reemplaza por una lista ordenada alfabticamente de nombres de
ficheros que concuerden con el patrn.
Si no se encuentran nombres de ficheros concordantes,
y la opcin del shell
.B nullglob
est deshabilitada, la palabra se deja tal cual.
Si la opcin
.B nullglob
est puesta, y no ha habido ninguna concordancia,
la palabra se elimina.
Si la opcin del shell
.B nocaseglob
est puesta, la bsqueda de la concordancia se realiza sin importar si
los caracteres alfabticos son letras maysculas o minsculas.
Cuando un patrn se usa para expansin de nombre de camino,
el carcter
.B ``.''
al principio de un nombre o inmediatamente despus de una barra
inclinada debe concordar explcitamente, a menos que est puesta la
opcin del shell
.BR dotglob .
En la concordancia de un nombre de camino, el carcter de barra
inclinada debe siempre coincidir explcitamente.
En otros casos, el carcter
.B ``.''
no se trata de forma especial.
Vea la descripcin de
.B shopt
ms abajo en
.SM
.B RDENES INTERNAS DEL SHELL
para una descripcin de las opciones del shell
.BR nocaseglob ,
.BR nullglob ,
y
.BR dotglob .
.PP
La variable del shell
.SM
.B GLOBIGNORE
puede utilizarse para restringir el conjunto de nombres de ficheros
que concuerden con un
.IR patrn .
Si
.SM
.B GLOBIGNORE
est definido, cada nombre de fichero concordante que tambin coincida
con uno de los patrones en
.SM
.B GLOBIGNORE
se quita de la lista de concordancias.
Los nombres de fichero
.B ``.''
y
.B ``..''
nunca son tenidos en cuenta, incluso cuando
.SM
.B GLOBIGNORE
est puesto. Sin embargo, definir
.SM
.B GLOBIGNORE
tiene el efecto de activar la opcin del shell
.BR dotglob ,
de modo que todos los otros nombres de fichero que comiencen con un
.B ``.''
concordarn.
Para obtener el comportamiento antiguo de no hacer caso de nombres de
ficheros que comienzan con un
.BR ``.'' ,
haga que
.B ``.*''
sea uno de los patrones de
.SM
.BR GLOBIGNORE .
La opcin
.B dotglob
est deshabilitada cuando
.SM
.B GLOBIGNORE
no est definido.
.PP
\fBPatrones\fP
.PP
Cualquier carcter que aparezca en un patrn, aparte de los especiales
descritos ms adelante, concuerda consigo mismo. El carcter NUL no
puede estar en un patrn. Los caracteres de patrn especiales deben
protegerse si han de concordar literalmente consigo mismos.
.PP
Los caracteres de patrn especiales tienen los siguientes significados:
.PP
.PD 0
.TP
.B *
Concuerda con cualquier cadena de caracteres, incluida la cadena vaca.
.TP
.B ?
Concuerda con un solo carcter cualquiera.
.TP
.B [...]
Concuerda con uno de los caracteres entre corchetes. Un par de
caracteres separados por un signo menos denota un
.IR rango ;
cualquier carcter lxicamente entre esos dos, incluidos,
concuerda. Si el primer carcter tras el
.B [
es un
.B !
o un
.BR ^ ,
entonces la concordancia es con cualquier carcter de los que no estn
entre los corchetes.
Un
.B \-
puede representarse para la concordancia incluyndolo como el primer o
ltimo carcter del conjunto.
Un
.B ]
puede hacerse concordar incluyndolo como el primer carcter del conjunto.
.br
.if t .sp 0.5
.if n .sp 1
Dentro de
.B [
y
.BR ] ,
se pueden especificar \fIclases de caracteres\fP mediante la sintaxis
\fB[:\fP\fIclase\fP\fB:]\fP, donde \fIclase\fP es una de las
siguientes clases definidas en el estndar POSIX.2:
.PP
.RS
.B
.if n alnum alpha ascii blank cntrl digit graph lower print punct space upper xdigit
.if t alnum alpha ascii blank cntrl digit graph lower print punct space upper xdigit
.br
Una clase de caracteres concuerda con cualquier carcter que
pertenezca a esa clase.
.br
.if t .sp 0.5
.if n .sp 1
Dentro de
.B [
y
.BR ] ,
una \fIclase de equivalencia\fP se puede especificar empleando la sintaxis
\fB[=\fP\fIc\fP\fB=]\fP, que concuerda con todos los caracteres con el
mismo peso de clasificacin (tal como lo defina la localizacin en
curso) que el carcter \fIc\fP.
.br
.if t .sp 0.5
.if n .sp 1
Dentro de
.B [
y
.BR ] ,
la sintaxis \fB[.\fP\fIsmbolo\fP\fB.]\fP concuerda con el smbolo de
clasificacin
\fIsmbolo\fP.
.RE
.PD
.PP
Si la opcin del shell \fBextglob\fP se activa usando la orden interna
\fBshopt\fP, se reconocen algunos operadores de patrones
extendidos. En la siguiente descripcin, una \fIlista\-patrn\fP es
una lista de uno o ms patrones separados por un \fB|\fP. Se pueden
formar patrones compuestos usando uno o ms de los siguientes
sub-patrones:
.sp 1
.PD 0
.RS
.TP
\fB?(\fP\^\fIlista-patrn\^\fP\fB)\fP
Concuerda con ninguna o una ocurrencia de los patrones dados
.TP
\fB*(\fP\^\fIlista-patrn\^\fP\fB)\fP
Concuerda con ninguna o ms ocurrencias de los patrones dados
.TP
\fB+(\fP\^\fIlista-patrn\^\fP\fB)\fP
Concuerda con una o ms ocurrencias de los patrones dados
.TP
\fB@(\fP\^\fIlista-patrn\^\fP\fB)\fP
Concuerda exactamente con uno de los patrones dados
.TP
\fB!(\fP\^\fIlista-patrn\^\fP\fB)\fP
Concuerda con cualquier cosa excepto con uno de los patrones dados
.RE
.PD
.SS Eliminacin de comillas
.PP
Tras las expansiones precedentes, todas las ocurrencias no
entrecomilladas de los caracteres
.BR \e ,
.BR ' ,
y \^\f3"\fP\^
.\" "
que no resulten de una de las expansiones anteriores, se eliminan.
.SH REDIRECCIN
Antes de que se ejecute una orden, su entrada y salida pueden ser
.I redirigidas
usando una notacin especial interpretada por el shell.
La redireccin tambin se puede emplear para abrir y cerrar ficheros
en el entorno de ejecucin del shell en curso. Los operadores de
redireccin siguientes pueden preceder o aparecer en cualquier sitio
de una
.I orden simple
o pueden ir detrs de una
.IR orden .
Las redirecciones se procesan en el orden en el que aparecen, de
izquierda a derecha.
.PP
En las descripciones siguientes, si se omite el nmero del descriptor
de fichero, y el primer carcter del operador de redireccin es
.BR < ,
la redireccin se refiere a la entrada estndar (descriptor de fichero
0). Si el primer carcter del operador de redireccin es
.BR > ,
la redireccin se refiere a la salida estndar (descriptor de fichero
1).
.PP
La palabra tras el operador de redireccin en las descripciones
siguientes, a menos que se diga otra cosa, est sujeta a la expansin
de llaves, expansin de tilde, expansin de parmetro, sustitucin de
orden, expansin aritmtica, eliminacin de comillas, y expansin de
nombre de camino.
Si se expande a ms de una palabra,
.B bash
informa de un error.
.PP
Observe que el orden de las redirecciones es significativo. Por ejemplo,
la orden
.RS
.PP
ls \fB>\fP listadir 2\fB>&\fP1
.RE
.PP
dirige la salida estndar normal y la de errores, ambas, al fichero
.IR listadir ,
mientras que la orden
.RS
.PP
ls 2\fB>&\fP1 \fB>\fP listadir
.RE
.PP
dirige solamente la salida estndar al fichero
.IR listadir ,
porque la salida de errores estndar se ha duplicado como salida
estndar antes de que sta se redirigiera a
.IR listadir .
.PP
Un fallo en la apertura o creacin de un fichero hace que la
redireccin fracase.
.SS Redireccin de la entrada
.PP
La redireccin de la entrada hace que el fichero cuyo nombre resulte
de la expansin
de
.I palabra
se abra para lectura en el descriptor de fichero
.IR n ,
o la entrada estndar (descriptor de fichero 0) si no se especific
.IR n .
.PP
El formato general para la redireccin de la entrada es:
.RS
.PP
[\fIn\fP]\fB<\fP\fIpalabra\fP
.RE
.SS Redireccin de la salida
.PP
la redireccin de la salida hace que el fichero cuyo nombre resulte de
la expansin de
.I palabra
se abra para escritura en el descriptor de fichero
.IR n ,
o la salida estndar (descriptor de fichero 1) si
.I n
no se especific. Si el fichero no existe se crea; si existe se trunca
a longitud cero, se vaca.
.PP
El formato general para la redireccin de la salida es:
.RS
.PP
[\fIn\fP]\fB>\fP\fIpalabra\fP
.RE
.PP
Si el operador de redireccin es
.BR > ,
y la opcin
.B noclobber
de la orden interna
.B set
ha sido activada, la redireccin fallar si el nombre de fichero
resultante de la expansin de \fIpalabra\fP existiera y fuera un
fichero regular.
Si el operador de redireccin es
.BR >| ,
o es
.B >
y la opcin
.B noclobber
de la orden interna
.B set
no est activada, la redireccin se intenta incluso si el fichero
nombrado por \fIpalabra\fP existe.
.SS Aadir a la salida redirigida
.PP
La redireccin de la salida en esta forma
hace que el fichero cuyo nombre resulte de la expansin de
.I palabra
se abra para aadir en el descriptor de fichero
.IR n ,
o la salida estndar (descriptor de fichero 1) si
.I n
no se especific. Si el fichero no existe, se crea.
.PP
El formato general para aadir a la salida es:
.RS
.PP
[\fIn\fP]\fB>>\fP\fIpalabra\fP
.RE
.PP
.SS Redireccin de la salida estndar normal y de errores
.PP
.B Bash
permite que ambas salidas estndares, la normal (descriptor de fichero
1) y la de errores (descriptor de fichero 2) se redirijan hacia el
fichero cuyo nombre sea la expansin de
.I palabra
con esta construccin.
.PP
hay dos formatos para la redireccin de la salida estndar y la salida
de errores:
.RS
.PP
\fB&>\fP\fIpalabra\fP
.RE
y
.RS
\fB>&\fP\fIpalabra\fP
.RE
.PP
De las dos formas, es preferible la primera.
sta es semnticamente equivalente a
.RS
.PP
\fB>\fP\fIpalabra\fP 2\fB>&\fP1
.RE
.SS Documentos internos
.PP
Este tipo de redireccin instruye al shell a leer la entrada desde la
fuente en curso hasta que vea una lnea que contenga solamente
.I palabra
(sin blancos detrs).
Todas las lneas ledas hasta ese punto se emplean como la entrada
estndar de una orden.
.PP
El formato de los documentos internos es como sigue:
.RS
.PP
.nf
\fB<<\fP[\fB\-\fP]\fIpalabra\fP
\fIdocumento\-interno\fP
\fIdelimitador\fP
.fi
.RE
.PP
No se realiza la expansin de parmetro, sustitucin de orden,
expansin de nombre de camino ni expansin aritmtica en
.IR palabra .
Si cualquier carcter de
.I palabra
est entrecomillado, el
.I delimitador
es el resultado de la eliminacin de comillas en
.IR palabra ,
y las lneas en el documento interno no se expanden.
Si \fIpalabra\fP no est entrecomillada,
todas las lneas del documento interno estn sujetas a expansin de
parmetro, sustitucin de orden y expansin aritmtica. En el ltimo
caso, el par
.B \e<nueva-lnea>
no se tiene en cuenta, y
debe emplearse
.B \e
para proteger los caracteres
.BR \e ,
.BR $ ,
y
.BR ` .
.PP
Si el operador de redireccin es
.BR <<\- ,
entonces se quitan de las lneas de la entrada todos los caracteres de
tabulacin iniciales, as como de la lnea que contiene
.IR delimitador .
Esto permite que los documentos internos dentro de guiones del shell
se sangren de manera natural.
.SS "Duplicacin de descriptores de fichero"
.PP
El operador de redireccin
.RS
.PP
[\fIn\fP]\fB<&\fP\fIpalabra\fP
.RE
.PP
se emplea para duplicar descriptores de ficheros de entrada.
Si
.I palabra
se expande a uno o ms dgitos, el descriptor de fichero denotado por
.I n
se hace ser una copia de este descriptor de fichero.
Si los dgitos en
.I palabra
no especifican un descriptor de fichero abierto para entrada, se
produce un error de redireccin.
Si
.I palabra
se evala a
.BR \- ,
el descriptor de fichero
.I n
se cierra. Si
.I n
no se especifica, se emplea la entrada estndar (descriptor de fichero
0).
.PP
El operador
.RS
.PP
[\fIn\fP]\fB>&\fP\fIpalabra\fP
.RE
.PP
se emplea similarmente para duplicar descriptores de ficheros de
salida. Si
.I n
no se especific, se emplea la salida estndar (descriptor de fichero 1).
Si los dgitos en
.I palabra
no especifican un descriptor de fichero abierto para salida, se
produce un error de redireccin.
Como un caso especial, si \fIn\fP se omite, y \fIpalabra\fP no se
expande a uno o ms dgitos, se redirigen la salida estndar y la
salida estndar de errores como se describi con anterioridad.
.SS "Apertura de descriptores de ficheros para lectura y escritura"
.PP
El operador de redireccin
.RS
.PP
[\fIn\fP]\fB<>\fP\fIpalabra\fP
.RE
.PP
hace que el fichero cuyo nombres sea la expansin de
.I palabra
se abra para lectura y para escritura en el descriptor de fichero
.IR n ,
o en el descriptor de fichero 0 si no se especifica
.IR n .
Si el fichero no existe, se crea.
.SH ALIAS
Los alias permiten que una cadena se sustituya por una palabra cuando
se emplee como la primera palabra de una orden simple.
El shell mantiene una lista de
.I alias
que pueden ponerse y quitarse con las rdenes internas
.B alias
y
.B unalias
(vea
.SM
.B RDENES INTERNAS DEL SHELL
abajo).
Se mira a ver si la primera palabra de cada orden, si no est
entrecomillada, tiene un alias. Si es as, cada palabra se reemplaza
con el texto del alias. El nombre del alias y el texto de reemplazo
pueden contener cualquier entrada vlida para el shell, incluyendo los
.I metacaracteres
listados arriba, con la excepcin de que el nombre del alias no puede
contener un \fI=\fP. La primera palabra del texto de reemplazo se
comprueba si es un alias, pero si es un alias idntico al que se est
expandiendo, no se expande una segunda vez. Esto significa que uno
puede poner un alias
.B ls
a
.BR "ls \-F" ,
por ejemplo, y
.B bash
no intenta expandir recursivamente el texto de reemplazo.
Si el ltimo carcter del valor del alias es un
.IR blanco ,
entonces la siguiente palabra de la orden que sigue al alias tambin
se mira para la expansin de alias.
.PP
Los alias se crean y listan con la orden
.BR alias ,
y se quitan con la orden
.BR unalias .
.PP
No hay ningn mecanismo para poder usar argumentos en el texto de
reemplazo. Si se necesitan, debera emplearse mejor una funcin del
shell.
.PP
Los alias no se expanden cuando el shell no es interactivo, a menos
que se haya puesto la opcin
.B expand_aliases
mediante
.B shopt
(vea la descripcin de
.B shopt
bajo
.SM
\fBRDENES INTERNAS DEL SHELL\fP
abajo).
.PP
Las reglas que conciernen a la definicin y uso de los alias son algo
confusas.
.B Bash
siempre lee por lo menos una lnea completa de entrada antes de
ejecutar cualquiera de las rdenes de esa lnea. Los alias se expanden
cuando se lee una orden, no cuando se ejecuta. Por lo tanto, una
definicin de alias que aparezca en la misma lnea que otra orden no
tiene efecto hasta que se lea la siguiente lnea de entrada.
Las rdenes que sigan a la definicin de alias en esa lnea no se ven
afectadas por el nuevo alias.
Este comportamiento tambin hay que tenerlo en cuenta cuando se
ejecutan funciones.
Los alias se expanden cuando se lee una definicin de funcin, no
cuando la funcin se ejecuta, porque una definicin de funcin es en
s misma una orden compuesta. Como consecuencia, los alias definidos
en una funcin no estn disponibles hasta despus de que esa funcin
se ejecute. Para asegurarse, ponga siempre las definiciones de alias
en una lnea separada, y no emplee la orden
.B alias
en rdenes compuestas.
.PP
Para casi cualquier propsito, los alias pueden sustituirse por
funciones del shell.
.SH FUNCIONES
Una funcin del shell, definida como se describi anteriormente bajo
.SM
.BR "GRAMTICA DEL SHELL" ,
guarda una serie de rdenes para una ejecucin posterior.
Las funciones se ejecutan en el contexto del shell en curso; no se
crea ningn nuevo proceso para interpretarlas (en contraste con la
ejecucin de un guin del shell).
Cuando una funcin se ejecuta, los argumentos de la funcin se
convierten en los parmetros posicionales durante su ejecucin. El
parmetro especial
.B #
se actualiza para reflejar el cambio. El parmetro posicional 0
permanece intacto. Todos los dems aspectos del entorno de ejecucin
del shell son idnticos entre una funcin y quien la llama con la
excepcin de que la trampa
.SM
.B DEBUG
(vea la descripcin de la orden interna
.B trap
bajo
.SM
.B RDENES INTERNAS DEL SHELL
ms adelante) no se hereda.
.PP
Variables locales a la funcin se pueden declarar con la orden interna
.BR local .
Normalmente, las variables y sus valores se comparten entre la funcin
y quien la llama, como variables globales.
.PP
Si se ejecuta la orden interna
.B return
en una funcin, ste se acaba y la ejecucin se reanuda con la
siguiente orden tras la llamada a la funcin. Cuando una funcin se
completa, los valores de los parmetros posicionales y el parmetro especial
.B #
se restauran a los valores que tenan antes de la ejecucin de la funcin.
.PP
Los nombres de funcin y sus definiciones pueden listarse con la opcin
.B \-f
de las rdenes internas
.B declare
o
.BR typeset .
La opcin
.B \-F
de
.B declare
o
.B typeset
listar solamente los nombres de las funciones.
Las funciones pueden exportarse de modo que los subshells las tengan
definidas automticamente con la opcin
.B \-f
de la orden interna
.BR export .
.PP
Las funciones pueden ser recursivas. No se impone ningn lmite en el
nmero de llamadas recursivas.
.SH "EVALUACIN ARITMTICA"
El shell permite que se evalen expresiones aritmticas, bajo ciertas
circunstancias (vea la orden interna \fBlet\fP y
\fBExpansin aritmtica\fP).
La evaluacin se hace con enteros largos sin comprobacin de
desbordamiento, aunque la divisin por 0 se atrapa y se seala como un
error. La lista siguiente de operadores se agrupa en niveles de
operadores de igual precedencia.
Los niveles se listan en orden de precedencia decreciente.
.PP
.PD 0
.TP
.B \- +
menos y ms unarios
.TP
.B ! ~
negacin lgica y de bits
.TP
.B **
exponenciacin
.TP
.B * / %
multiplicacin, divisin, resto
.TP
.B + \-
adicin, sustraccin
.TP
.B << >>
desplazamientos de bits a izquierda y derecha
.TP
.B <= >= < >
comparacin
.TP
.B == !=
igualdad y desigualdad
.TP
.B &
Y de bits (AND)
.TP
.B ^
O exclusivo de bits (XOR)
.TP
.B |
O inclusivo de bits (OR)
.TP
.B &&
Y lgico (AND)
.TP
.B ||
O lgico (OR)
.TP
.B \fIexpr\fP?\fIexpr\fP:\fIexpr\fP
evaluacin condicional
.TP
.B = *= /= %= += \-= <<= >>= &= ^= |=
asignacin
.PD
.PP
Se permite que las variables del shell acten como operandos; se
realiza la expansin de parmetro antes de la evaluacin de la
expresin.
El valor de un parmetro se fuerza a un entero largo dentro de una
expresin. Una variable del shell no necesita tener activado su
atributo de entero para emplearse en una expresin.
.PP
Las constantes con un 0 inicial se interpretan como nmeros octales.
Un 0x 0X inicial denota un nmero en hexadecimal.
De otro modo, los nmeros toman la forma [\fIbase#\fP]n, donde \fIbase\fP
es un nmero en base 10 entre 2 y 64 que representa la base
aritmtica, y \fIn\fP es un nmero en esa base.
Si \fIbase\fP se omite, entonces se emplea la base 10.
Los dgitos mayores que 9 se representan por las letras minsculas,
las metras maysculas, _, y @, en este orden.
Si \fIbase\fP es menor o igual que 36, las letras minsculas y
maysculas pueden emplearse indistintamente para representar nmeros
entre 10 y 35.
.PP
Los operadores se evalan en orden de precedencia. Las sub-expresiones
entre parntesis se evalan primero y pueden sustituir a las reglas de
precedencia anteriores.
.SH "EXPRESIONES CONDICIONALES"
Las expresiones condicionales son empleadas por la orden compuesta
\fB[[\fP y por las rdenes internas \fBtest\fP y \fB[\fP para
comprobar los atributos de ficheros y realizar comparaciones de
cadenas y aritmticas.
Las expresiones se forman a partir de las primarias monarias o
binarias siguientes.
Si cualquier argumento \fIfichero\fP de una de estas primarias es de
la forma /dev/fd/\fIn\fP, entonces se comprueba el descriptor de
fichero \fIn\fP.
.sp 1
.PD 0
.TP
.B \-a \fIfichero\fP
Verdad si \fIfichero\fP existe.
.TP
.B \-b \fIfichero\fP
Verdad si \fIfichero\fP existe y es un fichero especial de bloques.
.TP
.B \-c \fIfichero\fP
Verdad si \fIfichero\fP existe y es un fichero especial de caracteres.
.TP
.B \-d \fIfichero\fP
Verdad si \fIfichero\fP existe y es un directorio.
.TP
.B \-e \fIfichero\fP
Verdad si \fIfichero\fP existe.
.TP
.B \-f \fIfichero\fP
Verdad si \fIfichero\fP existe y es un fichero regular.
.TP
.B \-g \fIfichero\fP
Verdad si \fIfichero\fP existe y tiene el bit SGID.
.TP
.B \-k \fIfichero\fP
Verdad si \fIfichero\fP existe y tiene el bit ``pegajoso'' (STIcky).
.TP
.B \-p \fIfichero\fP
Verdad si \fIfichero\fP existe y es una tubera con nombre (FIFO).
.TP
.B \-r \fIfichero\fP
Verdad si \fIfichero\fP existe y se puede leer.
.TP
.B \-s \fIfichero\fP
Verdad si \fIfichero\fP existe y tiene un tamao mayor que cero.
.TP
.B \-t \fIfd\fP
Verdad si el descriptor de fichero
.I fd
est abierto y se refiere a una terminal.
.TP
.B \-u \fIfichero\fP
Verdad si \fIfichero\fP existe y tiene el bit SUID.
.TP
.B \-w \fIfichero\fP
Verdad si \fIfichero\fP existe y se puede modificar.
.TP
.B \-x \fIfichero\fP
Verdad si \fIfichero\fP existe y es ejecutable.
.TP
.B \-O \fIfichero\fP
Verdad si \fIfichero\fP existe y su propietario es el UID efectivo.
.TP
.B \-G \fIfichero\fP
Verdad si \fIfichero\fP existe y su grupo es el GID efectivo.
.TP
.B \-L \fIfichero\fP
Verdad si \fIfichero\fP existe y es un enlace simblico o blando.
.TP
.B \-S \fIfichero\fP
Verdad si \fIfichero\fP existe y es un zcalo (socket).
.TP
.B \-N \fIfichero\fP
Verdad si \fIfichero\fP existe y ha sido modificado desde que se ley
la ltima vez.
.TP
\fIfichero1\fP \-\fBnt\fP \fIfichero2\fP
Verdad si \fIfichero1\fP es ms reciente (segn la fecha de
modificacin) que \fIfichero2\fP.
.TP
\fIfichero1\fP \-\fBot\fP \fIfichero2\fP
Verdad si \fIfichero1\fP es ms antiguo que \fIfichero2\fP.
.TP
\fIfichero1\fP \fB\-ef\fP \fIfichero2\fP
Verdad si \fIfichero1\fP y \fIfichero2\fP tienen los mismos nmeros de
nodo- y de dispositivo.
.TP
.B \-o \fInombre-opcin\fP
Verdad si la opcin del shell
.I nombre-opcin
est activada.
Vea la lista de opciones bajo la descripcin de la opcin
.B \-o
de la orden interna
.B set
ms abajo.
.TP
.B \-z \fIcadena\fP
Verdad si la longitud de \fIcadena\fP es cero.
.TP
.B \-n \fIcadena\fP
.TP
\fIcadena\fP
Verdad si la longitud de
.I cadena
no es cero.
.TP
\fIcadena1\fP \fB==\fP \fIcadena2\fP
Verdad si las cadenas son iguales. Tambin se puede emplear \fB=\fP
en vez de
\fB==\fP.
.TP
\fIcadena1\fP \fB!=\fP \fIcadena2\fP
Verdad si las cadenas no son iguales.
.TP
\fIcadena1\fP \fB<\fP \fIcadena2\fP
Verdad si \fIcadena1\fP se ordena lexicogrficamente antes de \fIcadena2\fP
en la localizacin en curso.
.TP
\fIcadena1\fP \fB>\fP \fIcadena2\fP
Verdad si \fIcadena1\fP se clasifica lexicogrficamente tras
\fIcadena2\fP en la localizacin en curso.
.TP
.I \fIarg1\fP \fBOP\fP \fIarg2\fP
.SM
.B OP
es uno de
.BR \-eq ,
.BR \-ne ,
.BR \-lt ,
.BR \-le ,
.BR \-gt ,
o
.BR \-ge .
Estos operadores aritmticos binarios devuelven verdadero si
\fIarg1\fP es igual a, distinto de, menor que, menor o igual a,
mayor que, o mayor o igual a \fIarg2\fP, respectivamente.
.I Arg1
y
.I arg2
pueden ser enteros positivos o negativos.
.PD
.SH "EXPANSIN DE ORDEN SIMPLE"
Cuando se ejecuta una orden simple, el shell realiza las siguientes
expansiones, asignaciones y redirecciones, de izquierda a derecha.
.IP 1.
Las palabras que el analizador ha marcado como asignaciones de
variables (aqullas que preceden al nombre de la orden) y
redirecciones se guardan para un procesado posterior.
.IP 2.
Las palabras que no sean asignaciones de variables ni redirecciones se
expanden. Si tras la expansin quedan an palabras, la primera palabra
se toma como el nombre de la orden y las palabras restantes son los
argumentos.
.IP 3.
Se ejecutan las redirecciones como se describi ms arriba bajo
.SM
.BR REDIRECCIN .
.IP 4.
El texto tras el \fB=\fP en cada asignacin de variable est sujeto a
expansin de tilde, expansin de parmetro, sustitucin de orden,
expansin aritmtica y eliminado de comillas antes de ser asignado a
la variable.
.PP
Si no resulta ningn nombre de orden, las asignaciones de variables
afectan al entorno actual del shell. De otro modo, las variables se
aaden al entorno de la orden ejecutada y no afectan al entorno del
shell en curso.
Si cualquiera de las asignaciones intenta dar un valor a una variable
de lectura exclusiva, se produce un error, y la orden acaba con un
estado distinto de cero.
.PP
Si no resulta ningn nombre de orden, se hacen las redirecciones, pero
no afectan al entorno del shell en curso. Un error de redireccin hace
que el shell acabe con un estado distinto de cero.
.PP
Si hay un nombre de orden tras la expansin, la ejecucin procede como
se describi antes. De otro modo, la orden sale. Si una de las
expansiones contena una sustitucin de orden, el estado de salida de
la orden es el de la ltima sustitucin de orden realizada. Si no
haba sustituciones de rdenes, la orden acaba con un estado de cero.
.SH "EJECUCIN DE RDENES"
Despus de que una orden ha sido dividida en palabras, si el resultado
es una orden simple y una lista opcional de argumentos, tienen lugar
las siguientes acciones.
.PP
Si el nombre de la orden no contiene barras inclinadas, el shell
intenta localizarla. Si existe una funcin del shell con ese nombre,
esa funcin se llama como se describi arriba en
.SM
.BR FUNCIONES .
Si el nombre no coincide con el de ninguna funcin, el shell lo busca
en la lista de rdenes internas. Si se encuentra, se llama a la orden
interna correspondiente.
.PP
Si el nombre no es ni una funcin del shell ni una orden interna, y no
contiene barras inclinadas,
.B bash
busca en cada elemento de
.SM
.B PATH
un directorio que contenga un fichero ejecutable con ese nombre.
.B Bash
emplea una tabla de dispersin (hash) para recordar los nombres de
camino completos de los ficheros ejecutables (vea
.B hash
en
.SM
.B "RDENES INTERNAS DEL SHELL"
abajo).
Slo se realiza una bsqueda completa de los directorios de
.SM
.B PATH
si la orden no se encuentra en la tabla de dispersin.
Si la bsqueda no es satisfactoria, el shell muestra un mensaje de
error y devuelve un estado de salida de 127.
.PP
Si la bsqueda fue exitosa, o si el nombre de la orden contiene una o
ms barras inclinadas, el shell ejecuta el programa con ese nombre en
un entorno de ejecucin separado.
El argumento 0 se pone al nombre dado, y el resto de argumentos de la
orden se ponen a los argumentos dados, si los hay.
.PP
Si esta ejecucin fallara porque el fichero no tuviera un formato
ejecutable, y el fichero no fuera un directorio, se supone que es un
\fIguin del shell\fP, un fichero
que contiene rdenes del shell. Se crea un subshell para ejecutarlo.
Este subshell se reinicia a s mismo, as que el efecto es el mismo
que si se hubiera llamado a un nuevo shell para manejar el guin, con
la excepcin de que el hijo retiene las localizaciones de rdenes
recordadas por el padre (vea
.B hash
abajo en
.SM
\fBRDENES INTERNAS DEL SHELL\fP).
.PP
Si el programa es un fichero que empieza con los dos caracteres
.BR #! ,
el resto de la primera lnea especifica un intrprete para el
programa. El shell ejecuta el intrprete especificado en sistemas
operativos que no manejen por s mismos este formato de
ejecutable. Los argumentos del intrprete consisten en un solo
argumento opcional tras el nombre del intrprete en la primera linea
del programa, seguido del nombre del programa, seguido por los
argumentos de la orden, si los hubiera.
.SH ENTORNO DE EJECUCIN DE RDENES
El shell tiene un \fIentorno de ejecucin\fP, que consiste en lo
siguiente:
.sp 1
.IP \(bu
ficheros abiertos heredados por el shell en la llamada, quizs
modificada por redirecciones suministradas a la orden interna
.B exec
.IP \(bu
el directorio de trabajo en curso, establecido por \fBcd\fP, \fBpushd\fP
o \fBpopd\fP, o heredado por el shell en la llamada
.IP \(bu
la mscara de modo de creacin de ficheros, establecida por
.B umask
o heredada del padre del shell
.IP \(bu
las trampas en curso establecidas por
.B trap
.IP \(bu
parmetros del shell que han sido establecidos por asignaciones de
variables o con \fBset\fP, o heredados del padre del shell en el entorno
.IP \(bu
funciones del shell definidas durante la ejecucin o heredadas del
padre del shell en el entorno
.IP \(bu
opciones activadas en la llamada (bien por omisin o mediante
argumentos en la lnea de rdenes) o por
.B set
.IP \(bu
opciones activadas mediante
.B shopt
.IP \(bu
alias del shell definidos con
.B alias
.IP \(bu
varios identificadores de proceso, incluyendo los de trabajos en
segundo plano, el valor de \fB$$\fP, y el valor de
.B $PPID
.PP
Cuando una orden simple distinta de una interna o una funcin del
shell se va a ejecutar, se llama en un entorno de ejecucin separado
que consiste en lo siguiente. A menos que se diga otra cosa, los
valores se heredan del shell.
.sp 1
.IP \(bu
los ficheros abiertos del shell, ms las modificaciones y adiciones
especificadas en la orden por redirecciones
.IP \(bu
el directorio de trabajo en curso
.IP \(bu
la mscara de modo de creacin de ficheros
.IP \(bu
variables del shell marcadas para la exportacin, junto con variables
exportadas para la orden, pasadas en el entorno
.IP \(bu
las trampas capturadas por el shell se restauran a los valores
del padre del shell, y las trampas que no son tenidas en cuenta por el
shell tampoco lo son
.PP
Una orden llamada en este entorno separado no puede afectar al entorno
de ejecucin del shell.
.PP
La sustitucin de rdenes y las rdenes asncronas se llaman en un
entorno de subshell que es un duplicado del entorno del shell, excepto
que las trampas capturadas por el shell se restauran a los valores que
el shell hered de su padre en la llamada. Las rdenes internas que se
llaman como parte de una tubera se ejecutan tambin en un entorno de
subshell. Los cambios hechos al entorno del subshell no pueden afectar
al entorno de ejecucin del shell.
.SH ENTORNO
Cuando se llama a un programa, se le da un vector de cadenas de
caracteres llamado el
.IR entorno .
Esto es una lista de parejas
\fInombre\fP\-\fIvalor\fP, de la forma
.IR "nombre\fR=\fPvalor" .
.PP
El shell le permite manipular el entorno de varias maneras. En la hora
de la llamada, el shell escudria el entorno y crea un parmetro para
cada nombre encontrado, marcndolo automticamente para la
.I exportacin
a procesos hijos. Las rdenes ejecutadas heredan el entorno.
Las rdenes
.B export
y
.B declare \-x
permiten aadir y quitar parmetros y funciones del entorno. Si el
valor de un parmetro en el entorno se modifica, el nuevo valor pasa
a formar parte del entorno, reemplazando al antiguo. El entorno
heredado por cualquier orden ejecutada consiste en el entorno inicial
del shell, cuyos valores pueden ser modificados en el shell, menos
las parejas quitadas mediante la orden
.B unset
ms las adiciones con las rdenes
.B export
y
.BR "declare \-x" .
.PP
El entorno para cualquier
.I orden simple
o funcin puede aumentarse temporalmente prefijndola con asignaciones
de parmetros, como se describi arriba en
.SM
.BR PARMETROS .
Estas sentencias de asignacin afectan solamente al entorno visto por
esa orden.
.PP
Si la opcin
.B \-k
est puesta (vea la orden interna
.B set
ms adelante), entonces
.I todas
las asignaciones de parmetros se ponen en el entorno para una orden,
no slo las que preceden a su nombre.
.PP
Cuando
.B bash
llama a una orden externa, la variable
.B _
se pone con el nombre completo del fichero de la orden y se pasa a esa
orden en su entorno.
.SH "ESTADO DE SALIDA"
Para los propsitos del shell, una orden que acabe con un estado de
salida cero, ha tenido xito. Un estado de salida de cero indica
xito. Un estado de salida distinto de cero indica fallo.
Cuando una orden termina por una seal fatal, \fBbash\fP emplea el
valor de 128+\fBseal\fP como el estado de salida.
.PP
Si una orden no se encuentra, el proceso hijo creado para ejecutarla
devuelve un estado de 127. Si una orden se encuentra pero no es
ejecutable, el estado de salida es 126.
.PP
Si una orden falla debido a un error durante la expansin o
redireccin, el estado de salida es mayor que cero.
.PP
Las rdenes incorporadas en el shell devuelven un estado de 0
(\fIverdad\fP) si acaban con xito, y distinto de cero (\fIfalso\fP)
si ocurre un error mientras se ejecutan.
Todas las rdenes internas devuelven un estado de salida de 2 para
indicar un modo de empleo incorrecto.
.PP
El propio \fBbash\fP devuelve el estado de salida de la ltima orden
ejecutada, a menos que ocurra un error de sintaxis, en cuyo caso acaba
con un estado distinto de cero. Vea tambin la orden interna
.B exit
abajo.
.SH SEALES
Cuando \fBbash\fP es interactivo, en la ausencia de trampas, no hace
caso de
.SM
.B SIGTERM
(de modo que \fBkill 0\fP no mata un shell interactivo),
y se captura y maneja
.SM
.B SIGINT
(de manera que la orden interna \fBwait\fP es interrumpible).
En todos los casos,
.B bash
no hace caso de
.SM
.BR SIGQUIT .
Si el control de trabajos tiene efecto,
.B bash
no hace caso de
.SM
.BR SIGTTIN ,
.SM
.BR SIGTTOU ,
y
.SM
.BR SIGTSTP .
.PP
Los trabajos sncronos empezados por
.B bash
tienen manejadores de seal puestos a los valores heredados por el
shell de su padre.
Cuando el control de trabajo no est en efecto, las rdenes internas
no hacen caso de
.SM
.B SIGINT
ni
.SM
.B SIGQUIT
tampoco.
Las rdenes ejecutadas como resultado de sustitucin de orden no hacen
caso de las seales de control de trabajo generadas mediante el teclado
.SM
.BR SIGTTIN ,
.SM
.BR SIGTTOU ,
ni
.SM
.BR SIGTSTP .
.PP
El shell, de forma predeterminada, acaba cuando recibe una seal
.SM
.BR SIGHUP .
Antes de salir, reenva la seal
.SM
.B SIGHUP
a todos los trabajos, en ejecucin o parados.
A los trabajos parados se les enva
.SM
.B SIGCONT
para asegurarse de que reciben la seal
.SM
.BR SIGHUP .
Para prevenir que el shell enve la seal a un trabajo particular,
debera quitarse de la lista de trabajos con la orden interna
.B disown
(vea
.SM
.B "RDENES INTERNAS DEL SHELL"
ms abajo) o marcarlo para no recibir
.SM
.B SIGHUP
empleando
.BR "disown \-h" .
.PP
Si la opcin del shell
.B huponexit
se ha puesto mediante
.BR shopt ,
.B bash
enva una seal
.SM
.B SIGHUP
a todos los trabajos cuando un shell de entrada interactivo se acaba.
.PP
Cuando \fBbash\fP recibe una seal para la que se ha puesto una trampa
mientras se se est esperando que una orden se complete, la trampa no
se ejecutar hasta que la orden se complete.
Cuando \fBbash\fP est esperando una orden asncrona mediante la orden
interna \fBwait\fP, la recepcin de una seal para la que se ha
definido una trampa, har que la orden interna
.B wait
regrese inmediatamente con un estado de salida mayor que 128,
inmediatamente tras que se ejecute la trampa.
.SH "CONTROL DE TRABAJOS"
El
.I control de trabajos
se refiere a la capacidad de parar selectivamente (\fIsuspender\fP) la
ejecucin de procesos y continuar (\fIreanudar\fP) su ejecucin
posteriormente. Un usuario emplea esta facilidad tpicamente a travs
de una interfaz interactiva suministrada conjuntamente por el
controlador de terminal del sistema y
.BR bash .
.PP
El shell asocia un
.I trabajo
con cada tubera. Mantiene una tabla de trabajos ejecutndose
actualmente, que pueden listarse con la orden
.BR jobs .
Cuando
.B bash
arranca un trabajo asncronamente (en
.IR "segundo plano" ),
imprime una lnea con un aspecto como sta:
.RS
.PP
[1] 25647
.RE
.PP
indicando que este trabajo es el nmero 1 y que el PID del ltimo
proceso en la tubera asociada con l es 25647.
Todos los procesos en una misma tubera son miembros del mismo
trabajo.
.B Bash
emplea la
abstraccin del
.I trabajo
como la base para el control de trabajos.
.PP
Para facilitar la implementacin de la interfaz del usuario al control
de trabajos, el sistema mantiene la nocin de un
.I identificador (ID) de grupo de procesos de la terminal en curso.
Los miembros de este grupo de procesos (procesos cuyo PGID es igual al
PGID de la terminal en curso) reciben seales generadas por el teclado
como
.SM
.BR SIGINT .
Se dice que estos procesos estn en
.IR "primer plano" .
Los procesos en
.I segundo plano
son aqullos cuyo PGID difiere del de la terminal; tales procesos son
inmunes a seales generadas desde el teclado.
Slo los procesos en primer plano tienen permitido leer o escribir en
la terminal. A los procesos en segundo plano que intenten leer de (o
escribir en) la terminal, el controlador de terminal les manda una seal
.SM
.B SIGTTIN (SIGTTOU)
que, a menos que sea capturada, suspende el proceso.
.PP
Si el sistema operativo en el que
.B bash
se est ejecutando, admite el
control de trabajos (Linux lo admite, por supuesto),
.B bash
le permite usarlo.
Teclear el carcter
.I suspender
(tpicamente
.BR ^Z ,
Control-Z) mientras que un proceso se est ejecutando,
hace que ese proceso se pare y le devuelve a Ud. al
.BR bash .
Teclear el carcter
.I "suspensin diferida"
(tpicamente
.BR ^Y ,
Control-Y) hace que el proceso se pare cuando
intente leer entrada desde la terminal, y el control se devuelve a
.BR bash .
El usuario puede entonces manipular el estado de este trabajo,
empleando la orden
.B bg
para continuar con l en segundo plano, la orden
.B fg
para continuar con l en primer plano, o la orden
.B kill
para matarlo. Un \fB^Z\fP tiene efecto inmediatamente,
y tiene el efecto adicional colateral de que la salida pendiente y lo
que haya en el bfer de entrada del teclado se descartan.
.PP
Hay varias formas de referirse a un trabajo en el shell.
El carcter
.B %
introduce un nombre de trabajo. El trabajo nmero
.I n
puede ser referenciado como
.BR %n .
Un trabajo puede ser referenciado utilizando un prefijo del nombre
empleado para arrancarlo, o usando una subcadena que aparezca en su
lnea de rdenes.
Por ejemplo.
.B %ce
se refiere a un trabajo
.B ce
parado. Si un prefijo concuerda con ms de un trabajo,
.B bash
informa de un error. Usar
.BR %?ce ,
por otra parte, se refiere a cualquier trabajo que contenga la cadena
.B ce
en su lnea de rdenes. Si la subcadena concuerda con ms de un trabajo,
.B bash
informa de un error. Los smbolos
.B %%
y
.B %+
se refieren a la nocin que tiene el shell del
.IR "trabajo en curso" ,
que es el ltimo trabajo parado mientras estaba en primer plano o se
arranc en segundo plano.
El
.I "trabajo anterior"
puede referenciarse usando
.BR %\- .
En la salida relativa a trabajos (e.g., la salida de la orden
.BR jobs ),
el trabajo actual se marca siempre con un
.BR + ,
y el anterior con un
.BR \- .
.PP
Si simplemente damos el nombre de un trabajo, esto puede traerlo a
primer plano:
.B %1
es un sinnimo de
\fB``fg %1''\fP,
que trae el trabajo nmero 1 desde el segundo plano al primero.
Similarmente,
.B ``%1 &''
reanuda el trabajo 1 en el segundo plano, equivalente a
\fB``bg %1''\fP.
.PP
El shell se entera inmediatamente de cuando un trabajo cambia de estado.
Normalmente,
.B bash
espera hasta que est a punto de mostrar un indicador antes de
informar de cambios en el estado de un trabajo, para no interrumpir
cualquier otra salida. Si la opcin
.B \-b
de la orden interna
.B set
est activada,
.B bash
informa de tales cambios inmediatamente.
.PP
Si se intenta salir de
.B bash
mientras hay trabajos parados, el shell muestra un mensaje de
aviso. La orden
.B jobs
se puede usar entonces para inspeccionar sus estados.
Si se hace un segundo intento de salir sin ninguna otra orden
intermedia, el shell no muestra ningn otro aviso, y los trabajos
parados se hacen terminar.
.SH INDICADORES
Cuando se ejecuta interactivamente,
.B bash
muestra el indicador primario
.SM
.B PS1
cuando est dispuesto para leer una orden, y el secundario
.SM
.B PS2
cuando necesita ms entrada para completar una orden.
.B Bash
permite que estas cadenas indicadoras se personalicen insertando un
nmero de caracteres especiales protegidos con la barra inversa, que
se interpretan como sigue:
.RS
.PD 0
.TP
.B \ea
un carcter de alerta ASCII (07)
.TP
.B \ed
la fecha en el formato "Da-Semana Mes Da" (ejemplo, "Tue May 26") en
ingls
.TP
.B \ee
un carcter de escape (ESC) ASCII (033)
.TP
.B \eh
el nombre del computador anfitrin hasta el primer `.'
.TP
.B \eH
el nombre del computador anfitrin completo
.TP
.B \en
salto de lnea
.TP
.B \er
retorno de carro
.TP
.B \es
el nombre del shell, el nombre base de
.B $0
(la porcin que sigue a la ltima barra inclinada)
.TP
.B \et
la hora actual en el formato de 24 horas HH:MM:SS
.TP
.B \eT
la hora actual en el formato de 12 horas HH:MM:SS
.TP
.B \e@
la hora actual en el formato de 12 horas con indicador AM/PM
.TP
.B \eu
el nombre de usuario del usuario en curso
.TP
.B \ev
la versin de \fBbash\fP (e.g., 2.00)
.TP
.B \eV
la distribucin de \fBbash\fP, versin + nivel de parcheo (e.g., 2.00.0)
.TP
.B \ew
el directorio de trabajo en curso
.TP
.B \eW
el nombre base del directorio de trabajo
.TP
.B \e!
el nmero de historia de esta orden
.TP
.B \e#
el nmero de orden de esta orden
.TP
.B \e$
si el UID efectivo es 0 (el super-usuario), un
.BR # ,
si no un
.B $
.TP
.B \e\fInnn\fP
el carcter correspondiente al nmero octal \fInnn\fP
.TP
.B \e\e
una barra inclinada invertida
.TP
.B \e[
empieza una secuencia de caracteres no imprimibles, que pueden
emplearse para empotrar una secuencia de control del terminal en el
indicador
.TP
.B \e]
termina una secuencia de caracteres no imprimibles
.PD
.RE
.PP
El nmero de orden y el nmero de historia son usualmente diferentes:
el nmero de historia de una orden es su posicin en la lista de
historia, que puede incluir rdenes restauradas desde el fichero de
historia (vea
.SM
.B HISTORIA
ms abajo), mientras que el nmero de orden es la posicin en la
secuencia de rdenes ejecutadas durante la sesin de shell actual.
Despus de que la cadena es descodificada, se expande mediante la
expansin de parmetros, sustitucin de rdenes, expansin aritmtica,
expansin de cadena, y eliminacin de comillas, sujeta al valor de la
opcin del shell
.B promptvars
(vea la descripcin de la orden
.B shopt
bajo
.SM
.B "RDENES INTERNAS DEL SHELL"
ms adelante).
.SH READLINE
\fIReadline\fP (leer lnea) es la biblioteca que maneja la lectura de
la entrada cuando se usa un shell interactivo, a menos que se haya
dado la opcin
.B \-\-noediting
cuando se llam.
De forma predeterminada, las rdenes de edicin de la lnea son
similares a las de emacs.
Tambin se dispone de una interfaz de edicin de lneas al estilo de vi.
Para desactivar la edicin de lneas una vez que el shell est en
ejecucin, use las opciones
.B +o emacs
o
.B +o vi
de la orden interna
.B set
(vea
.SM
.B RDENES INTERNAS DEL SHELL
abajo).
.SS "Notacin de Readline"
.PP
En esta seccin, se emplea la notacin al estilo de emacs para denotar
las teclas.
Las teclas de control se representan por medio de C\-\fItecla\fP;
as, C\-n significa Control\-N. De forma similar,
las teclas
.I meta
(Alt)
se representan con M\-\fItecla\fP, de forma que M\-x significa
Meta\-X. (En teclados sin tecla
.IR meta ,
M\-\fIx\fP significa ESC \fIx\fP, i.e., pulsar la tecla de escape
(Esc) y luego la tecla
.IR x .
Esto hace que ESC sea el \fIprefijo meta\fP.
La combinacin M\-C\-\fIx\fP quiere decir ESC\-Control\-\fIx\fP,
o pulsar la tecla Escape y luego mantener presionada la tecla Control
mientras se pulsa la tecla
.IR x .)
.PP
Las rdenes de readline pueden recibir
.I argumentos
numricos que actan normalmente como un nmero de repeticin.
Algunas veces, empero, lo que tiene significado es el signo del
argumento. Pasar un argumento negativo a una orden que acta en la
direccin adelante (p. ej., \fBkill\-line\fP) hace que esa orden acte
en la direccin contraria, hacia atrs.
Las rdenes cuyo comportamiento con argumentos se desve de esto se
sealan ms adelante.
.PP
Cuando una orden se describe como que \fIcorta\fP texto, el texto
borrado se guarda para una posible futura recuperacin
(\fIpegado\fP). El texto cortado se guarda en un \fIanillo de
corte\fP. Cortes consecutivos hacen que el texto se acumule en una
unidad, que puede pegarse toda de golpe, de una vez. Las rdenes que
no cortan texto separan los trozos de texto en el anillo de corte.
.SS "Inicio de Readline"
.PP
Readline se personaliza poniendo rdenes en un fichero de inicio
(el fichero \fIinputrc\fP).
El nombre de este fichero se toma del valor de la variable
.SM
.BR INPUTRC .
Si esta variable no est definida, el valor predeterminado es
.IR ~/.inputrc .
Cuando un programa que hace uso de la biblioteca readline arranca, el
fichero de inicio se lee, y se establecen las definiciones de teclas y
variables.
Slo se permiten unas pocas construcciones bsicas en el fichero de
inicio de readline.
Las lneas en blanco no se tienen en cuenta.
Las lneas que comiencen con un \fB#\fP son comentarios.
Las lneas que comiencen con un \fB$\fP indican construcciones condicionales.
Otras lneas representan definiciones de teclas y definiciones de variables.
.PP
Las definiciones predeterminadas de teclas pueden cambiarse con un fichero
.IR inputrc .
Otros programas que usen esta biblioteca pueden aadir sus propias
rdenes y definiciones.
.PP
Por ejemplo, el poner
.RS
.PP
M\-Control\-u: universal\-argument
.RE
o
.RS
C\-Meta\-u: universal\-argument
.RE
dentro del fichero
.I inputrc
hara que M\-C\-u ejecutara la orden de readline
.IR universal\-argument .
.PP
Se reconocen los siguientes nombres simblicos de caracteres:
.IR RUBOUT ,
.IR DEL ,
.IR ESC ,
.IR LFD ,
.IR NEWLINE ,
.IR RET ,
.IR RETURN ,
.IR SPC ,
.IR SPACE ,
y
.IR TAB .
Adems de los nombres de rdenes, readline permite que se enlace una
tecla cualquiera a una cadena de caracteres que se inserta cuando la
tecla se pulse (una \fImacro\fP).
.SS "Definiciones de teclas de Readline"
.PP
La sintaxis para controlar las definiciones de teclas en el fichero
.I inputrc
es simple. Todo lo que se requiere es el nombre de la orden
o el texto de una macro y una secuencia de teclas con la cual debe
enlazarse. El nombre se puede especificar en una de dos formas:
como un nombre simblico de tecla, posiblemente con prefijos
\fIMeta\-\fP o \fIControl\-\fP, o como una secuencia de teclas.
Cuando se use la forma \fBnombre-tecla\fP:\^\fInombre-funcin\fP o \fImacro\fP,
.I nombre-tecla
es el nombre de una tecla en ingls. Por ejemplo:
.sp
.RS
Control-u: universal\-argument
.br
Meta-Rubout: backward-kill-word
.br
Control-o: "> salida"
.RE
.LP
En el ejemplo de arriba,
.I C\-u
se enlaza a la funcin
.BR universal\-argument ,
.I M\-DEL
se vincula a la funcin
.BR backward\-kill\-word ,
y
.I C\-o
se define como que se ejecute la macro
expresada en la parte derecha (esto es, insertar el texto
.I "> salida"
en la lnea).
.PP
En la segunda forma, \fB"sectecla"\fP:\^\fInombre-funcin\fP o \fImacro\fP,
.B sectecla
difiere de la
.B nombre-tecla
de antes en que las cadenas que representan una secuencia entera de
teclas pueden especificarse poniendo la secuencia entre comillas
dobles. As se pueden utilizar algunas teclas de escape al estilo de
GNU Emacs, como en el siguiente ejemplo.
.sp
.RS
"\eC\-u": universal\-argument
.br
"\eC\-x\eC\-r": re\-read\-init\-file
.br
"\ee[11~": "Tecla de Funcin 1"
.RE
.PP
En este ejemplo,
.I C\-u
se enlaza de nuevo a la funcin
.BR universal\-argument .
.I "C\-x C\-r"
se vincula a la funcin
.BR re\-read\-init\-file ,
y
.I "ESC [ 1 1 ~"
se define como que se inserte el texto
.BR "Tecla de Funcin 1" .
El conjunto completo de las secuencias de escape al estilo de GNU
Emacs es
.RS
.PD 0
.TP
.B \eC\-
prefijo de control
.TP
.B \eM\-
prefijo meta
.TP
.B \ee
un carcter de Escape
.TP
.B \e\e
barra inclinada inversa
.TP
.B \e"
una " literal
.TP
.B \e'
un ' literal
.RE
.PD
.PP
Adems de las secuencias de escape al estilo de GNU Emacs, se dispone
de un segundo conjunto de escapes con la barra invertida:
.RS
.PD 0
.TP
.B \ea
alerta (campana)
.TP
.B \eb
espacio atrs
.TP
.B \ed
borrado
.TP
.B \ef
salto de pgina
.TP
.B \en
salto de lnea
.TP
.B \er
retorno de carro
.TP
.B \et
tabulador horizontal
.TP
.B \ev
tabulador vertical
.TP
.B \e\fInnn\fP
el carcter cuyo cdigo es el valor octal \fInnn\fP (de 1 a 3 dgitos)
.TP
.B \ex\fInnn\fP
el carcter cuyo cdigo es el valor hexadecimal \fInnn\fP (de 1 a 3 dgitos)
.RE
.PD
.PP
Cuando se mete el texto de una macro, se deben emplear comillas simples
o dobles para indicar una definicin de macro.
El texto no entrecomillado se supone un nombre de funcin.
En el cuerpo de la macro, los escapes con barra inversa de arriba se expanden.
La barra inversa proteger a cualquier otro carcter en el texto de la
macro, incluyendo a " y a '.
.\" "
.PP
.B Bash
permite mostrar o modificar las definiciones de teclas en curso
mediante la orden interna
.BR bind .
El modo de edicin puede cambiarse durante una sesin interactiva
empleando la opcin
.B \-o
de la orden interna
.B set
(vea
.SM
.B RDENES INTERNAS DEL SHELL
abajo).
.SS "Variables de Readline"
.PP
Readline tiene variables que se pueden usar para personalizar ms an
su comportamiento. Una variable se puede definir en el fichero
.I inputrc
con una sentencia de la forma
.RS
.PP
\fBset\fP \fInombre-variable\fP \fIvalor\fP
.RE
.PP
Excepto cuando se diga, las variables de readline pueden tomar los valores
.B On
u
.BR Off .
Las variables y sus valores predeterminados son:
.PP
.PD 0
.TP
.B bell\-style (audible)
Controla qu pasa cuando readline quiere tocar el pito de la terminal.
Si se define como \fBnone\fP, readline nunca toca el pito. Si se pone a
\fBvisible\fP, readline usa una alerta visible si est disponible.
Si se pone como \fBaudible\fP, readline intenta hacer sonar el pito de
la terminal.
.TP
.B comment\-begin (``#'')
La cadena que se inserta cuando se ejecuta la orden de
.B readline
.BR insert\-comment .
Esta orden est enlazada a
.B M\-#
en modo emacs y a
.B #
en modo vi.
.TP
.B completion\-ignore\-case (Off)
Si se pone a \fBOn\fP, readline realiza la concordancia y terminacin
de nombres de ficheros sin importar si las letras son maysculas o minsculas.
.TP
.B completion\-query\-items (100)
Esto determina cundo se pregunta al usuario si quiere ver el nmero
de terminaciones posibles generadas por la orden
\fBpossible\-completions\fP.
Puede ponerse a cualquier valor entero mayor o igual a cero. Si el
nmero de posibles terminaciones es mayor o igual que el valor de esta
variable, al usuario se le pregunta si desea o no verlas; si no,
simplemente se muestran en la terminal.
.TP
.B convert\-meta (On)
Si se pone a \fBOn\fP, readline convertir caracteres con el octavo
bit a uno a una secuencia de teclas ASCII
poniendo el octavo bit a cero y prefijando un carcter Esc (en efecto,
usando Esc como el \fIprefijo meta\fP).
.TP
.B disable\-completion (Off)
Si se pone a \fBOn\fP, readline inhibir la terminacin de
palabras. Los caracteres para la terminacin se insertarn en la lnea
como si se hubieran hecho corresponder con \fBself-insert\fP.
.TP
.B editing\-mode (emacs)
Controla si readline empieza con un conjunto de definiciones de teclas
similar a las de \fIemacs\fP o \fIvi\fP.
.B editing\-mode
puede ponerse a los valores
.B emacs
o
.BR vi .
.TP
.B enable\-keypad (Off)
Cuando se pone a \fBOn\fP, readline intentar activar el teclado
auxiliar cuando se llame. Algunos sistemas necesitan esto para activar
las teclas de flechas de cursor.
.TP
.B expand\-tilde (Off)
Si se pone a \fBon\fP, la expansin de tilde se realiza cuando
readline intenta la terminacin de palabras.
.TP
.B horizontal\-scroll\-mode (Off)
Cuando se pone a \fBOn\fP, esto hace que readline use una sola lnea
para pantalla, haciendo rodar la entrada horizontalmente en una sola
lnea de la pantalla cuando sta es ms larga que la anchura de la
pantalla; en lugar de seguir en la lnea siguiente.
.TP
.B input\-meta (Off)
Si se pone a \fBOn\fP, readline habilitar la entrada de 8 bits (esto
es, no pondr a cero el octavo bit de los caracteres que lea),
sin importar lo que la terminal diga que admite. El nombre
.B meta\-flag
es un sinnimo para esta variable.
.TP
.B keymap (emacs)
Establece el mapa de teclado actual para readline. El conjunto de
nombres de mapas de teclado vlidos es
\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
vi\-command\fP, y
.IR vi\-insert .
\fIvi\fP es equivalente a \fIvi\-command\fP; \fIemacs\fP es
equivalente a \fIemacs\-standard\fP. El valor predeterminado es
.IR emacs ;
el valor de
.B editing\-mode
tambin afecta al mapa de teclado predeterminado.
.TP
.B mark\-directories (On)
Si se pone a \fBOn\fP, los nombres de directorios completados tendrn
una barra inclinada aadida al final.
.TP
.B mark\-modified\-lines (Off)
Si se pone a \fBOn\fP, las lneas de historia que hayan sido
modificadas se muestran con un asterisco precedindolas (\fB*\fP).
.TP
.B output\-meta (Off)
Si se pone a \fBOn\fP, readline mostrar directamente los caracteres
con el octavo bit a uno, en vez de como una secuencia de escape
prefijada con meta.
.TP
.B print\-completions\-horizontally (Off)
Si se pone a \fBOn\fP, readline mostrar terminaciones con
concordancias clasificadas horizontalmente en orden alfabtico, en vez de
verticalmente.
.TP
.B show\-all\-if\-ambiguous (Off)
Esto altera el comportamiento predeterminado de las funciones de
terminacin. Si se pone a
.BR on ,
las palabras que tienen ms de una posible terminacin hacen que las
concordancias se muestren inmediatamente en vez de tocarse el pito de
la terminal.
.TP
.B visible\-stats (Off)
Si se pone a \fBOn\fP, se aade un carcter que represente un tipo de
fichero segn lo que devuelve \fIstat\fP(2) cuando se listan las
terminaciones posibles.
.PD
.SS "Construcciones condicionales de Readline"
.PP
Readline implementa una facilidad similar en espritu a las
caractersticas de compilacin condicional del preprocesador de C que
permite que las definiciones de teclas y variables se realicen en
funcin de pruebas o condiciones. Hay cuatro directivas del analizador
que se usan.
.IP \fB$if\fP
La construccin
.B $if
permite que las definiciones se hagan segn el modo de edicin, la
terminal en uso, o la aplicacin que haga uso de readline.
El texto de la condicin se extiende hasta el final de la lnea; no se
requieren caracteres para aislarla.
.RS
.IP \fBmode\fP
La forma \fBmode=\fP de la directiva \fB$if\fP se usa para ver si
readline est en modo emacs o vi.
Esto se puede emplear en conjuncin con la orden \fBset keymap\fP, por
ejemplo, para poner el teclado en los mapas \fIemacs\-standard\fP y
\fIemacs\-ctlx\fP slo si readline est arrancando en modo emacs.
.IP \fBterm\fP
La forma \fBterm=\fP puede emplearse para incluir definiciones de
teclas especficas de una terminal determinada, quizs para enlazar
las secuencias de teclas generadas por las teclas de funcin de la
terminal. La palabra en la parte derecha del
.B =
se prueba contra el nombre completo de la terminal y contra la porcin
del nombre de la terminal antes del primer \fB\-\fP. Esto permite que
.I sun
concuerde con
.I sun
y con
.IR sun\-cmd ,
por ejemplo.
.IP \fBapplication\fP
La construccin \fBapplication\fP se emplea para incluir
definiciones especficas de la aplicacin. Cada programa que usa la
biblioteca readline define el \fInombre de la aplicacin\fP, y en un
fichero de arranque se puede comprobar si existe un valor en particular.
Esto se podra emplear para enlazar secuencias de teclas a funciones
tiles para un programa especfico. Por ejemplo, la orden siguiente
aade una secuencia de teclas que entrecomilla la palabra en curso o
la anterior en bash:
.sp 1
.RS
.nf
\fB$if\fP Bash
# Entrecomilla la palabra actual o previa
"\eC\-xq": "\eeb\e"\eef\e""
\fB$endif\fP
.fi
.RE
.RE
.IP \fB$endif\fP
Esta orden, como se ha visto en el ejemplo precedente, termina una
orden \fB$if\fP.
.IP \fB$else\fP
Las rdenes en esta rama de la directiva \fB$if\fP se ejecutan si la
comprobacin falla.
.IP \fB$include\fP
Esta directiva toma como argumento un solo nombre de fichero y lee
rdenes y definiciones de ese fichero. Por ejemplo, la siguiente
directiva leera de \fI/etc/inputrc\fP:
.sp 1
.RS
.nf
\fB$include\fP \^ \fI/etc/inputrc\fP
.fi
.RE
.SS Bsquedas
.PP
Readline proporciona rdenes para buscar a travs de la historia de rdenes
(vea
.SM
.B HISTORIA
abajo) lneas que contengan una cadena especificada.
Hay dos modos de bsqueda:
.I incremental
y
.IR "no incremental" .
.PP
La bsqueda incremental comienza antes de que el usuario haya acabado
de teclear la cadena a buscar.
Tan pronto como se teclea cada carcter de la cadena de bsqueda,
readline muestra la siguiente entrada de la historia que concuerde con
la cadena que se est tecleando hasta este punto. Una bsqueda
incremental requiere solamente tantos caracteres como se necesiten
para encontrar la entrada deseada en la lista de historia.
El carcter Escape se emplea para terminar una bsqueda incremental.
Control-J tambin dar por terminada la bsqueda.
Control-G parar abruptamente una bsqueda incremental y restaurar la
lnea original.
Cuando la bsqueda se termine, la entrada de la historia que
contuviera la cadena de bsqueda se convierte en la lnea en curso.
Para encontrar otras entradas en la lista de historia, teclee
Control-S o Control-R, segn sea apropiado.
Esto buscar hacia atrs o adelante en la historia la siguiente
entrada concordante con la cadena de bsqueda tecleada hasta este punto.
Cualquier otra secuencia de teclas asociada a una orden de readline
terminar la bsqueda y ejecutar esa orden.
Por ejemplo, una \fInueva-lnea\fP terminar la bsqueda y aceptar la
lnea, ejecutando de ese modo la orden de la lista de historia.
.PP
Las bsquedas no incrementales leen la cadena de bsqueda entera antes
de empezar a buscar en las lneas de la lista de historia. La cadena
de bsqueda puede ser tecleada por el usuario o ser parte de los
contenidos de la lnea en curso.
.SS "Nombres de rdenes de Readline"
.PP
Lo siguiente es una lista de los nombres de las rdenes y las
secuencias de teclas predeterminadas a las que estn asociadas.
Los nombres de rdenes sin una secuencia de tecla acompaante
pertenecen a rdenes que no estn asociadas a ninguna secuencia de
teclas de forma predeterminada.
.SS rdenes para el movimiento
.PP
.PD 0
.TP
.B beginning\-of\-line (C\-a)
Mover al principio de la lnea en curso.
.TP
.B end\-of\-line (C\-e)
Mover al final de la lnea.
.TP
.B forward\-char (C\-f)
Mover un carcter hacia adelante.
.TP
.B backward\-char (C\-b)
Mover un carcter hacia atrs.
.TP
.B forward\-word (M\-f)
Mover adelante hasta el final de la siguiente palabra. Las palabras se
componen de caracteres alfanumricos (letras y dgitos).
.TP
.B backward\-word (M\-b)
Mover atrs hasta el principio de esta palabra o la anterior.
Las palabras se
componen de caracteres alfanumricos (letras y dgitos).
.TP
.B clear\-screen (C\-l)
Limpiar la pantalla dejando la lnea en curso al principio de la
pantalla. Con un argumento, refresca la lnea en curso sin borrar la
pantalla.
.TP
.B redraw\-current\-line
Refrescar la lnea en curso.
.PD
.SS rdenes para manipular la lista de historia
.PP
.PD 0
.TP
.B accept\-line (Nueva-lnea, Intro)
Aceptar la lnea sin importar dnde est el cursor. Si esta lnea no
est vaca, aadirla a la lista de historia de acuerdo con el estado
de la variable
.SM
.BR HISTCONTROL .
Si la lnea es una de las de la historia, modificada, entonces
restaurar la lnea de la historia a su estado original.
.TP
.B previous\-history (C\-p)
Obtener la orden anterior de la lista de historia, movindose hacia
atrs en ella.
.TP
.B next\-history (C\-n)
Obtener la orden siguiente de la lista de historia, movindose hacia
delante en ella.
.TP
.B beginning\-of\-history (M\-<)
Mover a la primera lnea de la lista de historia.
.TP
.B end\-of\-history (M\->)
Mover al final de la historia de entrada; esto es, la lnea que est
siendo introducida en la actualidad.
.TP
.B reverse\-search\-history (C\-r)
Buscar hacia atrs empezando en la lnea en curso y movindose
`arriba' a travs de la lista de historia si es necesario. Esta
bsqueda es incremental.
.TP
.B forward\-search\-history (C\-s)
Buscar hacia adelante empezando en la linea en curso y movindose
`abajo' a travs de la lista de historia si es necesario. Esta
bsqueda es incremental.
.TP
.B non\-incremental\-reverse\-search\-history (M\-p)
Buscar hacia atrs a travs de la lista de historia empezando en la
lnea en curso empleando una bsqueda no incremental de una cadena
suministrada por el usuario.
.TP
.B non\-incremental\-forward\-search\-history (M\-n)
Buscar hacia delante a travs de la lista de historia empezando en la
lnea en curso empleando una bsqueda no incremental de una cadena
suministrada por el usuario.
.TP
.B history\-search\-forward
Buscar hacia delante a travs de la lista de historia una cadena de
caracteres entre el comienzo de la lnea en curso y la posicin
actual del cursor (el \fIpunto\fP). Esta bsqueda no es incremental.
.TP
.B history\-search\-backward
Buscar hacia atrs a travs de la lista de historia una cadena de
caracteres entre el comienzo de la lnea en curso y la posicin
actual del cursor (el \fIpunto\fP). Esta bsqueda no es incremental.
.TP
.B yank\-nth\-arg (M\-C\-y)
Insertar el primer argumento de la orden anterior (normalmente la
segunda palabra de la lnea previa) en el punto (la posicin actual
del cursor). Con un argumento
.IR n ,
insertar la \fIn\fP\-sima palabra de la orden anterior (las palabras
en la orden anterior empiezan con la palabra 0). Un argumento negativo
inserta la \fIn\fP\-sima palabra desde el final de la orden anterior.
.TP
.B
yank\-last\-arg (M\-.\^, M\-_\^)
Insertar el ltimo argumento de la orden anterior (la ltima palabra
de la entrada anterior de la lista de historia). Con un argumento, se
comporta exactamente como \fByank\-nth\-arg\fP.
Llamadas sucesivas a \fByank\-last\-arg\fP mueven hacia atrs en la
lista de historia, insertando cada vez el ltimo argumento de cada lnea.
.TP
.B shell\-expand\-line (M\-C\-e)
Expandir la lnea como hace el shell. Esto realiza la expansin de
alias y de historia as como todas las expansiones de palabra del
shell. Vea
.SM
.B EXPANSIN DE HISTORIA
abajo para una descripcin de la expansin de historia.
.TP
.B history\-expand\-line (M\-^)
Realizar la expansin de historia en la lnea en curso.
Vea
.SM
.B EXPANSIN DE HISTORIA
abajo para una descripcin de la expansin de historia.
.TP
.B magic\-space
Efectuar la expansin de historia en la lnea en curso e insertar un
espacio.
Vea
.SM
.B EXPANSIN DE HISTORIA
abajo para una descripcin de la expansin de historia.
.TP
.B alias\-expand\-line
Realizar la expansin de alias en la lnea en curso.
Vea
.SM
.B ALIAS
arriba para una descripcin de la expansin de alias.
.TP
.B history\-and\-alias\-expand\-line
Realizar la expansin de historia y alias en la lnea en curso.
.TP
.B insert\-last\-argument (M\-.\^, M\-_\^)
Un sinnimo para \fByank\-last\-arg\fP.
.TP
.B operate\-and\-get\-next (C\-o)
Aceptar la lnea en curso para la ejecucin y obtener la lnea
siguiente relativa a la actual desde la lista de historia, para la
edicin. Cualquier argumento no se tiene en cuenta.
.PD
.SS rdenes para cambiar el texto
.PP
.PD 0
.TP
.B delete\-char (C\-d)
Borrar el carcter bajo el cursor. Si el punto est al principio de la
lnea, no hay caracteres en la lnea, y el ltimo carcter tecleado no
estaba asociado a \fBdelete\-char\fP, entonces devolver
.SM
.BR EOF .
.TP
.B backward\-delete\-char (<X], DEL)
Borrar el carcter tras el cursor. Cuando se da un argumento numrico,
guardar el texto borrado en el anillo de corte.
.TP
.B quoted\-insert (C\-q, C\-v)
Aadir el siguiente carcter tecleado a la lnea tal cual. As es como
se pueden insertar caracteres como \fBC\-q\fP, por ejemplo.
.TP
.B tab\-insert (C\-v TAB)
Insertar un carcter de tabulacin.
.TP
.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
Insertar el carcter tecleado.
.TP
.B transpose\-chars (C\-t)
Arrastrar el carcter antes del punto hacia adelante sobre el carcter
en el punto. El punto se mueve adelante tambin. Si el punto est al
final de la lnea, entonces transpone los dos caracteres antes del
punto. Los argumentos negativos no funcionan.
.TP
.B transpose\-words (M\-t)
Arrastrar la palabra tras el cursor al lugar pasado la palabra enfrente del
cursor, moviendo el cursor tambin sobre esa palabra.
.TP
.B upcase\-word (M\-u)
Poner en maysculas la palabra en curso (o la siguiente). Con un
argumento negativo, pone la anterior, pero no mueve el punto.
.TP
.B downcase\-word (M\-l)
Poner en minsculas la palabra en curso (o la siguiente). Con un
argumento negativo, pone la anterior, pero no mueve el punto.
.TP
.B capitalize\-word (M\-c)
Poner en mayscula la inicial de la palabra en curso (o la siguiente). Con un
argumento negativo, pone la anterior, pero no mueve el punto.
.PD
.SS Cortar y pegar
.PP
.PD 0
.TP
.B kill\-line (C\-k)
Cortar el texto desde la posicin actual del cursor hasta el final de
la lnea.
.TP
.B backward\-kill\-line (C\-x DEL)
Cortar hacia atrs hasta el principio de la lnea.
.TP
.B unix\-line\-discard (C\-u)
Cortar hacia atrs desde el punto hasta el principio de la lnea. El
texto cortado se guarda en el anillo de corte.
.\" No hay una diferencia real entre esto y backward-kill-line
\" There is no real difference between this and backward-kill-line
.TP
.B kill\-whole\-line
Cortar todos los caracteres de la lnea en curso, sin importar dnde
est el cursor.
.TP
.B kill\-word (M\-d)
Cortar desde el cursor hasta el final de la palabra en curso, o si
entre palabras, hasta el final de la siguiente. Los extremos de las
palabras son los mismos que los empleados por \fBforward\-word\fP.
.TP
.B backward\-kill\-word (M\-DEL)
Cortar la palabra tras el cursor. Los extremos de las palabras son los
mismos que los empleados por \fBbackward\-word\fP.
.TP
.B unix\-word\-rubout (C\-w)
Cortar la palabra tras el cursor, empleando el espacio en blanco como
un lmite de palabra. Los extremos de las palabras son diferentes de
los de \fBbackward\-kill\-word\fP.
.TP
.B delete\-horizontal\-space (M\-\e)
Borrar todos los espacios y tabuladores alrededor del punto.
.TP
.B kill\-region
Cortar el texto entre el punto y la \fImarca\fP (posicin registrada
del cursor). Este texto se conoce como la \fIregin\fP.
.TP
.B copy\-region\-as\-kill
Copiar el texto en la regin al anillo de corte.
.TP
.B copy\-backward\-word
Copiar la palabra antes del punto al bfer de corte.
Los extremos de palabras son los mismos que con \fBbackward\-word\fP.
.TP
.B copy\-forward\-word
Copiar la palabra que sigue al punto al bfer de corte.
Los extremos de palabra son los mismos que con \fBforward\-word\fP.
.TP
.B yank (C\-y)
Pegar la cima del anillo de corte en el bfer en donde est el cursor.
.TP
.B yank\-pop (M\-y)
Rotar en el anillo de corte, y pegar la nueva cima. Slo funciona tras
un
.B yank
o
.BR yank\-pop .
.PD
.SS Argumentos numricos
.PP
.PD 0
.TP
.B digit\-argument (M\-0, M\-1, ..., M\-\-)
Aadir este dgito al argumento, acumulndolo, o comenzar con un nuevo
argumento. M\-\- empieza un argumento negativo.
.TP
.B universal\-argument
sta es otra forma de especificar un argumento.
Si esta orden se hace seguir de uno o ms dgitos, opcionalmente con
un signo menos inicial, estos dgitos definen el argumento.
Si a la orden siguen dgitos, ejecutar de nuevo
.B universal\-argument
finaliza el argumento numrico, pero si no, no se tiene en cuenta.
Como un caso especial, si a esta orden sigue inmediatamente un
carcter que no es ni un dgito ni un signo menos, el nmero del
argumento para la siguiente orden se multiplica por cuatro.
El nmero del argumento es inicialmente uno, as que ejecutar esta
funcin por primera vez hace que el nmero del argumento sea cuatro,
una segunda vez lo hace diecisis, y as sucesivamente.
.PD
.SS Terminacin
.PP
.PD 0
.TP
.B complete (TAB)
Intentar realizar una terminacin del texto antes del punto.
.B Bash
intenta la terminacin tratando al texto como una variable (si el
texto comienza con \fB$\fP), como un nombre de usuario (si el texto
empieza con \fB~\fP), como un nombre de computador anfitrin (si el
texto comienza con \fB@\fP), o como una orden (incluyendo alias y
funciones), por este orden. Si nada de esto concuerda, se intenta la
terminacin de un nombre de fichero.
.TP
.B possible\-completions (M\-?)
Listar las terminaciones posibles del texto antes del punto.
.TP
.B insert\-completions (M\-*)
Insertar todas las terminaciones del texto antes del punto que habran
sido generadas por
\fBpossible\-completions\fP.
.TP
.B menu\-complete
Similar a \fBcomplete\fP, pero reemplaza la palabra a ser completada
con una sola concordancia de la lista de terminaciones posibles.
La ejecucin repetida de \fBmenu\-complete\fP camina por la lista de
terminaciones posibles, insertando cada concordancia por turnos.
Al final de la lista de terminaciones, se hace sonar el pito de la
terminal y el texto original se restaura.
Un argumento \fIn\fP mueve \fIn\fP posiciones hacia delante en la
lista de concordancias; un argumento negativo se puede emplear para
moverse hacia atrs en la lista.
Esta orden est pensada para ser asociada a \fBTAB\fP, pero no est
asociada a ninguna tecla de forma predeterminada.
.TP
.B complete\-filename (M\-/)
Intentar la terminacin de un nombre de fichero en el texto antes del punto.
.TP
.B possible\-filename\-completions (C\-x /)
Listar las posibles terminaciones del texto antes del punto, tratndolo
como un nombre de fichero.
.TP
.B complete\-username (M\-~)
Intentar la terminacin del texto antes del punto, tratndolo
como un nombre de usuario.
.TP
.B possible\-username\-completions (C\-x ~)
Listar las posibles terminaciones del texto antes del punto, tratndolo
como un nombre de usuario.
.TP
.B complete\-variable (M\-$)
Intentar la terminacin del texto antes del punto, tratndolo
como una variable del shell.
.TP
.B possible\-variable\-completions (C\-x $)
Listar las posibles terminaciones del texto antes del punto, tratndolo
como una variable del shell.
.TP
.B complete\-hostname (M\-@)
Intentar la terminacin del texto antes del punto, tratndolo
como un nombre de computador anfitrin.
.TP
.B possible\-hostname\-completions (C\-x @)
Listar las posibles terminaciones del texto antes del punto, tratndolo
como un nombre de computador anfitrin.
.TP
.B complete\-command (M\-!)
Intentar la terminacin del texto antes del punto, tratndolo como un
nombre de orden. La terminacin de orden intenta hacer concordar el
texto con alias, palabras reservadas, funciones del shell, rdenes
internas del shell, y finalmente nombres de ficheros ejecutables, en
ese orden.
.TP
.B possible\-command\-completions (C\-x !)
Listar las posibles terminaciones del texto antes del punto, tratndolo
como un nombre de orden.
.TP
.B dynamic\-complete\-history (M\-TAB)
Intentar la terminacin del texto antes del punto, comparando el texto
con lneas de la lista de historia buscando concordancias para la
terminacin.
.TP
.B complete\-into\-braces (M\-{)
Efectuar la terminacin de nombres de ficheros y devolver la lista de
terminaciones posibles encerrada entre llaves de forma que la lista
est disponible al shell (vea
.B Expansin de llaves
arriba).
.PD
.SS Macros de teclado
.PP
.PD 0
.TP
.B start\-kbd\-macro (C\-x (\^)
Empezar a grabar los caracteres tecleados, en la macro de teclado en
curso.
.TP
.B end\-kbd\-macro (C\-x )\^)
Parar de grabar los caracteres tecleados en la macro de teclado en
curso, y almacenar la definicin.
.TP
.B call\-last\-kbd\-macro (C\-x e)
Reejecutar la ltima macro de teclado definida, haciendo que los
caracteres en la macro aparezcan como si se hubieran pulsado en el
teclado.
.PD
.SS Miscelnea
.PP
.PD 0
.TP
.B re\-read\-init\-file (C\-x C\-r)
Leer los contenidos del fichero \fIinputrc\fP, e incorporar
cualesquiera definiciones de teclas o asignaciones de variables que se
hubieran encontrado en l.
.TP
.B abort (C\-g)
Terminar abruptamente la orden de edicin en curso y tocar el pito de
la terminal (segn el establecimiento de
.BR bell\-style ).
.TP
.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
Si el carcter meta \fIx\fP est en minscula, ejecutar la orden que
est asociada al carcter correspondiente en mayscula.
.TP
.B prefix\-meta (ESC)
Convertir en meta el siguiente carcter tecleado.
.SM
.B ESC
.B f
es equivalente a
.BR Meta\-f .
.TP
.B undo (C\-_, C\-x C\-u)
Deshacer de forma incremental, recordado separadamente para cada lnea.
.TP
.B revert\-line (M\-r)
Deshacer todos los cambios hechos a esta lnea. Esto es como ejecutar
la orden
.B undo
las veces suficientes como para devolver la lnea a su estado inicial.
.TP
.B tilde\-expand (M\-~)
Efectuar la expansin de tilde en la palabra en curso.
.TP
.B set\-mark (C\-@, M\-<espacio>)
Establecer la marca en el punto actual. Si se da un argumento
numrico, la marca se establece en esa posicin.
.TP
.B exchange\-point\-and\-mark (C\-x C\-x)
Cambia el punto con la marca. La posicin actual del cursor se pone en
la posicin guardada, y la vieja posicin del cursor se guarda como la
marca.
.TP
.B character\-search (C\-])
Se lee un carcter y el punto se mueve a la siguiente ocurrencia de
ese carcter. Un argumento numrico negativo hace que la bsqueda sea
de las ocurrencias anteriores.
.TP
.B character\-search\-backward (M\-C\-])
Se lee un carcter y el punto se mueve a la anterior ocurrencia de
ese carcter. Un argumento numrico negativo hace que la bsqueda sea
de las ocurrencias siguientes.
.TP
.B insert\-comment (M\-#)
El valor de la variable de
.B readline
.B comment\-begin
se inserta al principio de la lnea en curso, y la lnea se acepta
como si se hubiera tecleado Intro (nueva-lnea). Esto convierte la
lnea en curso en un comentario del shell.
.TP
.B glob\-expand\-word (C\-x *)
La palabra antes del punto se trata como un patrn para la expansin
de nombres de caminos y la lista de nombres de fichero concordantes se
inserta, reemplazando a la palabra.
.TP
.B glob\-list\-expansions (C\-x g)
Mostrar la lista de expansiones que habran sido generadas por
.B glob\-expand\-word
y redibujar la lnea.
.TP
.B dump\-functions
Mostrar todas las funciones y sus asociaciones de teclas en el flujo
de salida de readline. Si se da un argumento numrico, la salida se
formatea de tal modo que pueda formar parte de un fichero
\fIinputrc\fP.
.TP
.B dump\-variables
Mostrar todas las variables de readline a las que se puedan asignar
valores, y stos, en el flujo de salida de readline. Si se da un
argumento numrico, la salida se formatea de tal manera que pueda
formar parte de un fichero \fIinputrc\fP.
.TP
.B dump\-macros
Mostrar todas las secuencias de teclas de readline asociadas a macros
y las cadenas de caracteres asociadas correspondientes. Si se da un
argumento numrico, la salida se formatea de tal manera que pueda
formar parte de un fichero \fIinputrc\fP.
.TP
.B display\-shell\-version (C\-x C\-v)
Mostrar informacin de versin acerca de la instancia actual de
.BR bash .
.PD
.SH HISTORIA
Cuando se habilita la opcin
.B \-o history
de la orden interna
.BR set ,
el shell da acceso a la
\fIhistoria de rdenes\fP,
la lista de rdenes tecleadas con anterioridad. El texto de los ltimos
.SM
.B HISTSIZE
mandatos (por omisin, 500) se guarda en una lista de historia. El
shell almacena cada orden en la lista de historia antes de la
expansin de parmetros y variables (vea
.SM
.B EXPANSIN
arriba) pero tras efectuar la expansin de historia, sujeta a los
valores de las variables del shell
.SM
.B HISTIGNORE
e
.SM
.BR HISTCONTROL .
En el arranque, la historia se inicia a partir del fichero nombrado en
la variable
.SM
.B HISTFILE
(por omisin \fI~/.bash_history\fP).
.SM
.B HISTFILE
se trunca, si es necesario, para contener no ms de
.SM
.B HISTFILESIZE
lneas.
Cuando un shell interactivo termina, las ltimas
.SM
.B HISTSIZE
lneas se copian de la lista de historia a
.SM
.BR HISTFILE .
Si la opcin del shell
.B histappend
est activa (vea la descripcin de
.B shopt
bajo
.SM
.B "RDENES INTERNAS DEL SHELL"
ms adelante), las lneas se aaden al fichero de historia; si no, el
fichero de historia se sobreescribe.
Si
.SM
.B HISTFILE
no est definido, o si no se puede escribir en el fichero de historia,
la historia no se guarda. Tras guardar la historia, el fichero de
historia se trunca para contener no ms de
.SM
.B HISTFILESIZE
lneas. Si
.SM
.B HISTFILESIZE
no est definido, no se trunca.
.PP
La orden interna
.B fc
(vea
.SM
.B RDENES INTERNAS DEL SHELL
abajo) puede emplearse para listar o editar y re-ejecutar una porcin
de la lista de historia.
La orden interna
.B history
se puede utilizar para mostrar o modificar la lista de historia y
manipular el fichero de historia.
Cuando se emplea la edicin de lneas de rdenes, estn disponibles
las rdenes de bsqueda en cada modo de edicin que proporcionan
acceso a la lista de historia.
.PP
El shell permite el control sobre qu rdenes se guarden en la lista
de historia. Las variables
.SM
.B HISTCONTROL
y
.SM
.B HISTIGNORE
se pueden definir de forma que el shell guarde solamente un
subconjunto de las rdenes introducidas.
La opcin del shell
.BR cmdhist ,
si est habilitada, hace que el shell intente guardar cada lnea de
una orden multi-lnea en la misma entrada de la historia, aadiendo
punto y comas donde sea necesario para preservar la correccin sintctica.
La opcin del shell
.B lithist
hace que el shell guarde la orden con saltos de lnea empotrados en
vez de punto y comas. Vea la descripcin de la orden interna
.B shopt
abajo en
.SM
.B "RDENES INTERNAS DEL SHELL"
para informacin sobre cmo establecer y anular opciones del shell.
.SH "EXPANSIN DE HISTORIA"
.PP
El shell admite una caracterstica de expansin de historia que es
parecida a la expansin de historia en
.BR csh .
Esta seccin describe qu caractersticas sintcticas estn
disponibles. Esta caracterstica est habilitada de forma
predeterminada en shells interactivos, y puede ser desactivada
mediante la opcin
.B \+H
de la orden interna
.B set
(vea
.SM
.B RDENES INTERNAS DEL SHELL
abajo). Los shells no interactivos no realizan la expansin de la
historia de forma predeterminada.
.PP
Las expansiones de historia introducen palabras desde la lista de
historia en el flujo de entrada, facilitando as la repeticin de
rdenes, la insercin de argumentos de una orden anterior en la lnea
de entrada en curso, o la correccin rpida de errores en una orden
anterior.
.PP
La expansin de historia se realiza inmediatamente tras la lectura de
una lnea completa, antes de que el shell la divida en palabras. Tiene
lugar en dos fases.
En la primera se determina qu lnea de la lista de historia hay que
emplear durante la sustitucin.
En la segunda se seleccionan porciones de esa lnea para su inclusin
en la actual.
La lnea seleccionada desde la historia es el \fIevento\fP,
y la porcin de esa lnea sobre la que se acta son \fIpalabras\fP.
Se dispone de varios \fImodificadores\fP para manipular las palabras
seleccionadas. La lnea se divide en palabras de la misma manera que
cuando se lee la entrada, de forma que ciertas palabras separadas por
\fImeta-caracteres\fP rodeadas por comillas se consideran una sola
palabra.
Las expansiones de historia se introducen por la aparicin del
carcter de expansin de historia, que es por omisin \^\fB!\fP\^.
Slo las barras inversas (\^\fB\e\fP\^) y las comillas simples pueden
proteger al carcter de expansin de historia.
.PP
Se pueden emplear ciertas opciones que se ponen con la orden interna
.B shopt
para cambiar el comportamiento de la expansin de historia.
Si la opcin del shell
.B histverify
est activa (vea la descripcin de la orden interna \fBshopt\fP),
y se est usando
.BR readline ,
las sustituciones de historia no se pasan inmediatamente al analizador del
shell.
En vez de eso, la lnea expandida se vuelve a cargar en el bfer de edicin
de
.B readline
para una modificacin posterior.
Si se est usando
.B readline
y la opcin del shell
.B histreedit
est activada, una sustitucin de historia fallida se volver a cargar en el
bfer de edicin de
.B readline
para su correccin.
La opcin
.B \-p
de la orden interna
.B history
se puede emplear para ver qu har una expansin de historia antes de usarse.
La opcin
.B \-s
de la orden interna
.B history
se puede emplear para aadir rdenes al final de la lista de historia sin
ejecutarlas realmente, de modo que estn disponibles para rellamadas
posteriores.
.PP
El shell permite el control de los diversos caracteres empleados por el
mecanismo de expansin de historia (vea la descripcin de
.B histchars
arriba en
.BR "Variables del shell" ).
.SS Designadores de eventos
.PP
Un designador de evento es una referencia a una entrada de lnea de
orden en la lista de historia.
.PP
.PD 0
.TP
.B !
Comenzar una sustitucin de historia, excepto cuando le siga un
.BR blanco ,
salto de lnea, = o (.
.TP
.B !\fIn\fR
Referirse a la lnea de rdenes nmero
.IR n .
.TP
.B !\-\fIn\fR
Referirse a la lnea de orden en curso menos
.IR n .
.TP
.B !!
Referirse a la orden anterior. Esto es lo mismo que `!\-1'.
.TP
.B !\fIcadena\fR
Referirse a la orden ms reciente que comience con
.IR cadena .
.TP
.B !?\fIcadena\fR\fB[?]\fR
Referirse a la orden ms reciente que contenga
.IR cadena .
El \fB?\fP del final puede omitirse si a
.I cadena
le sigue inmediatamente un salto de lnea.
.TP
.B \d\s+2^\s-2\u\fIcadena1\fP\d\s+2^\s-2\u\fIcadena2\fP\d\s+2^\s-2\u
Sustitucin rpida. Repetir la ltima orden, reemplazando
.I cadena1
con
.IR cadena2 .
Equivalente a
``!!:s/\fIcadena1\fP/\fIcadena2\fP/''
(vea \fBModificadores\fP abajo).
.TP
.B !#
La lnea de orden entera tecleada hasta ahora.
.PD
.SS Designadores de palabras
.PP
Los designadores de palabras se emplean para seleccionar las
palabras que se deseen del evento.
Un
.B :
separa la especificacin de evento del designador de palabra.
Puede omitirse si el designador de palabra comienza con un
.BR ^ ,
.BR $ ,
.BR * ,
.BR \- ,
o
.BR % .
Las palabras se numeran desde el principio de la lnea,
con la primera palabra denotada por 0 (cero).
Las palabras se insertan en la lnea en curso separadas por espacios simples.
.PP
.PD 0
.TP
.B 0 (cero)
La palabra nmero 0. Para el shell, sta es la palabra de la orden.
.TP
.I n
La \fIn\fR\-sima palabra.
.TP
.B ^
El primer argumento. Esto es, la palabra nmero 1.
.TP
.B $
El ltimo argumento.
.TP
.B %
La palabra que concordaba con la ms reciente bsqueda con `?\fIcadena\fR?'.
.TP
.I x\fB\-\fPy
Un rango de palabras; `\-\fIy\fR' abrevia `0\-\fIy\fR'.
.TP
.B *
Todas las palabras menos la nmero cero. Esto es un sinnimo de
`\fI1\-$\fP'. No es un error emplear
.B *
si slo hay una palabra en el evento; en este caso se devuelve la
cadena vaca.
.TP
.B x*
Abreviatura de \fIx\-$\fP.
.TP
.B x\-
Abrevia \fIx\-$\fP como \fBx*\fP, pero omite la ltima palabra.
.PD
.PP
Si se suministra un designador de palabra sin una especificacin de
evento, se usa la orden anterior como el evento.
.SS Modificadores
.PP
Tras el designador opcional de palabra, puede haber una secuencia de
uno o ms de los siguientes modificadores, precedido cada uno por un `:'.
.PP
.PD 0
.PP
.TP
.B h
Quitar un componente final de nombre de fichero, dejando slo la parte
izquierda.
.TP
.B t
Quitar todos los primeros componentes de un nombre de fichero, dejando
la ltima parte.
.TP
.B r
Quitar un sufijo final de la forma \fI.xxx\fP, dejando el nombre base.
.TP
.B e
Quitar todo salvo el sufijo final.
.TP
.B p
Mostrar la nueva orden pero no ejecutarla.
.TP
.B q
Entrecomillar las palabras sustituidas, escapando de posteriores sustituciones.
.TP
.B x
Entrecomillar las palabras sustituidas como con
.BR q ,
pero romper entre palabras en los
.B blancos
y saltos de lnea.
.TP
.B s/\fIviejo\fP/\fInuevo\fP/
Substituir
.I nuevo
por la primera ocurrencia de
.I viejo
en la lnea de evento. Se puede emplear cualquier delimitador en vez
de /. El delimitador final es opcional si es el ltimo carcter de la
lnea de evento. El delimitador puede entrecomillarse en
.I viejo
y
.I nuevo
con una sola barra inclinada inversa. Si & aparece en
.IR nuevo ,
se reemplaza por
.IR viejo .
Una sola barra inversa proteger el &. Si
.I viejo
est vaco, se pone al ltimo
.I viejo
substituido, o, si no tuvo lugar ninguna sustitucin de historia
previa, a la ltima
.I cadena
en una bsqueda del tipo \fB!?\fIcadena\fR\fB[?]\fR\fP.
.TP
.B &
Repetir la sustitucin anterior.
.TP
.B g
Hace que los cambios se apliquen sobre la lnea entera de evento. Esto
se emplea en conjuncin con `\fB:s\fP' (p.ej.,
`\fB:gs/\fIviejo\fP/\fInuevo\fP/\fR')
o `\fB:&\fP'. Si se usa con
`\fB:s\fP', cualquier delimitador se puede utilizar en lugar de /,
y el delimitador final es opcional si es el ltimo carcter de la
linea de evento.
.PD
.SH "RDENES INTERNAS DEL SHELL"
.\" start of bash_builtins
.zZ
.PP
A menos que se diga otra cosa, cada orden interna documentada en esta
seccin que acepte opciones precedidas por
.B \-
tambin acepta
.B \-\-
para significar el final de las opciones.
.sp .5
.PD 0
.TP
\fB :\fP [\fIargumentos\fP]
.PD
Sin efecto; la orden no hace nada ms que expandir
.I argumentos
y realizar cualquier redireccin que se haya especificado. Se devuelve
un cdigo de salida cero.
.TP
.PD 0
\fB .\| \fP \fInombre-fichero\fP [\fIargumentos\fP]
.TP
\fBsource\fP \fInombre-fichero\fP [\fIargumentos\fP]
.PD
Lee y ejecuta rdenes desde
.I nombre-fichero
en el entorno actual del shell y devuelve el estado de salida de la
ltima orden ejecutada desde
.IR nombre-fichero .
Si
.I nombre-fichero
no contiene una barra inclinada, se usan los nombres de fichero en
.SM
.B PATH
para encontrar el directorio que contenga a
.IR nombre-fichero .
El fichero que se busca en
.SM
.B PATH
no necesita ser ejecutable. Se busca en el directorio de trabajo si no
se encontr el fichero en
.SM
.BR PATH .
Si la opcin
.B sourcepath
de la orden interna
.B shopt
est desactivada, la bsqueda en
.SM
.B PATH
no se realiza.
Si se suministran \fIargumentos\fP, se convierten en los parmetros
posicionales cuando se ejecuta \fInombre-fichero\fP. Si no, los
parmetros posicionales permanecen inalterados.
El estado de retorno es el de la ltima orden de dentro del guin (0
si no se ejecut ninguna orden), y `falso' si
.I nombre-fichero
no se encontr o no se pudo leer.
.TP
\fBalias\fP [\fB\-p\fP] [\fInombre\fP[=\fIvalor\fP] ...]
\fBAlias\fP sin argumentos o con la opcin
.B \-p
muestra la lista de alias en la forma
\fBalias\fP \fInombre\fP=\fIvalor\fP en la salida estndar.
Cuando se dan argumentos, se define un alias para cada \fInombre\fP
cuyo \fIvalor\fP se da.
Un espacio extra tras \fIvalor\fP hace que en la siguiente palabra se
realice la sustitucin de alias cuando el alias se expande.
Para cada \fInombre\fP en la lista de argumentos para el que no se
suministre un \fIvalor\fP, se muestran el nombre y el valor del alias.
\fBAlias\fP devuelve `verdad' a menos que se d un \fInombre\fP para
el que no se haya definido un alias.
.TP
\fBbg\fP [\fIespectrab\fP]
Reanuda el trabajo suspendido \fIespectrab\fP en segundo plano, como
si se hubiera arrancado con
.BR & .
Si \fIespectrab\fP no est presente, se emplea la nocin que tiene el
shell del \fItrabajo en curso\fP.
.B bg
.I espectrab
devuelve 0 a menos que se ejecute cuando el control de trabajos est
deshabilitado, o cuando se ejecute con el control de trabajos
habilitado si \fIespectrab\fP no se encontr, o cuando se hubo
arrancado sin control de trabajos.
.TP
.PD 0
\fBbind\fP [\fB\-m\fP \fImapatecl\fP] [\fB\-lpsvPSV\fP]
.TP
\fBbind\fP [\fB\-m\fP \fImapatecl\fP] [\fB\-q\fP \fIfuncin\fP] [\fB\-u\fP \fIfuncin\fP] [\fB\-r\fP \fIsectecl\fP]
.TP
\fBbind\fP [\fB\-m\fP \fImapatecl\fP] \fB\-f\fP \fInombre-fichero\fP
.TP
\fBbind\fP [\fB\-m\fP \fImapatecl\fP] \fIsectecl\fP:\fInombre\-funcin\fP
.PD
Muestra las asociaciones actuales de
.B readline
de teclas y funciones, o asocia una secuencia de teclas a una funcin
o macro de
.BR readline .
La sintaxis aceptada es idntica a la de
.IR .inputrc ,
pero cada asociacin debe pasarse como un argumento separado;
p.ej., '"\eC\-x\eC\-r": re\-read\-init\-file'. Las opciones, si se
dan, tienen los siguientes significados:
.RS
.PD 0
.TP
.B \-m \fImapatecl\fP
Usar
.I mapatecl
como el mapa de teclado que va a verse afectado por subsiguientes asociaciones.
Los nombres aceptables de
.I mapatecl
son
\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
vi\-command\fP y
.IR vi\-insert .
\fIvi\fP equivale a \fIvi\-command\fP; \fIemacs\fP es
equivalente a \fIemacs\-standard\fP.
.TP
.B \-l
Lista los nombres de todas las funciones de \fBreadline\fP.
.TP
.B \-p
Muestra los nombres de funciones de \fBreadline\fP de tal forma que
puedan volver a ser ledas.
.TP
.B \-P
Lista los nombres de funciones de \fBreadline\fP actuales y las asociaciones.
.TP
.B \-v
Muestra los nombres de variables de \fBreadline\fP y los valores de
tal manera que puedan volver a ser ledas.
.TP
.B \-V
Lista los nombres de variables de \fBreadline\fP actuales y los valores.
.TP
.B \-s
Muestra las secuencias de teclas de \fBreadline\fP asociadas a macros
y las cadenas correspondientes de tal manera que puedan ser ledas de nuevo.
.TP
.B \-S
Muestra las secuencias de teclas de \fBreadline\fP asociadas a macros
y las cadenas de caracteres correspondientes.
.TP
.B \-f \fInombre-fichero\fP
Lee las asociaciones de teclas desde \fInombre-fichero\fP.
.TP
.B \-q \fIfuncin\fP
Pregunta qu teclas llaman a la \fIfuncin\fP especificada.
.TP
.B \-u \fIfuncin\fP
Desenlaza todas las teclas asociadas a la \fIfuncin\fP nombrada.
.TP
.B \-r \fIsectecl\fP
Borra cualquier asociacin actual de \fIsectecl\fP.
.PD
.PP
El valor devuelto es 0 a menos que se d una opcin no reconocida o
que ocurra un error.
.RE
.TP
\fBbreak\fP [\fIn\fP]
Sale de un bucle
.BR for ,
.BR while ,
.BR until ,
o
.BR select .
Si se especifica \fIn\fP, sale de \fIn\fP niveles.
.I n
debe ser \(>= 1. Si
.I n
es mayor que el nmero de bucles, se sale de todos. El valor devuelto
es 0 a menos que el shell no est ejecutando un bucle cuando se ejecute
.BR break .
.TP
\fBbuiltin\fP \fIorden\-interna\fP [\fIargumentos\fP]
Ejecuta la orden interna del shell especificada, pasndole los
.IR argumentos ,
y devuelve su estado de salida.
Esto es til cuando se define una funcin cuyo nombre es el mismo que
una orden interna del shell, reteniendo la funcionalidad de esa orden
interna dentro de la funcin.
Por ejemplo, la orden interna \fBcd\fP se puede redefinir normalmente
de esta manera.
El estado de salida es `falso' si
.I orden\-interna
no es una orden incorporada del shell.
.TP
\fBcd\fP [\fB\-LP\fP] [\fIdir\fP]
Cambia el directorio de trabajo en curso a \fIdir\fP. La variable
.SM
.B HOME
contiene el nombre del directorio predeterminado
.IR dir .
La variable
.SM
.B CDPATH
define el camino de bsqueda del directorio que contenga
.IR dir .
Los nombres de directorios alternativos en
.SM
.B CDPATH
se separan por dos puntos (:). Un nombre de directorio vaco en
.SM
.B CDPATH
es lo mismo que el directorio de trabajo en curso, o sea,
``\fB.\fP''. Si
.I dir
comienza con una barra inclinada (/),
entonces
.SM
.B CDPATH
no se usa. La opcin
.B \-P
dice que se va a emplear la estructura fsica de directorios en vez de
seguir enlaces simblicos (vea tambin la opcin
.B \-P
de la orden interna
.BR set );
la opcin
.B \-L
hace que se sigan siempre los enlaces simblicos. El argumento
.B \-
es equivalente a
.SM
.BR $OLDPWD .
El valor de retorno es `verdad' si el directorio de trabajo se cambi
con xito; `falso' en otro caso.
.TP
\fBcommand\fP [\fB\-pVv\fP] \fIorden\fP [\fIarg\fP ...]
Ejecuta
.I orden
con
.I args
suprimiendo la bsqueda normal de funciones del shell. Slo se
ejecutarn rdenes incorporadas en el shell o programas encontrados en
la variable
.SM
.BR PATH .
Si se da la opcin
.BR \-p ,
se busca la
.I orden
emplendose un valor predeterminado para
.B PATH
que garantiza encontrar todas las utilidades estndar del sistema.
Si se da la opcin
.B \-V
o la
.BR \-v ,
se muestra una descripcin de
.IR orden .
La opcin
.B \-v
muestra una sola palabra que indica la orden o nombre de fichero
ejecutable empleado para la llamada a
.IR orden ;
la opcin
.B \-V
produce una descripcin algo ms prolija.
Si se dan las opciones
.B \-V
o
.BR \-v ,
el estado de salida es 0 si
.I orden
se encontr, y 1 si no. Si no se da ninguna de las dos opciones y
ocurri un error u
.I orden
no se encontr, el estado de salida es 127. Si no, el estado de salida
de
.B command
es el estado de salida de
.IR orden .
.TP
\fBcontinue\fP [\fIn\fP]
Reanuda la siguiente iteracin del bucle
.BR for ,
.BR while ,
.BR until ,
o
.B select
donde estamos.
Si se especifica
.IR n ,
la reanudacin es en el \fIn\fP\-simo bucle que nos rodea.
.I n
debe ser \(>= 1. Si
.I n
es mayor que el nmero de bucles que nos rodean, se reanuda el
bucle ms exterior (el de ``ms alto nivel''). El valor de retorno es
0 a menos que el shell no est ejecutando un bucle cuando se ejecute
.BR continue .
.TP
.PD 0
\fBdeclare\fP [\fB\-afFirx\fP] [\fB\-p\fP] [\fInombre\fP[=\fIvalor\fP]]
.TP
\fBtypeset\fP [\fB\-afFirx\fP] [\fB\-p\fP] [\fInombre\fP[=\fIvalor\fP]]
.PD
Declaran variables o les dan atributos.
Si no se dan \fInombre\fPs, entonces muestran los valores de las variables.
La opcin
.B \-p
mostrar los atributos y valores de cada
.IR nombre .
Cuando se emplee
.BR \-p ,
otras opciones que se hayan dado no se tienen en cuenta.
La opcin
.B \-F
inhibe la presentacin de las definiciones de funciones; slo se
muestran sus nombres y atributos.
La opcin
.B \-F
implica
.BR \-f .
Se pueden emplear las siguientes opciones para restringir la salida a
variables con el atributo especificado o para dar atributos a variables:
.RS
.PD 0
.TP
.B \-a
Cada \fInombre\fP es una variable vector (vea
.B Vectores
arriba).
.TP
.B \-f
Usar solamente nombres de funciones.
.TP
.B \-i
La variable se trata como un entero; se realiza la evaluacin
aritmtica (vea
.SM
.BR "EVALUACIN ARITMTICA" ") "
cuando a la variable se le asigne un valor.
.TP
.B \-r
Hace que \fInombre\fPs sean de lectura exclusiva. A estos nombres no
se les pueden asignar valores por medio de subsiguientes asignaciones,
ni se puede anular su definicin con \fBunset\fP.
.TP
.B \-x
Marca \fInombre\fPs para la exportacin a rdenes subsecuentes a
travs del entorno.
.PD
.PP
Usar `+' en vez de `\-'
desactiva el atributo en vez de activarlo, con la excepcin de que no
puede emplearse \fB+a\fP para destruir una variable vector. Cuando se
usa en una funcin, hace local cada
\fInombre\fP, como con la orden interna
.BR local .
El valor de retorno es 0 a menos que se encuentre una opcin invlida,
se intente definir una funcin utilizando "\-f fuu=bar",
se intente asignar un valor a una variable de lectura exclusiva,
se intente asignar un valor a una variable vector sin emplear la
sintaxis de asignacin compuesta (vea
.B Vectores
arriba), uno de los \fInombre\fPs no sea un nombre vlido de variable
del shell, se intente desactivar el estado de lectura exclusiva para
una variable de slo lectura, se intente desactivar el estado de
vector para una variable vector, o se intente mostrar una funcin no
existente con \-f.
.RE
.TP
.B dirs [\fB\-clpv\fP] [+\fIn\fP] [\-\fIn\fP]
Sin opciones, muestra la lista de directorios actualmente recordados.
La forma predeterminada de mostrarlos es en una sola lnea con los
nombres de directorios separados por espacios.
Los directorios se aaden a la lista (en realidad, una pila) con la orden
.BR pushd ;
la orden
.B popd
los quita de la pila.
.RS
.PD 0
.TP
\fB+\fP\fIn\fP
Muestra la \fIn\fP\-sima entrada contando desde la izquierda de la
lista mostrada por
.B dirs
cuando se llama sin opciones, empezando por cero.
.TP
\fB\-\fP\fIn\fP
Muestra la \fIn\fP\-sima entrada contando desde la derecha de la
lista mostrada por
.B dirs
cuando se llama sin opciones, empezando por cero.
.TP
.B \-c
Limpia la pila de directorios borrando todas las entradas.
.TP
.B \-l
Produce un listado ms largo; el formato predeterminado de listado
emplea una tilde de la ee para sealar el directorio inicial de
trabajo (el "hogar").
.TP
.B \-p
Muestra la pila de directorios con una entrada por cada lnea.
.TP
.B \-v
Muestra la pila de directorios con una entrada por lnea,
prefijando cada entrada con su ndice en la pila.
.PD
.PP
El valor de retorno es 0 a menos que se d una opcin invlida o que
\fIn\fP indexe ms all del final de la pila de directorios.
.RE
.TP
\fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIespectrab\fP ...]
Sin opciones, cada
.I espectrab
se quita de la tabla de trabajos activos.
Si se da la opcin \fB\-h\fP, cada
.I espectrab
no se quita de la tabla, sino que se marca de manera que
no se le enviar la seal
.SM
.B SIGHUP
si el shell recibe una seal
.SM
.BR SIGHUP .
Si no hay ningn
.I espectrab
presente, y ni se dan las opciones
.B \-a
ni
.BR \-r ,
se utiliza el trabajo \fIen curso\fP.
Si no se suministra
.IR espectrab ,
la opcin
.B \-a
significa quitar o marcar todos los trabajos; la opcin
.B \-r
sin un argumento
.I espectrab
restringe la operacin a los trabajos en ejecucin.
El valor de retorno es 0 a menos que
.I espectrab
no se refiera a un trabajo vlido.
.TP
\fBecho\fP [\fB\-neE\fP] [\fIarg\fP ...]
Repite los \fIarg\fPs, separados por espacios, seguidos por un salto
de lnea.
El estado de retorno es siempre 0.
Si se especifica \fB\-n\fP, se suprime el salto de lnea final.
Si se da la opcin \fB\-e\fP, se activa la interpretacin de los
siguientes caracteres de escape (con barra inversa). La opcin
.B \-E
desactiva la interpretacin de estos caracteres de escape, incluso en
sistemas donde se interpreten de forma predeterminada.
.B echo
no interpreta
.B \-\-
como el fin de las opciones.
.B echo
interpreta las siguientes secuencias de escape:
.RS
.PD 0
.TP
.B \ea
alerta (pito)
.TP
.B \eb
espacio atrs
.TP
.B \ec
suprime el salto de lnea final
.TP
.B \ee
un carcter Escape
.TP
.B \ef
salto de pgina
.TP
.B \en
nueva lnea
.TP
.B \er
retorno de carro
.TP
.B \et
tabulador horizontal
.TP
.B \ev
tabulador vertical
.TP
.B \e\e
barra inclinada invertida
.TP
.B \e\fInnn\fP
el carcter cuyo cdigo es el valor octal \fInnn\fP
(de uno a tres dgitos)
.TP
.B \ex\fInnn\fP
el carcter cuyo cdigo es el valor hexadecimal \fInnn\fP
(de uno a tres dgitos)
.PD
.RE
.TP
\fBenable\fP [\fB\-adnps\fP] [\fB\-f\fP \fInombre-fichero\fP] [\fInombre\fP ...]
Activa y desactiva rdenes internas incorporadas en el shell.
Desactivar una orden incorporada en el shell permite que un programa
cuya imagen ejecutable est en el disco con el mismo nombre, se
ejecute sin tener que especificar un camino completo, aun cuando el
shell normalmente busca las rdenes internas antes que las rdenes
externas en disco.
Si se da \fB\-n\fP, cada \fInombre\fP
se desactiva; si no,
\fInombre\fPs se activan. Por ejemplo, para emplear el programa binario
.B test
encontrado en el
.SM
.B PATH
en vez de la versin incorporada en el shell, ejecute
\f(CWenable -n test\fR.
La opcin
.B \-f
significa cargar la nueva orden incorporada
.I nombre
desde el objeto compartido
.IR nombre-fichero ,
en sistemas que admiten la carga dinmica. La opcin
.B \-d
borrar una orden interna cargada previamente con
.BR \-f .
Si no se dan argumentos \fInombre\fP, o si se da la opcin
.BR \-p ,
se muestra una lista de rdenes internas del shell.
Sin ninguna opcin ms, la lista consiste en todas las rdenes
internas activas.
Si se da \fB\-n\fP, slo se muestran las rdenes desactivadas.
Si se da \fB\-a\fP, la lista impresa incluye todas las rdenes
internas, con una indicacin en cada una de si est activada o no.
Si se da \fB\-s\fP, la salida se restringe a las rdenes internas
\fIespeciales\fP de POSIX.
El valor de retorno es 0 a menos que un
.I nombre
no sea una orden interna del shell o que haya un problema cargando una
nueva orden incorporada desde un objeto compartido.
.TP
\fBeval\fP [\fIarg\fP ...]
Los \fIarg\fPs se leen y concatenan juntos para formar una sola
orden. Entonces el shell lee y ejecuta esta orden, y su estado de
salida se devuelve como el valor de
.BR eval .
Si no hay
.IR args ,
o solamente argumentos vacos,
.B eval
devuelve 0.
.TP
\fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fInombre\fP] [\fIorden\fP [\fIargumentos\fP]]
Si se especifica
.IR orden ,
reemplaza al shell.
No se crea ningn proceso nuevo. Los
.I argumentos
se convierten en los argumentos de \fIorden\fP.
Si se da la opcin
.BR \-l ,
el shell pone un guin en el argumento nmero cero pasado a
.IR orden .
Esto es lo que hace
.IR login (1).
La opcin
.B \-c
hace que
.I orden
se ejecute con un entorno vaco. Si se da
.B \-a ,
el shell pasa
.I nombre
como el argumento nmero cero de la orden ejecutada. Si
.I orden
no puede ejecutarse por alguna razn, un shell no interactivo se
acaba, a menos que se haya activado la opcin del shell
.BR execfail ,
en cuyo caso devuelve `fallo'.
Un shell interactivo devuelve `fallo' si el fichero no puede
ejecutarse.
Si
.I orden
no se especifica, cualquier redireccin tiene efecto en el shell en
curso, y el estado devuelto es 0. Si hay un error de redireccin, el
estado de retorno es 1.
.TP
\fBexit\fP [\fIn\fP]
Hace que el shell acabe con un estado de valor \fIn\fP. Si
.I n
se omite, el valor de salida es el de la ltima orden ejecutada.
Se ejecuta una trampa puesta en
.SM
.B EXIT
antes de que el shell termine.
.TP
.PD 0
\fBexport\fP [\fB\-fn\fP\^] [\fInombre\fP[=\fIpalabra\fP]] ...
.TP
.B export \-p
.PD
Los
.I nombres
suministrados se marcan para exportacin automtica al entorno de
rdenes que se ejecuten de ah en adelante. Si la opcin
.B \-f
se da, los
.I nombres
se referirn a funciones.
Si no se dan
.IR nombres ,
o si se da la opcin
.BR \-p ,
se muestra una lista de todos los nombres que estn exportados en este
shell.
La opcin
.B \-n
hace que la propiedad de exportacin se quite de las variables
nombradas; o sea, que se quiten del entorno.
.B export
devuelve un estado de salida de 0 a menos que se encuentre una opcin
invlida, uno de los \fInombre\fPs no sea un nombre vlido de variable
del shell, o que se d
.B \-f
no siendo
.I nombre
una funcin.
.TP
.PD 0
\fBfc\fP [\fB\-e\fP \fIeditor\fP] [\fB\-nlr\fP] [\fIprimero\fP] [\fIltimo\fP]
.TP
\fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIord\fP]
.PD
Corrige orden (Fix Command). En la primera forma, se selecciona un
rango de rdenes desde
.I primero
hasta
.I ltimo
de la lista de historia.
.I Primero
y
.I ltimo
pueden especificarse como una cadena de caracteres (para localizar la
ltima orden que empezara con esa cadena) o como un nmero (un ndice
en la lista de historia, donde un nmero negativo se emplea como un
desplazamiento a partir del nmero de orden actual). Si no se da
.IR ltimo ,
se pone a la orden en curso para un listado (de forma que
.B fc \-l \-10
muestra las 10 ltimas rdenes) o a
.I primero
en otro caso.
Si no se especifica
.IR primero ,
se pone a la orden previa para una edicin y a \-16 para un listado.
.sp 1
La opcin
.B \-n
suprime los nmeros de orden en un listado. La opcin
.B \-r
invierte el orden de los mandatos. Si se da la opcin
.B \-l ,
las rdenes se listan en la salida estndar. Si no, se llama al editor
dado por
.I editor
en un fichero conteniendo esas rdenes.
Si no se da
.IR editor ,
se emplea el valor de la variable
.SM
.BR FCEDIT ,
o el valor de
.SM
.B EDITOR
si
.SM
.B FCEDIT
no est definido. Si no est definida ni una variable ni otra,
.B vi
es el editor que se emplear. Cuando la edicin se haya completado,
las rdenes editadas se muestran y ejecutan.
.sp 1
En la segunda forma, \fIorden\fP se re-ejecuta tras que cada instancia de
\fIpat\fP se reemplace por \fIrep\fP.
Un alias de utilidad para emplear con esto es
.if n ``r=fc -s'',
.if t \f(CWr='fc \-s'\fP,
de tal modo que al teclear
.if n ``r cc''
.if t \f(CWr cc\fP
se ejecute la ltima orden que empezara con
.if n ``cc''
.if t \f(CWcc\fP
y que al teclear
.if n ``r''
.if t \f(CWr\fP
se re-ejecute la ltima orden.
.sp 1
Si se usa la primera forma, el valor de retorno es 0 a menos que se
encuentre una opcin invlida o que
.I primero
o
.I ltimo
especifiquen lneas de historia fuera de rango.
Si se suministra la opcin
.BR \-e ,
el valor de retorno es el de la ltima orden ejecutada, o `fallo' si
ocurre un error con el fichero temporal de rdenes. Si se emplea la
segunda forma, el estado de retorno es de la orden reejecutada, a
menos que
.I ord
no especifique una lnea vlida de historia, en cuyo caso
.B fc
devuelve `fallo'.
.TP
\fBfg\fP [\fIespectrab\fP]
Reanuda
.I espectrab
en primer plano, y lo hace ser el trabajo en curso.
Si
.I espectrab
no est presente, se usa la nocin que tiene el shell del \fItrabajo
en curso\fP. El valor de retorno es el de la orden puesta en primer
plano, o `fallo' si se ejecuta \fBfg\fP cuando el control de trabajos
est desactivado o, cuando se ejecuta con el control de trabajos
activado, si
.I espectrab
no especifica un trabajo vlido o
.I espectrab
se refiere a una trabajo que se arranc sin control de trabajos.
.TP
\fBgetopts\fP \fIcadenaopcs\fP \fInombre\fP [\fIargs\fP]
.B getopts
se usa en procedimientos del shell para analizar los parmetros
posicionales.
.I cadenaopcs
contiene las letras de opcin que se reconocern; si a una letra le
sigue un signo de dos puntos, se espera que la opcin tenga un
argumento, que debera estar separado de ella por espacio en blanco.
Cada vez que se llama,
.B getopts
pone la siguiente opcin en la variable del shell
.IR nombre ,
inicializando
.I nombre
si no existe,
y el ndice del siguiente argumento a ser procesado en la
variable
.SM
.BR OPTIND .
.SM
.B OPTIND
se inicializa a 1 cada vez que se llama al shell o al guin del
shell. Cuando una opcin requiera un argumento,
.B getopts
pone ese argumento en la variable
.SM
.BR OPTARG .
El shell no pone a cero
.SM
.B OPTIND
automticamente; debe ser puesto a cero manualmente entre llamadas
mltiples a
.B getopts
dentro de la misma llamada al shell si hubiera que usar un nuevo
conjunto de parmetros.
.sp 1
Cuando se encuentra el fin de las opciones, \fBgetopts\fP sale con un
valor de retorno mayor que cero.
\fBOPTIND\fP se pone al ndice del primer argumento que no es una
opcin, y \fBnombre\fP se pone a "?".
.sp 1
.B getopts
normalmente analiza los parmetros posicionales, pero si se dan ms
argumentos en
.IR args ,
.B getopts
analiza aqullos en su lugar.
.sp 1
.B getopts
puede informar de errores de dos maneras. Si el primer carcter de
.I optstring
es dos puntos,
se emplea un informe de error
.IR silencioso .
En un modo normal de operacin se muestran mensajes de diagnsticos
cuando se encuentran opciones invlidas o faltan argumentos de
opciones que los requieran.
Si la variable
.SM
.B OPTERR
se pone a 0, no se mostrar ningn mensaje de error, incluso si el
primer carcter de
.I optstring
no es dos puntos.
.sp 1
Si se ve una opcin invlida,
.B getopts
pone ? en
.I nombre
y, si no estamos en el modo silencioso, se muestra un mensaje de error
y se anula
.SM
.BR OPTARG .
Si
.B getopts
es silencioso, el carcter de opcin encontrado se pone en
.SM
.B OPTARG
y no se muestra ningn mensaje de diagnstico.
.sp 1
Si no se encuentra un argumento necesario, y
.B getopts
no es silencioso,
se pone un signo de cierre de interrogacin (\^\fB?\fP\^) en
.IR nombre ,
.B OPTARG
se anula, y se muestra un mensaje de diagnstico.
Si
.B getopts
es silencioso, entonces se pone un signo de dos puntos (\^\fB:\fP\^) en
.I nombre
y
.SM
.B OPTARG
toma el valor del carcter de opcin encontrado.
.sp 1
.B getopts
devuelve `verdad' si una opcin, especificada o no, se encuentra.
Devuelve `falso' si se encuentra el final de las opciones o si ocurre
un error.
.TP
\fBhash\fP [\fB\-r\fP] [\fB\-p\fP \fInombre-fichero\fP] [\fInombre\fP]
Para cada
.IR nombre ,
se determina el nombre completo del fichero correspondiente buscando
los directorios en
.B $PATH
y dicho nombre completo se registra.
Si se da la opcin
.B \-p
no se busca en el PATH, y se emplea en su lugar
.I nombre-fichero
como el nombre completo de fichero para la orden.
La opcin
.B \-r
hace que el shell se olvide de todas las localizaciones
registradas. Si no se dan argumentos, se muestra informacin acerca de
las rdenes recordadas. El estado de salida es `verdad' a menos que un
.I nombre
no se encuentre o se d una opcin invlida.
.TP
\fBhelp\fP [\fIpatrn\fP]
Muestra informacin de ayuda sobre las rdenes internas. Si se especifica
.IR patrn ,
.B help
da ayuda detallada sobre todas las rdenes que concuerden con
.IR patrn ;
si no, se muestra ayuda para todas las rdenes internas y estructuras
de control del shell. El estado de retorno es 0 a menos que ninguna
orden concuerde con
.IR patrn .
.TP
.PD 0
\fBhistory\fP [\fB\-c\fP] [\fIn\fP]
.TP
\fBhistory\fP \fB\-anrw\fP [\fInombre-fichero\fP]
.TP
\fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP]
.TP
\fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP]
.PD
Sin opciones, muestra la lista de historia de rdenes con nmeros de
lnea. Las lneas marcadas con un
.B *
han sido modificadas. Un argumento de
.I n
lista solamente las ltimas
.I n
lneas. Si \fInombre-fichero\fP se da, se emplea como el nombre del
fichero de historia; si no, se usa el valor de
.SM
.BR HISTFILE .
Las opciones, si se dan, tienen los siguientes significados:
.RS
.PD 0
.TP
.B \-a
Aade las lneas de historia ``nuevas'' (las introducidas desde el
inicio de la sesin de \fBbash\fP en curso) al fichero de historia.
.TP
.B \-n
Lee las lneas de historia que an no han sido ledas del fichero de
historia y las mete en la lista de historia actual. stas son las
lneas aadidas al fichero de historia desde el comienzo de la sesin
de \fBbash\fP actual.
.TP
.B \-r
Lee los contenidos del fichero de historia y los usa como la historia
en curso.
.TP
.B \-w
Escribe la historia en curso en el fichero de historia,
sobreescribiendo sus contenidos.
.TP
.B \-c
Limpia la lista de historia borrando todas las entradas.
.TP
.B \-p
Realiza la sustitucin de historia de los siguientes \fIargs\fP y
muestra el resultado en la salida estndar.
No almacena los resultados en el fichero de historia.
Cada \fIarg\fP debe protegerse para deshabilitar la expansin de
historia normal.
.TP
.B \-s
Almacena los
.I args
en la lista de historia como una sola entrada. La ltima orden en la
lista de historia se elimina antes de que se aadan los
.IR args .
.PD
.PP
El valor de retorno es 0 a menos que se encuentre una opcin invlida
o que ocurra un error mientras se lee o se escribe el fichero de historia.
.RE
.TP
.PD 0
\fBjobs\fP [\fB\-lnprs\fP] [ \fIespectrab\fP ... ]
.TP
\fBjobs\fP \fB\-x\fP \fIorden\fP [ \fIargs\fP ... ]
.PD
La primera forma lista los trabajos activos. Las opciones tienen los
significados siguientes:
.RS
.PD 0
.TP
.B \-l
Lista PIDs adems de la informacin normal.
.TP
.B \-p
Lista solamente el PID del lder del grupo de proceso del trabajo.
.TP
.B \-n
Muestra informacin solamente sobre trabajos que han cambiado de
estado desde que se notific al usuario por ltima vez de su estado.
.TP
.B \-r
Restringe la salida a los trabajos en ejecucin.
.TP
.B \-s
Restringe la salida a los trabajos parados.
.PD
.PP
Si se da
.IR espectrab ,
la salida se restringe a la informacin sobre ese trabajo.
El estado de retorno es cero a menos que se encuentre una opcin
invlida o se suministre un
.I espectrab
invlido.
.PP
Si se da la opcin
.BR \-x ,
.B jobs
reemplaza cualquier
.I espectrab
encontrado en
.I orden
o
.I args
con el ID de grupo de proceso correspondiente, y ejecuta
.I orden
pasndole
.IR args ,
devolviendo su estado de salida.
.RE
.TP
.PD 0
\fBkill\fP [\fB\-s\fP \fInombre-seal\fP | \fB\-n\fP \fInumseal\fP | \fB\-\fP\fInombre-seal\fP] [\fIpid\fP | \fIespectrab\fP] ...
.TP
\fBkill\fP \fB\-l\fP [\fInombre-seal\fP | \fIstatus_salida\fP]
.PD
Enva la seal especificada por
.I nombre-seal
o
.I numseal
a los procesos nombrados por
.I pid
o
.IR espectrab .
.I nombre-seal
es o bien un nombre de seal como
.SM
.B SIGKILL
o un nmero de seal;
.I numseal
es un nmero de seal. Si
.I nombre-seal
es un nombre de seal, ste puede darse con o sin el prefijo
.SM
.BR SIG .
Si
.I nombre-seal
no est presente, entonces se supone
.SM
.BR SIGTERM .
Un argumento de
.B \-l
lista los nombres de seales.
Si se suministran ms argumentos cuando se da
.BR \-l ,
se listan los nombres de las seales correspondientes a los
argumentos, y el estado de retorno es 0.
El argumento \fIstatus_salida\fP de
.B \-l
es un nmero que especifica o bien un nmero de seal o el estado de
salida de un proceso terminado por una seal.
.B kill
devuelve ``verdad'' si por lo menos se envi con xito una seal, o
``falso'' si ocurri un error o se encontr una opcin invlida.
.TP
\fBlet\fP \fIarg\fP [\fIarg\fP ...]
Cada
.I arg
es una expresin aritmtica a ser evaluada (vea
.SM
.BR "EVALUACIN ARITMTICA" ).
Si el ltimo
.I arg
se evala a 0,
.B let
devuelve 1; si no, devuelve 0.
.TP
\fBlocal\fP [\fInombre\fP[=\fIvalor\fP] ...]
Para cada argumento, se crea una variable local llamada
.IR nombre ,
y se le asigna el valor
.IR valor .
Cuando
.B local
se emplea dentro de una funcin, hace que la variable
.I nombre
tenga una visibilidad restringida a esa funcin y sus hijas.
Sin operandos,
.B local
escribe en la salida estndar una lista de las variables locales. Es
un error emplear
.B local
fuera de una funcin. El estado de retorno es 0 a menos que
.B local
se use fuera de una funcin, o se d un
.I nombre
invlido.
.TP
.B logout
Hace terminar un shell de entrada.
.TP
\fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP]
Quita entradas de la pila de directorios. Sin argumentos,
desapila el directorio de la cima de la pila, y realiza un
.B cd
al nuevo directorio de la pila.
Los argumentos, si se suministran, tienen los siguientes significados:
.RS
.PD 0
.TP
\fB+\fP\fIn\fP
Quita la \fIn\fP\-sima entrada contando desde la izquierda de la lista
mostrada por
.BR dirs ,
empezando por cero. Por ejemplo: ``popd +0''
quita el primer directorio, ``popd +1'' el segundo.
.TP
\fB\-\fP\fIn\fP
Quita la \fIn\fP\-sima entrada contando desde la derecha de la lista
mostrada por
.BR dirs ,
empezando por cero. Por ejemplo: ``popd -0''
quita el ltimo directorio, ``popd -1'' el penltimo.
.TP
.B \-n
Suprime el normal cambio de directorio cuando se desapilan
directorios, de forma que solamente la pila se manipula.
.PD
.PP
Si la orden
.B popd
es exitosa, tambin se realiza un
.BR dirs ,
y el estado de retorno es 0.
.B popd
devuelve `falso' si se encuentra una opcin invlida, la pila de
directorios est vaca, se especifica una entrada de la pila de
directorios no existente, o falla el cambio de directorio.
.RE
.TP
\fBprintf\fP \fIformato\fP [\fIargumentos\fP]
Escribe los \fIargumentos\fP formateados en la salida estndar bajo el
control del \fIformato\fP.
El \fIformato\fP es una cadena de caracteres que contiene tres tipos
de objetos: caracteres normales, que simplemente se copian en la
salida estndar, caracteres de secuencias de escape, que se convierten
y copian en la salida estndar, y especificaciones de formato, cada
una de las cuales causa la impresin del siguiente \fIargumento\fP
sucesivo de una determinada manera.
Adems de los formatos estndares normales de \fIprintf\fP(1), %b hace
que \fBprintf\fP expanda las secuencias de escape de barras inversas
en el correspondiente
\fIargumento\fP, y %q causa que \fBprintf\fP muestre en la salida el
\fIargumento\fP correspondiente en un formato tal que pueda ser
reutilizado como entrada para el shell.
.sp 1
El \fIformato\fP se reutiliza tanto como sea necesario para consumir
todos los \fIargumentos\fP.
Si el \fIformato\fP requiere ms \fIargumentos\fP que los que se
suministran, las especificaciones de formato extra se comportan como
si se hubiera dado un valor cero o una cadena vaca, segn lo apropiado.
.TP
.PD 0
\fBpushd\fP [\fB\-n\fP] [\fIdir\fP]
.TP
\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP]
.PD
Aade un directorio a la cima de la pila de directorios, o rota la
pila, haciendo que el directorio de trabajo en curso sea la nueva cima
de la pila. Sin argumentos, intercambia los dos directorios de ms
arriba y devuelve 0, a menos que la pila de directorios est vaca.
Los argumentos, si se suministran, tienen los siguientes significados:
.RS
.PD 0
.TP
\fB+\fP\fIn\fP
Rota la pila de forma que el \fIn\fP\-simo directorio (contando desde
la izquierda de la lista mostrada por
.BR dirs ,
empezando por cero)
est en la cima.
.TP
\fB\-\fP\fIn\fP
Rota la pila de forma que el \fIn\fP\-simo directorio (contando desde
la derecha de la lista mostrada por
.BR dirs ,
empezando por cero)
est en la cima.
.TP
.B \-n
Suprime el cambio normal de directorio cuando se aaden directorios a
la pila, de forma que solamente se manipula la pila.
.TP
.B dir
Aade
.I dir
a la pila de directorios en la cima, hacindolo el nuevo directorio de
trabajo.
.PD
.PP
Si la orden
.B pushd
acaba con xito, se realiza un
.B dirs
tambin. Si se emplea la primera forma,
.B pushd
devuelve 0 a menos que falle el cambio a
.IR dir .
Con la segunda forma,
.B pushd
devuelve 0 a menos que la pila de directorios est vaca, que se
especifique un elemento de la pila de directorios inexistente, o que
el cambio de directorio falle.
.RE
.TP
\fBpwd\fP [\fB\-LP\fP]
Muestra el nombre de fichero absoluto del directorio de trabajo en curso.
El nombre de fichero mostrado no contiene enlaces simblicos si se da
la opcin
.B \-P
o est puesta la opcin
.B \-o physical
de la orden interna
.BR set .
Si se usa la opcin
.BR \-L ,
los enlaces simblicos se siguen.
El estado de retorno es 0 a menos que ocurra un error mientras se lea
el nombre del directorio actual o se d una opcin invlida.
.TP
\fBread\fP [\fB\-er\fP] [\fB\-a\fP \fIarray\fP] [\fB\-p\fP \fIprompt\fP] [\fInombre\fP ...]
Se lee una lnea desde la entrada estndar, y la primera palabra se
asigna al primer
.IR nombre ,
la segunda palabra al segundo
.IR nombre ,
y as sucesivamente, con las palabras que sobren y sus separadores
intervinientes asignadas al ltimo
.IR nombre .
Si hay menos palabras ledas de la entrada estndar que nombres, a los
sobrantes se les asignan valores vacos.
Se emplean los caracteres en
.SM
.B IFS
para dividir la lnea en palabras.
Las opciones, si se dan, tienen los siguientes significados:
.RS
.PD 0
.TP
.B \-r
Un par formado por una barra inclinada inversa y un salto de lnea a
continuacin s es tenido en cuenta, y la barra inversa se considera
parte de la lnea.
.TP
.B \-p
Muestra \fIprompt\fP, sin un salto de lnea al final,
antes de intentar leer nada de la entrada. El indicador se muestra
solamente si la entrada viene de una terminal.
.TP
.B \-a
Las palabras se asignan secuencialmente a los elementos de la variable
vector
.IR array ,
empezando por 0.
Se anula la posible previa definicin de
.I array
antes de que se asignen nuevos valores.
Otros argumentos \fInombre\fP no se tienen en consideracin.
.TP
.B \-e
Si la entrada estndar viene de una terminal,
se emplea
.B readline
(vea
.SM
.B READLINE
arriba) para obtener la lnea.
.PD
.PP
Si no se suministran
.IR nombres ,
la lnea leda se asigna a la variable
.SM
.BR REPLY .
El cdigo de retorno es cero, a menos que se llegue al fin de la entrada.
.RE
.TP
\fBreadonly\fP [\fB\-apf\fP] [\fInombre\fP ...]
.PD
Los
\fInombres\fP dados se marcan como de lectura exclusiva; los valores
de estos
.I nombres
no pueden cambiarse por posteriores asignaciones.
Si se da la opcin
.BR \-f ,
se marcan as las funciones correspondientes a los \fInombres\fP.
La opcin
.B \-a
restringe las variables a vectores.
Si no se da ningn argumento
.IR nombre ,
o si se da la opcin
.BR \-p ,
se muestra una lista de todos los nombres de lectura exclusiva.
La opcin
.B \-p
hace que la salida se muestre en un formato que puede ser reutilizado
como entrada. El estado de retorno es 0 a menos que se encuentre una
opcin invlida, uno de los
.I nombres
no sea un nombre vlido de variable del shell, o se d
.B \-f
con un
.I nombre
que no es una funcin.
.TP
\fBreturn\fP [\fIn\fP]
Hace que una funcin acabe y devuelva el valor especificado por
.IR n .
Si
.I n
se omite, el estado devuelto es el de la ltima orden ejecutada en el
cuerpo de la funcin. Si se emplea fuera de una funcin, pero durante
la ejecucin de un guin por la orden
.B .
(\fBsource\fP), hace que el shell pare la ejecucin de ese guin y
devuelva o
.I n
o el estado de salida de la ltima orden ejecutada dentro del guin
como el estado de salida del guin. Si se emplea fuera de una funcin
y no durante la ejecucin de un guin por \fB.\fP\^, el estado de
salida es `falso'.
.TP
\fBset\fP [\fB\-\-abefhkmnptuvxBCHP\fP] [\fB\-o\fP \fIopcin\fP] [\fIarg\fP ...]
Sin opciones, se muestra el nombre y valor de cada variable del shell
en un formato que puede ser reutilizado como entrada.
La salida se clasifica segn la localizacin en curso.
Cuando se dan opciones, se establecen o quitan atributos del shell.
Cualesquier argumentos que queden tras que se procesen las opciones se
tratan como valores para los parmetros posicionales y se asignan, en
orden, a
.BR $1 ,
.BR $2 ,
.B ...
.BR $\fIn\fP .
Las opciones, si se especifican, tienen los siguientes significados:
.RS
.PD 0
.TP 8
.B \-a
Automticamente marca variables, que se modifiquen o creen, para
exportacin al entorno de las rdenes subsiguientes.
.TP 8
.B \-b
Informa del estado de los trabajos en segundo plano terminados
inmediatamente, en vez de esperar a justo antes de mostrar el
siguiente indicador primario. Esto slo es efectivo cuando el control
de trabajos est habilitado.
.TP 8
.B \-e
Sale inmediatamente si una \fIorden simple\fP (vea
.SM
.B GRAMTICA DEL SHELL
arriba) acaba con un estado distinto de cero. El shell no acaba si la
orden que falle es parte de un bucle
.I until
o
.IR while ,
parte de una sentencia
.IR if ,
parte de una lista
.B &&
o
.BR \(bv\(bv ,
o si el valor devuelto por la orden se invierte mediante
.BR ! .
.TP 8
.B \-f
Deshabilita la expansin de nombres de caminos.
.TP 8
.B \-h
Recuerda la localizacin de rdenes una vez que se buscan para la 1
ejecucin. Esto est habilitado de forma predeterminada.
.TP 8
.B \-k
Todos los argumentos en forma de sentencias de asignacin se ponen en
el entorno para una orden, no solamente aqullos que precedan al
nombre de la orden.
.TP 8
.B \-m
Modo de monitor. Se habilita el control de trabajos. Esta opcin est
puesta de forma predeterminada para shells interactivos en sistemas
que lo admitan (vea
.SM
.B CONTROL DE TRABAJOS
arriba). Los procesos en segundo plano se ejecutan en un grupo de
proceso separado, y se imprime cuando se completan una lnea
conteniendo su estado de salida.
.TP 8
.B \-n
Lee rdenes pero no las ejecuta. Esto puede emplearse para comprobar
si un guin del shell tiene errores de sintaxis. Para shells
interactivos esta opcin no tiene efecto.
.TP 8
.B \-o \fInombre\-opcin\fP
El \fInombre\-opcin\fP puede ser uno de los siguientes:
.RS
.TP 8
.B allexport
Lo miso que
.BR \-a .
.TP 8
.B braceexpand
Lo miso que
.BR \-B .
.TP 8
.B emacs
Emplea una interfaz de edicin de lneas de rdenes al estilo de
emacs. Esto est activo de forma predeterminada cuando el shell es
interactivo, a menos que se haya arrancado con la opcin
.BR \-\-noediting .
.TP 8
.B errexit
Lo mismo que
.BR \-e .
.TP 8
.B hashall
Lo mismo que
.BR \-h .
.TP 8
.B histexpand
Lo mismo que
.BR \-H .
.TP 8
.B history
Habilita la historia de rdenes, segn se describi arriba bajo
.SM
.BR HISTORIA .
Esta opcin est habilitada por omisin en shells interactivos.
.TP 8
.B ignoreeof
El efecto es como si se hubiera ejecutado la orden del shell
\f(CWIGNOREEOF=10\fP
(vea
.B Variables del shell
arriba).
.TP 8
.B keyword
Lo mismo que
.BR \-k .
.TP 8
.B monitor
Lo mismo que
.BR \-m .
.TP 8
.B noclobber
Lo mismo que
.BR \-C .
.TP 8
.B noexec
Lo mismo que
.BR \-n .
.TP 8
.B noglob
Lo mismo que
.BR \-f .
.TP 8
.B notify
Lo mismo que
.BR \-b .
.TP 8
.B nounset
Lo mismo que
.BR \-u .
.TP 8
.B onecmd
Lo mismo que
.BR \-t .
.TP 8
.B physical
Lo mismo que
.BR \-P .
.TP 8
.B posix
Cambia el comportamiento de
.B bash
donde la operacin predeterminada difiera del estndar
POSIX 1003.2, de forma que se siga ste.
.TP 8
.B privileged
Lo mismo que
.BR \-p .
.TP 8
.B verbose
Lo mismo que
.BR \-v .
.TP 8
.B vi
Emplea una interfaz de edicin de la lnea de rdenes al estilo de vi.
.TP 8
.B xtrace
Lo mismo que
.BR \-x .
.sp .5
.PP
Si se da
.B \-o
sin ningn \fInombre\-opcin\fP, se muestran los valores de las opciones activas.
Si se da
.B +o
sin ningn \fInombre\-opcin\fP, se muestra en la salida estndar una
serie de rdenes
.B set
para recrear las opciones segn estn puestas o no actualmente.
.RE
.TP 8
.B \-p
Activa el modo
.IR privilegiado .
En este modo, el fichero correspondiente a
.B $ENV
no es procesado, las funciones del shell no se heredan desde el
entorno,y la variable \fBSHELLOPTS\fP, si aparece en el entorno, no se
tiene en consideracin.
Esta opcin se activa automticamente en el arranque si el
identificador efectivo del usuario (o grupo) no es igual al
identificador real del usuario (o grupo).
Desactivar esta opcin hace que los identificadores efectivos de
usuario y grupo se pongan con los valores de los identificadores
reales de usuario y grupo respectivamente.
.TP 8
.B \-t
Sale tras leer y ejecutar una sola orden.
.TP 8
.B \-u
Trata las variables no definidas como un error cuando realiza la
expansin de parmetros. Si la expansin se intenta hacer sobre una
variable no definida, el shell muestra un mensaje de error y, si no es
interactivo, sale con un estado distinto de cero.
.TP 8
.B \-v
Repite en la salida las lneas de entrada del shell tras leerlas.
.TP 8
.B \-x
Tras expandir cada \fIorden simple\fP, muestra el valor expandido de
.SM
.BR PS4 ,
seguido por la orden y sus argumentos expandidos.
.TP 8
.B \-B
El shell realiza la expansin de llaves (vea
.B Expansin de llaves
arriba). Esto est activado de forma predeterminada.
.TP 8
.B \-C
Si est activo,
.B bash
no sobreescribe un fichero existente con los operadores de redireccin
.BR > ,
.BR >& ,
ni
.BR <> .
Esto puede cambiarse cuando se crean ficheros de salida mediante el
empleo del operador
.B >|
en vez de
.BR > .
.TP 8
.B \-H
Permite la sustitucin de historia mediante \fB!\fP\^.
Esta opcin est activada por omisin cuando el shell es interactivo.
.TP 8
.B \-P
Si est activada, el shell no sigue enlaces simblicos cuando ejecuta
rdenes como
.B cd
que cambian el directorio de trabajo. En su lugar emplea la estructura
de directorio fsica. De forma predeterminada,
.B bash
sigue la cadena lgica de directorios cuando ejecuta rdenes que
cambian el directorio de trabajo.
.TP 8
.B \-\-
Si a esta opcin no sigue ningn argumento ms, entonces los
parmetros posicionales se anulan. Si no, los parmetros posicionales
se ponen con los valores dados por los
\fIarg\fPs, incluso si alguno de ellos comienza con un
.BR \- .
.TP 8
.B \-
Seala el final de las opciones, haciendo que el resto de \fIarg\fPs
se asignen a los parmetros posicionales. Las opciones
.B \-x
y
.B \-v
se desactivan.
Si no hay ms \fIarg\fPs,
los parmetros posicionales permanecen sin cambios.
.PD
.PP
Las opciones estn desactivadas de forma predeterminada a menos que se
diga otra cosa. Usar + en vez de \- hace que estas opciones se
desactiven.
Las opciones tambin pueden darse como argumentos al llamar al shell.
El conjunto de opciones activadas puede examinarse en
.BR $\- .
El estado de retorno es siempre `verdad' a menos que se encuentre una
opcin invlida.
.RE
.TP
\fBshift\fP [\fIn\fP]
Los parmetros posicionales desde \fIn\fP+1 ... se renombran a
.B $1
.B ...
Los parmetros representados por los nmeros desde \fB$#\fP
hasta \fB$#\fP\-\fIn\fP+1 se anulan.
.I n
debe ser un nmero no negativo menor o igual a \fB$#\fP.
Si
.I n
es 0, no se cambia ningn parmetro.
Si
.I n
no se da, se supone 1.
Si
.I n
es mayor que \fB$#\fP, los parmetros posicionales no se cambian.
El estado de retorno es mayor que cero si
.I n
es mayor que
.B $#
o menor que cero; en otro caso es cero.
.TP
\fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fInombreopc\fP ...]
Cambia los valores de variables que controlan un comportamiento
determinado opcional del shell. Sin opciones, o con la opcin
.BR \-p ,
se muestra una lista de todas las opciones disponibles, con una
indicacin en cada una de si est activa o no.
La opcin \fB\-p\fP hace que la salida se muestre de una forma tal
que pueda reutilizarse como entrada.
Otras opciones tienen los significados siguientes:
.RS
.PD 0
.TP
.B \-s
Activa (set) cada \fInombreopc\fP.
.TP
.B \-u
Desactiva (unset) cada \fInombreopc\fP.
.TP
.B \-q
Suprime la salida normal (modo silencioso); el estado de salida indica
si el \fInombreopc\fP est activado o no.
Si se dan varios argumentos \fInombreopc\fP con
.BR \-q ,
el estado de salida es cero si todos los \fInombreopcs\fP estn
activados; distinto de cero en otro caso.
.TP
.B \-o
Restringe los valores de \fInombreopc\fP a aqullos definidos para la opcin
.B \-o
de la orden interna
.BR set .
.PD
.PP
Si se emplean
.B \-s
o
.B \-u
sin argumentos \fInombreopc\fP, la lista mostrada se limita a aquellas
opciones que estn activadas o desactivadas, respectivamente.
A menos que se diga otra cosa, las opciones de \fBshopt\fP estn
inactivas (unset) de forma predeterminada.
.PP
El estado de retorno cuando se listan opciones es cero si todos los
\fInombreopcs\fP estn activos, distinto de cero en otro caso. Cuando
se activan o desactivan opciones, el estado de salida es cero a menos
que un \fInombreopc\fP no sea una opcin del shell vlida.
.PP
La lista de las opciones de \fBshopt\fP es:
.if t .sp .5v
.if n .sp 1v
.PD 0
.TP 8
.B cdable_vars
Si est activa, un argumento de la orden interna
.B cd
que no sea un directorio, se supone el nombre de una variable cuyo
valor es el directorio al que hay que cambiarse.
.TP 8
.B cdspell
Si est activa, se corregirn pequeos errores que hubiera en la
escritura de un componente directorio de una orden
.BR cd .
Los errores que se buscan se refieren a caracteres transpuestos, un
carcter que falte, y un carcter que sobre.
Si se encuentra una correccin, se muestra el nombre de fichero
corregido y la orden procede.
Esta opcin slo se emplea en shells interactivos.
.TP 8
.B checkhash
Si est activa, \fBbash\fP comprueba que una orden encontrada en la
tabla de dispersin existe antes de intentar ejecutarlo. Si una orden
en la tabla de dispersin ya no existe, se realiza una bsqueda normal
en el PATH.
.TP 8
.B checkwinsize
Si est activa, \fBbash\fP comprueba el tamao de ventana tras cada
orden y, si es necesario, actualiza los valores de
.SM
.B LINES
y
.SM
.BR COLUMNS .
.TP 8
.B cmdhist
Si est activa,
.B bash
intenta guardar todas las lneas de una orden de varias lneas en la
misma entrada de historia. Esto permite una re-edicin fcil de dichas
rdenes.
.TP 8
.B dotglob
Si est activa,
.B bash
incluye los nombres de ficheros que comiencen con un `.' en los
resultados de la expansin de nombres de caminos.
.TP 8
.B execfail
Si est activa, un shell no interactivo no acabar si no puede
ejecutar el fichero especificado como un argumento de la orden interna
.BR exec .
Un shell interactivo no acaba si
.B exec
falla.
.TP 8
.B expand_aliases
Si est activa, los alias se expanden como se describi arriba bajo
.SM
.BR ALIAS .
Esta opcin est habilitada de forma predeterminada para shells interactivos.
.TP 8
.B extglob
Si est activa, se habilitan las caractersticas de concordancia de
patrones extendidas descritas ms arriba en
\fBExpansin de nombres de camino\fP.
.TP 8
.B histappend
Si est activa, la lista de historia se aade al fichero nombrado
segn el valor de la variable
.B HISTFILE
cuando el shell acaba, en vez de sobreescribir el fichero.
.TP 8
.B histreedit
Si est activa, y
.B readline
se est utilizando, se le da al usuario la oportunidad de re-editar
la sustitucin de historia fallida.
.TP 8
.B histverify
Si est activa, y
.B readline
se est utilizando, los resultados de la sustitucin de historia no se
pasan inmediatamente al analizador del shell. En vez de eso, la lnea
resultante se carga en el bfer de edicin de \fBreadline\fP,
permitiendo as una modificacin posterior.
.TP 8
.B hostcomplete
Si est activa, y
.B readline
se est utilizando, \fBbash\fP intentar terminar de escribir un
nombre de computador anfitrin cuando se est completando una palabra
que contenga una \fB@\fP (vea
.B Terminacin
bajo
.SM
.B READLINE
arriba).
Esto est activado de forma predeterminada.
.TP 8
.B huponexit
Si est activa, \fBbash\fP enviar una seal
.SM
.B SIGHUP
a todos los trabajos cuando un shell de entrada interactivo finalice.
.TP 8
.B interactive_comments
Si est activa, permite a una palabra que empiece por
.B #
hacer que esa palabra y todos los caracteres restantes de esa lnea no
sean tenidos en cuenta en un shell interactivo (vea
.SM
.B COMENTARIOS
arriba). Esta opcin est habilitada por omisin.
.TP 8
.B lithist
Si est activa, y la opcin
.B cmdhist
tambin lo est, las rdenes multi-lnea se guardan en la historia con
saltos de lnea empotrados en vez de emplear como separador el punto y
coma, donde sea posible.
.TP 8
.B mailwarn
Si est activa, y a un fichero donde \fBbash\fP est buscando correo
nuevo se ha accedido desde la ltima vez que se busc, se muestra el
mensaje ``The mail in \fImailfile\fP has been read'', o su equivalente
en el idioma local, que en espaol sera ``El correo en \fIbuzn\fP ha
sido ledo''.
.TP 8
.B nocaseglob
Si est activa,
.B bash
busca concordancias de nombres de ficheros sin importar maysculas o
minsculas cuando realice la expansin de nombres de caminos (vea
.B Expansin de nombres de caminos
arriba).
.TP 8
.B nullglob
Si est activa,
.B bash
permite que los patrones que no concuerden con ningn fichero (vea
.B Expansin de nombres de caminos
arriba)
se expandan a una cadena vaca, en vez de a s mismos.
.TP 8
.B promptvars
Si est activa, las cadenas de caracteres que sirven de indicadores
estn sujetas a expansin de variable y parmetro tras ser expandidas
como se describi en
.SM
.B INDICADORES
arriba. Esta opcin est activa de forma predeterminada.
.TP 8
.B shift_verbose
Si est activa, la orden interna
.B shift
muestra un mensaje de error cuando el nmero de shift excede al de
parmetros posicionales.
.TP 8
.B sourcepath
Si est activa, la orden interna
\fBsource\fP (\fB.\fP) emplea el valor de
.SM
.B PATH
para buscar el directorio que contenga al fichero suministrado como
argumento. Esta opcin est activa por omisin.
.RE
.TP
\fBsuspend\fP [\fB\-f\fP]
Suspende la ejecucin de este shell hasta que reciba una seal
.SM
.BR SIGCONT .
La opcin
.B \-f
dice que no hay que protestar si ste es un shell de entrada;
simplemente suspenderlo de todas formas. El estado de retorno es 0 a
menos que el shell sea de entrada y la opcin
.B \-f
no se haya dado, o si el control de trabajos no est habilitado.
.TP
.PD 0
\fBtest\fP \fIexpr\fP
.TP
\fB[\fP \fIexpr\fP \fB]\fP
Devuelve un estado de 0 1 dependiendo de la evaluacin de la
expresin condicional
.IR expr .
Cada operador y operando debe ser un argumento separado.
Las expresiones se componen de las primarias descritas ms arriba bajo
.SM
.BR "EXPRESIONES CONDICIONALES" .
.if t .sp 0.5
.if n .sp 1
Las expresiones se pueden combinar mediante los operadores
siguientes, listados en orden decreciente de precedencia.
.RS
.PD 0
.TP
.B ! \fIexpr\fP
Verdad si
.I expr
es falsa.
.TP
.B ( \fIexpr\fP )
Devuelve el valor de \fIexpr\fP.
Esto puede emplearse para cambiar la precedencia normal de los operadores.
.TP
\fIexpr1\fP \-\fBa\fP \fIexpr2\fP
Verdad si tanto
.I expr1
como
.I expr2
son verdad.
.TP
\fIexpr1\fP \-\fBo\fP \fIexpr2\fP
Verdad si uno al menos de
.I expr1
o
.I expr2
es verdad.
.PD
.PP
\fBtest\fP y \fB[\fP evalan expresiones condicionales segn un
conjunto de reglas basadas en el nmero de argumentos.
.if t .sp 0.5
.if n .sp 1
.PD 0
.TP
0 argumentos
La expresin es falsa.
.TP
1 argumento
La expresin es verdad si y slo si el argumento no est vaco.
.TP
2 argumentos
Si el primer argumento es \fB!\fP, la expresin es verdad si y slo si
el segundo argumento es nulo.
Si el primer argumento es uno de los operadores condicionales monarios
listados arriba en
.SM
.BR "EXPRESIONES CONDICIONALES" ,
la expresin es verdad si el test monario es verdad.
Si el primer argumento no es un operador condicional monario vlido,
la expresin es falsa.
.TP
3 argumentos
Si el segundo argumento es uno de los operadores condicionales
binarios listados arriba en
.SM
.BR "EXPRESIONES CONDICIONALES" ,
el resultado de la expresin es el resultado del test binario
empleando el primer y tercer argumentos como operandos.
Si el primer argumento es \fB!\fP, el valor es la negacin del test de
dos argumentos empleando el segundo y tercer argumentos.
Si el primer argumento es exactamente \fB(\fP y el tercer argumento es
exactamente \fB)\fP, el resultado es el test de un argumento del
segundo argumento.
De otro modo, la expresin es falsa.
Los operadores \fB\-a\fP y \fB\-o\fP se consideran como operadores
binarios en este caso.
.TP
4 argumentos
Si el primer argumento es \fB!\fP, el resultado es la negacin de la
expresin de tres argumentos compuesta por los argumentos restantes.
De otra forma, la expresin se analiza y evala de acuerdo con la
precedencia utilizando las reglas listadas arriba.
.TP
5 ms argumentos
La expresin se analiza y evala de acuerdo con la precedencia usando
las reglas mencionadas arriba.
.RE
.PD
.TP
.B times
Muestra los tiempos acumulados de usuario y sistema para el shell y
para procesos ejecutados desde l. El estado de retorno es 0.
.TP
\fBtrap\fP [\fB\-lp\fP] [\fIarg\fP] [\fInombre-seal\fP ...]
La orden
.I arg
va a leerse y ejecutarse cuando el shell reciba la(s) seal(es)
especificada(s) por
.IR nombre-seal .
Si
.I arg
est ausente o es
.BR \- ,
todas las seales especificadas se reestablecen a sus valores
originales (los que tenan cuando se entr en el shell).
Si
.I arg
es la cadena vaca, la seal especificada por cada
.I nombre-seal
no se tiene en cuenta por parte del shell y de las rdenes que se
llamen desde l.
Si
.I arg
es
.B \-p
entonces se muestran las rdenes de las trampas asociadas con cada
.IR nombre-seal .
Si no se pasan argumentos o si slo se da
.BR \-p ,
.B trap
muestra la lista de rdenes asociadas con cada nmero de seal.
Cada
.I nombre-seal
es o bien un nombre de seal de los definidos en <\fIsignal.h\fP>,
o un nmero de seal.
Si un
.I nombre-seal
es
.SM
.B EXIT
(0), la orden
.I arg
se ejecuta cuando se sale del shell. Si un
.I nombre-seal
es
.SM
.BR DEBUG ,
la orden
.I arg
se ejecuta tras cada \fIorden simple\fP (vea
.SM
.B GRAMTICA DEL SHELL
arriba).
La opcin
.B \-l
hace que el shell muestre una lista de nombres de seal y sus nmeros
correspondientes.
Las seales que no se tienen en cuenta ya cuando se entra en el shell
no pueden ser atrapadas ni restablecidas.
Las seales atrapadas se reestablecen a sus valores originales en un
proceso hijo cuando se crea.
El estado de retorno es `falso' si cualquier
.I nombre-seal
no es vlido; de otro modo,
.B trap
devuelve `verdad'.
.TP
\fBtype\fP [\fB\-atp\fP] \fInombre\fP [\fInombre\fP ...]
Sin opciones,
indica cmo ser interpretado cada
.I nombre
si se usa como un nombre de orden.
Si se emplea la opcin
.BR \-t ,
.B type
muestra una de las siguientes cadenas de caracteres:
.IR alias ,
.IR keyword ,
.IR function ,
.IR builtin ,
o
.I file
si
.I nombre
es respectivamente un alias, una palabra reservada del shell, una
funcin, una orden interna incorporada en el shell, o un fichero
ejecutable de disco.
Si el
.I nombre
no se encuentra, no se muestra nada, y se devuelve un estado de salida
de `falso'.
Si se emplea la opcin
.BR \-p ,
.B type
devuelve o bien el nombre del fichero de disco que se ejecutara si
se especificara
.I nombre
como un nombre de orden, o bien nada si \f(CWtype -t nombre\fR
no devolviera
.IR file .
Si una orden est en la tabla de dispersin,
.B \-p
muestra el valor de dicha tabla, no necesariamente el fichero que
aparezca primero en
.SM
.BR PATH .
Si se emplea la opcin
.BR \-a ,
.B type
muestra todos los sitios que contengan un ejecutable llamado
.IR nombre .
Esto incluye alias y funciones, si y slo si la opcin
.B \-p
no se ha usado tambin.
La tabla de dispersin de las rdenes no se consulta cuando se emplea
.BR \-a .
.B type
devuelve `verdad' si cualquiera de los argumentos se encuentra,
`falso' si no se encuentra ninguno.
.TP
\fBulimit\fP [\fB\-SHacdflmnpstuv\fP [\fIlmite\fP]]
Proporciona control sobre los recursos disponibles para el shell y
para los procesos arrancados por l, en sistemas que permitan tal
control (Linux por ejemplo, y por supuesto). El valor de
.I lmite
puede ser un nmero en la unidad especificada para el recurso, o el
valor
.BR unlimited ,
o sea, ilimitado.
Las opciones \fB\-H\fP y \fB\-S\fP especifican que el lmite para el
recurso dado va a ser duro o blando. Un lmite duro es aqul que no
puede ser aumentado una vez puesto; un lmite blando puede
incrementarse hasta el valor dado por el lmite duro. Si no se
especifican ni \fB\-H\fP ni \fB\-S\fP, se establecen ambos lmites.
Si
.I lmite
se omite, se muestran los valores del lmite blando del recurso, a
menos que se d la opcin \fB\-H\fP. Cuando se especifica ms de un
recurso, se imprime el nombre del lmite y la unidad antes del valor.
Otras opciones se interpretan como sigue:
.RS
.PD 0
.TP
.B \-a
Se informa de todos los lmites actuales
.TP
.B \-c
El tamao mximo de ficheros de volcados de memoria (core)
.TP
.B \-d
El tamao mximo del segmento de datos de un proceso
.TP
.B \-f
El tamao mximo de ficheros creados por el shell
.TP
.B \-l
El tamao mximo que puede ser bloqueado en memoria
.TP
.B \-m
El tamao del mximo conjunto residente (memoria)
.TP
.B \-n
EL nmero mximo de descriptores de ficheros abiertos (la mayora de
sistemas no permiten establecer este valor)
.TP
.B \-p
El tamao de una tubera en bloques de 512 B (esto puede no estar
establecido)
.TP
.B \-s
El tamao mximo de pila
.TP
.B \-t
La mxima cantidad de tiempo de CPU en segundos
.TP
.B \-u
El nmero mximo de procesos disponibles para un solo usuario
.TP
.B \-v
La mxima cantidad de memoria virtual disponible para el shell
.PD
.PP
Si se da
.IR lmite ,
es el nuevo valor del recurso especificado (la opcin
.B \-a
es slo para mostrar los valores).
Si no se da ninguna opcin, entonces
se supone
.BR \-f .
Los valores estn en incrementos de 1024 B, excepto para
.BR \-t ,
que est en segundos,
.BR \-p ,
que est en unidades de bloques de 512 B,
y
.B \-n
y
.BR \-u ,
que son valores adimensionales. El estado de retorno es 0 a menos que
se encuentre una opcin invlida, se d como \fIlmite\fP un argumento
no numrico distinto de \fBunlimited\fP, o bien ocurra un error
mientras se establece un nuevo lmite.
.RE
.TP
\fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImodo\fP]
La mscara de creacin de ficheros del usuario se establece a
.IR modo .
Si
.I modo
empieza con un dgito, se interpreta como un nmero octal; si no, se
interpreta como un modo simblico similar al aceptado por
.IR chmod (1).
Si
.I modo
se omite, o si se da la opcin
.BR \-S ,
se muestra el valor actual de la mscara.
La opcin
.B \-S
hace que la mscara se imprima en forma simblica; la salida
predeterminada es como un nmero octal.
Si se da la opcin
.B \-p
y
.I modo
se omite, la salida es de tal forma que puede reutilizarse como
entrada. El estado de retorno es 0 si el modo se cambi exitosamente o
si no se dio el argumento \fImodo\fP, y `falso' en otra circunstancia.
.TP
\fBunalias\fP [\-\fBa\fP] [\fInombre\fP ...]
Quita \fInombre\fPs de la lista de alias definidos. Si se da la opcin
.BR \-a ,
se quitan todas las definiciones de alias. El estado de salida es
`verdad' a menos que un
.I nombre
dado no sea un alias definido.
.TP
\fBunset\fP [\-\fBfv\fP] [\fInombre\fP ...]
Para cada
.IR nombre ,
borra la variable o funcin correspondiente.
Si no se dan opciones, o se da la opcin
.BR \-v ,
cada
.I nombre
se refiere a una variable del shell.
Las variables de lectura exclusiva no pueden borrarse.
Si se especifica
.BR \-f ,
cada
.I nombre
se refiere a una funcin del shell, y se borra la definicin de la
funcin.
Cada variable o funcin se quita del entorno pasado a rdenes
subsiguientes.
Si se quita cualquiera de
.SM
.BR RANDOM ,
.SM
.BR SECONDS ,
.SM
.BR LINENO ,
.SM
.BR HISTCMD ,
o
.SM
.BR DIRSTACK ,
pierde su propiedad especial, incluso aunque ms adelante se vuelva a
definir. El estado de salida es `verdad' a menos que
.I nombre
no exista o sea de lectura exclusiva.
.TP
\fBwait\fP [\fIn\fP]
Espera al proceso especificado y devuelve su estado de terminacin.
.I n
puede ser un identificador de proceso (PID) o una especificacin de
trabajo; si se da una espec. de trabajo, se espera a todos los
procesos en la tubera de ese trabajo. Si
.I n
no se da, se espera a todos los procesos hijos activos actualmente, y
el estado de retorno es cero. Si
.I n
especifica un proceso o trabajo no existente, el estado de retorno es
127. De otro modo, el estado de retorno es el estado de salida del
ltimo proceso o trabajo al que se esper.
.\" bash_builtins
.if \n(zZ=1 .ig zZ
.SH "SHELL RESTRINGIDA"
.PP
Si
.B bash
se arranca con el nombre
.BR rbash ,
o se da la opcin
.B \-r
en la llamada,
el shell se convierte en restringido.
Un shell restringido se emplea para establecer un ambiente ms
controlado que el que el shell estndar proporciona.
Se comporta de forma idntica a
.B bash
con la excepcin de que lo siguiente no est permitido o no se realiza:
.IP \(bu
cambiar de directorio con \fBcd\fP
.IP \(bu
establecer o anular los valores de
.B SHELL
o de
.B PATH
.IP \(bu
especificar nombres de rdenes que contengan
.B /
.IP \(bu
especificar un nombre de fichero que contenga al menos una
.B /
como un argumento de la orden
interna
.B .
(\fBsource\fP)
.IP \(bu
importar definiciones de funciones desde el entorno del shell en el arranque
.IP \(bu
analizar el valor de \fBSHELLOPTS\fP desde el entorno del shell en el arranque
.IP \(bu
redirigir la salida usando los operadores de redireccin >, >|, <>, >&, &>, y >>
.IP \(bu
utilizar la orden interna
.B exec
para reemplazar el shell por otro programa
.IP \(bu
aadir o eliminar rdenes incorporadas con las opciones
.B \-f
o
.B \-d
de la orden interna
.BR enable .
.IP \(bu
dar la opcin
.B \-p
a la orden interna
.BR command .
.IP \(bu
desactivar el modo restringido con
\fBset +r\fP o \fBset +o restricted\fP.
.PP
Estas restricciones entran en vigor despus de que se lean los ficheros
de arranque que hubiera.
.PP
Cuando se ejecuta una orden que resulta ser un guin del shell (vea
.SM
.B "EJECUCIN DE RDENES"
arriba),
.B rbash
desactiva todas las restricciones en el shell lanzado para ejecutar el
guin.
.SH "VASE TAMBIN"
.PD 0
.TP
\fIBash Features\fP (Caractersticas de Bash), Brian Fox & Chet Ramey
.TP
\fIThe Gnu Readline Library\fP (La Biblioteca Readline de GNU), Brian Fox & Chet Ramey
.TP
\fIThe Gnu History Library\fP (La Biblioteca de Historia de GNU), Brian Fox & Chet Ramey
.TP
\fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP (Interfaz para Sistemas Operativos Transportables (POSIX) Parte 2: Shell y Utilidades), IEEE
.TP
\fIzsh\fP(1), \fIash\fP(1), \fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1), \fItcsh\fP(1).
.TP
\fIemacs\fP(1), \fIvi\fP(1)
.TP
\fIreadline\fP(3)
.PD
.SH FICHEROS
.PD 0
.TP
.FN /bin/bash
La imagen ejecutable de \fBbash\fP
.TP
.FN /etc/profile
El fichero de inicio general, ledo en shells de entrada
.TP
.FN ~/.bash_profile
El fichero de inicio personal, ledo para shells de entrada
.TP
.FN ~/.bashrc
El fichero individual de arranque para shells interactivos
.TP
.FN ~/.inputrc
El fichero de inicio individual de \fIreadline\fP
.PD
.SH AUTORES
Brian Fox, Free Software Foundation
.br
bfox@gnu.ai.MIT.Edu
.PP
Chet Ramey, Case Western Reserve University
.br
chet@ins.CWRU.Edu
.PP
Traduccin al espaol: Gerardo Aburruzaga Garca, para el proyecto
PAMELI.
.br
Gerardo@CICA.es
.SH INFORMES DE FALLOS
Si Ud. encuentra un fallo en
.B bash,
debera informar de ello. Pero primero debera asegurarse de que
realmente es un fallo, y de que aparece en la ltima versin de
.B bash
que tenga.
.PP
Una vez que Ud. ha determinado que realmente existe un fallo, utilice
la orden
.I bashbug
para enviar el informe correspondiente.
Si Ud. ha encontrado cmo corregirlo, se le anima a que nos mande
tambin la correccin!
Las sugerencias y los informes de fallos `filosficos' se pueden
enviar por correo electrnico a \fIbug-bash@gnu.org\fP o se pueden
publicar en el grupo de discusiones de Usenet
.BR gnu.bash.bug .
.PP
TODOS los informes de fallos deben incluir:
.PP
.PD 0
.TP 20
El nmero de versin de \fBbash\fR
.TP
El tipo de computador (hardware) y el sistema operativo
.TP
El compilador que se emple para compilarlo
.TP
Una descripcin del comportamiento del fallo
.TP
Un corto guin o `receta' para reproducir el fallo
.PD
.PP
.I bashbug
inserta automticamente los tres primeros puntos en la plantilla que
proporciona para escribir el informe del fallo.
.PP
Los comentarios e informes de fallos que conciernan a esta pgina de
manual deben dirigirse a
.IR chet@ins.CWRU.Edu .
.PP
Los relativos a la traduccin de esta pgina deben dirigirse a
.I gerardo@cica.es
o discutirse en el marco del proyecto PAMELI; contacte con nosotros en
.IR http://elcano.dif.um.es/~piernas/manpages-es .
.SH FALLOS
.PP
Es demasiado grande y demasiado lento.
.PP
Hay algunas sutiles diferencias entre
.B bash
y versiones tradicionales del shell de Bourne
.BR sh ,
mayormente debidas a la especificacin
.SM
.BR POSIX .
.PP
Los alias son confusos en algunos casos.
.PP
Las rdenes internas del shell y las funciones no son
interrumpibles/rearrancables.
.PP
Las rdenes compuestas y las secuencias de rdenes de la forma
`a ; b ; c' no se manejan de forma muy elegante cuando se intenta
suspender el proceso. Cuando un proceso es parado, el shell ejecuta
inmediatamente la siguiente orden de la secuencia.
Para remediar esto es suficiente poner la secuencia de rdenes entre
parntesis; as la forzamos a ejecutarse en un subshell, que puede
pararse como una unidad.
.PP
Las rdenes dentro de una sustitucin de orden de tipo
\fB$(\fP...\fB)\fP no se analizan hasta que se intenta la
sustitucin. Esto provocar un retraso en la aparicin de mensajes
posibles de error hasta algn tiempo despus de que se introduzca la orden.
.PP
Las variables de tipo vector no pueden (an) exportarse.
.zZ
\" LocalWords: bash Shell
|