[Linux] 기본 명령어

xeomina·2022년 5월 17일
0

Linux

목록 보기
9/16

실습준비

  • {} : 여러개
# mkdir dir{A,B,C}
anaconda-ks.cfg  Desktop  dirA  dirB  dirC

# touch dir{A,B,C}/file{X,Y,Z}
# touch file{A,B,C,D}
anaconda-ks.cfg  Desktop  dirA  dirB  dirC  fileA  fileB  fileC  fileD

# ls -F ./ dirA dirB dirC
anaconda-ks.cfg  Desktop/  dirA/  dirB/  dirC/  fileA  fileB  fileC  fileD

dirA:
fileX  fileY  fileZ

dirB:
fileX  fileY  fileZ

dirC:
fileX  fileY  fileZ

CLI 구문

  • uname : 시스템 정보 출력
# uname
Linux
# uname -a
Linux localhost.localdomain 3.10.0-1160.59.1.el7.x86_64 #1 SMP Wed Feb 23 16:47:03 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
# uname -s
Linux
# uname -r
3.10.0-1160.59.1.el7.x86_64
# uname -s -r
Linux 3.10.0-1160.59.1.el7.x86_64
# uname -sr
Linux 3.10.0-1160.59.1.el7.x86_64
  • 날짜 관련
# date
Tue Apr  5 16:49:02 KST 2022
# cal
     April 2022     
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
# cal 9 2015
   September 2015   
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
  • 목록 확인
# ls
anaconda-ks.cfg  Desktop
# ls -l /etc/hosts
-rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts
  • cd : 디렉토리 이동
    • /생략 가능
[root@localhost /]# cd /var/log/samba/old
[root@localhost old]# cd /
[root@localhost /]# cd test
[root@localhost test]# 
  • ; : 명령어 연결
[root@localhost /]# date; uname
Tue Apr  5 17:16:38 KST 2022
Linux
[root@localhost /]# cal 9 2020; date; uname -a
   September 2020   
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Tue Apr  5 17:16:56 KST 2022
Linux localhost.localdomain 3.10.0-1160.59.1.el7.x86_64 #1 SMP Wed Feb 23 16:47:03 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost /]# 
  • mkdir –p /test : 최상위 디렉토리 아래 test 디렉토리 생성

  • cd /test : 생성한 test 디렉토리로 이동

  • pwd : 현재 작업 디텍토리 확인

# mkdir -p /test
# ls
bin   dev  home  lib64  mnt  proc  run   srv  test  usr
boot  etc  lib   media  opt  root  sbin  sys  tmp   var
# cd test
[root@localhost test]# cd /var/log/samba/old
[root@localhost old]# pwd
/var/log/samba/old
  • cd ~ : home으로 이동
[root@localhost old]# cd ~
[root@localhost ~]# pwd
/root
[root@localhost ~]# 
  • Ctrl + C : 명령어 중지
# sleep 500
# ls 
# locale
  • Ctrl + D : 파일의 끝

    • file1Hello, Linux라는 문구 입력
    # cat > file1
    Hello, Linux <Enter>
    <CTRL + D>
    • 입력된 파일 내용 확인
      • < : 생략가능
    # cat < file1
    Hello, Linux
  • 실습

# cat > file1
Hello, Linux
# ls
anaconda-ks.cfg  Desktop  dirA  dirB  dirC  file1  fileA  fileB  fileC  fileD
# cat file1
Hello, Linux
# cat < file1
Hello, Linux
# cat > file2
Aloha, Linux
# cat file2
Aloha, Linux

실습준비

[root@localhost ~]# mkdir dir{A,B,C}
[root@localhost ~]# pwd
/root
[root@localhost ~]# whoami
root
[root@localhost ~]# ls
anaconda-ks.cfg  Desktop  dirA  dirB  dirC  Downloads  VBoxLinuxAdditions.run
[root@localhost ~]# touch dir{A,B,C}/file{X,Y,Z}
[root@localhost ~]# ls dirA
fileX  fileY  fileZ
[root@localhost ~]# touch file{A,B,C,D}
[root@localhost ~]# ls
anaconda-ks.cfg  dirA  dirC       fileA  fileC  VBoxLinuxAdditions.run
Desktop          dirB  Downloads  fileB  fileD
[root@localhost ~]# ls -F ./ dirA dirB dirC
./:
anaconda-ks.cfg  dirA/  dirC/       fileA  fileC  VBoxLinuxAdditions.run*
Desktop/         dirB/  Downloads/  fileB  fileD

dirA:
fileX  fileY  fileZ

dirB:
fileX  fileY  fileZ

dirC:
fileX  fileY  fileZ
  • cat : 입출력
    • > : 입력 + <Ctrl + D>
    • < : 출력 (생략가능)
[root@localhost ~]# cat > file1
Hello, Linux
[root@localhost ~]# cat < file1
Hello, Linux

1. CLI 구문

Ctrl + D

  • Indicates end-of-file or exit
# mkdir –p /test				#최상위 디렉토리 아래 test 디렉토리 생성
# cd /test						#생성한 test 디렉토리로 이동
# pwd							#현재 작업 디텍토리 확인
/test
# cat > file1					# 파일에 내용 입력
Hello, Linux <Enter>
<CTRL + D>						# “파일의 끝”의미
# cat file1						# 입력된 파일 내용 확인
Hello, Linux

Ctrl + U

  • Erases all characters on the current command line
# find / -name core -type f <CTRL + U>

Ctrl + W

  • Erase the last word on the command line
# find / -name core -type f <CTRL + W>
# find / -name core -type <CTRL + W> <CTRL + W>
# find / -name <CTRL + W>

Ctrl + S

  • Stop
# du –a /

Ctrl + Q

  • quit
# du –a /

CTRL + C

  • Terminates the command currently running
# du –a /

2. 메뉴얼 페이지

# man uname

# man ls
# man -k calendar 
cal (1)              - display a calendar
  • cal : calendar와 관련된 명령어

3. 디렉토리 작업

현재 작업 디렉토리 확인

# pwd

디렉토리 내용 확인

# ls
# ls dirA
# ls /var/log

숨겨진 파일 보기

  • .으로 시작하는 파일
# ls -a

개별 디렉토리 확인

# ls -l
# ls -l dirA
# ls -ld dirA
# ls -l /dev

  • sda : root 볼륨
    • 블록 디바이스 중 하나

디렉토리 하위 목록 보기

# ls -R
# ls -R dirA

파일 종류 확인

# ls -F
# ls -F /bin/uname
/bin/uname*
  • * : 실행파일

  • / : 폴더

# file dirA
dirA: directory

# file /var/log/maillog
/var/log/maillog: ASCII text

# file /bin/uname
/bin/uname: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=520fab7250b1fd254767861e67b70ae401d0288b, stripped

# file VBoxLinuxAdditions.run 
VBoxLinuxAdditions.run: data
  • bin : binary
# file fileA
fileA: empty

# cat > fileA
Hello World

# file fileA
fileA: ASCII text
# file /dev/sda
/dev/sda: block special

디렉토리 변경

# cd /root/dirA		#절대경로
# cd dirA			#상대경로
  • 절대경로 : 최상위 폴더부터 시작
    • 위치가 어디든 상관 없음
    • 라인이 길어짐
  • 상대경로 : 현 위치부터 시작
    • 위치가 특정
# cd ..				#상위폴더로
# cd dirA			#dirA로
# cd ../dirA		#상위폴더로 이동 후 dirA로
# cd /root/dirA		#위와 동일
# cd ../..			#최상위폴더로

# cd ~				#홈으로
# cd -				#위와 동일
# cd				#위와 동일

# cd ~/dirA			#홈으로 이동 후 dirA로
# cd -/dirA			#오류!!
  • 현재경로
# cd .
# cd ./

4. 파일 작업

bash command

# cat /etc/ssh/sshd_config
# more /etc/ssh/sshd_config

# echo -e "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15" > numbers

# cat numbers
# head numbers
# head -5 numbers
# tail -3 numbers
  • more : 일부분만 출력하고 나머지 more...

    • 스페이스바 : 한 페이지씩 넘어감
    • 엔터 : 한 줄씩 넘어감
  • echo : 입력

    • > : 방향성 화살표
    • " " 내용 > numbers 파일 생성
# wc /etc/ssh/sshd_config
 139  476 3907 /etc/ssh/sshd_config			#line / word / byte

# wc -c /etc/ssh/sshd_config		
3907 /etc/ssh/sshd_config					#bytes

# wc -m /etc/ssh/sshd_config
3907 /etc/ssh/sshd_config					#chars

# wc -l /etc/ssh/sshd_config
139 /etc/ssh/sshd_config					#lines

# wc -w /etc/ssh/sshd_config
476 /etc/ssh/sshd_config
  • -c : print the byte counts
  • -m : print the character counts
  • -l : print the newline counts
  • -L : print the length of the longest line
  • -w : print the word counts

5. 복사

파일 복사

  • -i : interative
# ls -F
# cp fileA fileAA
# ls -F

# ls -F dirC
# cp fileA fileAA dirC
# ls -F dirC

# cp -i fileA fileAA
cp: overwrite ‘fileAA’? 

디렉토리 복사

  • 옵션 필수
  • -r : copy directories recursively
# cp dirC dirCC				#오류!!
# cp -r dirC dirCC

6. 이동

파일 이동

# ls -F dirC
# mv fileD dirC
# ls -F dirC

디렉토리 이동

# ls -F
# ls -F dirC
# mv dirCC dirC
# ls -F
# ls -F dirC

7. 생성

빈 파일 생성

# touch dirC/touch_file
# ls -F dirC
# touch makeA makeB makeC
# ls -F

디렉토리 생성

# mkdir dirX
# ls -ld dirX

# mkdir dirY/dirZ			#오류!!
mkdir: cannot create directory ‘dirY/dirZ’: No such file or directory

# mkdir -p dirY/dirZ
# ls -F
# ls -F dirY

# mkdir dirU dirV

8. 이름 변경

파일 이름 변경

# mv fileAA fileF
# ls -F

디렉토리 이름 변경

# mv dirX dirD
# ls -F

9. 삭제

파일 삭제

# rm makeA
# rm makeB makeC

빈 디렉토리 삭제

# rmdir dirD
# ls -F
# ls -F dirC
# rmdir dirC
# rm -r dirC
  • 비어있지 않으면 안지워짐
    • -r / -rf 사용
# touch dirD/test.txt
# rm dirD
rm: cannot remove ‘dirD’: Is a directory

# rm -r dirD
rm: descend into directory ‘dirD’? y
rm: remove regular empty file ‘dirD/test.txt’? y
rm: remove directory ‘dirD’? y

# rm -rf dirD

10. 링크

상호 연결을 통해 디스크를 효율적으로 사용

하드 링크 (디스크 공유)

  • i : index
  • 연결되면 인덱스(숫자)가 같다
# ls -il /bin/cd
201327765 -rwxr-xr-x. 1 root root 26 Nov 25 01:33 /bin/cd

# ls -il /usr/bin/cd
201327765 -rwxr-xr-x. 1 root root 26 Nov 25 01:33 /usr/bin/cd
# ls -il fileA
# ln fileA hardA

# ls -il fileA hardA
135405047 -rw-r--r--. 2 root root 12 Apr  6 16:30 fileA
135405047 -rw-r--r--. 2 root root 12 Apr  6 16:30 hardA

  • 두개가 한 공간을 공유
    • > : 기존 문구가 새 문구를 대체
    • >> : 기존 문구에 새 문구
# echo hello > fileA
# cat fileA
hello
# cat hardA
hello
# echo world > hardA
# cat hardA
world
# cat fileA
world

# echo hello > fileA
# cat hardA
hello
# echo world >> hardA
# cat hardA
hello
world
  • 둘 중 하나만 유지되면 저장공간은 남아있음
# rm -f hardA
# cat fileA
hello
world

심볼릭 링크 (바로가기)

# ln -s fileA symbolA
# ls -il fileA symbolA
135405047 -rw-r--r--. 1 root root 12 Apr  7 10:31 fileA
135405041 lrwxrwxrwx. 1 root root  5 Apr  7 10:43 symbolA -> fileA

# echo aloha > fileA
# cat symbolA
aloha

  • 연결된 파일 삭제하면 링크도 삭제됨
# rm -rf fileA
# ls -il

# cat symbolA
cat: symbolA: No such file or directory

  • 링크를 삭제해도 원본 파일은 삭제 안됨
# rm -rf symbolA

11. 파일 내용 검색

grep 명령어

  • 특정 단어를 빨간색으로 보여줌
# grep `root` /etc/passwd

  • -n : 매칭되는 줄번호
# grep -n `root` /etc/passwd

  • -v : root만 제외하고 출력
# grep -v `root` /etc/passwd
  • -l : root라는 문구가 포함된 파일 출력
# grep -l `root` /etc/*

  • -c : root가 있는 줄 갯수 출력
# grep -c `root` /etc/passwd
  • root 사용자 말고 다른 사용자 이름도 가능
# useradd  kosa
# grep `kosa` /etc/passwd

  • -w : 단어 단위로 출력
# grep -w  `kosa` /etc/passwd
  • ^ : kosa로 시작되는 부분만 출력
# grep `^kosa` /etc/passwd

  • .. : k로 시작 a로 끝나는 부분 출력
# grep `k..a` /etc/passwd

  • $ : login로 끝나는 부분 출력
# grep `login$` /etc/passwd

egrep 명령어

| : or

  • N뒤에 o나 e가 있는 부분 출력
# egrep `N(o|e)+` /etc/passwd

  • root나 kosa뒤에 :x가 있는 부분 출력
# egrep `(root|kosa):x` /etc/passwd

  • vm에게 줬던 cpu 갯수
    • svm : AMD cpu의 가상머신
    • vmx: Intel cpu의 가상머신
# egrep -c `(svm|vmx)` /proc/cpuinfo
0

12. 파일 및 디렉토리 검색

  • / 뒤에 경로 붙여도 됨
# find / -name hosts
# find /etc -name hosts
  • f : 파일

    d : 디렉토리

# find / -name hosts -type f
# find / -name hosts -type d
  • -exec rm {} \; : 강제 삭제

    -ok rm {} \; : 대화형 삭제

# find / -name fileA -type f -exec rm {} \;
# find / -name fileC -type f -ok rm {} \;
< rm ... /root/fileC > ? 
  • 최근 이틀동안 수정시간이 변경된 파일 출력
# find ~ -mtime -2
  • /usr/bin 밑에 3M이상인 파일 출력
# find /usr/bin -size +3000000c -ls

0개의 댓글