関連記事はコチラ
https://life-is-command.com/linux-command-beginner/
bannerを直接修正して、#を*に表示を変えてみます。
まずは任意のエディタでbanner.cを開きます。
全文載せてみます。
$ cat -n banner.c 1 /***************************************************************** 2 * 3 * SYSVbanner.c 4 * 5 * This is a PD version of the SYS V banner program (at least I think 6 * it is compatible to SYS V) which I wrote to use with the clock 7 * program written by: 8 ** DCF, Inc. 9 ** 14623 North 49th Place 10 ** Scottsdale, AZ 85254 11 * and published in the net comp.sources.misc newsgroup in early July 12 * since the BSD banner program works quite differently. 13 * 14 * There is no copyright or responsibility accepted for the use 15 * of this software. 16 * 17 * Brian Wallis, brw@jim.odr.oz, 4 July 1988 18 * 19 *****************************************************************/ 20 21 /* Changes by David Frey, david@eos.lugs.ch, 3 February 1997: 22 * 1. protoized and indented, 2. changed @ character to # 23 */ 24 25 #include <stdio.h> 26 #include <string.h> 27 28 char *glyphs[] = 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 int main(int argc, char **argv) 128 { 129 int a, b, c, len, ind; 130 char line[80]; 131 132 for (argv++; --argc; argv++) { 133 len = strlen(*argv); 134 if (len > 10) 135 len = 10; 136 for (a = 0; a < 7; a++) { 137 for (b = 0; b < len; b++) { 138 if ((ind = (*argv)[b] - ' ') < 0) 139 ind = 0; 140 for (c = 0; c < 7; c++) { 141 line[b * 8 + c] = glyphs[(ind / 8 * 7) + a][(ind % 8 * 7) + c] 142 } 143 line[b * 8 + 7] = ' '; 144 } 145 for (b = len * 8 - 1; b >= 0; b--) { 146 if (line[b] != ' ') 147 break; 148 line[b] = '\0'; 149 } 150 puts(line); 151 } 152 puts(""); 153 } 154 return 0; 155 }
ざっとソースを見たところで一旦エディタを終了します。
#を*に置換すれば良いので、
sedを使いましょう。
以下のコマンドで、banner.c内の30行目から124行目までにある#を*に置換します。
$ sed -e '30,124s/#/*/g' -i banner.c
makeしてbannerを実行してみます。
$ ./banner HELLO * * ******* * * ******* * * * * * * * * * * * * * * ******* ***** * * * * * * * * * * * * * * * * * * * * ******* ******* ******* *******
コメント