- 매뉴얼 조회: man - 파일목록/내용 조회 관련 명령어: ls, cat, head, tail - 검색/탐색 관련 명령어: grep, find - 압축/해제 관련 명령어: tar, gzip/gunzip. zip/unzip - 시간 관련 명령어: date, cal - 기타 명령어: echo, exit, history - 관리자 권한 실행: sudo - 패키지 매니저: apt - 텍스트 에디터: nano + 호스트네임 확인: hostname + ip 확인: hostname -i
2. 디렉토리 내용 조회/이동/확인
- 직전 이동했던 디렉토리로 이동: cd - - 모든 하위 디렉토리 조회: ls -al
3. 파일 내용 조회 - 파일 내용 조회: cat - 앞에 3줄만 조회: head 파일명 -n 3 (tail도 커맨드 똑같음) - man과 비슷하게 보여줌: less 파일명
4. 파일 내용 검색 - 파일 내용 검색: grep ex) : hello를 찾아라 dpkg.log 에서 : grep "hello" dpkg.log
- ls -al 안에 있는 kern.log 파일 검색(파이프 기법): ls -al | grep "kern.log" - dpkg.log 안에 있는 "2021-03-25 22:15:49" 내용을 찾아라: cat dpg.log | grep "2021-03-25 22:15:49"
5. 파일 검색 - 파일 검색: find ex 1) conf 라는 파일명을 가진 이름을 찾아라: find /etc -name "*.conf" -print ex 2) conf 라는 파일명을 가진 이름을 찾아라(상대경로 이용) :find . -name "*.conf" -print ex 3) conf 라는 파일명을 가진 이름을 찾아라(파이프 이용) : find | grep "conf"
6. 압축 관련 커맨드 - 파일 압축하기 : gzip 파일명 - 파일 압축풀기 : ungzip 파일명 * 많이 쓰는 압축명
- test.tar.gz 파일 안에 filelist.gz 과 snap / 그리고 시작을 압축 할것이다. (tar명령어를 사용한 압축 방법) : tar -zcf test.tar.gz filelist.gz snap/ 시작
- 하위 디렉토리의 testdir 안에 test.tar.gz파일을 푼다. : tar -zxf ../test.tar.gz
7. 시간 및 기타 커맨드
- 현재 시간 : date - cal : 달력보기 - 전 명령어들 찾기 : history - 전 명령어 중 12번 명령어 실행 하기: !12 - PWD라는 변수가 어떻게 실행하는지 궁금하다? : echo $PWD (즉 ECHO를 이용하면 변수의 내용을 볼수가 있음.) - echo $PATH 안에 hello가 존재하는지 보고싶다? echo $PATH 타이핑 후 hello - 해당 명령어가 사용되도록 저장된 디렉토리 위치 표시: which ls
8. 관리자 권한 실행 관리자권한 : sudo
9. 패키지 매니저 사용(apt) 패키지 설치: sudo apt install 패키지이름 패키지 삭제: sudo apt remove 패키지이름 설치된 패키지 조회: apt list | grep 패키지이름 설치된 패키지 조회: apt list --installed | grep 패키지이름
10. nano 편집기 ^X : nano 편집기 커맨드인데 여기서 ^은 ctrl 키를 의미함. M-A: 여기서 M은 alt키를 의미함
● 파일 만들기 - 빈 파일 만들기 : touch 파일명 - 이름 변경: mv 파일명 수정할파일명 ex1) 파일 디렉토리경로 이동가능하다(기존 디렉터리 폴더에서 /tmp/pineapple로 옮김) : mv apple /tmp/ pineapple
ex2)(절대경로 이용)이동했던 /tmp/pineapple을 현재 디렉토리로 옮겨라 : mv /tmp/pineapple . (.은 현재 디렉토리를 나타냄)
ex3)(상대경로 이용) 기존 /home/test/pineapple 파일을 /tmp/pineapple로 이동하라 : mv pineapple ../../tmp
● 디렉터리 - 생성: mkdir 생성할 디렉터리명 - 삭제: rm 삭제할 디렉터리명
-i : 파일이나 디렉토리가 삭제될 때마다 확인한다.(y : 삭제, n : 취소)
-f : 사용자에게 확인하지 않고 삭제한다.
-v : 각각의 파일 지우는 정보를 자세하게 모두 보여준다.
-r : 해당 디렉토리의 하위 디렉토리까지 모두 삭제
- 강제 삭제1 : rm -r 삭제할 디렉터리명 (삭제 여부 물어봄) - 강제 삭제2: rm -rf 삭제할 디렉터리명 (상제 여부 안물어보고 바로 삭제) - 디렉터리명 및 위치 변경 : mv 기존 디렉터리명 변경할 디렉터리명 mv 기존 디렉터리명 /tmp (위치할 디렉터리 위치)
● 아이노드 && 하드링크 || 소프트 링크 - 아이노드: 파일의 데이터를 저장해 놓은 구조체 - 하드 링크는 동일한 파일에 대한 다른 이름의 링크로, 모든 링크가 동일한 데이터 블록을 가리킵니다. - 소프트 링크는 다른 파일이나 디렉터리에 대한 참조를 저장하며, 원본 파일의 경로를 가리키기 때문에 간접적으로 접근 - 가능합니다.
● 하드링크 && 아이노드 - 아이노드 아이디 확인 : ls -ali - 하드링크 방법 : ln 기존파일 하드링크할 파일 같은 데이터가 조회가 된다.
- stat을 이용하면 파일의 자세한 내용을 확인 가능 ● 소프트링크 : 하드링크보다 많이 사용함 - 소프트링크 방법: ln -s 기존파일 소프트링크할 파일
- 하드링크 vs 소프트링크 하드링크는 링크가 된 파일이 다른 디렉토리로 이동해도 데이터 연결성이 있지만 소프트링크는 그와 반대로 연결이 안됨.
- 파일 권한
● 사용자 추가 sudo adduser 추가할아이디
● 사용자 삭제 sudo deluser 사용자명 --remove-home (home밑에 있는 사용자 삭제)
● 그룹 추가 - sudo addgroup 그룹명 apple 이라는 유저를 fruits라는 그룹에 추가한다. 이후 cat /etc/passwd 를 통해 계정추가 확인 -> sudo apple 을 통해 로그인 후 ls -al을 통하여 그룹 확인.
●프로세스 목록 조회 및 구조 파악
- 프로세스 목록 조회 : ps -f
- 모든 프로세스 목록 조회: ps -ef
● 프로세스 종료 상태 확인 :echo $?
● 시그널 전송 - 프로세스 강제 종료: kill -옵션 PID ( 가장 강력한 옵션은 kill -9 옵션임)
● 포어그라운드 && 백그라운드 - 포어그라운드는 입력시 프로세스가 사용자에게 연결이 됨 - 백그라운드는 입력시 프로세스가 사용자에게 연결이 안됨
=> 뒤에 & 붙이면 백그라운드로 실행이 됨.
=> 백그라운드에서 포어그라운드로 전환은 fg를 타이핑 입력
●리디렉션과 파이프 라인
- 출력 리디렉션 : ls & > result (파일 예시) : &는 리눅스나 유닉스 시스템에서 사용되는 기호로, 명령어를 백그라운드(background)에서 실행하도록 지시하는 역할을 합니다.
예를 들어, "ls &"는 현재 디렉토리의 파일 목록을 표시하는 ls 명령어를 백그라운드에서 실행하라는 뜻입니다. 이렇게 하면 명령을 실행하는 동안 다른 작업을 할 수 있습니다.
"& > result"에서는 ">"는 출력을 파일로 리다이렉션하는 명령입니다. 그리고 "&"는 앞의 명령을 백그라운드에서 실행하도록 하고, 동시에 그 명령의 출력을 파일 "result"로 리다이렉션하라는 뜻입니다. 따라서 이 명령은 현재 디렉토리의 파일 목록을 "result" 파일로 저장하면서 백그라운드에서 실행합니다.
- 입력 리디렉션: wc < process.sh(파일 예시)
- "command << world": 이 구문은히어 도큐먼트(Here Document)를 사용합니다. 이 구문은 "command"의 표준 입력(stdin)으로 여러 줄의 데이터를 제공하는 방식입니다. "world"는 히어 도큐먼트의 종료 문자열을 나타내며, 이 문자열이 나올 때까지 사용자가 입력한 모든 줄이 "command"의 입력으로 전달됩니다.
ex: cat << EOF Hello World EOF
위의 예시는 "Hello"와 "World"를 출력하는 cat 명령을 실행합니다.
- "command <<< word": 이 구문은히어 스트링(Here String)을사용합니다. 이 구문은 "command"의 표준 입력(stdin)으로 문자열 "word"를 제공하는 방식입니다.(자주 사용안함)
ex: cat <<< "Hello World" 위의 예시는 "Hello World"를 출력하는 cat 명령을 실행합니다. 따라서, "command << world"는 히어 도큐먼트를 사용하고, "command <<< word"는 히어 스트링을 사용합니다.
- "~"를 사용하는 이유 중 하나는 특정 사용자의 홈 디렉토리를 가리키기 위해 사용됩니다. 만약 사용자 "rocky"의 홈 디렉토리 경 로가 "/home/rocky"라면, "mv test ~rocky/" 명령어는 "mv test /home/rocky/"와 동일한 역할을 합니다.
ldd는 리눅스에서 실행 파일이나 공유 라이브러리의 의존성을 확인하는 명령어입니다. 이 명령어는 해당 실행 파일이나 공유 라이브러리가 다른 어떤 라이브러리들에 의존하고 있는지를 보여줍니다. 보통은 ldd 명령어 다음에 확인하고자 하는 실행 파일의 경로를 입력하여 사용합니다. 예를 들어:
ldd /bin/ls
위와 같이 입력하면 /bin/ls 파일이 어떤 공유 라이브러리에 의존하고 있는지를 확인할 수 있습니다.