System_programming

System Programming ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋Š” ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ application, kernel, HW ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. _____________ | Library | ยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏ Application level ------------------------------ _____________ |System call| ยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏ Kernel level ------------------------------ _____________ | Hardware | ยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏยฏ H/W level ------------------------------ application level์—์„œ๋Š” library๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด ์ฝ”๋“œ๋“ค์€ library buffer๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (open(), read(), write(), close() โ€ฆ) ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ตœ์ ์˜ buffer ๋‹จ์œ„๋กœ disk์—์„œ ๊ฐ’์„ ์ฝ์–ด์˜ค๊ณ , library buffer์— ๋‹ด์•„๋‘๋ฉด ์ž‘์€๋‹จ์œ„๋กœ ์ฝ์–ด์˜ฌ ๋•Œ ํšจ์œจ์ ์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, ํ•œ ์ค„์”ฉ ํŒŒ์ผ์„ ์ฝ์–ด์•ผ ํ•œ๋‹ค๋ฉด, 1byte์”ฉ ํŒŒ์ผ์—์„œ โ€˜\nโ€™์„ ๊ฐ์ง€ํ•  ๋•Œ ๊นŒ์ง€ ์ฝ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, BUF_SIZ๋งŒํผ ํŒŒ์ผ์—์„œ ์ฝ์–ด์„œ library buffer์— ๋‹ด์•„๋‘๊ณ  library buffer๋ฅผ 1byte์”ฉ ์ฝ์œผ๋ฉฐ โ€˜\nโ€™๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์‹คํ–‰ ์†๋„๋Š” ๋” ๋น ๋ฅด๋‹ค. (IO์ ‘๊ทผ์€ ์ ์„์ˆ˜๋ก ํšจ์œจ์ ) Kernel level์—์„œ๋Š” System call์„ ์‚ฌ์šฉํ•˜๋ฉฐ system buffer๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. application level ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋ณดํ†ต library buffer๋ฅผ 1์ฐจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ , ๋‚ด๋ถ€์ ์œผ๋กœ system call์„ ์ˆ˜ํ–‰ํ•ด system buffer๋ฅผ 2์ฐจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. printf๋Š” c library ํ•จ์ˆ˜์ด๋ฉฐ, โ€˜\nโ€™์„ ๋งŒ๋‚˜์•ผ ํ™”๋ฉด์ƒ์— ์ถœ๋ ฅ์„ ํ•œ๋‹ค. โ€˜\nโ€™์ด ์ž…๋ ฅ๋˜๊ธฐ ์ „ ๊นŒ์ง€ ๋ฌธ์ž์—ด๋“ค์€ library buffer์— ๊ธฐ๋ก๋œ๋‹ค. fprintf๋Š” โ€˜\nโ€™๊ณผ ์ƒ๊ด€์—†์ด ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ฆ‰ library buffer๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ํŒŒ์ผ ์ž…์ถœ๋ ฅ fgetc C์—์„œ ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” fopen ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. fopen์€ ํŒŒ์ผ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์ฝ”๋“œ ๋‚ด์—์„œ ํŒŒ์ผ ํฌ์ธํ„ฐ๋กœ ํ•ด๋‹น ํŒŒ์ผ์— ์ ‘๊ทผ์ด๊ฐ€๋Šฅํ•˜๋‹ค. fgetc(FPTR) ํ•จ์ˆ˜๋Š” fopen์œผ๋กœ ์—ฐ ํŒŒ์ผ ํฌ์ธํ„ฐ๋ฅผ ์ฐธ์กฐํ•ด์„œ char ํ•˜๋‚˜๋ฅผ ์ฝ๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค. fgetc ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์€ int ํ˜•ํƒœ์ด๋‹ค. text file์„ ์ฝ์„ ๋•, 0xFF๊ฐ’์ด ๋‚ด์šฉ์— ์˜ฌ ์ˆ˜ ์—†์ง€๋งŒ, binary file์„ ์ฝ์„ ๋• ์ค‘๊ฐ„์— 0xFF ๊ฐ’์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. char ํ˜•ํƒœ๋กœ 0xFF๋ฅผ ์ฝ์œผ๋ฉด -1๊ฐ’์— ํ•ด๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์—, EOF์™€ ๊ตฌ๋ถ„์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์—ฌ char ๋Œ€์‹  int๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋˜์–ด์žˆ๋‹ค. ํŒŒ์ผ ๊ตฌ์กฐ์ฒด fopen์€ ํŒŒ์ผ ๊ตฌ์กฐ์ฒด์˜ ์ฃผ์†Œ(ํฌ์ธํ„ฐ)๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํŒŒ์ผ ๊ตฌ์กฐ์ฒด๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋‹ค. _flags: _IO_read_ptr : ๋‹ค์Œ ๋ช…๋ น์‹œ ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์œ„์น˜ _IO_read_end: kernel์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ ์ €์žฅํ•  ๋ฒ„ํผ์˜ ๋ ์œ„์น˜. _IO_read_base: kernel์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ ์ €์žฅํ•  ๋ฒ„ํผ์˜ ์‹œ์ž‘ ์œ„์น˜. ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋ช…๋ น(fgetc/fgets๋“ฑ) ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, kernel์€ 4096byte(BUF_SIZE) ๋งŒํผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ฝ์–ด์„œ ์ด๊ณณ์— ์ฑ„์›Œ๋‘”๋‹ค. _fileno: ํŒŒ์ผ์˜ offset, kernel์—์„œ ํ•ด๋‹น ํŒŒ์ผ์— ์ •ํ•ด์ค€ index(kernel ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.) fopen ์‹œ์— ํŒŒ์ผ ๊ตฌ์กฐ์ฒด๊ฐ€ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐํ™” ๋˜์ง€๋งŒ, IO_read* ์ธ์ž๋“ค์€ ํŒŒ์ผ ์ ‘๊ทผ์ด ์ด๋ฃจ์–ด์ง๊ณผ ๋™์‹œ์— ๊ฐ’์ด ์ ์šฉ๋œ๋‹ค. EOF ํŒŒ์ผ์„ ๋๊นŒ์ง€ ์ฝ์—ˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์€, EOF ๋ฌธ์ž(-1) ์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œํŒŒ์ผ์„ ์ฝ์–ด๋ณด๋ฉด ๋งˆ์ง€๋ง‰์— -1๊ฐ’์ด ์‹ค์ œ๋กœ ๋“ค์–ด์žˆ์ง€๋Š” ์•Š๋‹ค. EOF ๊ฐ’์€ file I/O ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์ผ ๋ฟ ์‹ค์ œ ํŒŒ์ผ์— ๊ธฐ์ž…๋œ ๊ฐ’์ด ์•„๋‹ˆ๋‹ค. file I/O ํ•จ์ˆ˜๋Š” i-node์— ๊ธฐ๋ก๋œ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒŒ์ผ ๋์„ ํŒ๋‹จํ•œ๋‹ค. ASKII ์ฝ”๋“œ ์ค‘ ์ฃผ์š” ๋ฌธ์ž์˜ ๊ฐ’ ์ฐธ์กฐ a: 97 A: 68 0: 48 \n: 10 \r: 13 (๊ณต๋ฐฑ): 32 \t: 9 \0: 0 fguts(BUFF, SIZE, FPTR) ํ•จ์ˆ˜๋Š” fopen์œผ๋กœ ์—ฐ ํŒŒ์ผ ํฌ์ธํ„ฐ๋ฅผ ์ฐธ์กฐํ•ด์„œ line ํ•˜๋‚˜๋ฅผ ์ฝ์–ด์˜จ๋‹ค. fputs(BUFF, FPTR) ํ•จ์ˆ˜๋Š” fopen์œผ๋กœ ์—ฐ ํŒŒ์ผ ํฌ์ธํ„ฐ๋ฅผ ์ฐธ์กฐํ•ด์„œ line ํ•˜๋‚˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ ํ‘œ์ค€ ์ž…๋ ฅ/์ถœ๋ ฅ/์—๋Ÿฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒŒ์ผ ํฌ์ธํ„ฐ๋ฅผ ์—ด์–ด๋‘”๋‹ค. ๊ฐ๊ฐ ์•„๋ž˜ ๋ฌธ์ž์—ด ํ˜น์€ ๋ฒˆํ˜ธ๋กœ ์ฐธ์กฐ ๊ฐ€๋Šฅํ•˜๋‹ค. stdin : ํ‘œ์ค€ ์ž…๋ ฅ stdout : ํ‘œ์ค€ ์ถœ๋ ฅ stderr: ํ‘œ์ค€ ์—๋Ÿฌ -> ํŒŒ์ผ ํฌ์ธํ„ฐ ๋Œ€์‹  stdout ์„ ์ž…๋ ฅํ•˜๋ฉด ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๋ฌธ์ž์—ด์ด ์ถœ๋ ฅ๋œ๋‹ค. (ex: fputc(BUF, stdout)) ...

<span title='2023-07-15 08:35:21 +0900 KST'>July 15, 2023</span>&nbsp;ยท&nbsp;10 min&nbsp;ยท&nbsp;AswinBlue

Shell Programming

Shell Programming ๋ฆฌ๋ˆ…์Šค ์‰˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด ๊ธฐ์ˆ ํ•œ๋‹ค. ์‰˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ bash, sh ๋“ฑ์˜ ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•œ ๋กœ์ง์„ ์นญํ•˜๋ฉฐ, ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ text ํŒŒ์ผ ์•ˆ์— ๋ช…๋ น์–ด๋ฅผ ์ž‘์„ฑํ•ด ๋†“๊ณ , ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๋ช…๋ น์–ด๊ฐ€ ๋“  ํŒŒ์ผ์˜ ํ™•์žฅ์ž๋Š” ๋ณดํ†ต .sh ๋กœ ์„ธํŒ…ํ•œ๋‹ค. (์œˆ๋„์šฐ OS์˜ .batch ์™€ ์œ ์‚ฌ) .sh ํŒŒ์ผ ์ž‘์„ฑ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ text ํŒŒ์ผ์€ ํ™•์žฅ์ž๊ฐ€ .sh ๋ผ๋„ ์‹คํ–‰ ๊ถŒํ•œ์ด ์—†๊ธฐ ๋–„๋ฌธ์— chmod ๋ช…๋ น์–ด๋กœ ๊ถŒํ•œ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. ex) chmod a+x <ํŒŒ์ผ์ด๋ฆ„> ๋ช…๋ น์œผ๋กœ ๋ชจ๋“  ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์‹คํ–‰ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. .sh ํŒŒ์ผ ์•ˆ์—๋Š” shell ๋ช…๋ น์–ด๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์™ธ ์ถ”๊ฐ€์ ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฌธ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ...

<span title='2023-07-13 18:29:44 +0900 KST'>July 13, 2023</span>&nbsp;ยท&nbsp;1 min&nbsp;ยท&nbsp;AswinBlue

Linux_env

Dev in Linux ๋ฆฌ๋ˆ…์Šค ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•์„ ์œ„ํ•œ ๊ฐ€์ด๋“œ ์‚ฌ์šฉ์ž ๋งž์ถค ์„ค์ • .bashrc ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์œ„์น˜ํ•œ user๋ณ„ ์„ค์ • ํŒŒ์ผ์ด๋‹ค. source ~/.bashrc ๋ช…๋ น์–ด๋กœ ์–ธ์ œ๋“  ์ƒˆ๋กœ๊ณ ์นจ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค ์ฝ˜์†” ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ์ƒ‰์น ํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. force_color_prompt=true if [ -n "$force_color_prompt" ]; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then # We have color support; assume it's compliant with Ecma-48 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such # a case would tend to support setf rather than setaf.) color_prompt=yes else color_prompt= fi fi if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_root)}\[\033[01;32m\]\u\[\033[01;36m\]@\[\033[01;35m\]\h\[\033[00m\]:\[\033[01;033m\]\w\$\[\033[00m\]' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt vi ๋ฆฌ๋ˆ…์Šค์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ์ ์ธ ์—๋””ํ„ฐ์ด๋‹ค. ์ง„์ž…์žฅ๋ฒฝ์€ ๋†’์€ ํŽธ์ด์ง€๋งŒ, ํ•œ๋ฒˆ ์ต์ˆ™ํ•ด์ง€๋ฉด ๋งค์šฐ ํŽธ๋ฆฌํ•˜๋‹ค. ~/.vimrc ํด๋”์— ๊ธฐ๋ณธ ์„ค์ •์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ธํŒ…ํ•  ์ˆ˜ ์žˆ๋‹ค. ...

<span title='2023-07-10 21:04:56 +0900 KST'>July 10, 2023</span>&nbsp;ยท&nbsp;4 min&nbsp;ยท&nbsp;AswinBlue

Virtual_box

VirtualBox ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ root ๊ณ„์ • virtual box๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ user์˜ ์ด๋ฆ„์€ vboxuser๋กœ ์„ธํŒ…๋˜์–ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ vboxuser๋Š” sudo ๊ถŒํ•œ์ด ์—†์–ด ๋‹ค๋ฅธ ์„ค์ •์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. virtual box์—์„œ root ๊ณ„์ • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. virtualbox์—์„œ ์›ํ•˜๋Š” ubuntu machine๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค. machine์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘ shiftํ‚ค๋ฅผ ํด๋ฆญํ•˜๊ณ  ์žˆ๋Š”๋‹ค. ๋ถ€ํŒ… ๋ชจ๋“œ ์„ ํƒ ํ™”๋ฉด์ด ๋œจ๋ฉด Advanced options for Ubuntu ๋ฅผ ์„ ํƒํ•˜๊ณ , (recovery mode)ํ‘œ์‹œ๊ฐ€ ๋˜์–ด์žˆ๋Š” ํ•ญ๋ชฉ์œผ๋กœ ๋ถ€ํŒ…์„ ์‹œ๋„ํ•œ๋‹ค. ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด root ๋ผ๋Š” ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜์—ฌ root ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žฌ์„ค์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

<span title='2023-07-02 20:03:24 +0900 KST'>July 2, 2023</span>&nbsp;ยท&nbsp;1 min&nbsp;ยท&nbsp;AswinBlue

Linux commands

Linux Command ๋ฆฌ๋ˆ…์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด๋“ค์„ ์ •๋ฆฌํ•œ๋‹ค. ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“ˆ์˜ ๋ช…๋ น์–ด๋„ ํฌํ•จํ•œ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ ๋ช…๋ น์–ด๋Š” /usr/bin/ ํด๋”์— ์ €์žฅ๋˜๋ฉฐ, ๋‚ด๋ถ€์— ์ €์žฅ๋œ ํŒŒ์ผ๋“ค์€ ๊ฐ ์œ ์ €๋“ค์—๊ฒŒ ์‹คํ–‰๊ถŒํ•œ์ด ์žˆ๋‹ค. ์œ ์ € ๊ฐœ์ธ์˜ ๋ช…๋ น์–ด๋ฅผ ๋”ฐ๋กœ ์„ค์ • ๋ฐ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ~/.bashrc ํŒŒ์ผ์—์„œ ํŠน์ • ๋””๋ฆฌ๋ ‰ํ„ฐ๋ฆฌ๋ฅผ PATH์— ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ~/bin/ ๊ฒฝ๋กœ๊ฐ€ PATH์— ์ถ”๊ฐ€๋˜์–ด ์žˆ๋‹ค. export PATH=$PATH:์ถ”๊ฐ€ํ• ๊ฒฝ๋กœ[:์ถ”๊ฐ€ํ• ๊ฒฝ๋กœ2:์ถ”๊ฐ€ํ• ๊ฒฝ๋กœ3:...] ๋ช…๋ น์–ด๋ฅผ ~/.bashrc ์— ์ถ”๊ฐ€ํ•˜๋ฉด ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ex) # in .bashrc file PATH=$PATH:/home/user/bashrc # ๊ธฐ์กด์˜ PATH์— /home/user/.bashrc ์ถ”๊ฐ€ # ํ˜„์žฌ PATH๋Š” .bashrc ํฌํ•จ PATH=$PATH:/home/user/dir1:/home/user/dir2 # ๊ธฐ์กด์˜ PATH์— dir1, dir2 ์ถ”๊ฐ€ # ํ˜„์žฌ PATH๋Š” .bashrc, dir1, dir2 ํฌํ•จ export PATH # PATH๋ฅผ ์ ์šฉ ์ ์šฉ ํ›„ source ~/.bashrc ๋ช…๋ น์–ด๋กœ .bashrc๋ฅผ ์žฌ์ ์šฉ ํ•ด ์ฃผ๋ฉด ์„ค์ •์ด ์™„๋ฃŒ๋œ๋‹ค. ๋ฆฌ๋ˆ…์Šค ์‰˜์—์„œ ์œ„ ์‰˜์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ์ž…๋ ฅํ•ด๋„ ์ ์šฉ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ด ๊ฒฝ์šฐ ์žฌ๋ถ€ํŒ…์‹œ ์„ค์ •์ด ์ดˆ๊ธฐํ™”๋œ๋‹ค. ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ณธ ๋ฆฌ๋ˆ…์Šค ์„ค์ • ๊ด€๋ จ stty -a: ์‹œ๊ทธ๋„ ๋‹จ์ถ•ํ‚ค๋“ค์˜ ๊ฐ’ ํ™•์ธ strace FILE_NAME: ์‹คํ–‰ํŒŒ์ผ์ด ์‹คํ–‰๋˜๋Š” ์ƒ์„ธ ๊ณผ์ •์„ ๋ผ์ธ๋ณ„๋กœ ๋ณด์—ฌ์ค€๋‹ค. getconf ๋ฆฌ๋ˆ…์Šค์˜ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด getconf -a: ๋ชจ๋“  ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. getconf LONG_BIT: ์‹œ์Šคํ…œ์ด x64๋ผ๋ฉด 64๋ฅผ, x86์ด๋ผ๋ฉด 32๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ldd FILE_NAME : FILE_NAME ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ์„ ํ™•์ธํ•œ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ ์กฐ์ž‘ mkdir : ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์—ฌ parent ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด mkdir -p ๋ช…๋ น์–ด๋กœ ํ•œ ๋ฒˆ์— ์ƒ์„ฑ ๊ฐ€๋Šฅ (ex: mkdir -R A/B/C/D) ๋ฌธ์ž์—ด ์กฐ์ž‘ sed ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์€ ed์—์„œ ๋”ฐ ์™”์œผ๋ฉฐ, ์ด ๊ธฐ๋Šฅ๋“ค์€ ๋ชจ๋‘ sed์— ์ ์šฉ์ด ๋œ๋‹ค. ed๋Š” ๋Œ€ํ™”ํ˜• ํŽธ์ง‘๊ธฐ์ด๋ฉฐ, sed๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ํŽธ์ง‘๊ธฐ \n ์„ ๊ฐœํ–‰๋ฌธ์ž๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์—๋””ํ„ฐ sed [-e script][-f script-file][file...] ...

<span title='2021-08-12 10:41:00 +0900 KST'>August 12, 2021</span>&nbsp;ยท&nbsp;5 min&nbsp;ยท&nbsp;AswinBlue