Essential Linux Commands
명령
용법
--help
* 함께 사용하는 모든 플래그 반환
ls
디렉토리의 내용을 나열합니다.
ls -l : 파일 상세 정보 표시
ls -l {경로} : 심볼릭 경로 → 링크된 대상의 경로
ls -a : 숨김 파일을 표시
ls -t : 파일 만든 시간순(최신순)으로 표시
ls -rt : 파일을 오래된 시간 순으로 표시
ls -s : 파일 사이즈 출력
ls -sh : 파일 사이즈 깔끔하게 출력(K, M, G)
ls [pattern] : pattern에 해당하는 파일 혹은 폴더들을 검색(한줄로 출력)
ls | grep [pattern] : pattern에 해당하는 파일 혹은 폴더들을 검색
alias
별칭 정의 또는 표시
unalias
이미 정의된 별칭에서 alias 제거 명령어
pwd
현재 디렉터리 절대 경로 출력
L : $PWD 값을 출력하며 pwd 명령어의 기본 설정은 L option
P : 물리적 디렉터리를 출력.
cd
‘change directory’ 액세스 하려는 디렉터리로 전환
앞에 ‘/’의 유무에 따라 절대경로와 상대경로 지정 가능.
cd ~ : 기본 디렉터리로 이동
cd / : 최상위 디렉터리로 이동
cd : 홈 폴더로 이동(’cd /’ 도 마찬가지)
cd .. : 한레벨 위로 올림
cd - : 이전 디렉토리로 복귀
cp
파일과 폴더 복사 명령어.
cp [option] [카피할 대상 파일/폴더 이름] [새로운 파일/폴더 이름]
디렉터리 전체 복사 : cp -r dir_to_copy/ new_copy_dir/ <Linux에서는 폴더가 슬래시(/)로 끝남>
i : 복사 될 파일 이름이 존재하면, 덮어쓰기 여부 물음
b : 복사 될 파일 이름이 이미 존재하면, 백업 파일을 생성
f : 복사 될 파일이 이름이 이미 존재 할 경우, 강제로 덮어쓰기 함
r : 하위 디렉터리까지 모두 복사합니다.
a : 원본 파일의 속성, 링크 정보까지 모두 복사함
p : 원본 파일의 소유자, 그룹, 권한 등의 정보까지 모두 복사함
v : 복사 진행 상태를 출력
rm
파일 및 디렉터리 제거(rm -r 디렉터리삭제시)
rm -f filename : filename 파일을 강제로 삭제함
rm -r [디렉터리] : 디렉터리를 삭제함. 폴더 삭제시 -r 필수
mv
파일 및 디렉터리를 이동(이름 바꾸기)합니다. mv [source_file] [destination_folder]/
mkdir
디렉터리를 생성합니다. 하위 디렉터리 생성 : mkdir -p movies/2004/
rmdir
비어있는 디렉터리를 삭제합니다. 파일이 들어있다면 'rm -r'을 실행해야 합니다.
man
다른 명령의 매뉴얼 페이지를 표시합니다. ex) man mkdir
touch
파일 생성 및 파일이 존재한다면 최종 수정 시간을 업데이트
touch file1 : file1 파일을 생성
touch -c file1 : file1의 시간을 현재시간으로 바꿈
touch -t YYYYMMDDhhmm file1 : file1의 날짜 정보를 설정과 같이 변경
touch -r [기준파일][갱신할파일] : 날짜 정보를 왼쪽의 기준파일과 동일하게 바꿈
chmod
파일 권한 변경 r(읽기), w(쓰기), x(실행)
./
명령 자체는 아니지만 쉘 터미널에서 직접 시스템에 설치된 인터프리터를 사용해 실행 파일을 실행할 수 있음.
exit
셸 세션을 종료. 해당 세션을 자동으로 닫음
sudo
‘superuser do’ 루트 사용자 역할을 할 수 있게 함.
shutdown
컴퓨터 전원을 끔. 중지, 재부팅시 사용 가능
htop
시스템 리소스를 관리할 수 있는 대화형 프로세스 뷰어 - sudo yum install htop (aws linux htop down)
unzip
.zip 파일 추출
apt
, yum
, pacman
패키지 관리자에 액세스하고 Linux 배포판에 따라 하나 또는 다른 패키지 관리자를 사용 Debian 기반(Ubuntu, Linux Mint) : sudo apt install gimp Red Hat 기반(Fedora, CentOS) : sudo yum install gimp Arch 기반(Manjaro, Arco Linux) : sudo pacman -S gimp
echo
정의된 텍스트 표시(출력)
cat
터미널에서 직접 파일을 만들고, 보고, 연결 가능.
파일 내용 화면에 출력
cat > file1 : file1 생성 및 내용 작성.
cat file1 file2 : file1, file2의 내용을 출력
cat file1 file2 | more : file1과 file2의 내용 페이지별로 출력
cat file1 file2 | head : file1과 file2의 내용 1~10줄까지 출력
cat file1 file2 | tail : file1과 file2의 내용 끝부터 10줄까지 출력
ps
현재 셸 세션이 실행 중인 프로세스 확인
kill
프로세스 종료 명령어(-9:강제종료, -15:정상종료)
ping
해당 컴퓨터가 네트워크에서 응답하는지 확인하는 명령어이다. 상대 컴퓨터가 아무런 이상없이 작동되는지를 네트워크상에서 체크할 때 주로 사용 됨.
vim
오픈 소스 터미널 텍스트 편집기.
history
이전에 사용한 명령어들이 포함된 목록 출력
history n : 최근 사용한 명령어 n개 뽑기
passwd
사용자 계정의 비밀번호 변경
which
셸 명령의 전체 경로를 출력 ex) which ls
shred
파일 내용 복구가 어렵게 만드는 명령어. -u 를 같이 사용하면 파일을 즉시 삭제함
tail
파일의 마지막 줄을 출력. -n 명령어를 사용해 줄 갯수 범위 설정.
tail -10 [filename] : 뒷순서부터 10줄의 파일 내용을 출력함
tail -n +1 [filename] : file의 전체 내용을 거꾸로 출력함
head
-n 플래그를 사용해 파일의 윗쪽 줄 부터 출력
grep
정규표현식과 일치하는 줄을 검색하여 인쇄함. ex) grep “linux” long.txt ------------------------------------------- [options] -i : 대소문자 구분 없이 -v : 일치하지 않는 줄을 검색(부정 검색) -r 또는 -R : 디렉터리와 그 하위 디렉터리까지 재귀적으로 검색 -l : 일치하는 줄이 있는 파일의 이름 출력 -n : 일치하는 줄과 함께 줄 번호도 출력 -e : 여러 패턴을 검색할 때 사용 → -w : 패턴이 전체 단어와 일치할 때만 결과를 출력 -o : 일치하는 패턴만 출력 -c : 일치하는 줄의 개수만 출력
whoami
현재 사용중인 사용자 이름 표시
whatis
다른 명령에 대한 한 줄 설명을 인쇄 ex) whatis python, whatis whatis
wc
텍스트 파일의 “단어 수”를 반환 함 wc long.txt # 37 207 1000 long.txt 라인, 단어, 1000바이트크기, 파일이름 반환. 단어 수만 필요하면 wc -w long.txt
uname
‘Unix name’ 약어.유용하게 사용할 수 있는 운영 체제 정보를 인쇄
-s 또는 --kernel-name: 커널 이름을 출력합니다.
-n 또는 --nodename: 노드 이름을 출력합니다.
-r 또는 --kernel-release: 커널 릴리스 번호를 출력합니다.
-v 또는 --kernel-version: 커널 버전을 출력합니다.
-m 또는 --machine: 하드웨어 아키텍처를 출력합니다.
-p 또는 --processor: 프로세서 유형을 출력합니다.
-i 또는 --hardware-platform: 하드웨어 플랫폼을 출력합니다.
-o 또는 --operating-system: 운영 체제를 출력합니다.
neofetch
Linux 배포판의 ASCII 로고 옆에 커널 버전, 셸, 하드웨어 등 시스템 정보를 표시하는 CLI(명령줄 인터페이스) 도구
find
정규 표현식을 기반으로 디렉토리 파일 계층 구조를 검색함
file [flags] [path] -name [expression]
find ./ -name “long.txt” # long.txt 파일 검색
wget
(World Wide Web get) 인터넷에서 파일을 다운로드하는 명령어
less
파일을 페이지 단위로 나타냄. more보다 더 많은 기능이 있고 스크롤이 가능함
spacebar : 다음페이지
b : 이전페이지
more
텍스트 형식으로 작성 파일을 페이지 단위로 화면에 출력한다.
space bar : 다음 페이지로 이동
B : 앞 페이지로 이동
Q : 종료
more error.log #error.log 텍스트 파일을 화면에 출력
more +10 error.log #error.log 텍스트 파일의 10번째 행부터 출력
file
해당 파일이 어떤 종류인지 표시
clear
현재 사용 중인 터미널 화면을 깨끗하게 지워준다.
redirection
‘>’ : 기존 파일 내용을 지우고 저장
‘>>’ : 기존 파일 내용 뒤에 이어서 저장
‘<’ : 파일 데이터를 명령에 입력(cat과 비슷)
java -jar -Dspring.profiles.active=prod "$PROJECT_ROOT/jungsuri-0.0.1-SNAPSHOT.jar" > "$APP_LOG" 2 > "$ERROR_LOG" & 를 해석해보면 prod환경의 java jar파일을 실행시키고 APP_LOG와 ERROR_LOG쪽에는 파일을 새로 작성하는 형태임
cal
달력을 출력함
nslookup [도메인주소]
DNS 서버에 질의하여, 도메인의 정보를 조회하는 명령어입니다.
pstree
부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여줍니다.
systemctl
서비스 시작/중지/재시작 : systemctl start/stop/restart 서비스이름
서비스 상태 확인 : systemctl status 서비스이름
서비스 사용/안함 설정 : systemctl enable/disable 서비스이름
mount
lsof (List Of Files)
default
lsof path/to/file : 파일을 열고 있는 프로세스 확인
-i options 프로토콜 이름과 포트 번호를 명시하면 특정 포트를 사용하는 프로세스 정보를 얻을 수 있음
lsof -i 4 : IPv4로 오픈한 소켓에 대한 정보들이 나온다
lsof -i 6 : IPv6에 대한 정보를 얻을 수 있음
lsof -i : 현재 열려있는 모든 네트워크 포트 정보를 확인할 수 있음
lsof -i tcp/udp : tcp혹은 udp 포트 정보를 확인할 수 있음
-p options
lsof -p [PID] : PID에 해당하는 프로세스의 열린 파일 목록 보기
-u options
lsof -u [username] : 특정 사용자가 열어둔 파일을 확인할 수 있습니다.
PID로 process name 얻기
cat /proc/[PID]/status | grep Name
process name 으로 process 정보 얻기
ps -ef | grep [process name]
cut
라인에서 필드를 추출하는데에 사용됨.
-f{몇번째열} ex)-f1(첫번째 열)
-d{구분자} : 열을 구분하는 구분자를 작성 ex) cut -f1 -d: /etc/passwd : /etc 경로에 passwd파일의 ‘:’(d:) 를 구분자로한 첫번째 열(f1)의 값들을 출력.
nslookup
DNS 서버의 작동을 테스트하는 명령어
netstat
네트워크 연결 상태, 라우팅 테이블, 인터페이스 상태 등을 보여주는 명령어입니다.
(netstat /an과 netstat -na 는 같은 것.)
-n : 호스트명, 포트명을 lookup하지 않고 그대로 IP, Port번호로 보여준다. -a : 모든 네트워 상태를 보여준다. -l : LINTEN 상태인 서비스 포트를 보여준다. -t : TCP 프로토콜만 보여준다. -u : UDP 프로토콜만 보여준다. -p : 해당 포트를 사용하는 프로그램과 프로세스ID(PID)를 보여준다. -r : 라우팅 테이블 출력 -s : 프로토콜별(IP, ICMP, TCP, UDP 등)로 통계를 보여준다 -c : 1초 단위로 결과값을 연속적으로 보여준다.
telnet
네트워크를 통해 다른 시스템에 접속하는데 사용하는 명령어. telnet [호스트] [포트]
보안상의 이유 권장되지 않음. 대신 ssh 로 데이터를 암호화하여 접속하는 것을 권장함
hostnamectl
현재 시스템 호스트 이름 및 운영 체제 정보를 표시함
ss
SocketStatistics : 네트워크 소켓 정보를 확인하는 명령어(netstat와 비슷)
Last updated