본문 바로가기
리눅스

리눅스 수업 4차시

by 뭔가해보겠습니다 2024. 3. 3.

이전차시 복습문제
1. 현재 나의 디렉토리 위치 확인 : pwd
2. 현재 위치에서 상위 디렉토리로 이동 : cd ..
3. 절대 경로로 부팅에 관련된 디렉토리로 이동 : cd /boot
4. 최상위 디렉토리 구조 : bin, dev, home, mnt, proc, lib64, run, srv, tmp, var, boot, etc, lib, media, opt, root, sbin, sys, usr
5. 나의 홈 디렉토리로 이동하기 : cd (뒤에 아무것도 안 붙이면 홈 디렉토리로 이동) 또는 cd $HOME 또는 cd ~유저name 또는 cd /home/유저name
6. 현재 위치에서 모든 파일 출력하기 : ls -a (.으로 숨겨진 파일까지 전부 출력)
7. 자세히 출력하기 : ls -al 또는 ls -la
8. /etc 디렉터리의 자체 권한 출력하기 : ls -dl /etc (d가 디렉토리의 d임)

9. 현재 디렉터리에 폴더 만들기 : mkdir 디렉토리명

10. 디렉터리 삭제 : rmdir 디렉토리명 또는 rm -rf 디렉토리명 (보통 rm -rf를 많이 사용)

 

* 도움말 출력

형식 : 명령어 --help | grep -- -옵션
ex ls --help | grep -- -a (명령어의 도움말을 확인할 때, -a가 들어간 옵션만 필터하여 출력.  grep이 특정 문자열을 잡아주는 역할.)

 

리눅스 명령어의 특징

- 주로 축약되어 있다

- 윈도우처럼 명령어에 확장자가 없다

- 주로 소문자로 되어 있다

 

su -

: 관리자 권한으로 변경하는 명령어. 

su - username (붙여쓰면 안됨!)

: username 로 변경

 

일반 사용자 프롬프트 : $ (ex [username@localhost ~]$)

관리자 프롬프트 : # (ex [root@localhost ~]# )

 

ln 심볼릭링크나 하드 링크를 생성하는 명령어

ex ln -s file file2                -> file에 연결되는 file2 생성

(ln [OPTION]... [-T] TARGET LINK_NAME   (1st form))

옵션 -s : 심볼릭 링크

생성 후에 ls -l 로 확인해보면

-rw-r--r--.     1 admin admin 907  3월  3 10:42 file
lrwxrwxrwx. 1 admin admin   6    3월  3 10:44 file2 -> file

이런식으로 심볼릭 링크 표시가 된다

ex ln file file2                -> file에 연결되는 file3 생성

하드링크와 심볼릭 링크의 차이를 확인하려면? ls -li 로 확인

16786110 -rw-r--r--.      2 admin admin  907  3월  3 10:42 file
16777618 lrwxrwxrwx. 1 admin admin   6     3월  3 10:44 file 2 -> file
16786110 -rw-r--r--.      2 admin admin  907  3월  3 10:42 file 3

-> inode아이노드 번호가 똑같고, 권한, 하드링크 갯수도 똑같다. 쌍둥이파일이나 다름 없다. 한쪽 파일을 수정하면 다른 한쪽도 수정된다.

 

이때 file 파일을 지우면? 심볼릭링크 file2 파일에는 접근 불가능 (cat file2 하면 에러가 난다)

하드링크 file3 파일은 그대로 있고 접근도 가능

실무에서는 같은 파일인데 이름을 여러개로 쓰려고 사용함

심볼릭 링크의 경우, 예를들어 다른 유닉스의 경우 사용자 추가 명령어가 useradd 인데 리눅스는 adduser여서 호환성을 맞춰주기 위해 심볼릭 링크를 걸어주는 등 사용

 

ls -li /usr/sbin/{useradd,adduser}

심볼릭 링크를 사용한 경우를 조회하기

 

하드링크 개수

-> 해킹당했을 때, 하드링크 개수를 꼭 확인하여 문제되는 파일을 전부 지워줘야 한다

 

리눅스 파일 시스템 구조
부트블록-슈퍼블록-inode아이노드 리스트-데이터블록

inode아이노드 리스트

파일이나 디렉토리에 대한 모든 정보를 가지고 있는 영역. inode값으로 데이터 영역에 접근한다. inode값은 유일하지만, 하드링크의 경우 inode값이 일치한다.

 

echo 메시지 또는 변수명.

: 화면에 내용을 출력한다. 

(ex echo hell 또는 echo $HOME echo $PATH 등.)

 

stat 파일 또는 디렉토리명

: 타겟에 대한 정보를 출력한다

  File: `a.txt'
  Size: 7               Blocks: 8          IO Block: 4096   일반 파일
Device: fd00h/64768d    Inode: 16777658    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/linuxadmin)   Gid: ( 1000/linuxadmin)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2024-03-03 11:35:55.380436414 +0900
Modify: 2024-03-03 11:32:28.474476775 +0900
Change: 2024-03-03 11:32:28.475476770 +0900

cat으로 해당 파일을 보면 Access 시간이 변경됨

ln으로 하드링크를 만들면 Change 시간이 변경됨

 

stat 1.txt 2.txt 3.txt -> stat [1-3].txt 또는 [123].txt

정규표현식으로 축약가능

 

ls

-u Atime 출력 (자세히 출력해야 나오므로 lu로 씀)

-c Ctime 출력 (자세히 출력해야 나오므로 lc로 씀)

 

ll a.txt 했을때 나오는 시간은 기본적으로 modify 시간이므로,

access 시간을 보려면 ll -u a.txt 해야 access 시간이 나온다. (또는 ls -lu a.txt)

 

less 파일명 : 내용을 띄워서 방향키로 볼수있음 (페이지 단위) 끝에 도달해도 종료X

q로 종료. /검색어 써서 검색가능. h로 도움말 확인.

 

more 파일명 : B/스페이스바로 처음부터 볼수있음 (페이지 단위) 끝에 도달하면 자동종료

head 파일명 : 처음부분 10줄 출력

옵션

-숫자 : ex head -3 a.txt 또는 head -n 3 a.txt 3줄 보여줌 (error: head a.txt -3)

-n : ex head -3 DIR_COLORS | cat -n 숫자 붙여서 3줄 보여줌

 

tail 파일명 : 끝부분 10줄 출력

cat -n a.txt | tail -> cat -n a.txt 숫자를 붙여서 tail 끝부분 출력

 

tail -f /var/log/secure

-> root에서 가능한 명령어. 로그인 기록 실시간 모니터링. 실무에서도 모니터링시에 사용함 종료시에는 ctrl+c (=^c)

 

wc 파일명

파일의 라인수, 단어수, 바이트수를 카운트해준다

결과값

: 27 27 61 a.txt

-c 바이트수, -m 단어수, -l 라인수 옵션으로 걸러서 볼 수 있음.

 

cat finename 

: finename 파일의 내용 확인

옵션 : -n 또는 -b 라인번호를 함께 출력, -T 탭키가 있으면 #으로 보여준다

 

$ cat << EOF > a.txt
a1

b2
EOF

-> a.txt 파일 내용을 EOF 안의 내용으로 변경함. 기존 내용은 지워진다.

 

$ cat << EOF
111
222
333
EOF               <- 입력은 EOF가 나온 이 라인까지
111                  -> standard output으로 출력
222                 -> standard output으로 출력
333                 -> standard output으로 출력

 

$ cat << EOF > a.txt                <- 리다이렉션이라고 하여, 내용을 출력하지 않고 a.txt로 넘김.

a1

b2
EOF

 

standard output : 화면(정상 출력) std out

standard error: 화면(에러 출력) ex -bash: sdfsd: command not found (아무거나 쳤을때 나오는 에러) std err

 

grep 특정 패턴을 검색하는 명령어. 찾은 데이터가 없으면 출력되지않는다. (에러는 아님)

ex grep 2 a.txt                -> a.txt에서 2가 포함된 모든 내용 출력

ex grep -n [2-3] a.txt      -> a.txt에서 [2-3] 정규표현식에 해당하는 모든 내용 출력, -n으로 라인수까지 출력

(grep은 alias로 색깔구분이 들어가있는데, \grep 하면 alias 명령어를 건너뛰어, 외부 명령어에서 찾는다. grep은 외부 명령어에 포함되어 있으므로, 오류없이 색깔없이 출력됨

역슬래시를 쓰면서도 색깔구분이 나오게 하려면?

->           \grep -n 2 --color a.txt                 )

옵션 -E 두 개 이상의 단어를 찾을 때 사용

ex grep -E '20|3' a.txt         -> 20 혹은 3이 들어간 데이터 출력.

^  꺽쇠기호(캐럿) : ^4의 경우, 4로 시작하는 단어를 의미.

 

return 값 조회하기

$ grep -n ssh /etc/passwd

$ echo $?                             <- 리턴값을 저장하는 특수 변수

-> 이렇게 연달아서 썼을 때, 찾으면 0 못 찾았으면 1 출력됨

 

테스트

$ alias abcde='echo aa'

$ \abcde

$ -bash: abcde: command not found

-> alias에 테스트용 명령어를 입력한다. 역슬래시를 붙여 alias 명령어를 무시한다.

-> abcde라는 명령어는 외부 명령어에 존재하지 않으므로, not found 되어 에러가 발생한다.

 

외부명령어는 항상 $PATH 에서 찾게 된다.

 

구분자 ; 세미콜론

명령어를 구분하여 여러가지 명령어를 순차적으로 연결하여 실행시킬수있다

앞의 명령어 성공여부와 관계없이 전부 실행한다

ex pwd;pwd;pwd;touch a.txt;ls -li

 

구분자 && 앤드

앞의 명령어가 성공해야 뒤의 명령어를 실행한다

ex pwd && pwd && pwd && touch a.txt && ls -li

 

주석 #

 

touch 파일명

-> 이미 있는 파일일 경우, access, modify, change 시간을 변경시킴

 

which grep            명령어의 경로를 확인해준다.

결과값

alias grep='grep --color=auto'                            <- alias로 설정된 명령어 (설정된 경우에만)
        /bin/grep                                                     <-명령어의 full path

 

 

 

실습문제

최상위 디렉토리에서 심볼릭링크만 출력한다.

: $ ls -l / | grep ^l

lrwxrwxrwx.   1 root root    7  2월 24 11:04 bin -> usr/bin
lrwxrwxrwx.   1 root root    7  2월 24 11:04 lib -> usr/lib
lrwxrwxrwx.   1 root root    9  2월 24 11:04 lib64 -> usr/lib64
lrwxrwxrwx.   1 root root    8  2월 24 11:04 sbin -> usr/sbin

최상위 디렉토리에서 디렉토리만 출력한다.

: $ ls -l / | grep ^d

'리눅스' 카테고리의 다른 글

리눅스 수업 7차시  (0) 2024.03.16
리눅스 수업 6차시 (셀프실습)  (0) 2024.03.14
리눅스 수업 5차시  (0) 2024.03.09
리눅스 수업 3차시  (0) 2024.03.02
리눅스 centos7 실습  (0) 2024.02.28