.profile, .bashrc 차이 및 실행순서

.bash_profile, .bashrc 차이

둘의 차이는 실행이 되는 시점이 다르다.

.bash_profile 의 경우, 로그인 되는시점에 실행
.bashrc 의 경우, 이미 로그인한 시점에서 새로운 콘솔창(세션)을 열때 실행.


리눅스의 bash의 .bash_profile, .bashrc 실행순서

OS에서는 /etc/profile, .bash_profile or .profile을 실행하고, 각 파일 내부에서 다른 파일을 실행한다.

실행순서(내부 shell script포함) : /etc/profile -> /etc/profile.d/*.sh -> .bash_profile OR .profile -> .bashrc -> /etc/bashrc

1. /etc/profile

해당파일 안의 shell script
for i in /etc/profile.d/*.sh ; do

    if [ -r "$i" ]; then

        if [ "${-#*i}" != "$-" ]; then

            . "$i"

        else

            . "$i" >/dev/null 2>&1

        fi

    fi

done


2. .bash_profile OR .profile (.bash_profile 이 없으면 .profile을 실행. .bash_profile 이 1순위이고, 우선순위에 따라 1개만 실행된다.)

해당 파일안의 shell script
if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi




[Linux] 권한 변경(chmod)

리눅스는 여러사용자가 들어와 사용하는 멀티유저 시스템이다. 그래서 각 사용자를 보호하기 위한 방법이 필요하다. 이 때문에 리눅스는 퍼미션(권한) 의 기능이 윈도우에 비해서 활성화 되어 있다.(윈도우는 동시에 한명만 작업이 가능하다)

1. 파일정보 보기
리눅스의 권한을 변경하기에 앞서 해당 파일 혹은 디렉토리가 어떤 권한을 가지고 있는지를 알아야 한다.

예시로 위사진의 3번째에
-rwxr-xr-x.  1 root root   8 JUN 27 08:00 file1

  • 파일타입
    - 일반파일, d : 디렉토리, l : 링크파일, c : 문자 특수파일, b : 블록 특수파일
  • 퍼미션정보 : 해당 파일에 어떠한 퍼미션이 부여되어있는 지 표시
  • 링크수 : 해당 파일이 링크된 수! 링크는 윈도우의 "바로가기"와 같습니다. "in [대 파일] [링크파일]" 명령으로 링크파일을 만듭니다.
  • 소유자 : 해당 파일의 소유자이름
  • 소유그룹 : 해당 파일을 소유한 그룹이름! 특별한 변경이 없을 경우 소유자가 속한 그룹이 소유그룹으로 지정됩니다.
  • 용량 : 파일의 용량
  • 생성날짜 : 파일이 생성된 날짜
  • 파일이름 : 파일이름

예시는 보면 순서대로
파일이고, 소유자는 읽기쓰기실행, 소유그룹은 읽기실행, 그외사용자는 읽기실행 권한이 있고, 링크수는 1개, 소유자는 root, 소유그룹은 root, 파일용량은 8, 생성일은 6월27일 8시, 파일명은 file1이 된다.

2. 퍼미션(권한) 보기
예시에서 rwxr-xr-x 이 권한이라고 했는데 보는방법은 3개씩 읽으면 된다.
보면은 9개의 문자가 있는데 왼쪽부터 3개(rwx)는 소유자, 그 다음(-xr)은 소유그룹, 마지막 3개(r-x)는 그외사용자의 권한을 나타낸다.

여기서 문자에 대해 설명하면 아래와 같다.

  • r : 읽기권한
  • w : 쓰기권한
  • x : 실행권한

3. 퍼니션(권한) 변경하기
chmod [변경될 퍼미션값] [변경할 파일]
ex.
1) chmod 755 file1 
2) chmod u+x file1

예제의 1번의 경우 해당파일에 rwxr-xr-x 권한을 주게된다


원하는 퍼미션 값을 주기위해서는 두가지 방법이 있다.

8진법 표현

8진법 

2진법 

파일모드 

000 

--- 

001 

--x 

010 

-w- 

011 

-wx 

100 

r-- 

101 

r-x 

110 

rw- 

111 

rwx 

chmod 600 file1 을 사용하여 8진법 퍼미션 값 600rw------- 으로 변경된것을 확인할 수 있다. 이것은 소유자에만 읽기쓰기 권한을 주는것으로 변경한거입니다.
 (그 외에 755rwxr-xr-x 로 변경되는데 이것은 소유자는 읽기쓰기실행, 소유그룹은 읽기실행, 그외 사용자는 읽기실행 권한을 주는것으로 변경한다)


기호표현

기호 

의미 

user의 약자로, 파일이나 디렉토리 소유자를 의미한다. 

group의 약자로, 그룹 소유자를 의미한다.

other의 약자로, 기타 기용자를 의미한다. 

all의 약자로 u, g, o 의 조합니다.

chmod u+x file1을 사용하여 소유자에게 실행권한이 추가된것을 확인할 수 있다.






[Linux] 커맨드라인 조작 방법

리눅스는 타이핑을 통해서 조작을 하는게 주로 이룬다.
그래서 키보드를 더 빠르고 효율적이게 사용할 수 있도록 하는 방법을 알면 좋다

커서 이동

키 

실행 

 CTRL+A 

줄 맨 앞으로 커서 이동 

 CTRL+E 

줄 맨 끝으로 커서 이동 

 CTRL+F  

다음 한 글자로 커서 이동(오른쪽 화살표 키와 동일) 

 CTRL+B  

이번 한 글자로 커서 이동(왼쪽 화살표 키와 동일)

 ALT+F  

다음 한 단어로 커서 이동 

 ALT+B  

이전 한 단어로 커서 이동 

 CTRL+L  

화면을 지우고 커서를 왼쪽 최상단으로 이동. clear와 동일하다 


텍스트 수정

키 

실행 

 CTRL+D 

현재 커서 위치에 있을 글자 지우기 

 CTRL+T

현재 커서 위치에 있는 글자와 바로 앞 글자의 위치 바꾸기

 ALT+T

현재 커서 위치에 있는 단어와 바로 앞 단어의 위치 바꾸기 

 ALT+L

현재 커서 위치에 있는 글자부터 그 단어 끝 부분까지 소문자로 바꾸기 

 ALT+U

현재 커서 위치에 있는 글자부터 그 단어 끝부분까지 대문자로 바꾸기 

 CTRL+K

현재 커서 위치로부터 그 줄 끝 부분까지 텍스트 지우기

 CTRL+U

현재 커서 위치로부터 그 줄 처음부분까지 텍스트 지우기 

 ALT+D

현재 커서 위치에서부터 그 단어 끝 부분까지 텍스트 지우기

 ALT+BACKSPACE

현재 커서 위치에서부터 그 단어 앞으분까지 텍스트 지우기. 


[Linux] 명령어(별칭) 만들기(alias)

리눅스에서는 alias명령어를 사용하여 나만의 명령어(별칭) 를 만들 수 있다. 자주 사용하는 긴 명령어를 다른이름으로 간단히 줄여서 사용할 수 있다.

현재 접속한 세션에서 명령어(별칭) 설정 및 해제 하는법. 세션을 종료하거나 시스템을 재부팅할 경우에 alias 설정한게 사라진다.

명령어(별칭) 설정
alias 별칭='명령어정의'
ex. alias morelog='more /home/logs/log'

명령어(별칭) 해제
unalias 별칭
ex. unalias morelog


alias 설정을 게속 유지하고 싶다면, 두가지방법이 있다.
첫번쨰는 ~/.bashrc 파일에 위의 설정을 추가하고 저장한다. 이 방법은 현재 접속한 사용자에 한해서 alias설정이 적용된다.
두번째는 /etc/profile 파일에 위의 설정을 추가하고 저장한다. 이 방법은 모든 사용자에게 alias 설정이 적용된다.

예제
vi ~/.bashrc or vi /etc/profile 를 사용하여 파일을 열어 alias 를 정의한다. 정의한 후 바로 적용을 하기위해서는 source ~/.bashrc 를 사용하면 된다.


alias 명령어를 사용하면 설정된 별칭들의 리스트를 볼 수 있다.










[Linux] 하드링크와 심볼릭링크(ln)

하드링크와 심볼릭링크(ln)

하드링크와 심볼릭링크는 링크를 만들때 사용한다.

하드링크 예제
ex. ln file link
ln 원본파일명 하드링크파일명


심볼릭링크 예제
ex. ln -s file link
ln -s 원본파일명 하드링크파일명


링크에대해서 알기위해 'innode' 라는 리눅스의 파일시스템에서 사용하는 자료구조를 알 필요가 있다.
모든 파일과 디렉터리는 한개씩 inode를 가지고 있으며 여기에는 해당 파일의 허가권, 소유권, 파일의 실제 위치 등 중요한 정보들이 들어있다. inode가 모여 있는 공간을 inode block 이라고 한다. inode block이 차지하는 공간은 매우 작으며, 실제 데이터가 저장되는 block이 디스크의 대부분을 차지한다. inode는 데이터의 우편번호 역할을 한다고 볼 수 있다.

하드링크란?
월래 파일의 데이터에 대한 또 다른 접근경로이다. 하드링크는 원본파일의 innode를 직접적으로 가리키게 되는데 그래서 원본파일이 삭제 되더라도 데이터를 남아있게된다. 
즉,
하드링크 -> 파일시스템 데이터 <- 원본파일 와 같이 하드링크는 파일시스템 데이터를 가리킨다

심볼릭링크란?
윈도우의 바로가기 아이콘과 매우 흡사하다. 심볼릭링크는 원본 파일이 삭제될경우 링크대상이 사라져서 사용할 수 없게된다. 이를 링크가 깨졌다라고 표현한다.
즉,
심볼릭링크 -> 원본파일 -> 파일시스템 데이터 와 같이 심볼릭링크는 원본파일을 가리킨다.

하드링크와 심볼릭링크의 차이
하드링크에는 2가지 제약조건이 있다.
1. 파일시스템 외부에 있는 파일을 참조 할 수 없다. 즉 하드링크는 같은 디스크 파티션에 있는 파일이 아니면 참조할 수 없다.
2. 디렉토리는 링크 할 수 없다.
위의 조건이 있을경우 하드링크가 아닌 심볼릭링크를 사용해야한다.

[Linux] 파일 및 디렉토리 삭제(rm)

리눅스에서 파일 및 디렉토리 삭제하는방법

표현식 : rm 파일(또는 디렉토리)

ex. rm file1
file1을 완전 삭제한다.

리눅스처럼 유닉스형 운영체제는 삭제를 취소할 수 있는 명령어가 없다. 그러므로 신중하게 명령어를 작성하고 수행해야한다.
특히 와일드카드(*) 를 함께 사용할때 주의를 해야 한다.
ex. rm *.html

rm 옵션

옵션 

설명 

-i, --interactive 

파일을 삭제하기 전 확인메세지를 주는 옵션. 

-r, --recursive 

재귀적으로 디렉토리를 삭제하는 옵션. 즉 디렉토리 하위의 디렉토리가 있다해도 삭제된다.(삭제시 경고 메세지가 나온다) 

-f, --force 

확인메시지 없이 파일을 삭재하는 옵션 

-v, --verbose 

삭제 완료메세지를 보여주는 옵션 


rm 예제

사용 예제 

결과 

rm file1 

file1파일을 삭제한다. 

rm -i file1 

file1파일을 삭제하기 전에 확인메세지를 보여준다 

rm -r file1 dir1 

file1파일과 dir1 디렉토리 및 하위 내용을 삭제한다. 이 경우 dir 하위에 파일 혹은 디렉토리가 있을경우 확인메세지를 보여준다.

rm -rf file1 dir1 

file1파일과 dir1 모두 삭제하되 file1이나 dir1이 존재하지 않더라도 rm 명령어가 실행된다. 즉 dir1하위에 파일 혹은 디렉토리가 있을떄 확인메세지 없이 모두 삭제된다.


1. rm file1

2. rm -i file1

3. rm -r file1 dir1

4. rm -rf file1 dir1





[Linux] 파일 이동과 이름변경(mv)

리눅스에서 파일 이동과 이름변경 하는법

표현식 : mv 이동할파일(또는 디렉토리) 이동위치(또는 이름)

ex. mv item1 item2
item1 파일 또는 디렉토리를 item2로 이동하거나 이름을 바꾼다.


mv 옵션

 옵션

설명 

-i, --interactive 

기존에 파일을 덮어쓰기 전에 확인 메세지를 보여주는 옵션. 이 옵션이 없다면 확인과정 없이 덮어씌우게 된다 

-u, --update 

파일을 이동할때, 그 디렉토리에는 없거나 또는 최신버젼인 파일만을 이동하기 위한 옵션. 

-v, --verbose 

이동 완료 메세지를 보여주는 옵션. 


mv 예제

사용 예제 

결과 

mv file1 file2 

file1 파일을 file2로 이동한다. file2가 이미 있다면 file1의 내용을 덮어씌우게 된다. file2가 없다면 새로 생성된다. 

mv -i file1 file2 

file2가 이미 있다면 덮어씌우기 여부를 확인한다. 

mv file1 file2 dir1

file1과 file2를 dir1 디렉토리로 이동한다. 

mv dir1 dir2 

dir1과 그 하위내용까지 모두 dir2로 이동한다. dir2가 없다면 새로 생성되고 dir1은 삭제된다. 


'OS > linux' 카테고리의 다른 글

[Linux] 하드링크와 심볼릭링크(ln)  (0) 2017.06.29
[Linux] 파일 및 디렉토리 삭제(rm)  (0) 2017.06.28
[Linux] 파일 및 디렉토리 복사(cp)  (0) 2017.06.26
[Linux] 시스템 디렉토리  (0) 2017.06.25
[Linux] 쉘(shell)이란?  (0) 2017.06.25

[Linux] 파일 및 디렉토리 복사(cp)

리눅스에서 파일 및 복사 하는방법(cp)

표현식 : cp 복사할파일명 복사된파일명

ex. cp file1 file2 
file1을 file2로 복사한다. file2라는 파일이 이미 있다면 file1 내용을 덮어쓰게된다. 없다면 새로 생성된다.


cp 옵션

옵션 

설명 

-a, --archive 

파일 및 디렉토리뿐만 아니라 소유자 및 권한 정보와 같은 속성까지 모두 복사한다. 반면 일반적으로는 복사를 하는 사용자의 기본적인 속성을 복사한다. 

-i, --interactive 

기존 파일을 덮어쓰기 전에 확인 메세지를 보여주는 옵션. 이 옵션이 없으면 확인과정 없이 그대로 파일을 덮어쓰게된다. 

-r, --recursive 

디렉토리와 그 하위의 내용까지 복사할 때 쓰는 옵션. 디렉토리를 복사할때 사용한다. 

-u, --update 

어떤 디렉토리에 복사할때 그 디렉토리에 없거나 최신버전인 파일만을 복사하기위해 사용 

-v, --verbose 

복사 완료 메세지를 보여주는 옵션. 


cp 사용예제

예제 

결과 

cp -i file1 file2

file2가 존재할 경우 확인메세지를 볼 수 있다.

cp file1 file2 dir1 

file1과 file2를 dir1이라고 하는 디렉토리로 복사한다. 단 dir1은 존재해야 한다. 

cp dir1/* dir2 

dir1 디렉토리에 있는 모든파일을 dir2 디렉토리로 복사한다. 

cp -r dir1 dir2 

dir1 디렉토리와 그안에 있는 모든 내용을 dir2 디렉토리로 복사한다. dir2가 없으면 새로 생성될것이고, dir1 디렉토리에 있는 모든내용을 복사한다. 





'OS > linux' 카테고리의 다른 글

[Linux] 파일 및 디렉토리 삭제(rm)  (0) 2017.06.28
[Linux] 파일 이동과 이름변경(mv)  (0) 2017.06.27
[Linux] 시스템 디렉토리  (0) 2017.06.25
[Linux] 쉘(shell)이란?  (0) 2017.06.25
리눅스(centos) 에 SVN(subversion) 설치  (1) 2016.06.20

[Linux] 시스템 디렉토리

리눅스의 시스템 디렉토리에 대해서 알아보겠습니다.

테스트환경 : centos7 (vmware)


 디렉토리

설명 

 루트 디렉토리. 파일시스템 시작점

/bin 

시스템 부팅과 실행에 필요한 바이너리(프로그램) 들을 포함하고 있다. 

/boot 

리눅스 커널. 시작 RAM 디스크 이미지(시스템 부팅 시 필요한 드라이버가 있음) 와 부트로더를 포함하고 있다. 

/dev 

디바이스 노드를 갖고 있는 특수 디렉토리. 커널이 인식하고 있는 모든 디바이스들을 관리한다. 

/etc

시스템 전반의 환경설정 디렉토리. 그리고 시스템 부팅  시에 시스템의 각 서비스를 시작하는 쉘 스크립트가 있다. 또한 모든 파일은 텍스트 형식이다.

  • /etc/crontab :  자동 실행되는 업무(job)를 정의하는 파일
  • /etc/fstab : 저장장치 테이블과 해당 마운트 포인트 정보
  • /etc/passwd : 사용자 계정 정보

/home

일반적인 설정상태에서 각 사용자마다 /home 디렉토리를 갖는다. 일반적 유저들은 home 디렉토리 내에서만 파일을 편집할 수 있다.
잘못된 조각으로부터 시스템을 보호하기 위한 조치이다.

/lib

주요 시스템프로그램에서 사용하는 공유 라이브러리 디렉토리. 원도우의 DLL과 비슷하다 

/lost+found 

포맷된 각 파티션이나 ext3처럼 리눅스 파일시스템에서 사용하는 디바이스라면 이 디렉토리가 있을것이다. 파일시스템에 문제가 생겼을때 부분적인 복구를 도와주는 디렉토리.

/media 

휴대용 디바이스(USB, CO-ROM 등)가 마운트되는 마운트 포인트 디렉토리  

/mnt 

휴대용 디바이스를 제거하기 위한 마운트 포인트 디렉토리.

/opt

추가적인 소프트웨어 설치 디렉토리. 주로 상업용 소프트웨어가 설치된다. 

/proc 

리눅스 커널이 관리하는 가상 파일시스템 디렉토리. 이곳에 저장된 것들은 커널 자체를 들여다 볼 수 있는 파일이다. 이 파일들은 텍스트 형식이고 커널이 컴퓨터는 어떻게 관리하고 있는지에 대한 단면을 보여준다. 

/root 

루트 계정의 홈 디렉토리 

/sbin 

시스템 바이너리 디렉토리. 이 파일들은 일반적으로 슈퍼유저를 위한 중요한 시스템 작업을 수행하는 프로그램들이 있다. 

/tmp 

임시 저장용 디렉토리. 프로그램들에 의해서 만들어지는 임시 파일들을 저장하는 공간이다. 

/usr 

일반사용자가 사용하는 디렉토리. 사용자가 사용하는 모든 프로그램과 지원 파일들이 모두 들어 있다.

/var

상대적으로 변하기 쉬운 데이터를 모아두는 디렉토리. 다양한 데이터베이스, 스풀 파일, 사용자 메일 등과 같은 데이터가 저장된다. 

/var/log 

시스템 활동을 기록하는 디렉토리. 매시간마다 시스템 상황을 확인하는 매우 중요한 기록파일이 있다. 

 

 

 

 

 

 

 

 

 

 

 

 


[Linux] 쉘(shell)이란?

쉘(shell)이란?

키보드로 입력한 명령어를 운영체제에 전달하여 이 명령어를 실행하게 하는 프로그램.


대부분의 리눅스 배포판은 bash라고 하는 GNU프로젝트의 쉘 프로그램을 제공한다.
'bash' 라는 이름은 Bourne Again Shell 의 약어로 '스티브 본'이 개발한 최초 유닉스 쉘프로그램인 sh의 확장판이라는 의미를 담고있다.

이건 쉘 프롬프트라고 부르고 쉘이 입력 가능한 상태일 때에만 나타난다.
이미지의 '#'의 의마는 권한을 나타내며 '슈퍼관리자' 일때 '#' 이고, 그 이외의 사용자에게는 '$' 이 나올것이다.