새로운 것을 사용할 때 마다 계속해서 갱신할 예정입니다.
파일 기본 명령어
whoami
: 로그인한 사용자 ID를 알려줌- whoami를 했을 때 root이 나오면 슈퍼관리자를 뜻함
sudo
: root 권한(관리자 권한)으로 실행하기sudo 명령어
형식으로 사용
pwd
: 현재 디렉토리(경로) 위치cd
: 디렉토리 이동cd 경로
형식으로 사용cd /
: root 디렉토리( / )로 이동cd 절대경로
: 루트 디렉토리 기준으로 절대경로를 사용하여 이동cd .
: 현재 디렉토리로 이동cd ..
: 상위 디렉토리로 이동cd 상대경로
: 상대 경로를 이용하여 이동- ex)
cd ../user
-> 현재 디렉토리 기준 상위 디렉토리의 user 디렉토리로 이동)
- ex)
cd ~
: 사용자 홈 디렉토리로 이동cd -
: 이전 디렉토리로 이동 (뒤로가기, 이전에 위치해있던 경로로 이동)
ls
: 현재 위치한 디렉토리의 파일 목록 출력- 파일별 권한 읽는 법 (자세한 용어는 chmod에서 다룹니다)
chmod
: 파일 권한 변경chmod 권한명령어 파일명
형식으로 사용chmod -R 권한명령어 디렉토리명
를 하면 디렉토리와 디렉토리 내부의 모든 파일을 지정한 권한으로 바꿔준다.- 명령어 위치에는 숫자로 권한을 부여하는 방식과 문자로 부여하는 방식이 있다.
- 사용자 종류 (ugo)
- u : user
- g : group
- o : other
- a : all
- 권한 (permission) 종류 (rwx/421)
- r : read -> 4
- w : write -> 3
- x : execute -> 1
- 사용자 종류 (ugo)
- 명령어 위치에는 숫자로 권한을 부여하는 방식과 문자로 부여하는 방식이 있다.
cat
: 파일의 내용을 출력cat 파일명
rm
: 파일 및 폴더 삭제rm (-rf) 파일명
- rf 옵션은 그 디렉토리와 디렉토리 내부를 모두 삭제한다.
- r 옵션 : 하위 디렉토리를 포함한 모든 파일 삭제
- f 옵션 : 강제로 파일이나 디렉토리 삭제
- 기본적으로 리눅스에서는 윈도우와 같은 휴지통이 없어 바로 지워지기 때문에 root와 같은 슈퍼 관리자로는 이러한 작업을 하지 않는다.
rm -rf * // 현재 디렉토리 기준 전체 삭제
mkdir
: 디렉토리 생성mkdir 디렉토리명
rmdir
: 디렉토리 삭제rmdir 디렉토리명
rm -R 디렉토리명
orrm -rf 디렉토리명
해도 지워진다.rm 디렉토리명
만하면 안지워진다.
- 파일생성
touch 파일명
vi 파일명
cat > 파일명
rm -rf * // 현재 디렉토리 기준 전체 삭제
표준 입출력 (Standard Stream)
- stdin - 표준 입력 스트림
- stdout - 표준 출력 스트림
- stderr - 표준 오류 스트림
리다이렉션 (Redirection)
- 표준 스트림의 흐름을 바꿔줄 수 있다.
> , <
로 흐름을 제어함- 기존 파일에 추가는
>> 또는 <<
을 사용한다. - 주로 명령어 표준 출력을 화면이 아닌 파일에 쓸 때 사용한다.
응용 프로그램 > 파일
-> 응용 프로그램의 출력이 파일로 들어간다. (프로그램 결과물을 저장하고 싶을 때)응용 프로그램 < 파일
-> 파일의 내용이 응용 프로그램의 입력으로 들어간다.
// ls로 출력되는 표준 출력 스트림의 방향을 text.txt로 바꿔주기 때문에
// ls의 결과물인 파일목록이 콘솔창에 뜨는 것이 아닌 text.txt에 기록된다.
ls > text.txt
// text.txt의 내용이 head라는 명령의 입력으로 들어가서 출력된다.
// head는 파일의 처음부터 10 라인 까지 출력해주는 명령
head < text.txt
// 기존에 있던 text.txt 파일에 ls 출력 결과를 추가적으로 저장한다.
// > 만 써서 집어넣으면 덮어 씌워버리기 때문에 >> 를 사용해야한다.
ls >> text.txt
파이프 (Pipe)
- 두 프로세스 사이에서 한 프로세스의 출력 스트림을 다른 프로세스의 입력 스트림으로 사용할 때 사용
|
를 사용하여 표현
// ls 명령을 통한 출력 내용이 grep 명령의 입력 스트림으로 들어가서 grep을 출력
// grep 명령은 입력 스트림 내용 중에 grep 뒤에 붙는 내용이 들어있는 내용만 출력
// 즉, ls로 들어온 값에 text.txt라는 내용이나 text라는 내용이 있는 부분들을 뽑아내준다.
// ls는 곧 현재 디렉토리의 파일 목록이니 현재 디렉토리에 text.txt가 있는지 검색하는 것과 동일
// ls | grep 파일명 은 현업에서 특정 파일이 존재하는지 찾을 때 사용된다.
ls | grep text.txt
ls | grep text
// 둘다 text.txt가 출력된다.
- grep : 검색 명령
- grep (option) (pattern) 파일이나 디렉토리명
- option 종류
- -i : 대소문자 구분하지 않고 검색할 때
- -v : 패턴을 포함하지 않는 것을 검색
- -l : 파일명만 출력
- -r : 하위 디렉토리까지 검색
- -c : 패턴과 일치하는 라인의 개수만 출력
- -n : 검색 결과의 각 행의 맨 앞에 행 번호를 넣음
- option 종류
- grep (option) (pattern) 파일이나 디렉토리명
프로세스 관련
- foreground process : 쉘에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못하는 프로세스
- 프로세스가 진행 중인 상황에서 다른 프로세스를 실행시킬 수 없다.
- 기본적으로 프로세스들은 foreground process 다.
- 도중에 작업을 취소시키고 싶은 경우엔 Ctrl + c 를 눌러서 프로세스를 종료하면 된다.
- background process : 사용자 입력과 상관없이 실행되는 프로세스
- 해당 프로세스 실행 시, 맨 뒤에
&
를 붙여준다 - 처리시간이 오래걸리는 프로세스에 사용한다
- 처리를 하는 도중에도 다른 프로세스 처리가 가능
- 해당 프로세스 실행 시, 맨 뒤에
sleep 120 &
ls // 바로 작동
sleep 120
ls // 작동 X
프로세스 관련 명령어
jobs
: background로 실행되는 프로세스들의 상태를 표시- jobs 출력 해석
- [번호] : job 번호
- -,+
- + : fg나 bg 명령어 수행 시 , 가장 먼저 가져와서 실행될 프로세스
- - : 현재 실행중인 job이 끝나면 바로 다음에 수행될 프로세스
- Running, Stopped, Done : 현재 작업 상태
- jobs 출력 해석
bg
: foreground 프로세스를 background 로 전환- 이미 foreground에서 프로세스가 돌아가고 있으면 아무 입력도 안되기 때문에 Ctrl + Z 를 눌러서 작업을 일시중지 시킨 후 bg를 입력해야한다.
fg
: background 프로세스를 foreground 로 전환fg %job번호
형식으로 사용
nohup
: 사용자가 로그아웃 하거나 터미널창이 닫혀도 실행중인 명령어를 종료하지 않고 계속 실행ps
: 현재 실행중인 프로세스 상태 확인 (사용자가 실행한 프로세스만 나오는 것이 기본값)- 옵션
- -a : 시스템을 사용하는 모든 사용자의 프로세스 출력
- -u : 프로세스 소유자에 대한 상세 정보 출력
- -l : 프로세스 관련 상세 정보 출력
- -x : 터미널에 로그인한 후 실행한 프로세스가 아닌 프로세스들도 출력, 주로 데몬 프로세스 확인용
- daemon process : 사용자 모르게 시스템 관리를 위해 실행되는 프로세스, 보통 부팅 시에 자동 실행
- -e : 해당 프로세스와 관련된 환경 변수 정보도 함께 출력
- -f : 프로세스 간 관계 출력
- 옵션
// 보통 아래와 같이 사용
// 모든 프로세스 + 프로세스 실행한 사람 + 터미널 로그인 이전 프로세스
ps aux
ps aux | grep 프로세스명 // 이것도 실무에서 많이 사용, 특정 프로세스가 실행중인지 확인하고 정보출력
- kill : 프로세스 종료
- 사용법
- kill %j(ob number)
- kill pid
- kill -9 : 작업 강제 종료
- Ctrl + c : foreground 프로세스 종료
- 사용법
kill %2 // 백그라운드 프로세스 중 job number가 2인 프로세스 종료
kill 41189 // pid가 41189인 프로세스 종료
// 만약 41189가 종료가 안됐다면
kill -9 41189 //pid가 41189인 프로세스 강제종료, 실무에선 두번일 하기 싫으니 처음부터 강제종료 시킨다.
하드 링크와 소프트 링크
cp
: 파일 복사
cp a.txt b.txt // a를 b로 복사, b가 없다면 b생성, 있다면 덮어씌움
cp -rf folder1 folder2 // folder1 디렉토리 안에 있는 것을 모두 복사하여 folder2 디렉토리로 복사
cp -rf * folder2 // 현재 디렉토리에 있는 모든 파일을 복사하여 folder2에 복사
- 하드 링크
ln A B
- 파일을 복사하는 명령어지만, 원본이나 복사본을 변경하면 둘다 같은 내용으로 변경된다.
- 둘 중 하나를 삭제하더라도 삭제하려는 파일만 지워지지 나머지는 그대로 남는다.
In test1.txt test_hard.txt
// test_hard.txt는 일종의 test1.txt의 바로가기로
// 만약 test1.txt에서 내용을 변경하면 test_Hard.txt를 열어봤을 때도 내용이 변경되어있음
// 그 반대도 성립한다.
// 만약 둘 중 하나를 삭제하더라도 다른 하나는 계속 존재한다.
- 소프트(심볼릭) 링크
ln -s A B
- 복사하지만 바로가기와 동일
- 복사본을 통해 내용 변경가능
- ls -al을 하면 파일이 소프트 링크인 파일인지 확인가능
- 원본을 삭제하면 바로가기(복사본) 이용 불가능
ln -s test1.txt test2.txt
// test1.txt의 바로가기인 test2.txt 를 생성(복사)
// test2.txt에 들어가서 내용을 수정하더라도 test1.txt에 반영된다.
// 다만, 원본파일인 test1.txt를 삭제하면 test2.txt는 이용할 수 없다.
- 소프트링크과 하드링크의 구조
Ubuntu 패키지 관리
- CentOS,Fedora 같은 RedHat 계열 배포판은 RPM이라는 패키징 시스템 이용
- ubuntu 같은 데비안 계열 배포판은 deb라는 패키징 시스템 이용
- 패키지 관리자를 통해 패키지 저장소에 접근하여 소프트웨어 업데이트,다운로드 등을 한다.
패키지 관련 명령어
- 관리자 권한(sudo)으로 실행해야한다.
sudo apt-get update
: ubuntu 패키지 인덱스 정보 업데이트 (최신버전 확인 등)sudo apt-get upgrade
: ubuntu 패키지 업그레이드- 한번에 모든 프로그램을 업그레이드 해버리기 때문에 호환잘되는 걸로 버전 맞춰놨는데 다 업데이트 되어서 에러가 날 수도 있으니 함부로 하면 안된다.
sudo apt-get install 패키지명
: 패키지 설치sudo apt-get remove 패키지명
: 설정파일을 제외한 패키지 삭제sudo apt-get --purge remove 패키지명
: 설정파일을 포함한 패키지 삭제- 이렇게 삭제해도 정상적으로 삭제 안될 수도 있다. 설치를 할 때 신중할 것
댓글