[Linux] 자주 사용하는 명령어 정리

식빵·2025년 12월 9일

linux

목록 보기
5/5
post-thumbnail

디렉토리 통으로 복사해오기

#  dir_a 디렉토리 자체를 copy_a 안에 복사함
cp -rv "~/dir_a" "~/copy_a"

# dir_a 안의 파일, 서브디렉토리 모두 copy_a 로 복사. 단 숨김 파일/디렉토리는 복사 X
cp -rv "~/dir_a/*" "~/copy_a"  

# dir_a 안의 파일, 서브디렉토리 모두 copy_a 로 복사 + 숨김 파일/디렉토리도 모두 복사
cp -rv "~/dir_a/." "~/copy_a"



디렉토리 중 일부 제외하고 복사

rsync -av --exclude='node_modules' /mnt/c/frontend/ frontend
# /mnt/c/frontend/ 라는 외부 디렉토리의 내용을 모두 현재 경로의 frontend 디렉토리 안으로 옮긴다.



디렉토리에서 특정 파일 찾아내기

# 현재 디렉토리에서 java 파일을 재귀적으로 찾아냄
find "${PWD}" -type f -n "*.java"

# 현재 디렉토리에서 bck 디렉토리를 재귀적으로 찾아냄
find "${PWD}" -type d -n "*bck"

#  "-maxdepth 1" 처럼 옵션을 줘서 재귀 depth 지정 가능



디렉토리 내 파일 권한 한방에 변경하기

find . -type f -exec chmod 644 {} + # 모든 파일의 file permission 변경
find . -type d -exec chmod 755 {} + # 모든 디렉토리의 file permission 변경 
# find "${PWD}" ~~ 처럼해도 좋음

참고

-exec 명령어 {} \; = 파일 하나씩 실행 (느림)
-exec 명령어 {} + = 파일 여러 개 묶어서 실행 (빠름)

# \; 사용 - 각 파일마다 개별 실행
find . -type f -name "*.txt" -exec echo "Processing:" {} \;
# 출력:
# Processing: file1.txt
# Processing: file2.txt
# Processing: file3.txt

# + 사용 - 한 번에 실행
find . -type f -name "*.txt" -exec echo "Processing:" {} +
# 출력:
# Processing: file1.txt file2.txt file3.txt



ssh client key 생성 및 원격서버 전달

# 일단 파일이 있는지 조회
ls ~/.ssh/id_rsa*

# 만약 위에서 조회됐다면 이 과정은 생략
ssh-keygen -t rsa

# 공개키 전송하여 원격서버 .ssh/authorized_keys 에 등록
ssh-copy-id 원격서버_계정@원격서버_HOST

# 이후에 비번없이 로그인
ssh 원격서버_계정@원격서버_HOST

# 참고: 만약에 AWS pem key 사용이면?
ssh -i "${PEM_KEY_경로}" 원격서버_계정@원격서버_HOST

# 꼭 pem 키가 이나더라도, client 단의 개인키가 .ssh/id_rsa 가 아니면
#  로그인할 때 -i 옵션을 줘야 한다.

참고하면 좋은 글 : SSH 공개키 인증을 사용하여 접속하기



ssh 로그인 시 서버 별칭 사용하기

touch ~/.ssh/config # 파일이 없다면 생성
chmod 600 ~/.ssh/config # 보안을 위한 file permission 변경

# 이후에 파일에 아래처럼 입력
vim ~/.ssh/config

내용은 아래와 같은 패턴으로 작성하면 된다.

Host server-alias
	HostName 10.0.0.10
    User dailycode
    Port 2222
	IdentityFile ~/.ssh/id_rsa_company 
  • Host : 별칭, 와일드 카드 사용 가능
  • HostName : 실제 원격서버 IP 혹은 도메인 명(ex: naver.com)
  • User : 접속 계정 명
  • Port : ssh 연결 포트
  • IdentityFile : ssh client 의 개인키 경로

그외에도

  • ServerAliveInterval :
    연결 유지를 위해서 ssh 서버로 몇초마다 신호를 보낼지 지정
    기본적으로는 0

  • ServerAliveCountMax:
    만약에 신호를 보내게 되면 재시도 횟수를 얼마나 할지를 지정
    기본으로 3. ServerAliveInterval 와 함께 사용했을 때 효력이 있음.



tar.gz 압축 및 압축해제

# tar.gz로 압축
tar -czf archive.tar.gz .

# 특정 디렉토리/파일 제외하면서 압축

tar -czf archive.tar.gz --exclude='*.log' .

# timestamp suffix 주기
tar -czf archive_$(date +%Y%m%d_%H%M%S).tar.gz .

# 압축 해제
tar -xzf archive.tar.gz



zip 압축 및 압축해제

# zip 파일 압축
zip -r $(basename $PWD)_$(date +%Y%m%d_%H%M%S).zip .

# 몇가지 제외시키면서 압축하기
# 아래 예시는 .claude 디렉토리와 *.log 파일들 모두 제외하면서 압축하는 것
zip -r \
$(basename $PWD)_$(date +%Y%m%d_%H%M%S).zip . -x ".claude/*" -x "*.log"


# 압축 해제
unzip archive.zip -d /path/to/destination/

# 참고: 내용만 확인
# unzip -l archive.zip



비밀번호 변경

# 자기자신의 비번 변경
passwd

# 다른 사용자 비번 변경
sudo passwd linux



파일에서 특정 단어 갯수 세기

cat *.xml | grep -c "<row>"
profile
백엔드 개발자로 일하고 있는 식빵(🍞)입니다.

0개의 댓글