Linux Shell ÀïһЩºÜÉÙÓõ½?ºÜÓÐÓõÄÖ¸Áî
Óиö½Ð 80/20 ·¨ÔòµÄ¹ÛÄî¿ÉÒÔÁªÏëµ½Èí¼þϵͳÉÏ£¬¹Û²é·¢ÏÖ£¬ 80% µÄʹÓÃÕß×åȺ£¬¹Ì¶¨»áȥʹÓõÄÖ»ÓÐ 20% µÄϵͳ¹¦ÄÜ¡£²»ÐèҪȥ´ó·ÑÖÜÕµÄ֤ʵÕâÑùµÄͳ¼ÆÖµ£¬ÎÒ¶þÊ®ÄêÒÔÉϽ¨Á¢Èí¼þ¼Ü¹¹¼°Ê¹ÓÃÈí¼þϵͳµÄ¾Ñé¸æËßÎÒ£¬ÕâÑùµÄ¼Ù¶¨£¬¼«ÓпÉÄÜÊÇÕýÈ·µÄ¡£Ò»¶ÑµÄ Linux ÃüÁîÁгÌÐò½ÔÎÞÒ»ÀýÍâÓÚÕâÑùµÄÆÕ±éÏÖÏó¡£ Linux ÌṩÐí¶à Shell ²ã¼¶µÄÃüÁ¿ÉÄÜÖ»ÓÐÊ®¸öÄÜÆձ鱻Á˽ⲢʹÓÃÖ®£¬¶øʣϵļ«´ó²¿·Ý£¬¼¸ºõÊDZ»ºöÂԵġ£
¡¡¡¡ÕâЩÔÚ Linux Shell Àï²»ÆðÑÛµÄС¶«Î÷ÓÐÄÄЩÊǾßÓб»Ìá³öÀ´ÌÖÂ۵ļÛÖµµÄÄØ? ÎÒÔÚÕ⽫¼ò¶ÌµÄ½éÉܼ¸¸ö²»³£Ó㬵«È´Ï൱ºÃÓÃµÄ Linux Shell ÃüÁÕâЩ³ÌÐòÊÇÎÒÓÃÁ˺ü¸Ä꣬¾µÃÆðʱ¼ä¿¼ÑéµÄ¡£ÌرðÊÇ£¬ÎÒÑ¡Ôñ½«Öصã·ÅÔÚÓï·¨½âÎö¼°¸ñʽ»¯ÎÄ×ÖÄÚÈݵÄÃüÁîÉÏ¡£
¡¡¡¡ÔÚÕâЩÀý×ÓÀÎÒ¼Ù¶¨´ó¼Ò¶ÔÃüÁîÁеÄÓï·¨Óлù±¾µÄÊìϤ¶È£¬²¢¾ß¼òµ¥µÄ Shell ¸ÅÄÓÐһЩ²¢²»ÊÇÄÇôÆÕ±éµÄLinuxÃüÁî¡£¼´Ê¹Èç´Ë£¬ÃüÁîÁеķ¶ÀýÈÔ¸½ÉÏÊʵ±µÄÅú×¢¶øÇÒËüÊǺÜÖ±½ÓµÄ¡£ÔÚÿһ¸öÓ¦ÓÃÉÏ£¬¸÷¸öÃüÁîÁеÄÖ´Ðе×϶¼»áÓÐÒ»¸öʹÓ÷¶Àý¸ø´ó¼Ò¿´¡£
¡¡¡¡ÏÂÁбãÊÇÕâЩÓï·¨¡¢¸ñʽ¼°ÎÄ×ÖÄÚÈݵÄÕ¹ÏÖ£¬ËäÈ»²¢·Çÿ¸ö·¶Àý½ÔÌṩ¾ßÌåµÄ˵Ã÷£¬²»¹ý±ØÐëÖªµÀµÄÒ»µãÊÇ£¬ÏÂÁÐÃüÁîÈôÊÇûÓÐÖ¸¶¨µµ°¸²ÎÊý£¬ÔòËü»á¶ÁÈ¡±ê×¼ÊäÈë¡£
¡¡¡¡Head/Tail
¡¡¡¡head Óë tail ¾ÍÏñËüµÄÃû×ÖÒ»ÑùµÄdzÏÔÒ׶®£¬ËüÊÇÓÃÀ´ÏÔʾ¿ªÍ·»ò½áβij¸öÊýÁ¿µÄÎÄ×ÖÇø¿é£¬head ÓÃÀ´ÏÔʾµµ°¸µÄ¿ªÍ·ÖÁ±ê×¼Êä³öÖУ¬¶ø tail Ï뵱Ȼ¶û¾ÍÊÇ¿´µµ°¸µÄ½áβ?~£¬¿´¿´ÏÂÃæµÄ·¶Àý£º
¡¡¡¡## (1) displays the first 6 lines of a file
¡¡¡¡head -6 readme.txt
¡¡¡¡## (2) displays the last 25 lines of a file
¡¡¡¡tail -25 mail.txt
¡¡¡¡·¶ÀýÒ»ÊÇÏÔʾµµ°¸µÄÇ° 6 ÐУ¬·¶Àý¶þÔòÊÇÏÔʾµµ°¸×îºóµÄ 25 ÐС£
¡¡¡¡¶øÏÂÃæµÄ·¶±ð£¬½áºÏÁË head Óë tail µÄÖ¸ÁÏÔʾµµ°¸µÄµÚ 11 Ðе½µÚ 20 ÐУº
¡¡¡¡# (3)
¡¡¡¡head -20 file | tail -10
¡¡¡¡ÔÚ tail µÄʹÓÃÊÖ²áÒ³ÖÐÏÔʾÁË±È head »¹¶àµÄ¿ÉÓòÎÊý£¬ÆäÖÐÓÐÒ»¸öºÜºÃÓõIJÎÊý " -f "£¬Ê¹Óô˲ÎÊýʱ£¬tail ²»»á»Ø´«½áÊøÐźţ¬³ý·ÇÎÒÃÇÈ¥×ÔÐÐÈ¥ÖжÏËü£»Ïà·´µÄ£¬Ëü»áÒ»Ö±µÈ´ýÒ»¶Îʱ¼ä£¬Ò»Ö±µ½Ëû·¢ÏÖ×ÊÁÏ×ÔËü×îºóÒ»´Î±»¶ÁÈ¡ºó£¬ÓÖ±»¼ÓÈëеÄÒ»ÐÐʱ£º
¡¡¡¡## (4) display ongoing updates to the given
¡¡¡¡## log file
¡¡¡¡tail -f /usr/tmp/logs/daemon_log.txt
¡¡¡¡ÉÏÊö·¶Àý¿ÉÒÔ¶¯Ì¬ÏÔʾ¸Ã log ÎļþµÄ¶¯Ì¬¸üС£
¡¡¡¡¼ÙÉè¸Ã·þÎñ³ÌÐòÊÇÒ»Ö±²»¶ÏµÄ¼ÓÈ붯̬×ÊÁϵ½ /usr/adm/logs/daemon_log.txt µÄ log ÎļþÀÔÚÃüÁîÁпØÖÆ´°¿ÚÖÐʹÓà tail -f£¬Ëü½«»áÒÔÒ»¶¨µÄʱ¼äʵʱ׷×ٸõµµÄËùÓиüС£ ( -f µÄÖ»ÓÐÔÚÆäÊäÈëΪµµ°¸Ê±²ÅÄÜʹÓà )¡£
¡¡¡¡¼ÙÈçÄãÔÚ tail ºóÏÂÁ˶à¸öµµ°¸²ÎÊý£¬Äã±ãÄÜÔÚͬһ¸ö´°¿ÚÄÚÒ»´Î×·×ÙÊý¸ö log ?£º
¡¡¡¡## track the mail log and the server error log
¡¡¡¡## at the same time.
¡¡¡¡tail -f /var/log/mail.log /var/log/apache/error_log
¡¡¡¡tac -- ·´¹ýÀ´´®Á¬?!
¡¡¡¡cat µ¹¹ýÀ´Ôõôƴ ? ¶ÔÀ² !! Õâ¾ÍÊÇ tac µÄ¹¦ÄÜ? ~ ËüÊǰѵµ°¸µÄ˳ÐòÄÚÈÝ·´¹ýÀ´´®Á¬Óõģ¬ÄÇô ~ Ëü¶¼ÓÃÔÚʲô״¿öÏÂÄØ ? ÈκÎÐëÒªÒÔºó½øÏȳöµÄ˳ÐòÖØÐÂÅÅÁÐ×é¼þµÄ¹¤×÷¶¼ÓõÃÉÏËü ! ÒÔÏÂÃæµÄÖ¸ÁîÀ´Ëµ£¬±ãÊÇÒÔ×Ô×îºó½¨Á¢µÄµ½×îÏȽ¨Á¢µÄ˳Ðò£¬ÁгöÈý¸ö×îн¨µÄʹÓÃÕßÕʺţº
¡¡¡¡# (5) last 3 /etc/passwd records - in reverse
¡¡¡¡$ tail -3 /etc/passwd | tac
¡¡¡¡curly:x:1003:100:3rd Stooge:/homes/curly:/bin/ksh
¡¡¡¡larry:x:1002:100:2nd Stooge:/homes/larry:/bin/ksh
¡¡¡¡moe:x:1001:100:1st Stooge:/homes/moe:/bin/ksh
¡¡¡¡nl -- ΪÊä³öÁмÓÉϱàºÅ
¡¡¡¡nl ÊÇÒ»¸ö¼òµ¥µ«ºÜºÃÓõıàºÅ¹ýÂ˹¤¾ß£¬ÎÒÔÚÊäÈëµÄµØ·½ÏÂÁ˲ÎÊý£¬ÈÃËùÓÐÐÐÁеıàÂë½Ô¿¿×ó£¬nl Êǹ©Á˷dz£¶àµÄ²ÎÊýʹÓ㬿ÉÒÔ¶¨Òåµ½ºÜϸºÜϸµÄ³ÌÐòÀ´Öƶ¨ËüϺñàºÅµÄÊä³ö£¬ÏÂÃæÊÇһЩ²ÎÊýʹÓõķ¶Àý˵Ã÷£º
¡¡¡¡# (6) Display the first 4 entries of the password
¡¡¡¡# file - numbers to be three columns wide and
¡¡¡¡# padded by zeros.
¡¡¡¡$ head -4 /etc/passwd | nl -nrz -w3
¡¡¡¡001 root:x:0:1:Super-User:/:/bin/ksh
¡¡¡¡002 daemon:x:1:1::/:
¡¡¡¡003 bin:x:2:2::/usr/bin:
¡¡¡¡004 sys:x:3:3::/:
¡¡¡¡#
¡¡¡¡# (7) Prepend ordered line numbers followed by an
¡¡¡¡# ¡¯=¡¯ sign to each line -- start at 101.
¡¡¡¡$ nl -s= -v101 Data.txt
¡¡¡¡101=1st Line ...
¡¡¡¡102=2nd Line ...
¡¡¡¡103=3rd Line ...
¡¡¡¡104=4th Line ...
¡¡¡¡105=5th Line ...
¡¡¡¡.......
¡¡¡¡fmt -- ¸ñʽ»¯
¡¡¡¡fmt ÊÇÒ»¸ö¼òµ¥µÄÎÄ×Ö¸ñʽ»¯¹¤¾ß£¬ËüÖصãÊÇÔÚÈÃÎÄ×ÖµÄ×ÊÁÏÓë×î´óËùÄÜÖ§³ÖµÄ¿í¶ÈÒ»Ö£¬ËüÊÇÀûÓýáºÏ¼°½Ø¶ÏÐÐÁеĿհ×ËùÍê³ÉµÄ¡£Ç°ÌáÊÇÄãÐèҪά»¤µÄÊÇÒ»¸öÓÉÎÄÊé´¦ÀíÆ÷Ëù²úÉúµÄÎÄ×ÖÄÚÈÝ£¬ËüËùÊä³öµÄÎÄ×Ö¿ÉÄܺ¬À¨Á˸÷ÖÖ²»Í¬³¤¶ÈµÄÐÐÁУ¬ÈôÕâÑùµÄÎÄ×ÖÊÇÓÉÎÄ×Ö±à¼Æ÷ ( ÏñÊÇ vi ) ×÷µÄ£¬fmt ±ãÄܹ»½«´ËÔʼÎÄ×Öת»¯³É¸üºÃά»¤µÄ¸ñʽ¡£ÏÂÃæµÄµÚÒ»¸öÀý×Ó£¬ÏÔʾµÄÊÇÏ fmt Ö¸ÁîÀ´ÖØÐÂÖÆ×÷µµ°¸¸ñʽ£¬ÈÃËüÒ»Ðв»Òª³¬¹ý 80 ¸ö×Ö·û£º
¡¡¡¡# (8) No more than 60 char lines
¡¡¡¡$ fmt -w 60 README.txt > NEW_README.txt
¡¡¡¡#
¡¡¡¡# (9) Force uniform spacing:
¡¡¡¡# 1 space between words, 2 between sentences
¡¡¡¡$ echo "Hello World. Hello Universe." |
¡¡¡¡fmt -u -w80
¡¡¡¡Hello World. Hello Universe.
¡¡¡¡fold -- ½«ÊäÈë·Ö¶Î
¡¡¡¡fold ¸ú fmt ºÜÏñ£¬µ«Ëûͨ³£ÊÇÓÃÀ´¸ñʽ»¯Óë·ÇÔö¼ÓÎÄ×ֿɶÁÐÔµÄ×ÊÁÏ£¬ÏÂÃæÓиö¼òµ¥µÄÀý×Ó£º
¡¡¡¡# (10) Format text in 3 column width lines
¡¡¡¡$ echo oxoxoxoxo | fold -w3
¡¡¡¡oxo
¡¡¡¡xox
¡¡¡¡oxo
¡¡¡¡# (11) Parse by triplet-char strings -
¡¡¡¡# search for ¡¯xox¡¯
¡¡¡¡$ echo oxoxoxoxo | fold -w3 | grep "xox"
¡¡¡¡xox
¡¡¡¡# (12) One way to iterate through a string of chars
¡¡¡¡$ for i in $(echo 12345 | fold -w1)
¡¡¡¡> do
¡¡¡¡> ### perform some task ...
¡¡¡¡> print $i
¡¡¡¡> done
¡¡¡¡1
¡¡¡¡2
¡¡¡¡3
¡¡¡¡4
¡¡¡¡5
¡¡¡¡tr
¡¡¡¡tr Ϊһ¸ö¼òµ¥µÄ×Ö×éת»»Æ÷£¬ËüµÄʵ¼ÊÓ¦ÓÃÓëһЩ½Ï¸´ÔӵijÌÐòÓеãÖظ´£¬ÏñÊÇ sed ºÍ awk [ ¸ü´óÐ͵Ķþ½øÖƳÌÐò´úÂë ]¡£tr ÔÚÎÄ×ÖµÄÖû»¡¢É¾´Ó¼°Ôö¼ÓÉϺܺÃÓá£ËüµÄÖ¸ÁîģʽÊÇ " ´Ó ( ·ÅÔÚµÚÒ»¸ö²ÎÊý ) ¡µ½ ( µÚ¶þ¸ö²ÎÊý )¡ " µÄģʽ£»ÏÂÃæΪËüÒ»°ãµÄʹÓÃÓï·¨£º
¡¡¡¡# (13) tr usage
¡¡¡¡tr [options] "set1" ["set2"]