본문 바로가기
컴퓨터/리눅스

리눅스 몇 가지 기초 명령어들

by adnoctum 2010. 8. 21.

내가 이 곳에 리눅스에 관한 명령어들을 설명하면서 직접적으로 설명하지 않고 넘어 갔던 몇 가지를 설명한다.


   리눅스의 디렉토리 구조는 윈도우즈와 달라서 C, D,  이런 식으로 되어 있지 않고, / 를 최상위 경로로 하여 그 밑에 여러 경로들이 위치한다. /home 에 각각의 사용자에 대한 기본 홈 경로가 들어 가게 되고, /var 이나 /opt에 프로그램 옵션이나 웹서버의 경로 등이 들어 가는 등 각각의 경로와 그 경로에 무엇이 들어 있는가는 어느 정도 관례를 따른다.

   리눅스에서 현재 경로는 . (점 하나) 로 표시되며, 현재 경로보다 바로 한 단계 상위 경로는 .. (점 두개)로 표시된다. 현재 내가 어느 경로에 있는지를 알아 보는 print working directory인 pwd 명령어로 내가 현재 위치한 전체 경로를 출력할 수 있다.



내가 어느 위치에 있던지, ~ 는 항상 자신의 홈 디렉토리를 의미하게 된다. 따라서 change directory 인 cd 명령어로

cd ~/study

를 하면 /home/[user]/study 로 이동을 하게 된다. 이 때 사용자의 ID가 [user]이다. 물론 각 사용자의 홈 디렉토리는 얼마든지 변경할 수 있으며 기본값(default값)이 /home/[user] 인 것이다. 물론 cd 명령어는 아무런 값을 입력으로 넣지 않고 cd 만 하면 사용자 홈 디렉토리로 이동한다.

   파일들 중 . 으로 시작하는 파일들은 기본적으로 숨김속성이 있는 것으로 간주, ls 를 하였을 때 출력되지 않는다. 이런 파일들은 ls 의 옵션 중 -a 를 이용하면 출력할 수 있다. 많은 설정 파일들이 . 으로 시작하게 되는데, 대표적으로는 사용자의 프로파일을 들 수 있다. 주로 ~/.bash_profile 에 저장이 된다. 즉, 사용자의 홈경로에 있는 .bash_profile 이라는 파일. 리눅스에서 무슨무슨 설정이 있는 무슨 파일을 어떻게 수정하라고 되어 있어서 그 파일을 찾아 보았더니 없다면, 그냥 그 파일을 새로 만들면 된다. >.<"" vi 의 설정 파일은 .vimrc 같은 경우 처음 설치하였을 때 없을 수도 있는데, 그냥 메모장이나 vi, emacs 로 그 파일을 만들면 된다. 내 경우 .bash_profile 과 .vimrc 의 설정을 보면 다음과 같다.


~/.bash_profile


~/.vimrc 파일


별로 특별한 것은 없다. 주로 개인적으로 좋아하는 몇 가지 설정을 하였을 뿐. 만약 현재 세션에서 ~/.bash_profile 을 변경하였고, 그것을 즉각 적용하고 싶을 때는 source ~/.bash_profile 을 해주면 된다.

   리눅스에서 c++과 같은 언어로 실행 파일을 만들었을 때, 그 파일이 현재 경로에 있을 때 그것을 실행시키기 위해서는 ./파일_이름 과 같은 형식으로 실행시켜야 한다. 왜냐 하면 그냥 [파일 이름] 하면 그것을 PATH라는 환경변수에 설정되어 있는 경로들에서만 찾기 때문이다. 윈도우즈의 [시스템 등록정보]-[고급]-[환경변수]에 있는 Path와 같은 것이다. 따라서 그 파일이 현재 경로에 있다는 것을 알려 주기 위하여 반드시 . 을 앞에 붙여서 현재 경로라는 것을 명시적으로 말해 주어야 한다.

   리눅스의 파일은 실행 파일이 따로 정해져 있다기 보다는 chmod 를 이용하여 파일 각각에 실행 속성을 줄 수 있다. 그렇게 되면 실행 속성을 갖게 된 파일을 비록 윈도우즈의 exe 와 같은 성격의 파일이 아니라 할지라도 적절한 옵션에 따라 실행이 된다. 예를 들면 파이썬 같은 경우 많은 파일이 #!/usr/bin/python 으로 시작을 하는데, 이것은 저 실행 파일을 이용하여 이 파일을 실행시키라는 의미이다. 즉, 만약 abc.py 라는 파일이 실행속성이 없었다면 python abc.py 라고 해야겠지만 실행속성을 갖고 있다면 그냥 ./abc.py 라고 하면 되는 것이다.


chmod 는 change mode of file, 정도로 생각할 수 있겠는데, 파일 각각의 속성을 변경할 때 사용한다. 그 형식은

chmod option [파일_이름]

과 같고, 위에서 option 은 여러 방식이 있는데, 여기선 내 방식을 설명한다. 숫자로만 되어 있어서 좀 혼동될 수 있당...>.< option 은 3글자의 숫자 코드로 되어 있는데,

chmod 660 test.txt

과 같은 형식이다. 위에서 660 을 ABC 로 놓으면,

chmod ABC file_name

에서

A는 파일 소유자가 파일에 취할 수 있는 작업,
B는 파일의 소유권을 갖고 있는 '그룹'이 파일에 취할 수 있는 작업,
C는 모든 사람이 파일에 취할 수 있는 작업

을 의미한다. 이 때, 취할 수 있는 작업의 종류로는, 쓰기, 읽기, 실행 이 있다. 주로 rwx 로 표시가 되는데,

r 은  읽기를 의미하며 숫자 코드는 4,
w 는 쓰기를 의미하며 숫자 코드는 2,
x 는 실행을 의미하며 숫자 코드는 1,

이다. 따라서,

-rw-rw---- adnoctum adnoctum t.txt

로 되어 있는 것의 option 은 660 일 것이다. 왜냐 하면 다음과 같기 때문이다.


에서,

파일 소유자는 rw- 이므로 4 + 2 + 0 = 6,
파일 소유 그룹은 rw- 이므로 4 + 2 + 0 = 6,
모든 사람은 --- 이므로 0 + 0 + 0 = 0,


이기 때문이다. 그래서 777 은 모든 권한을 모두에게 주는 것이 된다. 주로 +a, 또는 +x 등의 알파벳 코드를 사용하는데, 난 어쩐지 위처럼 하는 것이 편해서...

파일 시스템 전체에서 파일을 찾고 싶을 때는 locate 명령어를 이용한다. 색인을 이용하기 때문에 매우 빠르게 찾을 수 있다. 윈도우즈의 찾기랑은 차원이 다르다는. 색인을 강제로 다시 하고 싶을 때는 updatedb 명령어를 사용하는데, 아마도 root 권한이 있어야 할 것이다. 즉,

updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'


비록 에러 메세지는 위와 같지만 open 할 수 없었던 이유가 저 파일을 읽을 권한이 없었던 것이고, 그것은 곧 root 한테 권한이 주어져 있기 때문이므로 root 권한이 있어야 updatedb 를 할 수 있는 것.

terminal의 경우, 현재 session 에서 입력했었던 명령어들은 history 명령어로 다시 볼 수 있다. 그러면 다음과 같이 가장 앞에 숫자가 나오는데, 그 숫자에 해당하는 명령어를 다시 사용하고자 한다면 ! 뒤에 그 번호를 써 주면 된다.

1994  mv temp.txt ./Responsiveness/Cancer/CRC/scatter_heat_plot/responsive_diff.txt
1995  ls
1996  clear
1997  history
[adnoctum@bioism BreastCancer]$ !1995
ls
...(내가 생략)