목록Unix (4)
살아가는 이야기
Unix(Linux 동일함)에서는 줄바꿈문자를 하나의 문자 LF(line feed, \n) 하나로 나타내지만 Dos(Windows)에서는 줄바꿈문자를 두 개의 문자 CR(carriage return, \r), LF 두 개로 나타낸다. 그래서 Unix에서 작성한 문서를 메모장에서 보면 아래와 같이 보인다.Vim을 이용하여 이를 Dos 형식으로 바꿀 수 있다. 방법은 Vim으로 해당 파일을 연 다음에 다음 명령어를 이용하면 된다. 그리고 저장하면 바로 Dos 형식으로 바뀐다. :set ff=dosVim을 실행시키는 것이 귀찮다면 다음과 같이 할 수 있다.vim +':set ff=dos' +':wq' 파일이름그러면 아래와 같이 Dos 형식으로 바뀐 것을 메모장에서 확인할 수 있다. 표준의 중요성을 느끼게 되는..
Vim 설정을 일관된 방식으로 유지하는 사람은 별 문제가 없겠지만, 간혹 Unix와 윈도우즈를 넘나들며 파일을 편집해야 하는 사람은 항상 새줄(newline)문자 문제에 봉착한다. 문제의 핵심은 CR LF를 쓰느냐(DOS, 윈도우즈) LF만 쓰느냐(Unix) 하는 문제다. 아무튼 이 문제는 Vim 편집기를 이용하면 매우 쉽게 해결할 수 있다. 핵심은 ff(file format)를 설정하는 일이다. 먼저 Unix 포맷을 DOS 포맷으로 바꾸고 싶다면 다음과 같이 쓰면 된다. :set ff=dos 이제 DOS 포맷을 Unix 포맷으로 바꾸는 명령어도 자연히 알게 되었을 것이다. :set ff=unix 물론 이렇게 변환한 다음에는 파일을 저장해야 한다.
cygwin에 /usr/bin/zip 프로그램이 있다. 이것으로 디렉토리를 압축할 수 있는데, 디렉토리 내용을 모두 압축하는 옵션은 -r 옵션이다. 만약 폴더 MyFolder 전체를 압축하고 싶다면 다음과 같은 명령어를 쓰면 된다. zip -r MyFolder MyFolder 원래 다음과 같이 써야 하지만 zip -r MyFolder.zip MyFolder 첫 번째 인수를 zip 파일로 간주하기 때문에 .zip을 생략해도 된다. 폴더 내의 모든 파일(폴더)를 개별 압축 파일로 압축하고 싶다면 다음과 같이 쓰면 된다. for f in *; do echo $f; zip -r $f $f; done
내가 Unix를 배울 때는 Bourne shell이 기본이었다. 그냥 sh이라고 되어 있던 프로그램이다. 그런데 잠시 후 C shell이 등장해서 모두들 유행처럼 csh로 갈아탔다. 그리고 tcsh과 ksh이 등장했었다. 그런데 요즘 linux를 설치하면 bash가 기본으로 설정된다. csh, tcsh에서는 표준 오류를 파이프로 받으려면 명령어 |& more 이렇게 하면 되었다. 그런데 bash에서는 조금 복잡해졌다. 2번 포트(표준오류)를 1번 포트(표준출력)와 합친 후에 이를 파이프로 받아야 한다. 그래서 다음과 같이 써야 한다. 명령어 2>&1 | more 표준오류만 파이프로 받으려면 꼼수를 써야 한다. 표준출력을 다른 곳으로 보내고 그 결과를 표준오류를 표준출력과 합친 다음에 표준출력을 파이프로 ..