골방잡담
실무에 많이 사용하는 리눅스 명령어 본문
리눅스 책을 보면서 공부를 하고 있는데, 실무에서 자주 쓰는 것들은 업무효율을 위해서 한번쯤 날을 잡고 외워봐야겠다는 생각으로 정리를 해보았다.
디스크/디렉토리 현황 확인
디렉토리 확인
-
tree -L 2
디스크 용량 확인
-
df -h : disk 현황 확인 , df -ah 편하게 + 메모리 현황까지 보기. (파일 시스템 단위)
-
du -sh : 디렉토리별 용량 확인. -s는 지정 디렉토리 하위의 파일/디렉토리의 용량을 모두 합친 것을 출력하는 것이고, h는 human
할당된 용량 확인
-
sudo lvs : logical volumes 로 외우면 됨
전체 메모리,cpu 현황
-
Glances
심볼릭 링크로 연결된 링크 경로까지 보기
-
realpath
file {파일명}
-
파일 종류 확인 가능 (디렉토리인지, jpg인지, 등등)
stat {파일명}
-
접근시간이랑 변경시간 등 파일에 대한 정보 확인 가능 (!!)
압축된 파일 보기 (압축을 따로 풀지 않고 볼 수 있음)
-
zcat
-
zamore
-
zless
디렉토리/파일 관리
cp
-
cp -p : 기존 파일의 생성일/소유자/날짜 정보등을 모두 가져옴
-
cp -R : 하위 폴더/파일까지 복사
ln -s
-
심볼릭링크 생성
다른 서버로 파일 보내기
-
scp ./파일 stgefss01://경로~~/폴더
파일압축
-
gzip
-
gzip -r (하위 디렉토리까지)
-
gunzip {파일명} : 압축 해제
권한 변경
-
chmod
-
chmod -R : 하위 디렉토리/파일 모두 변경
-
rwx : 4, 2, 1
-
자주 쓰는 권한 :
-
755 (소유자는 모두, 나머지는 읽기+실행) => (실행해야만하는) 디렉토리에 많이 씀
-
644 (소유자는 읽기/쓰기, 나머지는 읽기) => (실행 안 되는) 파일에 많이 씀
-
-
- chown -R 사용자:그룹 : 하위 디렉토리까지 소유자 변경
파일 찾기
-
find -name 패턴
-
이 때 주의할 점은, 완벽하게 일치하는 파일명을 넣거나 아니면 *로 뒤에 랜덤값을 넣어줘야함.
ubuntu@ip-172-31-43-2:~/commandpractice$ find ./ -name result
ubuntu@ip-172-31-43-2:~/commandpractice$ find ./ -name result*
./result.txt
-
find -newer 파일 (이 파일 이후에 생성된 파일)
-
-exec 명령어 {} \; : 어떤 파일들을 찾고 그 파일들에 대해서 -exec 뒤의 액션을 해라
-
find ./ -empty : 빈 파일 / 폴더 찾기
-
특정 단어 들어있는 파일 찾기 ★★★
-
grep 할 때 대문자 H를 넣어주면, 어느 파일에서 찾았는지도 같이 나오기 때문에 써주면 좋을 듯
find ./ -type f -name "*.txt" -exec grep -nriH 'Geek' {} \;
vi 관련 명령어
읽기전용으로 파일 열기 - 단, wq! 하면 수정사항 저장 가능
-
vi -R [파일이름]
이동 방향키
-
h, l : 왼쪽/오른쪽
-
j,k : 아래/ 위
-
W : 다음 단어의 처음으로 이동
-
0 혹은 ^ : 현재 행의 맨 앞으로 이동
-
$ : 현재 행의 맨 끝
-
H : 현재 화면의 맨 위
-
L : 현재 화면의 맨 아래
-
Ctrl + F : 한 화면 다음으로 이동 (forward)
-
Ctrl + B : 한 화면 이전으로 이동 (backward)
-
[행번호] G : 원하는 행으로 이동
저장 관련
-
:wq test.txt : text.txt라는 이름으로 문서가 저장됨.
내용 편집
-
x : 한 글자 삭제
-
dw : 한 단어 삭제
-
dd : 줄 단위 삭제
-
u : 실행취소
-
yy : 복사
-
p / P : 붙여넣기 (아랫줄로 / 윗줄로 )
검색
-
/ : 아래 방향으로 검색
-
? : 위 방향으로 검색
-
n / N : 순방향으로 다음 / 역방향으로 다음
-
/\c{문자열} : 슬래시(/) + 백슬래쉬(\) + 소문자 c + "찾을 문자열" 로 대소문자 구분 없이 검색 ★★★
-
:se ic : 라는 명령을 준 후, 찾기를 하면 대소문자 구분이 없어집니다. set ignorecase 라는 명령의 준말입니다. ★★
기타
-
:set nu : 행번호 표시
-
:s/word1/word2/ : 현재 행에서 word1 들을 word2로 바꾸기
-
:1, .s/word1/word2/ : 1부터 현재 행의 word1들을 word2들로 바꾸기
-
:%s/word1/word2/g : 파일 전체 에 있는 word1들을 word2들로 바꾸기
-
v : i 누르듯, v를 누르면 visual mode 진입하여 여러 줄 선택 가능
-
norm i# : 주석처리 (v키로 여러 줄 선택 후 하면 됨)
-
norm x : 주석처리 해제
파일 내용 보기
-
less : 일부만 보기
-
space : 한 화면씩 밑으로
-
enter : 한 줄씩 밑으로
-
b : 한 화면 이전으로
-
/ : 이후에서 찾기
-
? : 이전에서 찾기
-
q : 종료
-
head : 파일 앞부분 출력
-
head -n 20 파일명 : 앞에서 20행까지 보여줌
-
diff : 차이점 출력
-
변경 기호도 보이는데, a : added, d : deleted , c: changed 임
-
wc : 파일 내용 통계
-
wc -c : 바이트 수 출력
-
wc -m : 문자 수 출력
-
wc -l : 행 수 출력
-
wc -w : 단어 수 출력
-
cut : 파일 내용을 특정 구분자로 필드 나누어서 보고 싶을 때 ! (엑셀 나누기처럼)
-
: 를 구분자로 해서 나누고, 그 중 1번째 필드만 출력할 것.
-
-
cut -d : 필드 구분자를 설정
-
cut -f : 지정된 필드를 출력
-
cut -d : -f 1 /etc/passwd
-
grep
-
grep -v : 특정 문자를 포함하지 않는 행을 출력
- grep -v "#" filename | grep -v "^$" (주석과 빈줄 모두 빼고 보기)
-
grep -n : 행번호와 함께 출력
-
grep -i : 대소문자 구분
-
grep "문자열" * : 현 디렉토리의 모든 파일에서 문자열 검색
-
grep -r "문자열" * : 하위 디렉토리를 포함한 모든 파일에서 문자열 검색
-
sort : 파일 내용 정렬 (알파벳순)
-
-r : 역순으로 정렬
-
sort 파일명 : 파일 내용을 행 별로 정렬
-
ll | sort 이런식으로 파일 이름을 sort할수도 있음
SHELL 작성시 유용
awk
- awk는 파일 또는 파이프를 통해 입력 라인을 얻어와 $0라는 내부 변수에 라인을 입력. 각 라인은 레코드라고 부르고, newline에 의해 구분
-
라인은 공백을 기준으로 각각의 필드나 단어로 나뉜다. 필드는 $1부터 시작. 많게는 100개 이상의 필드를 저장할 수 있음
-
내장 변수인 FS라고 부르는 필드 분리자가 공백을 할당받는다. 필드가 콜론이나 대시와 같은 문자에 의해 분리되면 새로운 필드 분리자로 FS의 값을 변경할 수 있다
-
awk는 화면에 필드를 출력할 때 print 함수를 사용
-
콤마는 출력필즈 분리자(OFS)와 매핑되어 있으며 공백을 할당받음
-
awk '{print $0}' a.txt : 전체 print
-
awk '{print $1}' a.txt : 첫 부분만 print
-
awk '/error/' a.txt : error 있는 줄만 print
-
awk -f [awk 명령파일] [awk 명령을 적용할 텍스트파일] : 이렇게 명령내용을 따로 파일로 빼놓을수도 있음
sed
- 원본 파일을 수정하는 것이 아니라, 원본파일을 변형해서 보고 싶을 때 (예를들면 로그 파일을 뭔가 보기 좋게 변형해서 보고 싶을때) 사용할 수 있음
-
sed G a.txt : 한 줄씩 띄어서 보이게 하기
-
sed '/error/{x;p;x;}' a.txt : error라는 단어 위에 줄 한 칸씩 띄우기
-
sed '/error/G' a.txt : error 단어 밑에 줄 한칸씩 띄우기
-
sed -n /error/p a.txt : 특정 패턴 이 있는 줄만 출력
-
sed 's/[Ll]ife/Error/g' a.txt : 특정 단어를 모두 바꿔서 보기
네트워크 확인
lsof
-
list open files. 시스템에 열린 파일 목록을 알려주고 사용하는 프로세스, 디바이스 정보, 파일의 종류등 상세한 정보를 출력해 준다.
-
리눅스와 유닉스는 추상화된 파일 시스템(VFS - Virtual File System)을 사용하므로 일반 파일, 디렉터리, 네트워크 소켓, 라이브러리, 심볼릭 링크 등도 모두 파일로 처리되므로 lsof 에서 상세한 정보를 확인할 수 있다.
-
lsof -i TCP:22
-
특정 포트로 열린 파일들을 볼 수 있음
-
lsof -c httpd
-
특정 커맨드로 연 파일들 볼 수 있음
netstat -anp | grep PORT | grep LISTEN
- 내 서버에 어떤 포트 사용하고 있는지 확인
기타 잡다구리
crontab
-
crontab -l : 리스트 조회
-
crontab -e : 수정/삭제 등
환경변수 파일 동기화
-
source .bashrc
ps -ef 옵션
- ps -eo pid,lstart,cmd
'PC방에서 > 리눅스' 카테고리의 다른 글
ssh 공개키 인증 설정 방법 (패스워드 없이 ssh 하기) (0) | 2021.01.24 |
---|---|
버추얼박스로 나만의 CentOS 7 리눅스 서버 환경 만들기 (2) | 2020.10.20 |
리눅스 파일시스템, 디스크 관리 개념 정리 (2) | 2020.10.10 |
리눅스 복습 (feat. 생활코딩) - 2 (0) | 2020.07.26 |
리눅스 복습 (feat. 생활코딩) - 1 (0) | 2020.07.22 |