Cohe

리눅스 명령어2 본문

배포 배우기

리눅스 명령어2

코헤0121 2024. 7. 23. 10:13
728x90
  • 리다이렉션(Redirection)
    • 표준 입출력 기능
      • 표준입력 (0) —→ 키보드
      • 표준입력 (1) —→ 모니터
      • 표준입력 (2) —→ 모니터
    • 리다이렉션은 이런 표준 입출력, 에러 등을 변경하여 사용하는 것을 가능하게 함
    • 리다이렉션을 이용해서 기본적으로 출력 결과를 모니터로 표시하지만 파일에 기록하는 것도 가능
    • 리다이렉션 연산자 : <, >, >>
    • 사용 예
      • 명령어 > 파일 : 파일이 없다면 생성, 기존 파일이 있다면 삭제후 결과를 출력(Write)
      • 명령어 >> 파일 : 파일이 없다면 생성, 기존 파일이 있다면 내용을 추가(Append)
      • 명령어 < 파일 : 파일에서 표준 입력을 받음
      • 명령어 2> : 에러의 방향을 바꿈
      • 명령어 1>**&**2 : 출력을 에러로 보냄
        • 해당 위치로 이동
      • 명령어 2>&1 : 에러를 출력으로 내보냄
      <실습>
      ls -l /etc/sysconfig > sysconfigFiles
      cat sysconfigFiles -> 속 내용을 볼 수 있음!!
      
      >> ls -l /ete/sysconfig 내용을 알 수 있다
      
      ls -l /xxx 2> testError
      cat testError
      >> ls: cannot access '/xxx': No such file or directory
      
      <정상입력, 정상 출력의 차이를 보인다>
      
      ls -l /xxx 2>&1 
      >> ls: cannot access '/xxx': No such file or directory
      
      ls -l ./>&2
      >> total 8
      -rw-r--r--. 1 ec2-user ec2-user 1034 Jul 22 01:02 sysconfigFiles
      -rw-r--r--. 1 ec2-user ec2-user   52 Jul 22 01:11 testError
      
      
    • 변수선언 및 출력
    • test=111 echo $test >>111
  • 리다이렉션 실습
    1. cat을 이용하여 Hi_Linux 파일을 생성, 안에는 “Hello Linux”란 문자를 5개 생성
      • for i in {1..5}; do echo "Hello Linux"; done
  • 환경변수 보기 : env
  • echo 공부 → 화면에 출력한다
    • echo -e “\n” : 이스케이프 문자이기 때문에 e가 빠지면 백슬레쉬가 고대로 나온다
  • find : 파일 또는 디렉터리를 검색하는 명령어
    • [형식] find [경로-검색 위치] [옵션]
    • (옵션)
      • -name : 이름으로 검색
      • -type : 파일의 형식 (d-디렉터리, f-파일)
    • <추가 옵션>
      • -uid UID : 지정한 UID값을 가지고 검색
      • -gid GID : 지정한 GID값을 가지고 검색
      • -empty : 비어 있는 파일을 검색
      • -perm : 지정된 퍼미션(허가권)을 가진 파일을 검색
      • -used 일자수(n) : 최근 n일 이후에 변경된 파일을 검색
      • -user : 소유자를 기준으로 검색
    • [검색 이후에 수행 작업 옵션] -exec "수행명령어" ₩; => 검색한 파일을 대상으로 "수행 명령어"를 실행하는 옵션
    • 실습 환경 구성
      1. sudo -i : 관리자 계정으로 변경
      2. $ sudo -i # whoami >>root
      3. 관리자(root) 작업()
        • 디렉터리 생성 mkdir -p -m 1777 /data/{backup,doc,hwp}
        • 결과 : /data/backup /doc /hwp
      4. 사용자 전환 su ec2-user => ec2-user계정으로 전환
      5. /data/backup 디렉터리로 이동하여 파일 생성 (index.html, text.bak, accesslog)
        • index.html 내용 : welcome
        • accesslog 내용 : doc file
        • 관리자 전환(root)
        cd /data/backup && echo "welcome" > index.html && touch text.bak && echo "doc file" > accesslog
      6. /data 디렉터리에 a.txt 파일을 생성
        • a.txt 내용 : hi, CentOS !! Hello World !!!
        echo -e "hi, CentOScd /data \\nHello Worldcd /data!" > a.txt
    • find 명령어 연습
      1. a.txt를 찾아라 (-name 옵션 사용)
      2. # find / -name a.txt >>/data/a.txt
      3. indes.html인 파일을 찾아라 (/data)
      4. # find /data -name index.html -type -f >>/data/backup/index.html
      5. 홈디렉터리에 있는 서브 디렉터리를 포함하는 모든 파일을 출력
      6. # find /root /root /root/.ssh /root/.ssh/authorized_keys /root/.bash_logout /root/.bash_profile /root/.bashrc /root/.cshrc /root/.tcshrc
      7. /data 디렉터리 내에 있는 ec2-user 사용자가 생성한 파일을 찾아라(-user -type)
        • find /data -user ec2-user -type f
      8. root 계정이 소유한 a로 시작하는 파일만 /data에서 검색 (-user, -type)
        • find /data -name “a*” -user root -type f
      9. ec2-user 계정 홈디렉터리 내에 있는 모든 파일을 검색
        • find ~ec2-user -type f
      10. /data/ 디렉터리 내에 권한 1777인 파일 및 디렉터리를 검색
        • 1은 공유 폴더에 대한 내용
        • find /data -perm 1777
      11. a.txt파일을 찾아내서 파일 내 “Hello” 글자를 검색하세요 (-exec, {} → 기호 부분으로 결과 출력)
      12. # grep "Hello" /data/a.txt >> Hello Worldcd /data! # find /data -name a.txt -exec grep "Hello" {} \\;
      13. /home 디렉터리 내에 특정 사용자의 파일을 검색하여 상세히 출력하세요
      14. find /home -user ec2-user -exec ls -l {} \\;
      15. 특정 문자를 포함하는 파일 찾기와 그 문자가 속한 행 찾기 (검색 문자 : doc) 검색 위치는 data
      16. grep "welcome" /dev/null => 쓰레기통 grep "wecome" /data/backup/index.html /dev/null -> welcome 출력하면서 해당 파일의 위치까지 찾아서 출력해줌
      17. 특정 시점을 기준으로 수정된 모든 파일을 검색(-newer)
        • -newer옵션은 지정된 파일의 시간 이후에 생성된 파일을 출력
        • 2024-07-22 1시 00분(UTC)을 기점으로 삼기
        1. 파일 생성 (시점을 가진) 혹은 있는 파일 확인
          • touch -t 202407220100 timesearch
        2. 생성된 파일을통해서 이후 생성된 파일 검색
          • find /data -newer timesearch
      18. 서버 내에 불필요한 bak 파일 삭제
        • “.bak백업 파일은 서버 내에 존재하면 안됩니다.”
        • find /path/to/directory -type f -name '*.bak' -exec rm -f {} +
      19. 서버내 불필요한 파일(accesslog)를 /tmp로 이동하기
        • find /path/to/search -type f -name 'accesslog' -exec mv {} /tmp/ \\;
  • 시간
    1. cal : 달력을 출력하는 명령어
    2. acal : 달력을 출력하는 명령어
    3. date: 날짜 및 시간 출력(기준시 : 1970년 1월 1일 00시) + 9
    4. timedatectl
    5. timedatectl list-timezones
    6. timedatectl list-timezones | grep Seoul
  • timezone 변경
    1. timedatectl 사용 → 변경할 timezone 검색
      • timedatectl list-timezones | grep Seoul
    2. 변경한 timezone 설정
      • timedatectl set- timezone Asiz/Seoul
    3. 설정후 /etc/localtime에 설정정보가 들어감
  • localtime 설정 변경
    • 기존 파일 삭제 (rm -rf /etc/localtime)
    • zoneinfo에 있는 zone설정 파일 링크 하기 (ln -s /usr/share/zoneinfo/Asiz/Seoul /etc/localtime)
    • 이후 생성확인 및 시간 확인처리

  • 시스템 종료 및 재부팅
  1. shutdown : 시스템을 종료하는 명령어
    • [형식] shutdown [옵션] [시간(n)-분단위, now] [comment]
    • (옵션) -h : 시스템 종료 ( halt , init 0 ) -r : 시스템 재부팅 ( reboot, init 6) -k : 시스템 종료 로그 메시지 전송(Warnning 메시지 전송 -실제 종료 X) -c : 시스템 종료 설정에 대한 취소
  • 리눅스 시스템의 런레벨
    • init를 이용하여 실행 레벨로 서버를 구동 시킬 수 있음.
    • 레벨0 : 시스템 종료 ( halt, shutdown -h now ) 레벨1 : 싱글모드(관리모드) - 콘솔로만 접근 가능 시스템 관리 또는 root 패스워드 변경하고자 할 경우에 사용하는 런레벨(init 1) 윈도우즈 시스템의 안전모드와 비슷함. 레벨2 : NFS를 지원하지 않는 멀티유저 실행 모드(init 2) 레벨3 : NFS를 지원하는 멀티유저 실행 모드(init 3) 레벨4 : 사용하지 않는 실행 모드(init 4) (사용자가 별도로 지정하여 사용할 수 있음) 레벨5 : X윈도우(GUI) 환경으로 실행되는 멀티 유저 실행 모드 (init 5) 레벨6 : 시스템 재부팅 (reboot, shutdown -r now)

  • alias : 별칭 →자주 사용하는 명령어가 길때 줄여서 표현
    • alias : alias 목록 확인
    • alias 단어 = “명령” 엘리어스 추가
    • unalias 단어 = alias 삭제

which : 명령어 위치 출력

  • which [명령어] → 명령어 위치 출력
  • which -a [명령어] → 검색 가능한 모든 경로에서 명령어를 찾음
which -a git

whereis : 실행 파일, 소스 man 페이지의 파일을 찾아줌

[root@ip-172-31-5-221 /]# whereis git
git: /usr/bin/git /usr/share/man/man1/git.1.gz
명령어 : 소스      매뉴얼

locate : 파일명을 패턴으로 빠르게 검색(ubuntu or debian 계열)

vi , vim

  • 리눅스에서 사용되는 가장 대표적인 문서 편집기(기본지원)
  • 윈도우 메모장과 비슷한 기능을 가지고 파일 편집이 가능함
  • 사용법
  1. vi(m) 파일이름 : vi(m)로 파일을 열기
  2. vi(m) + 파일이름 : 기존 파일 맨 마지막 라인에 커서를 위치 시킴
  3. vi(m) +숫자(n) 파일이름 : 기존 파일의 원하는 라인(n행)부터 커서 위치 시킴
  4. vi(m) +/문자열 파일이름 : 기존 파일의 원하는 문자열부터 커서 위치 시킴
  • VI편집기 모드(3가지)
  1. 입력모드 : 글자를 입력할 수 있는 모드
  2. 명령모드(default) : 파일을 편집할 수 있는 작업이 가능한 모드
  3. 실행모드 : 파일 저장, 읽기, 외부 명령 실행, 종료 등을 수행할 수 있는 모드
  • 모드간 이동 각 모드별 직접 연결된 모드간에 이동이 가능함. 하지만, 건너뛰어 이동하는 것은 불가.

입력 모드 <=> 명령모드(default) <=> 실행모드 => "ESC"키 입력 <= a,A,i,I,o,O <= => ":"

  1. 커서의 이동
  2. => 방향키를 사용!! k : 위로 이동 j : 아래 이동 h : 왼쪽 이동 l : 오른쪽 이동
  3. 행단위 이동 ^ : 행에 맨 왼쪽의 첫글자로 커서 이동 $ : 행에 마지막 글자의 위치로 커서 이동 G : 파일의 마지막 행 nG : n번째 행으로 이동 [[ : 커서를 파일의 맨 처음으로 이동 ]] : 커서를 파일의 맨 마지막 행으로 이동
  4. 입력모드(글자입력 모드) - a,A,i,I,o,O inset 표시 a(커서 바로 다음부터 편집) A(커서를 행의 마지막으로 이동 후 편집) i(커서 위치에서 편집) I(커서를 행의 처음으로 이동 후 편집) o(커서 아래에 행을 추가하고 편집) O(커서 위에 행을 추가하고 편집)
  5. 명령모드(ESC) => 문서 편집 x : 한글자씩 삭제 b : 한단어씩 뒤로 이동 db : 한단어씩 뒤로(왼쪽) 삭제 dd : 한줄(행) 삭제 ndd : n(숫자) 만큼 행을 삭제 yy : 한줄(행) 복사 nyy : n(숫자) 만큼 행을 복사 p : 현재 커서 아래에 붙여넣기 P : 현재 커서 위치에 붙여넣기 np : n(숫자)만큼 행을 붙여넣기 dw : 커서위치 한단어 삭제 D : 커서 위치에서 라인 마지막까지 삭제 ndw : n(숫자) 단어 삭제 nx : n(숫자) 글자만큼 삭제 y$ : 커서의 위치에서 라인 마지막까지 복사 u : 마지막 변경된 내용 취소 U : 현재 행에서 변경된 내용 모두 취소
  6. 단어 검색하기 /(단어) : 문서내에 단어를 위에서 아래로 검색

?(단어) : 문서내에 단어를 아래에서 위로 검색

n - 진행방향으로 다음 단어 검색 N - 진행 반대방향으로 다음 단어 검색

  1. 치환(찾아서 바꾸기) : 문서상에 특정 단어를 찾아서 새로운 단어로 변경하는 것!!

[사용형식] :[n]s/old/new n - 라인(행) old - 이전단어(검색 단어) new - 새로운 단어(변경할 단어)

ex) :39s/PASS/Word => 39줄에 있는 PASS => Word로 변경 :34,42s/PASS/Word => 34 ~ 42줄에 있는 PASS => Word로 변경 :%s/PASS/Word => 문서 전체에 있는 PASS => Word로 변경 "/g"옵션 : 전부를 의미함. "/i" 옵션 : 대소문자 구분하지 않음.

  1. 실행모드(:) :w => 파일 저장 :q => 종료 :wq => 파일을 저장하고 종료 :{}! => 강제 실행({} 명령어) ex) q!
    :x => 저장하고 종료 :e 파일명 => "파일명"의 파일을 불러들여서 기존 파일 대체 :r 파일명 => "파일명"의 파일을 불러들여서 현 커서 위치에 추가 :nr 파일명 => "파일명"의 파일을 불러들여서 n줄 이후에 추가 :!명령어 => 외부 명령어를 실행 ex) :!ls -l => ls -l을 터미널에서 사용한 것과 같은 출력 결과 :e! => 현재 문서 내에서 변경한 모든 내용을 취소 (문서를 다시 불러와 준다) 다른 파일 열기 :set nu => 편집 문서에 행번호를 표기 :set nonu => 편집 문서에 행번호를 표기 제거(비활성화) :set ai => 자동 들여쓰기 :set wrap => 자동 줄바꿈 설정 :set ts=숫자 => 탭키를 숫자만큼 공간으로 설정하기(기본 8자) :n => n(숫자)번째 행으로 이동 :f => 현재 파일 정보를 확인

추가 :1,$y => 파일 전체 복사

:1, $ => 1줄부터 마지막줄까지 :10,15 => 10줄부터 15줄까지... :-5,+5y => 현재 커서 위치에서 5줄 이전부터 5줄 이후까지 복사 :3,. => 3줄부터 현재 커서 위치까지 :.,$ => 현재 커서 위치에서 마지막까지 :.,$-2 => 현재 커서 위체서 마지막 라인 2줄 이전까지

vi 실습

[사전작업] - root로 작업(#) mkdir -p /test/viTest -> /test/viTest 디렉터리를 생성 cd /test/viTest cp /etc/login.defs /test/viTest/login.defs

    • 실습할 파일 : /test/viTest/login.defs 테스트 조건 : 절대로 vi(m)나와서 작업하지 않습니다. 오직 vi(m) 내에서 모든 작업 진행!!!
  1. /test/viTest/ 디렉터리 하위에 파일 A, B, C를 생성!
  2. 치환 작업 : 'PASS(->word)', 'number(->PASS)' 단어를 치환...
  3. 5 ~ 12번째 라인을 2번째 라인 밑에 복사
  4. 14번째 라인으로 이동 후에 ls -l /var/log/의 명령어 결과를 문서 내용으로 추가!!
  5. 편집한 내용을 저장[종료는 하지 않음]
  6. 현재 열려있는 파일의 내용을 비어 있는 /test/viTest/B 파일에 입력 후에 B파일을 열어 내용 입력이 되었는지 확인
:w! /test/viTest/B
  1. 현재 열려있는 B파일의 내용을 수정![치환 작업X] UID 단어를 찾아 UID를 수동으로 지워준 다음, Xwindow라는 내용으로 변경 후에 저장(UID -> Xwindow로), /backup 디렉터리를 생성 END 이름으로 파일을 추가 저장
/UID -> n으로 작업
:!mkdir /backup
:w /backup/END
  1. 현재 vi 화면에서 새로운 문서를 불러온 후에 "안녕하세요!" 내용을 입력한 후에 /backup/END 파일을 불러오기. 단, 현재 새로만들기로 이용해서 불러온 문서는 별도로 저장하지 않습니다.

Su: 사용자 전환 명령어

[형식] su 계정명

일반계정 -> root, 다른 일반계정 : 인증을 필요함 root -> 다른 일반계정으로 전활 : 인증이 불필요함.

  1. sudo : 제한적 관리자 권한 사용 명령어. 관리자 권한으로 명령을 실행해야 하는 경우
[형식]
  sudo [옵션] or [명령어-관리자 권한으로 실행할 명령어]

(옵션)
  -i    : 해당 터미널에서 관리자 권한 세션으로 처리

sudo 는 관리자 권한을 사용할 수 있는 설정이 되어 있는 경우에만 사용이 가능함.

sudo 설정 변경은 "visudo"를 통해서 변경이 가능함.( 설정파일의 위치 : /etc/sudoers )

'배포 배우기' 카테고리의 다른 글

리눅스 다운  (0) 2024.07.25
리눅스 소켓 연결하기 2  (2) 2024.07.24
리눅스 소켓 연결하기  (4) 2024.07.24
리눅스 명령어 공부 3  (4) 2024.07.23
리눅스 명령어 공부 1  (0) 2024.07.23