Server/Shell

bash shell에서 재밌는 기능하나 발견 ^^

체리필터 2006. 12. 12. 11:25
728x90
반응형
리눅스에 하는 작업이라곤 고작 vi로 프로그래밍 하고,
Apache나 MySQL 설정 파일 변경 등이 대부분이라서...
오래 사용하고서도 아는 기능이 많이 없었다.
그런데 요 근래 발견한 재미 있는 기능들을 통해서 다시 한번 리눅스의 재미에 맛을 들이기 시작했다.
물론 이전에도 리눅스를 좋아했지만 말이다.
알게 된 재미있는 기능 몇가지를 아래에 써 본다.

1. split

split 파일명

-rw-r--r--  1 root root   73568 Dec 12 10:12 xaa
-rw-r--r--  1 root root   73601 Dec 12 10:12 xab
-rw-r--r--  1 root root   73559 Dec 12 10:12 xac
-rw-r--r--  1 root root   73613 Dec 12 10:12 xad
-rw-r--r--  1 root root   73537 Dec 12 10:12 xae
-rw-r--r--  1 root root   74393 Dec 12 10:12 xaf
-rw-r--r--  1 root root   86555 Dec 12 10:12 xag
-rw-r--r--  1 root root   86931 Dec 12 10:12 xah
-rw-r--r--  1 root root   83555 Dec 12 10:12 xai
-rw-r--r--  1 root root   84163 Dec 12 10:12 xaj
-rw-r--r--  1 root root   84080 Dec 12 10:12 xak
-rw-r--r--  1 root root   84178 Dec 12 10:12 xal
-rw-r--r--  1 root root   48057 Dec 12 10:12 xam

기본적으로 x로 시작하는 PREFIX가 붙는다.
아무런 옵션을 주지 않으면 1,000 line 단위로 짜른다.

split [OPTION] [INPUT [PREFIX]]

문법은 위와 같으므로 PREFIX 역시 수정할 수 있다.
사용할 수 있는 옵션으로는 다음과 같은 것들이 있다.

-a, --suffix-length=N
             use suffixes of length N (default 2)

split -a3 maillog.4
-rw-r--r--   1 root root  203210 Dec 12 10:19 xaaa
-rw-r--r--   1 root root  203238 Dec 12 10:19 xaab
-rw-r--r--   1 root root  203110 Dec 12 10:19 xaac
-rw-r--r--   1 root root  203240 Dec 12 10:19 xaad
-rw-r--r--   1 root root  203106 Dec 12 10:19 xaae
-rw-r--r--   1 root root  203244 Dec 12 10:19 xaaf
-rw-r--r--   1 root root  203156 Dec 12 10:19 xaag
-rw-r--r--   1 root root  203188 Dec 12 10:19 xaah
-rw-r--r--   1 root root  203218 Dec 12 10:19 xaai
-rw-r--r--   1 root root  203136 Dec 12 10:19 xaaj
-rw-r--r--   1 root root  203238 Dec 12 10:19 xaak
-rw-r--r--   1 root root  203106 Dec 12 10:19 xaal
-rw-r--r--   1 root root  203242 Dec 12 10:19 xaam
-rw-r--r--   1 root root  203138 Dec 12 10:19 xaan
-rw-r--r--   1 root root  203214 Dec 12 10:19 xaao
-rw-r--r--   1 root root  203188 Dec 12 10:19 xaap
-rw-r--r--   1 root root  203164 Dec 12 10:19 xaaq
-rw-r--r--   1 root root  203236 Dec 12 10:19 xaar
-rw-r--r--   1 root root  203136 Dec 12 10:19 xaas
-rw-r--r--   1 root root  203238 Dec 12 10:19 xaat
-rw-r--r--   1 root root   32432 Dec 12 10:19 xaau

-a 옵션을 주면 뒤에 자동으로 붙는 suffix의 길이를 조정할 수 있다.

-b, --bytes=SIZE
             put SIZE bytes per output file

-C, --line-bytes=SIZE
             put at most SIZE bytes of lines per output file

-d, --numeric-suffixes
             use numeric suffixes instead of alphabetic

-l, --lines=NUMBER
             put NUMBER lines per output file

-b 옵션은 파일 사이즈로 파일을 나눌 수 있다.
-C 옵션은 옵션에 주어진 사이즈 내에서 해당 라인수를 찾아 자른다. 말로 설명하기 어려우니 다음 예제를 보자.

split -C1000 maillog.4
split: Output file suffixes exhausted
ll -h | grep xaa 
-rw-r--r--   1 root root  987 Dec 12 10:30 xaa

Output file suffixes exhausted란 에러는 더이상 suffix를 붙여서 만들 수 있는 파일명이 없을 때 나타난다.
어째든 이렇게 하면 1000byte보다 작은 가장 마지막 라인에서 잘린다.
그렇다면 만일 한 라인의 byte보다 작게 한다면 어떨까?

split -C100 maillog.4 
split: Output file suffixes exhausted
ll -h | grep xaa
-rw-r--r--   1 root root  100 Dec 12 10:34 xaa

vi xaa
Nov 12 04:02:03 i65496 sendmail[14401]: kABJ22sk014401: from=root, size=460, class=0, nrcpts=1, msgi

딱 100byte에서 끝나는 것을 볼 수 있다.

-d 옵션은 suffix를 숫자로 붙이는 것이고, -l 옵션은 라인수로 자르는 옵션이다.

2. cal

쉽게 이야기 해서 달력을 보여주는 기능이다.
man cal 했더니 글자들이 다 깨져서 cal --help로 옵션을 보고 하나 하나 해 보는 수밖에 없었다.

cal --help
usage: cal [-13smjyV] [[month] year]

month와 year의 사용법은 다 알테고 ^^ 나머지는 아래와 같다.

cal -1
   December 2006
Su Mo Tu We Th Fr Sa
               1  2
3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31


1달을 보여준다. 기본 옵션과 같아서 별 다를께 없다.

cal -13
   November 2006         December 2006         January 2007    
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
         1  2  3  4                  1  2      1  2  3  4  5  6
5  6  7  8  9 10 11   3  4  5  6  7  8  9   7  8  9 10 11 12 13
12 13 14 15 16 17 18  10 11 12 13 14 15 16  14 15 16 17 18 19 20
19 20 21 22 23 24 25  17 18 19 20 21 22 23  21 22 23 24 25 26 27
26 27 28 29 30        24 25 26 27 28 29 30  28 29 30 31         
                     31


앞뒤로 1달씩 총 3달을 보여준다.

cal -s
   December 2006
Su Mo Tu We Th Fr Sa
               1  2
3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31


sunday를 제일 앞으로 놓고 보여준다.

cal -m
   December 2006
Mo Tu We Th Fr Sa Su
            1  2  3
4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31


monday를 가장 앞에 놓고 보여준다.

cal -j
      December 2006
Sun Mon Tue Wed Thu Fri Sat
                   335 336
337 338 339 340 341 342 343
344 345 346 347 348 349 350
351 352 353 354 355 356 357
358 359 360 361 362 363 364
365


1년 중 몇일인지를 보여준다.

cal -y   
                              2006                               

      January               February                 March       
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
1  2  3  4  5  6  7             1  2  3  4             1  2  3  4
8  9 10 11 12 13 14    5  6  7  8  9 10 11    5  6  7  8  9 10 11
15 16 17 18 19 20 21   12 13 14 15 16 17 18   12 13 14 15 16 17 18
22 23 24 25 26 27 28   19 20 21 22 23 24 25   19 20 21 22 23 24 25
29 30 31               26 27 28               26 27 28 29 30 31

       April                   May                   June        
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                  1       1  2  3  4  5  6                1  2  3
2  3  4  5  6  7  8    7  8  9 10 11 12 13    4  5  6  7  8  9 10
9 10 11 12 13 14 15   14 15 16 17 18 19 20   11 12 13 14 15 16 17
16 17 18 19 20 21 22   21 22 23 24 25 26 27   18 19 20 21 22 23 24
23 24 25 26 27 28 29   28 29 30 31            25 26 27 28 29 30
30
       July                  August                September     
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                  1          1  2  3  4  5                   1  2
2  3  4  5  6  7  8    6  7  8  9 10 11 12    3  4  5  6  7  8  9
9 10 11 12 13 14 15   13 14 15 16 17 18 19   10 11 12 13 14 15 16
16 17 18 19 20 21 22   20 21 22 23 24 25 26   17 18 19 20 21 22 23
23 24 25 26 27 28 29   27 28 29 30 31         24 25 26 27 28 29 30
30 31
      October               November               December      
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
1  2  3  4  5  6  7             1  2  3  4                   1  2
8  9 10 11 12 13 14    5  6  7  8  9 10 11    3  4  5  6  7  8  9
15 16 17 18 19 20 21   12 13 14 15 16 17 18   10 11 12 13 14 15 16
22 23 24 25 26 27 28   19 20 21 22 23 24 25   17 18 19 20 21 22 23
29 30 31               26 27 28 29 30         24 25 26 27 28 29 30
                                             31


1년치 달력을 보여준다.

cal -V
cal from util-linux-2.12a


cal의 버젼 정보를 보여준다.

참고 : [포스트]
728x90
반응형