Linux basic command
๊ธฐ๋ณธ ๋ช
๋ น์ด
๊ฒฝ๋ก ๐ฅ
CLI ์์์ ๋์ ์์น๋ฅผ ์๋ ค๋ฉด?
$ pwd
์ ๋๊ฒฝ๋ก
ํน์ ํ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ค์
์ต์์ ๋ฃจํธ (root):
/
์ฌ์ฉ์์ ํ ๋๋ ํ ๋ฆฌ (user):
~/
์๋๊ฒฝ๋ก
ํ์ฌ ๋์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ค์
ํ์ฌ ์์น:
./
์์ ๋๋ ํ ๋ฆฌ:
../
์์์ ์์ ๋๋ ํ ๋ฆฌ:
../../
์ด๋
๋๋ ํ ๋ฆฌ ์ด๋
$ cd /var/log
์ฌ์ฉ์(๋ณธ์ธ) ํ ๋๋ ํ ๋ฆฌ
$ cd ~/
ํน์ ์ฌ์ฉ์ ํ ๋๋ ํ ๋ฆฌ
$ cd /Users/<ํน์ ์ฌ์ฉ์์์ด๋>
(macOS)
๋๋ ํ ๋ฆฌ์ ํ์ผ์ ๋ชฉ๋ก์ ์ถ๋ ฅ
$ ls -1
$ ls -l
$ ls -alF
$ ls /
$ ls /Users/<์ฌ์ฉ์์์ด๋>
$ ll (alias ls -al)
โ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๊ฒ๋ ๋ช
๋ น์ด ๐
Glob pattern ๐ฅ
์์์ ๊ธธ์ด๋ฅผ ๊ฐ์ง๋ ๋ฌธ์์ด: * ์์์ ํ ๊ธ์: ? ๊ธ์์ ์งํฉ: [abcw-z]
์์
$ ls *
$ ls .*
$ ls [a-f]*.txt
$ ls *.tx?
ํ๋ฉด ์ฒญ์
$ clear
Ctrl + L
Command + K
(terminal clear buffer)
์ง๋ ๋ช
๋ น์ด ํ์ฉ
์กฐํ
$ history
12๋ฒ ๋ช ๋ น ์ฌ์คํ
$ !12
์ปค๋งจ๋์ prefix ๋ก ์ฌ์คํ
$ !ls
๋ฐ๋ก ์ง์ ๋ช ๋ น ์ฌ์คํ
$ !!
๋ฐ๋ก ์ง์ ๋ช ๋ น์ argument
$ ls -alF
โ $ ls !$
์ง์ ๋ช ๋ น ํธ์ง
$ echo "hello world"
^world^java
โ $ echo "hello java"
๋ช
๋ น์ด ํธ์ง ๐ฅ
๋ช ๋ น์ด ๋งจ ์ ๋๋ ๋์ผ๋ก ์ด๋
Ctrl + A
Ctrl + E
๋จ์ด ๋จ์ ์ด๋
Option + ๋ฐฉํฅํค
์๋ฒ ์ ์ ๋ฐ ์ข
๋ฃ ๐ฅ
๊ฒ์ดํธ์จ์ด ์ ์ ๋ฐฉ๋ฒ
$ ssh <์์ด๋>@hcon.nhnent.com
$ ssh <์์ด๋>@gw-dev.godo.co.kr
์ข ๋ฃ
$ logout ๋๋ exit
์ฌ์ฉ์ ์กฐํ
$ last
์ปค๋งจ๋ ์ค๋ช
๋ณด๋ ๋ฒ ๐ฅ
$ man โhelp
$ man ssh
$ man 2 open
$ man 3 opendir
์ง๋ฌธ \
man ์์ ๋น ์ ธ๋์ค๋ ๋ฐฉ๋ฒ์?
man ๋ค์ ๋ถ์ 2, 3์ ์๋ฏธ๋?
์ค๋ช
๋ณด๋ ๋ฒ
์ ๋ต \
q
man man
๋ช
๋ น์ด๊ฐ ์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ
which \
which lsof
PATH ํ๊ฒฝ ๋ณ์์ ํฌํจ๋์ด์ผ ํ์ ๊ฐ๋ฅ
whereis \
whereis lsof
๋ฌธ์์ด ์ถ๋ ฅํ๊ธฐ
echo \
$ echo "hello world"
$ echo -n "hello world"; echo " java coffee"
ํ์ฌ ์ ์ํด์๋ ์๋ฒ์ ์ด๋ฆ๊ณผ OS ์ ๋ณด๋ฅผ ํ์ธ
$ uname
$ uname -a
๋น์ทํ ๋ช
๋ น
$ hostname
๋์ ์ฌ์ฉ์ ์์ด๋๋ฅผ ์๋ ค๋ฉด?
$ id
$ whoami
echo "$USER"
ํ์ผ ๋ณด๊ธฐ ๐ฅ
$ vi log.log
$ cat log.log
$ more log.log
$ grep hello log.log | less -eMR
ํ์ผ ์ผ๋ถ๋ง ๋ณด๊ธฐ
$ head -1 log.log
$ tail -2 log.log
$ tail -f /var/log/lastlog
๐
์ฐพ๊ธฐ
$ grep [๋ฌธ์์ด] [ํ์ผ]
$ grep "tutorial" log.log
$ grep -r "bash tutorial" ./*.log
์๋ผ๋ด์ ์ฐ๊ธฐ
$ cut -d [๊ตฌ๋ถ์] -f [ํ๋ ๋ฒํธ ํ์ผ]
$ cat log.log | cut -d : -f 1
$ cat log.log | cut -d : -f 2
ํ์ผ ๊ด๋ จ ๋ช
๋ น์ด
ํ์ผ ์์ฑ, ๋ณต์ฌ, ์ด๋, ์ญ์ \
touch
cp
mv
rm
๋๋ ํ ๋ฆฌ ์์ฑ, ์ด๋, ์ญ์ \
mkdir
cp -r
mv
rmdir
rm -r
์์ฃผ ์ฐ๋ ๋ช
๋ น์ด
๋๋ ํ ๋ฆฌ ์ด๋ฆ ๋ค๋ฃจ๊ธฐ
$ dirname /etc/passwd
ํ์ผ ์ด๋ฆ ๊ตฌํ๊ธฐ
$ basename /etc/passwd
์
๋ ฅ ๊ฐ๋ณ ์ฒ๋ฆฌํ๊ธฐ ๐ฅ
xargs
๋ฅผ ์ด์ฉํ์ฌ ๋ผ์ธ ๋จ์๋ก ์ฒ๋ฆฌํ๊ธฐ
$ xargs [๋ช
๋ น]
$ xargs -I % ๋ช
๋ น "%"
$ find /etc/init | xargs wc -l
$ find /etc/init | xargs -I % wc -l "%"
์ ๋ ฌ
์ ๋ ฌ
$ sort log.log
์ค๋ณต ์ ๊ฑฐ
$ uniq [ํ์ผ]
๋ฌธ์, ๋จ์ด, ๋ผ์ธ ์ ์ธ๊ธฐ
$ wc [ํ์ผ]
๋ฌธ์: $ wc -m
๋จ์ด: $ wc -w
๋ผ์ธ ์: $ wc -l
ํ์ผ ํ์ ๐ฅ
$ find <๋๋ ํ ๋ฆฌ> -name <์ด๋ฆ ํจํด> -type <ํ์ผ์ ํ>
$ find ./log
$ find ./log -name "*.log" -ls
$ find ./log -type d -name "log"
Pattern-directed scanning and processing language
awk
$ cat ./log/log.log | sed 's/world/bash/g'
$ cat ./log/log.log | awk -F ":" '{printf("%s\t%s\n", $1, $2)}'
Stream EDitor ๐ฅ
sed
$ cat ./log/log.log | sed 's/[^log]/k/g' | grep k
ํ์ผ ๋ฌถ๊ธฐ, ์์ถ
tar
zip / unzip
ํ๋ก์ธ์ค
ํ๋ก์ธ์ค ๋ชฉ๋ก ์กฐํ
$ ps aux / pstree
ํ๋ก์ธ์ค ์ข ๋ฃ
$ kill <ํ๋ก์ธ์ค id>
pkill <ํ๋ก์ธ์ค๋ช
>
์์คํ
์์คํ ์์ ์ฌ์ฉ ํํฉ ์กฐํ
$ top
$ iostat 1
๋๋ ํ ๋ฆฌ ํฌ๊ธฐ ์กฐํ
$ du
๋๋ ํ ๋ฆฌ ์ ์ฒด ์ฌ์ฉ ํํฉ ์กฐํ
$ df
๋คํธ์ํฌ ๋ช
๋ น
$ ifconfig
$ ping shopby.co.kr
$ ping 115.88.123.139
$ getent hosts localhost
(local machine)
$ getent hosts shopby.co.kr
(gateway)
$ traceroute
$ wget -0 log.log https://naver.com
์ค์ต
์ฌ์ฉ์์ ํ ๋๋ ํ ๋ฆฌ์ ์๋ธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋์คํฌ ์ฌ์ฉ๋ ์์ผ๋ก ์ ๋ ฌํด์ ๋ณด๋ ค๋ฉด?
./log/log.log
ํ์ผ ๋ด์ฉ ์ค โlinux command tutorialโ ๋ฅผ โ<์ฌ์ฉ์์ด๋ฆ> completed!โ ๋ผ๊ณ ๋ณ๊ฒฝํ๊ณ ์ ์ฅํ๊ธฐ
์ ๋ต
$ du -ks * | sort -rn
$ ls | xargs -I % sed -i "s/linux command tutorial/$USER completed\!/g" %
์ ์คํฌ๋ฆฝํธ
shebang
#! : ์ด๋ค ์ธํฐํ๋ฆฌํฐ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ๋ฅผ ์ง์
#!/bin/bash
#!/usr/bin/env python (๊ถ์ฅ)
ํ์ผ ์์ฑ
์คํ
$ bash test.sh
$ chmod a+x test.sh
$ ./test.sh
Reference
Last updated