반복 작업을 간편하게 set -o vi, awk , for

반응형

안녕하세요, 우리노트 Benjamin입니다.


aix 에서 작업을 하다보면 반복된 command 를 이용하여야 하는 경우가 많습니다.

능력자분들은 순식간에 스크립트를 짜서 돌려버리지만, 저같은 평민은 반복해서 타이핑하는 경우가 많습니다.


그나마 vi 명령을 통해 이전 명령을 불러오는 정도가 가능하겠군요.


test@/usr> set -o vi


이전명령을 불러오려면 k 를 누르시면 됩니다.


이전명령중 검색을 하시려면 esc 키를 누르신뒤 /단어 를 누르고 엔터를 치시면 해당 단어가 포함되는 이전 command 검색이 가능합니다. 


test@/usr> /word_previous_command


다음 찾기는 n 을 누르시면 됩니다.


그러나 쳐야하는 command 양이 많아지면 이것도 귀찮아지는데요, 이럴때 awk 나 for 를 사용하면 편하게 작업이 가능합니다.


예를 들어 여러 개의 hdisk size 를 확인하고 싶다고 하면..

   

test@/usr> lspv

hdisk0 00f615e5ef3aeb25  rootvg active

hdisk1 00f615e557810e0a   None

hdisk2 00f615e55782a6ca   None

hdisk3 00f615e5335903ff    None

hdisk4 00f615e53359041c   None

hdisk5 00f615e53d62059b   None

   

일일히 command를 치거나 vi 기능을 이용해 이전 command를 불러온뒤 hdisk 번호만 바꿔주며 반복해야 합니다.


test@/usr> bootinfo -s hdisk0

30720

test@/usr> bootinfo -s hdisk1

10240

    

그러나 awk 를 사용하면 command 의 출력물을 이용해 다른 command를 수행할 수 있습니다.

아래와 같이 command를 생성하신뒤,


test@/usr> lspv | awk '{print "bootinfo -s " $1}'

bootinfo -s hdisk0

bootinfo -s hdisk1

bootinfo -s hdisk2

bootinfo -s hdisk3

bootinfo -s hdisk4

bootinfo -s hdisk5

   

마지막에 sh를 붙여 스크립트로 돌게 수행하여 주시면 바로 결과가 확인 가능합니다.


test@/usr> lspv | awk '{print "bootinfo -s " $1}' |sh

30720

10240

10240

10240

10240

10240

   
다음은 for 문을 사용한 방법입니다.


test@/usr> for i in 0 1 2 3 4 5

> do

> bootinfo -s hdisk$i

> done

30720

10240

10240

10240

10240

10240

   

댓글

Designed by JB FACTORY