ls
ls -l
은 자세히 보기(-
은 파라미터(parameter)라는 의미)mkdir 새로 생성할 디렉토리명
cd 이동할 디렉토리의 경로명
change directorycd /home/sua
절대 경로cd ..
부모 디렉토리로 이동하는 명령. 참고로 현재 디렉토리는 .
상대 경로
(최상위 디렉토리는 루트(root) 디렉토리라고 하며 /
이다.)clear 화면을 깨끗이
rm 파일명
rm -r 디렉토리명
ls --help
rm --help
mkdir --help
pwd --help
man ls
man rm
특정 단어를 검색하고 싶을 때는 /
입력 후 원하는 단어 검색, 알파벳 N
으로 이동
Q
로 빠져나옴help는 화면을 빠져나가지 않고 간단한 매뉴얼을 출력 man은 전용페이지로 이동해서 상세한 매뉴얼을 출력
사용설명서 보는 법
1) mkdir --help
mkdir -p dir1/dir2/dir3/dir4
부모 디렉토리를 생성하고 자식 디렉토리를 만든다.
mkdir -parents dir1/dir2/dir3/dir4
위와 같은 의미
2) ls --help
ls -a
모든 파일을 보여 준다. 숨김 파일은 앞에 .
이 붙는다.
ls -al
감춰진 파일을 보여주는 것(ls -a
)과 자세히 보여주는 것(ls -l
)을 함께 하고 싶을 경우, 많이 씀.
ls -S
대문자 구분, 파일 사이즈를 기준으로 sort, largest부터
cp cp.txt dir1/cp.txt
파일 복사하기
mv mv.txt dir1/mv.txt
파일 이동하기
mv rename.txt rename2.txt
파일 이름 바꾸기rm -rf /
루트 디렉토리에 있는 모든 파일을 삭제하라는 명령을 실수할 수 있음(절대 하면 안 됨)apt-get install git
하면 거부됨. sudo apt-get install git
라고 해야 함. 즉, 임시로 그 명령만 super user의 권한으로 실행하도록 하는 것이 sudo
nano
입력ctrl + O
파일 이름 입력 hello.html
엔터키ctrl + X
로 빠져나옴.nano hello.html
ctrl + K
Cut Text 잘라내기(한 줄 다)ctrl + U
Uncut Text 붙여넣기ctrl + 6
누르면 Mark Set이 된다.ctrl + W
sudo apt-get update;
sudo apt-cache search htop
htop과 관련된 패키지들의 목록을 보여줌
sudo apt-get install htop
설치할 것인지 물어보면 y
입력sudo apt-get upgrade htop
sudo apt-get remove htop
명령어 기반의 시스템에서 파일을 다운로드 하는 방법을 소개한다.
wget 파일url
sudo apt-get install git
git clone https://github.com/facebook/react.git react_src
react_src
라는 디렉토리에 이 주소가 가리키는 오픈소스 프로젝트가 다운로드됨(오픈소스의 파일 뿐만 아니라 모든 변천사들을 다 복제)ls -l
로 확인
cd react_src/
로 들어가서 ls -l
하면 모든 소스코드가 클론되어 있음mkdir why
와 cd why
명령을 한 번에 mkdir why; cd why
로 실행할 수 있다.
즉, 여러 명령을 한 번에 전달 후 종료 시 결과만 보고 받는다.(계속 지켜볼 필요가 없다.)grep
이란?
원하는 정보가 들어있는 행을 찾는 명령어
grep linux linux.txt
linux.txt 파일에서 linux가 포함된 행만을 화면에 출력ls --help | grep sort
–help로 출력된 내용을 (파이프로 연결해서) grep의 명령으로 입력한다. 그리고 grep은 sort를 포함한 행을 불러온다.ps aux | grep apache
ps aux
로 컴퓨터에서 현재 실행되는 프로그램의 리스트를 확인 가능, 그 중 apache
라는 텍스트가 포함된 것들만 출력ls -l
의 결과값을 파일로 저장하고 싶으면? ls -l > result.txt
(cat result.txt
로 저장되었는지 확인)
-> 원래 화면에 출력되는 것인데 파일에 저장되게 했음 = output의 출력의 방향을 바꿈, 리다이렉션ls -l 1> result.txt
1
:Standard Output(생략 가능) / >
: Redirectionrm rename2.txt 2> error.log
2
: Standard Error / >
: Redirectionrm rename2.txt 1> result.txt 2> error.log
실행 결과에 따라 저장됨프로그램? 프로세스?
프로그램은 컴퓨터에 저장되어 있는 코드, 그 프로그램이 실행되고 있는 상태를 프로세스 하나의 프로그램은 여러 개의 프로세스를 가질 수 있다.
cat hello.txt
cat
이라는 프로그램의 인자로 hello.txt
를 받은 것, Command-line Argumentscat
명령, 사용자가 입력하는 정보를 Standard Input 받음
(ctrl + D
를 누르면 나옴)cat < hello.txt
cat
은 기본적으로 키보드의 입력값을 받지만 <
로 리다이렉션을 시켜주면 파일에 저장된 내용을 입력으로 받는다. 1번 방식처럼 그냥 인자로 받으면 되기 때문에 실용적이지 않다.head linux.txt
10줄만 출력(기본)
head -n1 linux.txt
1줄만 출력(Command-line Arguments)
head -n1 < linux.txt
1줄만 출력(Standard Input, Redirection), <
있어도 결과는 같음head -n1 < linux.txt > one.txt
linux.txt 파일의 첫 번째 행만 one.txt에 저장>>
꺽쇠를 두 번 쓴다.
ls -al >> result.txt
반대로 <<
은 여러 개의 입력을 합친다.
ls -al > /dev/null
kernel 알맹이, 핵심 / 하드웨어를 직접적으로 제어하는 운영체제에서 가장 중심이 되는 코어
Shell
주변, 껍데기 / 사용자가 입력한 명령을 해석해서 kernel에 전달하는 프로그램
echo $0
로 어떤 쉘을 사용하고 있는지 확인쉘을 통해서 여러 명령을 실행시키는 작업을 한번에 실행할 수 있다.
nano backup
backup 이라는 이름의 프로그램을 만들 것 -> nano 안으로 들어감// nano에서 작성
#!/bin/bash` // 먼저 이 코드를 무조건 작성해준다. 밑에 작성된 코드가 /bin/bash를 통해 해석되어야 한다는 의미
if ! [ -d bak ]; then // 현재 디렉토리에 bak라는 디렉토리가 존재하지 않으면(!)
mkdir bak // bak 디렉토리를 만든다
fi // 조건문 종료
cp *.log bak // 현재 디렉토리의 log로 끝나는 파일을 bak 디렉토리로 저장한다
위 내용 저장 ctrl + X
yes
enter
./backup
하면 권한이 없다고 나옴
chmod +x backup
으로 실행가능한 모드 부여하고, 다시 ./backup
하면 실행됨!
/
: 최상위 디렉토리, root/bin
: User Binaries, 실행가능한 프로그램, 사용자들이 사용하는 명령들이 위치/sbin
: System Binaries, 컴퓨터를 끄거나 재부팅, 시스템 관리자가 사용하는 프로그램/etc
: Configuration Files, 어떤 프로그램의 동작하는 방법의 설정을 변경하고자 할 때/dev
: Device Files/proc
: Process Information/var
: Variable Files, 내용이 변하는 파일들(ex. log files)/tep
: 재부팅하면 내용이 사라지는 임시 저장 파일들/usr
: User Programs/home
: 유저의 personal files를 저장하기 위한 디렉토리. Username으로 된 하위 디렉토리가 존재한다. 홈 디렉토리로 바로 이동하기 위해서는 cd ~
을 사용하면 된다./opt
: 어떤 프로그램을 설치할 때 자동으로 특정 디렉토리에 설치되는데, 수동으로 설정할 경우 opt에 설치하면 된다.CPU : Processor
ps aux
프로세스 리스트를 보여주는 명령
ps aux | grep apache
apache라는 텍스트를 포함하고 있는 텍스트만 출력sudo kill 22142
프로세스 강제로 종료, 22142는 원하는 프로세스 아이디 값으로 변경 가능
sudo top
sudo htop
파일은 2가지 용도로 사용된다. 데이터를 보관하는 파일, 명령을 보관하는 실행파일
locate 파일이름
(mlocate 설치해야 함)
sudo updatedb
현재 파일들의 정보를 저장하는 명령. 리눅스에서는 하루에 한 번 실행)locate *.log
find [시작 디렉토리] [어떤 파일인지]
sudo find / -name *.log
루트 디렉토리에서 시작해서 하위 디렉토리에서 찾겠다. 이름으로 찾겠다. .log로 끝나는 파일을 찾겠다.
find ~ -name *.log
홈 디렉토리에서 찾겠다. sudo를 안 써도 된다.
find . -type f -name tecmint.php
파일 확장자를 f(file)로 지정한다.whereis
실행파일을 찾아주는 명령어, 실행파일, 소스, 매뉴얼을 찾아준다.$PATH
ls
등의 명령어가 존재하지 않음에도 불구하고 그냥 ls
만 쳤을때 수행될 수 있는 것은 $PATH
때문이다.PATH와 관련된 참고사이트 https://m.blog.naver.com/PostView.nhn?blogId=occidere&logNo=220821140420&proxyReferer=https:%2F%2Fwww.google.co.kr%2F
멀티태스킹을 리눅스에서도 할 수 있다.
ctrl + z
: 실행중인 프로그램을 백그라운드로 보내는 단축키. 이 기능을 실행하면 명령어가 일시 정지된다.
fg
: 작업하던 프로그램이 다시 켜진다.
fg %2
2번째 프로그램이 켜진다.jobs
: 백그라운드 작업들의 목록을 보여준다.kill
: 프로그램을 종료시킨다.
kill %4
일반적인 종료 kill -9 %4
강제종료ls -alR / > result.txt 2> error.log &
ls
, mkdir
, rm
는 필요할 때 키고 필요없을 때는 꺼져있는 프로그램이다. 반면, 데몬은 항상 켜져 있어야 하는 프로그램이다.web server
는 언제 web client
가 요청을 보낼 지 모르므로 항상 켜져 있어야 한다.sudo apt-get install apache2
apache라는 web server 설치
cd /etc/init.d
로 데몬 프로그램들을 확인 가능함service
라는 명령을 통해 수행
sudo service apache2 start
켜기 (ps aux | grep apache2
로 확인)
sudo service apache2 stop
끄기/etc/rc3.d
에 프로그램의 링크를 걸면 된다. (rc3.d
CLI로 구동하고 있을 경우, rc5.d
GUI로 구동하고 있을 경우) 이 때 이름이 S로 시작하면 시작, K로 시작하면 시작하지 않는다.crontab -e
로 에디터 입장
minute / hour / day of month / month / day of week / command 순서로 입력한다.*/1 * * * * date >> date.log 2>&1
2>&1
표준에러를 표준출력으로 리다이렉션, 즉 에러도 함께 출력된다.tail -f date.log
date.log를 감시하고 있다가 뒤 쪽에 텍스트가 추가되면 자동으로 화면에 리프레시alias l='ls -al'
별명, 단축키
alias ..='cs ..'
alias c='clear'
cd ~
nano .bashrc
안에서 작성해두면 된다.id
나는 누구인가
who
이 컴퓨터에 누가 접속해있는가sudo 명령어
일시적으로 슈퍼 유저의 권한으로 실행한다. 슈퍼 유저가 될 수 있는 일반 유저만 가능$
일반유저, #
슈퍼유저
su - root
로 슈퍼 유저 되기
exit
로 빠져 나오기sudo passwd -u root
u는 unlock의 의미 (안 되면 sudo passwd root
로 먼저 비밀번호를 설정)
su - root
로 슈퍼 유저 되기
exit
로 빠져 나오기
sudo passwd -l root
로 super user 사용을 잠그기/root
이다.sudo useradd -m [username]
사용자 추가sudo passwd [username]
비밀번호 설정sudo usermod -a -G sudo [username]
super user 권한을 가질 수 있도록 설정su - [username]
해당 유저로 로그인touch perm.txt
파일 생성
ls -l perm.txt
로 파일의 소유자 확인
echo 'hi' > perm.txt
파일에 내용 넣기cd /home/사용자1
echo 'hello' > perm.txt
소유자가 아닌 사람이 쓰기를 했을 때 Permission denied 당한다.ls -l perm.txt
했을 때 나오는 정보를 자세히 알아보기-
이면 파일, d
면 디렉토리r
: read 읽기, w
: write 쓰기, x
: excute 실행rw-rw-r--
는 소유자와 그룹은 읽기와 쓰기가 가능하고, 그 외는 읽기만 가능한다는 의미access mode를 변경하고 싶다면 chmod
명령어를 사용한다.
chmod o-r perm.txt
chmod o+r perm.txt
chmod u-r perm.txt
실행이란?
실행 가능한 파일 만들기
nano hi-machine.sh
-> nano
로 들어옴
#!/bin/bash
/bin/bash를 이용해서 아래 코드를 해석해서 실행하라 뜻
echo 'hi hi hi hi'
-> nano
나감
./hi-machine.sh
라고 치면 에러가 나온다. (Permission denied)
반면, /bin/bash hi-machine.sh
이라고 치면 실행된다.chmod u+x hi-machine.sh;
이렇게 실행 권한을 주면
./hi-machine.sh
이 정상적으로 실행된다.mkdir perm;cd perm;echo 'hi' > perm.txt
작성drwxrwxr-x 2 sua sua 4096 1월 7 17:50 perm
cd
명령으로 그 디렉토리에 들어갈 수 있느냐chmod -R o+w perm
R은 recursive 재귀적chmod는 중급자로 갈수록 중요해지는 명령
chmod [options] mode[,mode] file1 [file2 ...]
이 때까지는 액세스 모드를 지정할 때 chmod o+w perm.txt
방식을 사용했었음. 사람이 이해하기 쉬우나, 한 번에 여러 설정을 바꿀 수 없다.
chmod o+r perm.txt
chmod o+x perm.txt
이렇게 여러 번 작성해야 함.
# | Permission | rwx | Binary |
---|---|---|---|
7 | read, write and execute | rwx | 111 |
6 | read and write | rw- | 110 |
5 | read and execute | r-x | 101 |
4 | read only | r– | 100 |
3 | write and execute | -wx | 011 |
2 | write only | -w- | 010 |
1 | execute only | –x | 001 |
0 | none | — | 000 |
chmod 111 perm.txt
하면---x--x--x 1 sua sua 3 1월 7 17:50 perm.txt
으로 한 번에 변경됨chmod a+r perm.txt
모든 사용자에 대해서 r 권한 부여chmod a=rwx perm.txt
모든 사용자에 대해 모든 권한 부여chmod a= perm.txt
모든 사용자에 대해 모든 권한 삭제https://en.wikipedia.org/wiki/Chmod 참고하기
user, other가 아닌 특정 사람들에게만 파일에 대한 권한을 주고 싶을 때, group으로 묶고 이름(ex. developer)을 부여한다. (리눅스는 다중 사용자 시스템이므로 그룹이 별로 중요하지는 않다.)
예시
developer라는 그룹에 속한 사용자는 파일을 수정할 수 있는 권한이 있고, 속하지 않는 사용자는 수정할 수 있는 권한이 없다라고 가정
cd /var
이 디렉토리는 변화가 잦은 파일이 위치
mkdir developer
Permission denied
sudo mkdir developer
cd developer
echo 'hi, egoing > egoing.txt
Permission denied
기억할 필요없이 필요할 때마다 검색을 통해 해결
groupadd developer
developer라는 group 생성, Permission denied
sudo !!
!!은 직전에 입력했던 명령어
잘 됐는지 확인하려면 nano /etc/group
파일을 열어보면 된다.
usermod -a -G developer egoing
Permission denied
sudo usermod -a -G developer egoing
sudo usermod -a -G developer k8805
exit
후 다시 접속해야 함
cd /var/developer/
으로 이동
sudo chown root:developer .
.은 현재 디렉토리라는 의미
sudo chmod g+w
echo 'hi, egoing' > egoing.txt
오류 없이 실행!
본 포스팅은 생활코딩 리눅스 강의(https://opentutorials.org/course/2598)를 참고하여 작성하였습니다.