쉘을 시작할때, 터미널을 껐다키거나,
source ~/.bashrc통해 설정 재로딩이 가능
- 공통:
~/.zshrc(rc : runcommands)- 계정:
~/.zprofile또는~/.zshenv- (기타) 히스토리 저장:
~/.zsh_history- (기타) 세션 관리:
~/.zsh_sessions- 쉘을 수행할 때: 스크립트 앞에
#!/bin/zsh
pwd : 현재 디렉토리의 절대경로ls : 디렉토리 내 어떤 파일들이 있는지 조회|ls -al 혹은 ll = ls- l (a 모든걸, l 상세하게)cd : 디렉토리 이동 (들어가거나, 나올때)|이전 디렉토리 cd .. 상대경로 cd ./x 절대경로 cd /xmkdir : 새 디렉토리 생성rm : 디렉토리 혹은 파일 삭제 | rm -rf (r 리컬시브, 내부에 있는 디렉토리들 모두, f 강제로 삭제)cp : 디렉토리 혹은 파일 복사 | cp 혹은 cp -r (r 리컬시브, 내부에 있는 디렉토리들 모두)mv : 디렉토리 혹은 파일 이동 혹은 명칭 변경touch : 아무것도 없는 빈 파일 생성cat : 파일 출력echo : 문자열 출력, 일반적으로 환경변수 값을 확인하는데에 사용 | echo $ZSH_CUSTOMexport ZSH_CUSTOM="Hello, World" (영구 설정은 .zshrc 내 할 것)head : 파일 첫 라인 출력 | head -n 10 제외 가능 head -10tail : 파일 끝 라인 출력 | tail -n 10 혹은 실시간 로그 조회 시 tail -f -n 10 (10번째부터)tail -f /var/log/apache2/access.logtail -f /var/log/nginx/access.logtail -f /var/log/tomcat/access.log / catalina.out명령어 확장은 리눅스 쉘에서 여러 명령어를 조합하거나, 명령어의 출력을 조작하고 전달하는 방식, 이를 통해 단순한 명령어 실행을 넘어 다양한 작업을 효율적으로 처리가 가능함.
개념:
|)는 한 명령어의 출력을 다음 명령어의 입력으로 전달동작방식:
exec 라는 시스템 호출로 새로운 프로세스를 실행하고, 그 과정에서 fork라는 메커니즘으로 자식을 만들어 연결예시:
$ ls | sort | lessls: 현재 디렉토리의 파일/디렉토리 목록을 출력.sort: ls의 출력 결과를 알파벳 순으로 정렬.less: 정렬된 결과를 페이지 단위로 표시.$ ls -l | grep key | lessls -l: 파일의 상세 정보 출력.grep key: 출력된 내용 중 key라는 문자열을 포함한 행만 필터링less: 필터링된 결과를 페이지 단위로 표시.key를 포함하는 파일 정보만 확인.파일 위치를 모를때 찾는 방법
$ sudo find / -name access.logfind 명령어를 이용하여 access.log 파일의 위치를 찾는다.
grep : 특정 문자열을 포함하는 데이터를 필터링(문자열 중 특정 정규표현식 조건 검색)
tail : 파일의 마지막 몇 줄을 실시간으로 출력(실시간 로그 조회 중 원하는것만 조회 시)
로그에서 특정 문자열 검색:
tail -f /opt/homebrew/var/log/nginx/access.log| grep favicon.icoaccess.log의 새로 추가되는 로그 중 favicon.ico를 포함한 행만 출력.정규표현식 사용:
tail -f /opt/homebrew/var/log/nginx/access.log | grep -E "127.0.0.1" (정규표현식)127.0.0.1이 포함된 로그만 출력.tail -f /opt/homebrew/var/log/nginx/access.log | egrep "127.0.0.1" (정규표현식)-E : 정규표현식 사용을 위해서는 (정규표현식 쉽게 이해하기)-i : 대소문자 구분없는 검색을 위해서는-n : 검색된 라인 넘버 표기 (그 외의 다른 옵션들을 알고싶다면, 더 많은 활용법을 알고싶다면)검색된 라인 주변 출력:
$ grep -A 10 -B 10 "ERROR" /var/log/app.log-A 10 혹은 -B 10, -C 10 : 해당 검색된 라인의 앞과 뒤에 50라인씩 추가로 출력해보면 좋다.개념:
> : 출력 결과를 파일에 쓰기(덮어쓰기).>> : 출력 결과를 파일에 쓰기(이어쓰기).< : 파일의 내용을 명령어의 입력으로 전달.예시:
pbcopy : 클립보드에 복사하기 (매번 마우스로 드래그 복사 X) | 윈도우에서는 clip 명령어를 사용
pbcopy < ~/.gitignore_global | 윈도우에서는 clip < ~/.gitignore_global
~/에 위치해있는 .gitignore_global파일의 내용을 클립보드로 복사.clip사용)pbcopy < .ssh/id_rsa.pub | 윈도우에서는 clip < ~/.gitignore_global
.ssh/에 위치해있는 id_rsa.pub파일의 내용을 클립보드로 복사.clip사용)cat ~/.gitignore_global | pbcopy | 윈도우에서는 cat ~/.gitignore_global | cliip
~/에 위치해있는 .gitignore_global파일의 내용을 클립보드로 복사.clip사용)echo 복습 : echo "Hello, World!" >> example.txt
echo 명령어의 출력("Hello, World!")을 example.txt 파일에 저장example.txt 파일이 이미 존재하면 이어서 씀.cat 복습 : cat example.txt > copy.txt
example.txt의 내용을 읽어와 copy.txt에 저장.copy.txt가 이미 있으면 기존 내용을 덮어씀.&&(AND) : 독립적으로 개별 수행 → 앞의 명령어가 성공했을 때만 다음 명령어 실행
| 파이프와 달리 앞 명령어 결과가 다음 명령어의 입력으로 들어가지 않음$ mkdir new_dir && cd new_dir
mkdir new_dir이 성공하면(new_dir 폴더 생성), cd new_dir 실행.;(SEQUENTIAL) : 앞 명령어가 성공 혹은 실패해도, 다음 명령어 실행 (&& 보다 완화된 연결)
$ mkdir new_dir; cd new_dir
mkdir new_dir의 성공 여부에 상관없이 cd new_dir 실행.&(BACKGROUND EXECUTION) : 앞 명령어와 다음 명령어 동시실행 → 명령어를 백그라운드 실행하여 비동기처리를 할수있음.
$ sleep 10 &
sleep 10이 백그라운드에서 실행되고, 쉘이 즉시 다음 명령어를 입력받을 준비.|| : 앞 명령어가 실패하면, 다음 명령어 실행
$ mkdir new_dir || echo "Directory creation failed"
mkdir new_dir이 실패하면 "Directory creation failed" 메시지 출력.chmod : 파일 권한 설정
chmod 700 executable.sh = Owner 에게 4(READ) + 2(WRITE) + 1(EXECUTE) 권한 추가chmod +rwx all-allow.sh = chmod a+rwx all-allow.sh = chmod 777 all-allow.shchmod u+rwx executable.sh = chmod 700 executable.shu : userg : groupo : othersa : allchmod 400 readable.sh = Owner 에게 4(READ) 권한 추가chmod 500 excutable.sh = Owner 에게 4(READ) + 1(EXECUTE) 권한 추가tar : TAR 로 압축된 파일 풀기 | tar -xvf apache-tomcat-9.0.16.tar
-x : extract 압축풀기 ↔ -c : create 압축하기-v : verbose 어떤 파일이 풀리는지 상세히보기 - 어떤 파일이 처리되는지 출력.-f : filename 지정 - 특정 파일을 처리tar -cvf archive.tar file1 file2 : file1과 file2를 archive.tar라는 파일로 압축.sudo : 관리자 권한 실행
su root 권한 얻기, switchsudo apt update : 패키지 목록 업데이트를 관리자 권한으로 실행.sudo su : 관리자 계정으로 전환.su와의 차이sudo : 특정 명령어만 관리자 권한으로 실행.su : 관리자 계정으로 전환하여 계속 권한 유지.vi : 텍스트 에디터 ↔ code : VSCode 에디터