$ pwd
/home/itholic
"print working directory"
현재 작업중인 디렉토리 정보 출력
항상 현재 위치 확인하기!
# 어느곳에 있든 홈 디렉토리로 바로 이동
cd ~
"change directory"
경로 이동
경로 마지막에 /(슬래쉬)는 입력하지 않아도 무방하나, 디렉토리라는 것을 명확히 나타내기 위해 편의상 입력
# 예시1 : d 디렉토리로 이동 + 현재 위치 확인
cd /a/b/c/d/
pwd
# 예시2 : b 디렉토리로 이동 + 현재 위치 확인
cd /a/b/
pwd
# 예시3 : r 디렉토리로 이동하기
cd /q/w/e/r/
# 예시1 : 현재 위치가 a/b/ 디렉토리 일 때, d 디렉토리로 이동 + 현재 위치 확인
cd ./c/d/
pwd
# 예시2 : 현재 경로 /a/b/c/b/ 일 때, 이전(상위) 디렉토리로 2회 이동 + 현재 위치 확인
cd ../../
pwd # 이때 현재 경로 : /a/b/
a/b/까지의 경로는 자신의 위치이므로, .(마침표)로 표기됨
이후, 나머지 경로인 /c/d/ 를 입력하여 경로 이동함
# 예시3 : 현재 경로가 b 디렉토리일 경우, r 디렉토리로 이동하기
cd ../../q/w/e/r/
../ 로 a로 이동
../ 로 최상위 디렉토리로 이동
q/w/e/r/ 로 r 디렉토리까지 이동
'현재 자신이 있는 위치를 기준으로’ 이동
현재 자신이 있는 위치는 .
(마침표) 로 표기
..
: 이전(상위) 디렉토리로 이동
-l
: 상세히 출력
-a
: 경로안의 모든 파일을 나열 (숨김파일도 포함)
-R
: 위치한 디렉토리 하부 디렉토리의 파일까지 모두 출력
-r
: 내림차순 정렬
-t
: 수정된 시간을 기준으로 정렬
# 예시1 : 디렉토리 목록 확인
$ ls
testfile1 testfile2 testfile3
# 예시2 : 자세한 내용 출력. 내용 > 퍼미션(권한), 포함된 파일수, 소유자, 그룹, 파일크기, 수정일자, 파일 이름
$ ls -l
total 0
-rw-r--r-- 1 itholic 197121 0 11월 6 22:08 testfile1
-rw-r--r-- 1 itholic 197121 0 11월 6 22:08 testfile2
-rw-r--r-- 1 itholic 197121 0 11월 6 22:08 testfile3
# 예시3 : 숨겨진 파일을 포함한 모든 파일 보여주기
$ ls -a
./ ../ testfile1 testfile2 testfile3
# 예시4 : 숨겨진 파일을 포함한 모든 파일 자세히 출력
$ ls -al
total 4
drwxr-xr-x 1 itholic 197121 0 11월 6 22:08 ./
drwxr-xr-x 1 itholic 197121 0 11월 6 22:08 ../
-rw-r--r-- 1 itholic 197121 0 11월 6 22:08 testfile1
-rw-r--r-- 1 itholic 197121 0 11월 6 22:08 testfile2
-rw-r--r-- 1 itholic 197121 0 11월 6 22:08 testfile3
# 예시5 : 시간의(t) 역순으로(r) 자세히(l) 출력 (아래부터 최신순 정렬)
## logs 디렉터리에서 가장 최근에 발생한 log 파일을 찾는 데에 유용
ls -lrt
"list"
디렉토리 목록 확인
ll
: ls -l 과 동일(l은 long을 의미). 디렉토리 목록을 상세히 출력예시1 : 디렉토리 목록 확인
$ ls
testdir/ testfile
# 예시2 : 앞에 파일이 오고, 뒤에도 파일이 오는 경우
# cp [복사할 파일명] [복사한 파일의 새로운 파일명]
$ cp file1 file2
# 예시3 : 앞에 파일이 오고, 뒤에 디렉토리가 오는 경우
# cp [복사할 파일명] [복사할 파일을 붙여넣을 디렉토리명]
$ cp file1 file2 dir1/
dir1/ file1 file2 # 여기서는 file1, file2 처럼 여러개의 파일을 복사했음
# 예시4 : 디렉토리 전체 복사
cp -r dir1/ dir2/
dir1/ dir2/
"copy"
파일 or 디렉토리 복사(사실상 복사해서 붙여넣는 것)
-r
옵션 필요팁!
tree 명령어 사용시, 디렉토리 구조를 트리 형석으로 확인 가능
$ tree dir1 $ tree dir2
# mv [옵션] [이동시킬 디렉토리/파일] [이동 될 위치]
# 예시1 : 현재 디렉토리의 log.txt 파일을 folder 디렉토리로 이동
mv log.txt folder
# 예시2 : 현재 디렉토리의 log.txt 파일의 이름을 log2.txt로 변경
mv log.txt log2.txt
# 예시3 : /app/bin/logs 디렉토리의 log.txt 파일을 /app/dw 디렉토리로 이동
mv /app/bin/logs/log.txt /app/dw
"move"
용도
파일 or 디렉토리 이동
이름 변경
# 예시1 : new_folder 디렉토리 생성
mkdir new_folder
# 예시2 : /home/user/위치에 new_folder 디렉토리 생성
mkdir /home/user/new_folder
# 예시3 : new_folder, new_folder2, new_folder3 디렉토리 생성
mkdir new_folder new_folder2 new_folder3
# 예시4 :
# 예시5 :
# 예시6 :
"make directory"
디렉토리 생성
-p
옵션 : 하위 디렉토리까지 한 번에 생성경로를 지정하지 않으면 현 위치를 Defualt로 함
# 예시1 : 디렉토리 목록 확인
$ ls
testdir/ testfile1 testfile2
# 예시2 : rm -f 파일 명
$ rm -f testfile1
$ ls
testdir/ testfile2
# 예시3 : rm -rf 디렉토리 명
$ rm -rf testdir/
$ ls
testfile2
"remove"
파일 or 디렉토리 삭제
-r
옵션 필요-f
옵션 : 삭제 여부 묻지 않고 바로 삭제주의!
디렉토리 삭제 시에는 하위 디렉토리까지 모두 삭제돼버림. 복구 불가
# 최근 업데이트 일자 확인
$ ls -l
total 0
-rw-r--r-- 1 itholic 197121 0 11월 6 22:08 testfile1
# touch [파일명]
$ touch testfile1
$ ls -l
total 0
-rw-r--r-- 1 itholic 197121 0 11월 6 22:43 testfile1
$ touch testfile2
$ ls -l
total 0
-rw-r--r-- 1 itholic 197121 0 11월 6 22:43 testfile1
-rw-r--r-- 1 itholic 197121 0 11월 6 22:44 testfile2
ls -l
: 최근 업데이트 일자 확인# 예시1 : a.txt 파일 편집하기
$ vi a.txt
# 예시2 : .bash_profile 을 vi편집기로 실행
vi .bash_profile
.bash_profile
- 사용자 계정에서 환경을 설정해주는 파일
- 리눅스에서 너무 긴 명령어 이거나 특정 파일을 실행할 때
보다 간결, 쉽게 사용하기 위해서 명령어를 명명하기 위해 사용하는 파일
. .bash_profile
bash_profile을 재실행, 한번더 읽음 (.은 현재 디렉토리를 의미)
단축키
- Ctrl + B : 한 페이지 위로 이동 (log 볼 때 유용)
- Shift + g : 가장 아래로 이동
- Shift + G : 가장 위로 이동
i키
: 명령모드 -> 입력모드로 전환
ESC키
: 입력모드-> 명령모드로 전환
u키
: Ctrl + z
Ctrl+r
: 되돌리기한 것을 다시 실행(복구)
n키
: 뒤로 검색
N키
: 앞으로 검색
:q
: 종료 (저장하지 않고 실행하면 오류 발생)
:q!
: 저장하지 않고 종료
:w
: 저장
:wq
: 저장 후 종료
:wq 파일 이름
: 저장후 파일 이름 지정
# 현재 디렉토리에서 test로 시작되는 파일 찾기
find . -name "test*"
# 현재 디렉토리에서 test로 끝나는 파일 찾기
find . -name "*test"
# 현재 디렉토리에서 test가 포함되는 파일 찾기
find . -name "*test*"
# 현재 디렉토리에서 .txt 확장자 모두 찾기
find . -name "*.txt"
# 현재 디렉토리에서 .txt 확장자 파일 검색 후 모두 삭제
find . -name "*.txt" -delete
# 현재 디렉토리에서 모든 디렉토리 찾기
find . -type d
# 현재 디렉토리에서 모든 파일 찾기
find . -type f
# 현재 디렉토리에서 menu.jsp가 들어가는 파일 찾기
find . -name "*menu.jsp*" -type f
find . -name "*.jsp" | xargs grep [찾을문자열]
# 나에게 라이브러리 등의 도구들이 다 있는지 체크
./configure
# root 계정의 환경 변수를 가져오지 않고, 현재 계정의 환경 변수를 사용
su root
"Switch User"
현재 계정을 로그아웃하지 않고, 다른 계정으로 전환
# 기본 /root 디렉토리로 이동 (환경 변수를 가져온다는 의미)
su - root
"SuperUser DO"
현재 계정에서 단순히 root 의 권한 만을 빌리는 것
실행하기 전 현재 사용자의 비밀번호를 물어봄
# zip 압축 해제
# unzip 압축 파일명.zip
unzip test.zip
# 특정 디렉토리에 zip 파일 압축 해제
# unzip 압축해제할파일명.zip -d 원하는폴더경로
unzip test.zip -d ./home/devkuma
# tar 압축 해제
tar -xvf 파일명.tar
# 특정 디렉토리에 모든 파일을 test.zip으로 압축
zip test.zip ./*
# 현재 폴더와 그 하위 폴더까지 모두 압축
zip -r test.zip ./*
# 모든 파일
./*
# 다음 명령어도 이어서 수행하도록
;
# 확장자가 sh인
*.sh
# 확장자가 sh인 파일에 대해 모든 사용자에 모든 권한 추가
chmod 777 *./sh
# 톰캣 서버 시작 - 톰캣(tomcat) 실행. tomcat의 bin 경로인 경우
./startup.sh
# 톰캣 서버 시작 - 톰캣(tomcat) 실행. tomcat의 bin 경로가 아닌 경우
/usr/local/tomcat/bin/startup.sh
# 톰캣 서버 종료 - tomcat의 bin 경로인 경우
./shutdown.sh
# 톰캣 서버 종료 - tomcat의 bin 경로가 아닌 경우
/usr/local/tomcat/bin/shutdown.sh
사용자와 운영체제 커널 간의 인터페이스 역할(다리 역할)을 수행
텍스트 기반의 명령어 해석기
GLI 환경(터미널)에 사용자가 입력한 명령을 해석/관리해서 운영체제가 해당 명령어를 알아들을 수 있게 해주는 프로그램
/usr/local/tomcat
- 리눅스에서 설치한 톰캣의 경로
# 전역 변수 및 환경 변수의 값 확인
echo $환경_변수
-r
: 하위 디렉토리를 포함한 모든 파일에서 검색
-m 숫자
: 최대로 표시될 수 있는 결과 제한
-c
: 일치하는 행의 수 출력
-v
: 일치하지 않는 행만 출력
-n
: 포함된 행의 번호를 함께 출력
-l
: 패턴이 포함된 파일의 이름 출력
-i
: 대소문자 구분 X
-I
: 대소문자 구분 O
-w
: 단어와 일치하는 행만 출력
-x
: 라인과 일치하는 행만 출력
-E
: 패턴을 정규표현식으로 찾기
-F
: 패턴을 문자열로 찾기
grep [옵션] [정규표현식] [파일명]
# mylog.log 파일의 끝에서부터 새로 추가되는 내용을 모니터링하면서, 그 中 'aaa'라는 문자열이 포함된 라인들만 출력
tail -f mylog.log | grep 'aaa'
# 하위 디렉토리를 포함한 모든 파일(r)에서 hso10 이 포함된 행 번호(n)를 대소문자 구분없이(i) 검색
grep -rni hso10
파일 내에서 특정 문자열을 검색
pipe(|)를 사용해 다른 명령어와 함께 사용하는 경우가 많음
# systemctl [명령] [서비스명]
systemctl start httpd # 아파치 서비스 시작
sysyemctl start tomcat.service # 톰캣 서비스 시작
# 서비스 상태 확인 (서비스가 구동 중인지 아닌지 확인 가능)
systemctl status
e 옵션
: (커널 프로세스를 제외한) 모든 프로세스를 출력
f 옵션
: 풀 포맷으로 보여줌 (UID, PID 등... 을 함께 표시)
# 실행중인 프로세스 목록과 상태 확인
ps [옵션]
# 풀 포맷으로 모든 프로세스의 목록과 상태를 확인
ps -ef
# 모든 프로세스 中 [찾을대상]만 출력
ps -ef | grep [찾을대상]
ps -ef | grep java
ps -ef | grep tomcat
ps -ef | grep apache
"process state"
가동중인 상태
중지된 상태
source [환경 설정 파일명]
# %s/[원본단어]/[바꿀단어]
:%s/foo/bar # 모든 'foo'라는 문자열을 'bar'로 한꺼번에 치환
# %s/[원본단어]/[바꿀단어]/[옵션]
:%s/foo/bar/i # 대소문자 구분없이 치환 (foo부터 Foo, FOo, FOO, fOo, fOO, foO, FoO 등... 까지도)
:%s/foo/bar/g # 전역 치환
:%s/ORACLE/oracle/g
"stream editor", "스트림 편집기"
주로 문자열을 치환 or 삭제할 때 사용
# 파일의 끝 부분을 보여주는 명령어
# 주로 로그 파일의 최근 내용을 확인하고 싶을 때 사용 (system.println(); 와 같은 로그가 보임)
tail
# f옵션 ("follow")
# tail 명령이 종료가 되지 않고, 계속적으로 대기하면서 들어오는 문자를 출력
# log 파일을 실시간 모니터링 시 사용 가능
# 파일의 마지막 10라인을 실시간으로 계속 출력
tail -f
# 서비스 중인 톰캣의 로그 확인
tail -f /usr/local/tomcat/logs/catalina.out
# nohup.out의 로그들을 출력
tail -f nohup.out
# jhoms 재기동 할 때 확인
tail -f app.console
# tomcat 재기동 할 떄 확인
tail -f ../logs/catalina.out
catalina.out
- 서버상에서 발생한 모든 내용(서버의 기동, 정지, 개시 등)을 기록한 로그가 쌓인 파일
- 주의!
- vi catalina.out 으로 열 경우, 매우 용량이 크다면 서버가 터질 수 있음
- 이땐 로그를 여러 파일로 나눠서 여는 방법을 사용하기도 함
- 예시 : split -b 800m catalina.out.2020-09-25 800m 단위로 로그파일을 나눠서 생성
nohup
- "no hangups"
- nohup 명령을 실행한 위치에 'nohup.out'이라는 log 파일이 생성됨
- 눅스, 유닉스에서 명령어나 쉘 스크립트 파일(*. sh)을 데몬 형태로 실행시키는 프로그램
- 터미널이나 세션이 종료되어도, 해당 프로세스가 종료되지 않고 진행한 작업이 완료될 때까지 수행하도록 함
# oradcle 계정으로 변경
su - oracle
# Oracle 데이터베이스에 관리자로 접속할 때, 사용자가 아닌(/) 슈퍼관리자인 SYS 계정으로 접속
sqlplus / as sysdba
# 사용자를 삭제할건데(drop user), 사용자의 이름인 intraware와 관련된 모든 객체(테이블, 뷰, 인덱스 등)를 함께 삭제
SQL> drop user intraware cascade;
User dropped. # 처리 결과
# Oracle 데이터베이스를 시작
SQL> startup
ORACLE instance started. # 처리 결과
# 세션을 수정할건데(alter session), 내부 파라미터의 값 "_oracle_script"을 true로 설정
SQL> alter session set "_oracle_script"=true;
Session altered. # 처리 결과
gg
: 첫 행으로 이동
Shift
+ g
: 마지막 행으로 이동
윈도우 OS 에서 설치없이 리눅스 명령어 연습할 수 있는 사이트
https://bellard.org/jslinux/
참고: [linux] 리눅스 기본 명령어/자주 쓰는 명령어
참고: [linux] 리눅스 cd 명령어 실습 (절대경로, 상대경로)
참고: [Linux] 리눅스 ls 명령어 사용법 & 옵션 정리 (디렉토리 목록 확인)
참고: [리눅스 명령어][파일 처리] 파일 복사(cp)
참고: [Linux] 리눅스 mv 명령어 사용법, 리눅스 파일 이동 하는 법
참고: [Linux] 리눅스 mkdir 명령어(디렉토리 생성) 사용법 & 옵션 정리
참고: 리눅스 기초 명령어3 - ll, ls -R, ls -F
참고: [리눅스] vi 에디터 사용법
참고: 리눅스(Linux) su / su - / sudo 명령어, 차이
참고: 리눅스 cp 명령어 사용법 정리 (파일, 디렉토리 복사, 백업)
참고: 쉘(Shell, sh)에 대해여...(개요, 종류, Bash의 기본기능)
참고: [Linux] tar, gz, zip 압축 및 압축 해제
참고: [Linux] CentOS 7 자주쓰는 Tomcat 사용 명령어
참고: [Linux] 리눅스 echo 명령어, echo 옵션 및 사용법
참고: [Linux] systemctl 명령어 & 프로세스 상태 확인
참고: [리눅스/Vi] vi editor 문자열 치환(replace) 방법
참고: netstat 명령어 옵션 및 사용법
참고: 리눅스(Linux) netstat 명령어 사용법, 네트워크 상태 확인하기
참고: nohup 사용법과 nohup.out 파일 명 변경, 로그 없이, 날짜 별로 rotation 하는 방법 ( Linux )
참고: 리눅스 vi editor line(행) 이동 관련 명령 키
참고: 리눅스 많이 사용하는 기본명령어 5가지 모음
참고: [Linux] 리눅스 find 명령어 (파일 및 폴더 찾기, 옵션)