728x90

이 글은 양주종의 코딩스쿨 리눅스(Linux) 기초 강좌 30강 모음 수강하며 정리한 글입니다.

 

27강 bash - 2

 

(일반 사용자 id: j, pw: j)

(관리자 id: root, pw: r)

 

 

 로그인 시, Booting 과정

1. 파일 읽어오기 및 내용 적용

/etc/profile

/etc/profile.d/*.sh

 

 

2. 홈 dir 내 파일 읽어오기 및 내용 적용

~/.bash_profile (각 사용자의 master file)

[j@hj0216 ~]$ nl .bash_profile
     1  # .bash_profile

     2  # Get the aliases and functions
     3  if [ -f ~/.bashrc ]; then
     4          . ~/.bashrc
     5  fi

     6  # User specific environment and startup programs

     7  PATH=$PATH:$HOME/.local/bin:$HOME/bin

     8  export PATH

#: 주석

if [ -f ~/.bashrc ]; then: ~/.bashrc home dir에 .bashrc file이 존재한다면,

        . ~/.bashrc: .bashrc file을 읽어 올 것

PATH=$PATH:$HOME/.local/bin:$HOME/bin: PATH 변수에 $PATH, 원래 PATH가 갖고 있는 값을 넣고 $HOME/.local/bin, $HOME/bin 추가

export PATH: 지역변수를 전역변수화 시킴

[j@hj0216 ~]$ echo $AGE
30
[j@hj0216 ~]$ bash
# 새로운 shell 실행
[j@hj0216 ~]$ echo $AGE

# bashrc에서 설정한 AGE변수는 지역변수이므로 해당 shell이 아닌 다른 shell에서는 적용되지 않음

[j@hj0216 ~]$ exit
[j@hj0216 ~]$ export AGE
# 변수를 export하므로써 지역변수->전역변수
[j@hj0216 ~]$ bash
[j@hj0216 ~]$ echo $AGE
30

.bashrc 파일 수정 시, 해당 session에는 반영이 되어있지 않으므로 수정 후 . ~/.bashrc_profile 수정 파일 재실행

 

 

~/.bashrc (각 사용자의 보조 file)

[j@hj0216 ~]$ nl .bashrc
     1  # .bashrc

     2  # Source global definitions
     3  if [ -f /etc/bashrc ]; then
     4          . /etc/bashrc
     5  fi

     6  # Uncomment the following line if you don't like systemctl's auto-paging feature:
     7  # export SYSTEMD_PAGER=

     8  # User specific aliases and functions

 if [ -f /etc/bashrc ]; then : etc dir 밑에 bashrc 파일이 존재할 경우,
          . /etc/bashrc: etc dir 밑에 bashrc 파일 실행

 alias and functions를 .bashrc에 저장하여 session 변경 시에도 사용할 수 있도록 할 수 있음

 

 

/etc/bashrc (모든 사용자들에게 적용되는 bashrc 파일, $PS1* 설정)

[j@hj0216 ~]$ cat /etc/bashrc
# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

...

Prompt란 컴퓨터가 입력을 받아들일 준비가 되어서 기다리고 있다는 것을 알려주는 메세지로 Linux창에서 $(일반유저), #(관리자)을 의미

윈도우 CMD에서는 Prompt가 1개뿐이지만, Linux에서는 PS(Prompt String)1, PS2, 총 2개가 존재

PS1에서 주로 작업을 하게되며, PS1에서 명령어를 불완전하게 입력할 경우, '>' 표시의 단순한 prompt로 변화하게 되는데, 이 때 이 prompt를 PS2라고 함

 

 

~/.bash_history (로그아웃 전 작업 내용 저장)

[j@hj0216 ~]$ nl .bash_history
     1  who am i
     2  whoami
     3  exit

 

 

~.bash_logout (로그아웃 시 필요한 작업 내용 저장)

[j@hj0216 ~]$ nl .bash_logout
     1  # ~/.bash_logout

 

 

참고 자료

📑 [리눅스] 셸 환경변수, 프롬프트(Prompt)란, PS1과 PS2 차이점, 관련 문제

 

728x90
728x90

이 글은 양주종의 코딩스쿨 리눅스(Linux) 기초 강좌 30강 모음 수강하며 정리한 글입니다.

 

26강 bash - 1

 

(일반 사용자 id: j, pw: j)

(관리자 id: root, pw: r)

 

 

환경변수 목록 조회

[j@hj0216 ~/dd]$ env
HOSTNAME=hj0216.linux.kr
HISTSIZE=1000
SSH_CLIENT=10.0.2.2 55897 22
USER=j
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/j/.local/bin:/home/j/bin
PWD=/home/j/dd
LANG=ko_KR.UTF-8
HOME=/home/j
LOGNAME=j

 

변수값 조회

[j@hj0216 ~/dd]$ echo $HOSTNAME
hj0216.linux.kr
[j@hj0216 ~/dd]$ hostname
hj0216.linux.kr

 

현재 사용중인 shell 조회

[j@hj0216 ~/dd]$ echo $SHELL
/bin/bash

shell list 조회

[j@hj0216 ~/dd]$ chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

sh: Bourne shell

bash: Bourne again Shell (Linux가 기본적으로 사용하는 Shell)

 

User Home dir 내 모든 file list 조회

[j@hj0216 ~]$ ls -al
합계 20
drwx------. 2 j    j     99  2월  4 08:24 .
drwxr-xr-x. 3 root root  15  1월 15 19:13 ..
-rw-------. 1 j    j    416  2월  4 02:40 .bash_history
-rw-r--r--. 1 j    j     18 10월 31  2018 .bash_logout
-rw-r--r--. 1 j    j    193 10월 31  2018 .bash_profile
-rw-r--r--. 1 j    j    231 10월 31  2018 .bashrc
-rw-------. 1 j    j    905  2월  4 06:37 .viminfo

 

 로그인 시, Booting 과정

1. 파일 읽어오기 및 내용 적용

/etc/profile

/etc/profile.d/*.sh

2. 홈 dir 내 파일 읽어오기 및 내용 적용

~/.bash_profile (각 사용자의 master file)

[j@hj0216 ~]$ nl .bash_profile
     1  # .bash_profile

     2  # Get the aliases and functions
     3  if [ -f ~/.bashrc ]; then
     4          . ~/.bashrc
     5  fi

     6  # User specific environment and startup programs

     7  PATH=$PATH:$HOME/.local/bin:$HOME/bin

     8  export PATH

~/.bashrc (각 사용자의 보조 file)

[j@hj0216 ~]$ nl .bashrc
     1  # .bashrc

     2  # Source global definitions
     3  if [ -f /etc/bashrc ]; then
     4          . /etc/bashrc
     5  fi

     6  # Uncomment the following line if you don't like systemctl's auto-paging feature:
     7  # export SYSTEMD_PAGER=

     8  # User specific aliases and functions

~/.bash_history (로그아웃 전 작업 내용 저장)

[j@hj0216 ~]$ nl .bash_history
     1  who am i
     2  whoami
     3  exit

~.bash_logout (로그아웃 시 필요한 작업 내용 저장)

[j@hj0216 ~]$ nl .bash_logout
     1  # ~/.bash_logout

 

728x90
728x90

이 글은 양주종의 코딩스쿨 리눅스(Linux) 기초 강좌 30강 모음 수강하며 정리한 글입니다.

 

25강 명령어 역사(history)

 

(일반 사용자 id: j, pw: j)

(관리자 id: root, pw: r)

 

 

↑: ctrl p, 이전 입력 명령어 호출

↓: ctrl n, 다음 입력 명령어 호출

 

명령어 목록 조회

[j@hj0216 ~/dd]$ history
    1  who am i
    2  whoami
    3  exit
    4  who
    5  whoami
[j@hj0216 ~/dd]$ history 3
  170  c
  171  gcc k.c -o k
  172  history 3

history 3: 최근 입력된 명령어 3개 조회

 

명령어 history 번호를 통한 명령어 실행

[j@hj0216 ~/dd]$ !1
who am i
j        pts/0        2023-02-03 22:51 (gateway)

 

이전 명령어 재실행

[j@hj0216 ~/dd]$ !!
who am i
j        pts/0        2023-02-03 22:51 (gateway)

 

특정 문자로 시작하는 명령어 중 가장 최근 실행한 명령어

[j@hj0216 ~/dd]$ !g
gcc k.c -o k

 

history 명령어 최대 저장 사이즈 조회

[j@hj0216 ~/dd]$ echo $HISTSIZE
1000

 

history에서 명령어 및 입력시간 조회

[j@hj0216 ~/dd]$ HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
[j@hj0216 ~/dd]$ history
    1  2023-02-03 22:51:08 who am i
    2  2023-02-03 22:51:08 whoami
    3  2023-02-03 22:51:08 exit

 

history 목록 초기화

[j@hj0216 ~/dd]$ history
    1  2023-02-04 08:02:55 history

 

728x90
728x90

이 글은 양주종의 코딩스쿨 리눅스(Linux) 기초 강좌 30강 모음 수강하며 정리한 글입니다.

 

24강 명령어 별칭(alias)

 

(일반 사용자 id: j, pw: j)

(관리자 id: root, pw: r)

 

 

1. alias 지정

[j@hj0216 ~/dd]$ alias c='clear'
[j@hj0216 ~/dd]$ alias h='history'

 

2. alias 목록 조회

[j@hj0216 ~/dd]$ alias
alias c='clear'
alias h='history'

 

3. alias 삭제

[j@hj0216 ~/dd]$ unalias c
[j@hj0216 ~/dd]$ c
-bash: c: command not found

 

4. alias 미 적용

[j@hj0216 ~/dd]$ alias
alias ls='ls --color=auto'

ls command 입력 시, alias에 따라 --color=auto 적용

 

alias 적용 제외 시, 파일 형식에 따른 색 변환 X

[j@hj0216 ~/dd]$ \ls /etc

 

⚠️ 단, 이렇게 설정한 alias는 터미널 종료 시, 초기화 됨

 

728x90
728x90

이 글은 양주종의 코딩스쿨 리눅스(Linux) 기초 강좌 30강 모음 수강하며 정리한 글입니다.

 

23강 하드 링크 심볼릭 링크

 

(일반 사용자 id: j, pw: j)

(관리자 id: root, pw: r)

 

 

1. C언어 파일 생성 및 컴파일

[j@hj0216 ~/dd]$ vi k.c
#include <stdio.h>
int main(void)
{
        puts("Linux Study\n");
        return 0;
}

[j@hj0216 ~/dd]$ gcc k.c -o k

 

2. ll -i: dir list 조회

[j@hj0216 ~/dd]$ ll -i
합계 16
12991323 -rwxrwxr-x. 1 j j 8440  2월  4 06:33 k
12991324 -rw-rw-r--. 1 j j   74  2월  4 06:33 k.c

-i: index number, i-node* 조회

* uid: user id, 컴퓨터가 사용자를 관리할 때 붙이는 번호

* gid: group id, 컴퓨터가 그룹을 관리할 때 붙이는 번호

* i-node: index number 컴퓨터가 파일을 관리할 때 붙이는 번호

 

3. cp k ck: k파일을 ck파일로 복사

[j@hj0216 ~/dd]$ ll -i
합계 28
12989497 -rwxrwxr-x. 1 j j 8440  2월  4 06:40 ck
12991323 -rwxrwxr-x. 1 j j 8440  2월  4 06:33 k
12991324 -rw-rw-r--. 1 j j   74  2월  4 06:33 k.c

k파일 복사 시, i-node 새로 생성

 

4. ln k lk: k파일에 대한 link 파일 생성

[j@hj0216 ~/dd]$ ln k lk
[j@hj0216 ~/dd]$ ll -i
합계 40
12989497 -rwxrwxr-x. 1 j j 8440  2월  4 06:40 ck
12991323 -rwxrwxr-x. 2 j j 8440  2월  4 06:33 k
12991324 -rw-rw-r--. 1 j j   74  2월  4 06:33 k.c
12991323 -rwxrwxr-x. 2 j j 8440  2월  4 06:33 lk

i-node 동일, hard link수 증가

-> 육안상 파일은 2개이지만, 물리적으로는 파일이 1개

= 파일 1개의 여러개의 이름(Hard Link) 부여

 

5. ln -s k sk: k파일에 대한 symbolic link 파일 생성

[j@hj0216 ~/dd]$ ln -s k sk
[j@hj0216 ~/dd]$ ll -i
합계 40
12989497 -rwxrwxr-x. 1 j j 8440  2월  4 06:40 ck
12991323 -rwxrwxr-x. 2 j j 8440  2월  4 06:33 k
12991324 -rw-rw-r--. 1 j j   74  2월  4 06:33 k.c
12991323 -rwxrwxr-x. 2 j j 8440  2월  4 06:33 lk
12989498 lrwxrwxrwx. 1 j j    1  2월  4 06:49 sk -> k
[j@hj0216 ~/dd]$

symbolic link: 바로가기 아이콘(실행파일이 아닌 실행파일의 주소값을 갖고 있음),

i-node 변경, hardlink 수 변화 X

 

➕ symbolic link의 원본 file을 삭제할 경우,

[j@hj0216 ~/dd]$ rm -rf k
[j@hj0216 ~/dd]$ ll -i
합계 28
12989497 -rwxrwxr-x. 1 j j 8440  2월  4 06:40 ck
12991324 -rw-rw-r--. 1 j j   74  2월  4 06:33 k.c
12991323 -rwxrwxr-x. 1 j j 8440  2월  4 06:33 lk
12989498 lrwxrwxrwx. 1 j j    1  2월  4 06:49 sk -> k
[j@hj0216 ~/dd]$ file sk
sk: broken symbolic link to `k'

ll -i: 실행 시, symbolic link file 빨간색으로 변화

file sk: 조회 시, broken symbolic link 반환

 

728x90