TIL

250327 목 TIL

파란배개 2025. 3. 27. 14:49

bash에서

- start .

-> 탐색기 열기

- pwd

-> 현재 디렉토리 확인

-rmdir dir1

-> dir1 폴더 삭제

-rm -r bashTest

-> bashTest 폴더와 내부 파일 삭제

- rm -rf ~/bashTest

-> bashTest 폴더와 내부 파일 강제 삭제

-> 권한 제한도 삭제 확인도 없이 그냥 삭제해버림

- mkdir ~/bashTest

->bashTest 폴더 생성

-mkdir dir1 dir2

-> dir1, dir2 폴더 한번에 생성

-mkdir -p ./dir1/dir2

-> 현재 디렉토리에서 dir1폴더를 만들고 그 안에 dir2 폴더를 만든다

-> -p는 필요한 경우 상위 디렉토리도 생성하는 옵션.

- cd ~/bashTest

->bashTest 폴더 경로로 이동

- touch test.txt

-> test.txt라는 빈 파일 생성

->동일한 이름의 기존 파일이 있다면 파일을 변경하지 않지만 변경시간은 최신화된다

- ls

-> 현재 폴더의 파일 폴더 보기

-ls -a

-> 숨김 파일까지 보기

-ls -l

-> 상세보기

-ls -al(보통 ll로 alias 되어 있음)

-> 숨김 파일 보기 & 상세보기

-alias ll="ls -al"

-> ll이라는 alias로 ls -al을 지정

-> 프로필에 등록하지 않는 한 터미널을 종료하면 사라진다

-ls -R

-> 디렉토리 내용 전체를 재귀적으로 트리 형태로 탐색해 표시

-clear

->터미널 창에서 화면 정리

-cd -

-> 직전 디렉토리로 이동

-cd ~

-> 최상위 디렉토리로 이동

-cd ..

-> 상위 디렉토리로 이동

-echo "hello world"

-> hello world를 화면에 표시

-echo "hello world" > test.txt

-> test.txt 파일에 내용을 덮어씌운다

-> test.txt파일이 없다면 만들어서 넣는다

-echo "hello world" >> test.txt

-> test.txt파일에 내용을 추가한다

-cat test1.txt

-> test1.txt 파일을 읽어서 화면에 표시

-cat test1.txt test2.txt > mergeText.txt

-> test1.txt와 test2.txt의 내용을 mergeText.txt에 추가한다

-less longText.txt

-> 긴 텍스트파일의 내용을 페이지단위로 볼 수 있음

-> q로 종료 가능

-head -n longText.txt

-> 긴 텍스트파일의 첫 n번째 줄까지 표시(n은 생략하면 10)

-tail -n longText.txt

-> 긴 텍스트파일의 마지막 n번째 줄까지 표시(n은 생략하면 10)

-cp from.txt to.txt

-> from.txt 파일 내용을 to.txt라는 파일에 복사

-cp from.txt dir1/

->from.txt 파일을 dir1 폴더 안에 복사

-cp from.txt dir1/copy.txt

->from.txt 파일을 dir1 폴더 안에 copy.txt라는 이름으로 복사

-cp -r dir1 dir2

-> dir1 폴더를 dir2라는 이름으로 복사

-cp r test.txt dir1 dir3/

-> test.txt와 dir1 폴더를 dir3 안에 복사

-cp -i text.txt copy.txt

-> 만일 copy.txt가 이미 디렉토리에 존재하는 경우 덮어쓰기 전에 물어봄

-mv test.txt dir1/

-> dir1 폴더에 test.txt를 이동

-mv test.txt rename.txt

-> test.txt를 rename.txt로 이름을 변경

-find ~/testDir/ -name "*.txt"

-> testDir  디렉토리 안의 txt 파일 검색

-find ~/testDir/ -size +1c

-> testDir  디렉토리 안의 1바이트 이상인 파일 검색(-1c라면 1바이트 이하인 파일 검색)

-find ~/testDir/ -mtime -1

-> testDir 디렉토리 안의 파일 중 만들어진지 1일 이하의 파일 검색(분단위도 가능)

-grep "search word" text1.txt

-> test1.txt에서 search word를 검색해서 search word가 포함된 그 줄들을 보여줌

-> -i 옵션을 붙이면 대소문자 구분 안 함

-grep -v "word" text.txt

-> word가 포함되지 않은 줄들을 보여줌

-grep -v "mug" text.txt | grep "jar" text.txt

-> "mug"가 포함되지 않은 것들 중 "jar"가 포함된 줄들을 출력

-history

-> 실행했던 명령어 목록과 번호 확인

-history | grep 검색어

-> 검색어로 실행했던 명령어 검색

-!번호

-> 특정 번호에 해당하는 명령어 다시 실행

->!!

->가장 마지막에 실행한 명령어 다시 실행

-!명령어

-> 가장 최근에 실행한 특정 명령어 다시 실행(이전 실행한 명령어를 검색해 그 명령 다시 실행)

 

----

bash 말고 리눅스에서 실행 가능한 명령어들

- procps-ng 설치 후(dnf install -y procps-ng)

 

-ps

-> 현재 실행중인 프로세스 확인

-ps -e

-> 모든 실행중인 프로세스를 확인

-ps aux

-> 실행 중인 프로세스를 상세히 확인

-ps aux

-> 실행 중인 프로세스를 상세히 출력

-ps aux | grep 프로세스명

-> 실행중인 프로세스 중 프로세스명인 특정 프로세스만 출력

-kill [pid]

-> ps로 볼 수 있는 프로세스 아이디 pid 에 해당하는 프로세스를 종료

-kill -9 [pid]

-> ps로 볼 수 있는 프로세스 아이디 pid 에 해당하는 프로세스를 강제 종료

- pkill 프로세스명

-> 프로세스명과 일치하는 모든 프로세스를 종료

-ls - l

->파일의 현재 권한을 확인

->권한이 drwdr-xr-x라고 한다면

->첫 번째 d는 디렉토리라는 뜻이며 파일이면 -로 표현됨

->나머지 9자리를 3자리씩 끊어서 w는 읽기 권한/r는 쓰기 권한/x는 실행 권한

->각 세 자리는 각각 소유자, 그룹, other의 권한을 나타냄

-chmod +x 파일명 

-> 실행 권한(x를 하면 실행 권한이지만 읽기 권한은 r, 쓰기 권한은 w) 추가(+를 -로 변경해 권한을 뺏을 수 있음)

-chmod 500 파일명

->r은 4, w는 2, x는 1로 해서 숫자를 더해 권한을 변경할 수 있음

->500이므로, 소유자의 권한 중 읽기 권한(4), 실행 권한(1)을 주고 그룹과 other에게는 권한을 주지 않는다는 뜻

->만약 chmod 777 파일명이라면 모든 사용자에게 모든 권한을 준다는 뜻

-chown  사용자 파일명

->파일의 소유자를 변경

- chown  사용자: 그룹 파일명

-> 파일의 소유자와 그룹을 변경.

- chown -R 사용자:그룹 디렉토리명

-> 디렉토리 및 내부 파일들의 소유권을 변경

-df -h

-> 전체 디스크 사용량을 GB/MB 단위로 표시

-du -h

-> 하위 디렉토리의 크기 확인

-du -sh

->해당 디렉토리의 총 크기 확인

-diff text1.txt text2.txt

->두 파일 차이점 비교

- diff -q text1.txt text2.txt

-> 두 파일이 다른지 여부만 출력

- diff -y text1.txt text2.txt

-> 두 파일의 차이점을 나란히 표시

- diff --suppress-common-lines text1.txt text2.txt

-> 변경된 줄만 출력

- diff -r text1.txt text2.txt

->두 디렉토리의 파일 차이점 비교

-sed 's/기존문자열/새문자열/' 파일명

-> 특정 문자열을 한 줄에 하나만 찾아 변경

-sed  's/기존문자열/새문자열/g' 파일명

-> 특정 문자열을 전부 찾아 변경

-sed '숫자s/기존문자열/새문자열/' 파일명

-> 특정 줄에서만 문자열 변경

-sed '숫자d'

-> 특정 줄 삭제

-sed '/패턴/d' 파일명

-> 특정 패턴이 포함된 줄 삭제

-sed -i 's/기존문자/새문자/g' 파일명

-> 원본 파일을 직접 수정

-awk '{print $1}' 파일명

->1번 열 추출

-> 행렬 형태의 텍스트 파일에서 특정 열을 추출하고 가공하는데 사용

-awk '/패턴/ {print $1}' 파일명

->  특정 패턴이 포함된 행의 $1열 출력

- awk '$2 > 25 {print $1, $2}' 파일명

-> $2가 25보다 큰 행의 $1, $2열 출력

- awk '{printf "출력형식", $1, $2, $3}' 파일명

-> 출력 형식을 지정해서 $1, $2, $3열 출력

-> 출력 형식의 예시 "%-10s %-10s %-5d\n"

- awk 'NR > 1 {print $1}' 파일명

-> 첫 행을 제외하고 나머지 행 중 $1열 출력

- awk 'NR > 1 {sum += $2} END {print "총 나이:", sum}' 파일명

-> 첫 행을 제외하고 나머지 행 중에서, $2열들을 sum으로 합하고, 총 나이: sum을 출력하도록 함

----

dnf install -y wget으로 설치 후 진행

-wget URL

-> 특정 URL의 파일 다운로드

-wget -O 새이름 URL

-> 특정 URL의 파일을 다운로드하고 다른 이름으로 저장

- wget -b URL

-> 특정 URL의 파일을 백그라운드 다운로드

- wget -i 파일명

-> 파일에 저장된 여러 개의 URL을 한번에 다운로드

-curl 파일명

->파일 받아오지만 저장하지 않고 출력

-> wget처럼 파일 다운로드도 가능하지만, curl은 기본적으로 응답을 보여주기만 하며, API 테스트나 HTTP 요청 조작을 할 때 주로 사용

-curl -o 파일명

->파일 다운로드

-curl -I URL

-> http 응답 헤더 정보만 출력

-curl -H 헤더 URL

-> 요청 시 헤더를 포함해 요청

-curl -X POST -H "Content-Type: application/json" -d '데이터' URL

->예시: curl -X POST -H "Content-type: application/json" -d '{"name": "john"}' URL

-> JSON 데이터를 URL에 POST 요청으로 전송.

-ln -s ~/bashWork/dirA/dirB/example.txt ~/bashWork/dirA/symlink.txt

-> example.txt를 가리키는 symlink.txt라는 심볼릭 링크를 생성

- realpath 파일경로

-> 파일의 절대 경로를 출력

-realpath 심볼릭링크

-> 심볼릭 링크가 가리키는 실제 경로 출력

-stat 파일명

-> 파일 상세보기(크기, 소유자, 수정시간 등)

-stat 심볼릭링크

-> 심볼릭 링크 자체의 상세보기

-stat -L 심볼릭링크

->링크가 가리키는 실제 파일 상세보기

-locate [파일명]
-> 색인된 데이터베이스를 활용하여 빠르게 파일 검색

->  find보다 빠르지만, 최신 파일이 즉시 반영되지 않음

-updatedb
-> 색인 데이터베이스를 최신 상태로 업데이트

-locate -i "*.확장자"
-> 특정 확장자의 파일 검색 (대소문자 무시)

-locate -S
-> 색인된 파일 개수 및 통계 확인

-find [경로] -name "패턴" | xargs 명령어  
-> 검색한 결과를 xargs를 통해 명령어에 전달

-xargs -I {} 명령어 {}  
-> {} 위치에 파일명을 넣어서 실행

-xargs -n 숫자  
-> 입력을 숫자 개씩 나누어 처리

-xargs -P 숫자  
-> 최대 숫자 개의 작업을 병렬로 실행

 

 

----

dnf install -y tree로 설치 후 진행

-tree  
-> 현재 디렉토리 구조를 트리 형태로 출력

-tree 디렉토리주소

->디렉토리 주소 아래의 디렉토리 구조를 트리 형태로 출력

-tree -L 숫자  
-> 특정 깊이까지만 출력

-tree -h  
-> 파일 크기 포함하여 출력

-tree -d  
-> 디렉토리만 출력

-tree -P "패턴"  
-> 특정 패턴의 파일만 출력

-tree > 파일명  
-> 트리 구조를 파일로 저장

-sort 파일명  
-> 기본 정렬 (알파벳순)

-sort -r 파일명  
-> 역순 정렬

-sort -n 파일명  
-> 숫자 크기 기준으로 정렬

-sort -nr 파일명  
-> 숫자 역순 정렬

-sort -k숫자 파일명  
-> 숫자번째 열 기준으로 정렬

-sort | uniq  
-> 중복 제거 후 정렬

-wc 파일명  
-> 줄, 단어, 문자 개수를 출력

-> 여러 파일을 입력하면 각각의 값과 총합을 출력

-wc -l 파일명  
-> 줄 개수만 출력

-wc -w 파일명  
-> 단어 개수만 출력

-wc -m 파일명  
-> 문자 개수 출력

-wc -c 파일명  
-> 파일의 바이트 크기 출력

-echo "내용" | tee 파일명  
-> 출력 내용을 화면과 파일에 저장

-echo "내용" | tee 파일1 파일2  
-> 여러 파일에 동시에 저장

-echo "내용" | tee -a 파일명  
-> 기존 파일 내용을 유지하면서 추가

-명령어 | tee 파일명  
-> 명령어 출력을 화면과 파일에 저장

-명령어 | sudo tee 파일명  
-> sudo 권한이 필요한 파일 수정 시 유용

-명령어 &  
-> 백그라운드에서 실행

-jobs  
-> 실행 중인 백그라운드 작업 목록 확인

-Ctrl + Z  
-> 현재 실행 중인 작업을 중지

-bg %번호  
-> 중지된 작업을 백그라운드에서 다시 실행

-fg %번호  
-> 백그라운드 작업을 포그라운드로 전환

-kill %번호  
-> 특정 백그라운드 작업 종료

-nohup 명령어 &  
-> 터미널 종료 후에도 실행 유지

-nohup 명령어 > output.log 2>&1 &  
-> 출력을 output.log 파일에 저장하며 실행

->2가 에러, 1이 출력

-ps aux | grep "프로세스명"  
-> 실행 중인 프로세스 확인

-kill PID  
-> 특정 프로세스 종료

----

dnf install -y epel-release && dnf install -y htop 로 설치 후 진행

-top  
-> 실시간으로 CPU, 메모리 사용량 및 프로세스를 모니터링

->htop를 쓰므로 top는 설치 안 돼 있음

-htop  
-> top의 개선된 UI 버전, 키보드 조작이 더 쉬움

-top -u 사용자명  
-> 특정 사용자 프로세스만 보기

-htop 사용 시 F3(검색), F5(트리 보기), F9(프로세스 종료)  
-> 단축키를 활용한 빠른 조작 가능