find / -xdev ¨Cmtime $1 ¨Csize +$2 ¨Cprint ÑéÖ¤¸Ã½Å±¾Ö´Ðнá¹û¡£ ´ð£º
´Ó¸ùĿ¼¿ªÊ¼²éÕÒËùÓÐ$1СʱǰÐ޸ģ¬´óС´óÓÚ$2¿éµÄÎļþ¡£ 8£®Ò»¸öshell½Å±¾£¬ÄÚÈÝÈçÏ£º
echo ¨Cn ¡°which color do you like?¡± read color case ¡°$color¡± in [Bb]l??)
echo I feel $color echo The sky is $color;; [Gg]ree*)
echo $color is for trees echo $color is for seasick;; red | orange)
echo $color is very warm!;; *)
echo no such color as $color;; esac
echo ¡°out of case¡± ÑéÖ¤¸Ã½Å±¾Ö´Ðнá¹û¡£ ´ð£º
9£®Éè¼ÆÒ»¸öshell½Å±¾£ºÇóÃüÁîÐÐÉÏËùÓÐÕûÊýºÍ¡£ ´ð£º sum=0
while [ $# != 0 ] do
let sum=sum+$1 shift done
echo ¡°the sum of arguments is $sum¡±
10£®Éè¼ÆÒ»¸öshell½Å±¾£ºÅжϵ±Ç°¹¤×÷Ŀ¼ÏÂËùÓеÄÎļþÀàÐÍ£¬Èç¹ûÊÇĿ¼ÏÔʾĿ¼Ãû£¬Èç¹ûÊÇÎļþ²é¿´ÎļþÄÚÈÝ£¬Èç¹û¶¼²»ÊÇ£¬ÏÔʾÌáʾÐÅÏ¢¡£
´ð£º
for file in ./* do
if [ -d ¡°$file¡± ] then
ls ¡°$file¡±
elif [ -f ¡°file¡± ] then
more ¡°$file¡± else
echo ¡°$fiel is not a directory or a regular file.s¡± done
µÚ7ÕÂ Ï°Ìâ´ð°¸
1£®gcc±àÒë¹ý³ÌÒ»°ã·ÖΪÄļ¸¸ö½×¶Î£¿¸÷½×¶ÎµÄÖ÷Òª¹¤×÷ÊÇʲô£¿
´ð£ºgcc±àÒë¹ý³ÌÒ»°ã·ÖΪԤ´¦Àí¡¢±àÒë¡¢»ã±à¡¢Á´½ÓËĸö½×¶Î£¬¸÷½×¶ÎµÄÖ÷Òª¹¤×÷ÈçÏ£º £¨1£©Ô¤´¦Àí½×¶Î
Ôڸý׶Σ¬±àÒëÆ÷½«ÉÏÊö´úÂëÖеÄstdio.h±àÒë½øÀ´¡£GCCÊ×Ïȵ÷ÓÃcpp½øÐÐÔ¤´¦Àí£¬¸ù¾ÝÒÔ×Ö·û#¿ªÍ·µÄÃüÁîÐÞ¸ÄÔʼµÄC³ÌÐò¡£Èçhello.cÖÐ#include
µ«Êµ¼Ê¹¤×÷ÖÐͨ³£²»ÓÃרÃÅÉú³ÉÕâÖÖÎļþ£¬ÒòΪ»ù±¾ÉÏÓò»µ½¡£Èô·ÇÒªÉú³ÉÕâÖÖÎļþ²»¿É£¬¿ÉÒÔÀûÓÃÏÂÃæµÄʾÀýÃüÁî¡£
$gcc -E hello.c -o hello.i £¨2£©±àÒë½×¶Î
GCCµ÷ÓÃcc1¼ì²é´úÂëµÄ¹æ·¶ÐÔ£¬ÊÇ·ñÓÐÓï·¨´íÎóµÈ£¬ÒÔÈ·¶¨´úÂëʵ¼ÊÒª×öµÄ¹¤×÷£¬ÔÚ¼ì²éÎÞÎóºó£¬°Ñ´úÂë·Òë³É»ã±àÓïÑÔ£¬Éú³É»ã±à´¦ÀíºóµÄ»ã±à´úÂëhello.s¡£Õâ¸ö½×¶Î¶ÔÓ¦µÄGCCÃüÁîÈçÏÂËùʾ¡£ $gcc -S hello.i -o hello.s
»ã±àÓïÑÔÊǷdz£ÓÐÓõģ¬ËüΪ²»Í¬¸ß¼¶ÓïÑÔ²»Í¬±àÒëÆ÷ÌṩÁËͨÓõÄÓïÑÔ¡£È磺C±àÒëÆ÷ºÍFortran±àÒëÆ÷²úÉúµÄÊä³öÎļþÓõĶ¼ÊÇÒ»ÑùµÄ»ã±àÓïÑÔ¡£ £¨3£©»ã±à½×¶Î
GCCµ÷ÓÃas°Ñ±àÒë½×¶ÎÉú³ÉµÄhello.sÎļþת³É±àÒëºóµÄÄ¿±êÎļþhello.o£¬µ«hello.cÖÐËùÒýÓõÄÆäËûÎļþÖк¯Êý£¨Èçprintf£©µÄÄÚ´æλÖÃÉÐ䶨Òå¡£Õâ¸ö½×¶Î¶ÔÓ¦µÄGCCÃüÁîÈçÏÂËùʾ£º $gcc -c hello.s -o hello.o £¨4£©Á´½Ó½×¶Î
GCCµ÷ÓÃld½«³ÌÐòµÄÄ¿±êÎļþÓëËùÐèµÄËùÓи½¼ÓµÄÄ¿±êÎļþÁ¬½ÓÆðÀ´£¬×îÖÕÉú³É¿ÉÖ´ÐÐÎļþ¡£ÈçGCCÕÒµ½hello.cËùµ÷Óõĺ¯Êýprintfº¯Êý¿âËùÔÚλÖÃ/user/lib£¬°Ñº¯ÊýµÄʵÏÖÁ´½Ó½øÀ´£¬Éú³É×îÖյĿÉÖ´ÐÐÎļþhello¡£¿ÉÒÔÀûÓÃÏÂÃæµÄʾÀýÃüÁîÍê³É¡£ $gcc hello.o -o hello
Èç¹ûÎÒÃDz»ÏëÉú³ÉÖмäµÄ¸÷ÀàÐÍÎļþ£¬¿ÉÓÃÈçÏÂÃüÁîÓÉÔ´ÎļþÖ±½Ó±àÒëÁ´½Ó³É¿ÉÖ´ÐÐÎļþ¡£
$gcc hello.c -o hello 2£®¼òÊöGNU gdbµÄ¹¦ÄÜ¡£
´ð£ºgdbÊÇLinuxϵͳÖÐÒ»¸ö¹¦ÄÜÇ¿´óµÄGNUµ÷ÊÔ³ÌÐò£¬Ëü¿ÉÒÔµ÷ÊÔCºÍC++³ÌÐò£¬Ê¹³ÌÐò¿ª·¢ÕßÔÚ³ÌÐòÔËÐÐʱ¹Û²ì³ÌÐòµÄÄÚ²¿½á¹¹ºÍÄÚ´æµÄʹÓÃÇé¿ö¡£gdbÌṩÈçϹ¦ÄÜ£º £¨1£©ÔËÐгÌÐò£¬ÉèÖÃËùÓеÄÄÜÓ°Ïì³ÌÐòÔËÐеIJÎÊýºÍ»·¾³£» £¨2£©¿ØÖƳÌÐòÔÚÖ¸¶¨µÄÌõ¼þÏÂÍ£Ö¹ÔËÐУ» £¨3£©µ±³ÌÐòֹͣʱ£¬¿ÉÒÔ¼ì²é³ÌÐòµÄ״̬£» £¨4£©Ð޸ijÌÐòµÄ´íÎ󣬲¢ÖØÐÂÔËÐгÌÐò£» £¨5£©¶¯Ì¬¼àÊÓ³ÌÐòÖбäÁ¿µÄÖµ£»
£¨6£©¿ÉÒÔµ¥²½ÖðÐÐÖ´ÐдúÂ룬¹Û²ì³ÌÐòµÄÔËÐÐ״̬£» £¨7£©·ÖÎö±ÀÀ£³ÌÐò²úÉúµÄcoreÎļþ¡£ 3£®ÓÃgdbµ÷ÊÔÏÂÃæµÄ³ÌÐò¡£ #include
char my_string[] = \ my_print (my_string); my_print2 (my_string); }
my_print (char *string) {
printf (\}
my_print2 (char *string) {
char *string2; int size, i;
size = strlen (string);
string2 = (char *) malloc (size + 1); for (i = 0; i < size; i++) string2[size - i] = string[i]; string2[size+1] = `\\0';
printf (\}
´ð£ºgcc -g -o greeting greeting.c
Õâ¸ö³ÌÐòÖ´ÐÐʱÏÔʾ½á¹û: The string is hello there The string printed backward is
Êä³öµÄµÚÒ»ÐÐÊÇÕýÈ·µÄ, µ«µÚ¶þÐдòÓ¡³öµÄ¶«Î÷²¢²»ÊÇÎÒÃÇËùÆÚÍûµÄ¡£ÎÒÃÇËùÉèÏëµÄÊä³öÓ¦¸ÃÊÇ: The string printed backward is ereht olleh¡£
ÓÉÓÚijЩÔÒò, my_print2 º¯ÊýûÓÐÕý³£¹¤×÷¡£ÓÃgdb ¿´µ÷ÊÔ³ÌÐò, ÏȼüÈëÈçÏÂÃüÁ
gdb greeting
-------------------------------------------------------------------------------- ×¢Òâ: ¼ÇµÃÔÚ±àÒë greeting ³ÌÐòʱ°Ñµ÷ÊÔÑ¡Ïî´ò¿ª. -------------------------------------------------------------------------------- ÓÃgdbµÄrunÃüÁîÔËÐÐgreeting¡£ (gdb) run
Starting program: /root/greeting The string is hello there The string printed backward is Program exited with code 040
Õâ¸öÊä³öºÍÔÚ gdb ÍâÃæÔËÐеĽá¹ûÒ»Ñù¡£ ÎÊÌâÊÇ£¬ÎªÊ²Ã´·´Ðò´òӡûÓй¤×÷? ΪÁËÕÒ³öÖ¢½áËùÔÚ, ÔÚ my_print2 º¯ÊýµÄ for Óï¾äºóÉèÒ»¸ö¶Ïµã, ¾ßÌåµÄ×ö·¨ÊÇÔÚ gdb Ìáʾ·ûϼüÈë list ÃüÁîÈý´Î, ÁгöÔ´´úÂ룺 (gdb) list (gdb) list (gdb) list
µÚÒ»´Î¼üÈë list ÃüÁîµÄÊä³öÈçÏ£º
Èç¹û°´Ï»سµ, gdb ½«ÔÙÖ´ÐÐÒ»´Î list ÃüÁî, ¸ø³öÏÂÁÐÊä³ö£º
ÔÙ°´Ò»´Î»Ø³µ½«Áгö greeting ³ÌÐòµÄÊ£Óಿ·Ö:
¸ù¾ÝÁгöµÄÔ´³ÌÐò, ÄãÄÜ¿´µ½ÒªÉè¶ÏµãµÄµØ·½ÔÚµÚ21ÐÐ, ÔÚ gdb ÃüÁîÐÐÌáʾ·ûϼüÈëÈçÏÂÃüÁîÉèÖöϵã: (gdb) break 21
gdb ½«×÷³öÈçϵÄÏìÓ¦: