.png)
ls
ls -l은 자세히 보기(-은 파라미터(parameter)라는 의미)mkdir 새로 생성할 디렉토리명cd 이동할 디렉토리의 경로명
change directorycd /home/sua 절대 경로cd .. 부모 디렉토리로 이동하는 명령. 참고로 현재 디렉토리는 . 상대 경로
(최상위 디렉토리는 루트(root) 디렉토리라고 하며 /이다.)clear 화면을 깨끗이
rm 파일명
rm -r 디렉토리명ls --help
rm --help
mkdir --help
pwd --helpman 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의 권한으로 실행하도록 하는 것이 sudonano 입력ctrl + O
파일 이름 입력 hello.html 엔터키ctrl + X로 빠져나옴.nano hello.htmlctrl + K Cut Text 잘라내기(한 줄 다)ctrl + U Uncut Text 붙여넣기ctrl + 6 누르면 Mark Set이 된다.ctrl + Wsudo apt-get update;sudo apt-cache search htop
htop과 관련된 패키지들의 목록을 보여줌
sudo apt-get install htop
설치할 것인지 물어보면 y 입력sudo apt-get upgrade htopsudo apt-get remove htop명령어 기반의 시스템에서 파일을 다운로드 하는 방법을 소개한다.
wget 파일urlsudo apt-get install gitgit 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/nullkernel 알맹이, 핵심 / 하드웨어를 직접적으로 제어하는 운영체제에서 가장 중심이 되는 코어
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 *.logfind [시작 디렉토리] [어떤 파일인지]
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.txtchmod o+r perm.txtchmod 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)를 참고하여 작성하였습니다.