์ ๋ช ๋ น์ด์ ํ์
command options arguments
๊ธฐ๋ณธ์ ์ผ๋ก ๋ช ๋ น์ด(command) ์ต์ (options) ์ธ์(arguments) ํ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ ๋ช ๋ น์ด์ ๋ฐ๋ผ ์ต์ , ์ธ์์ ํ์ ์ ๋ ฅ ์ฌ๋ถ๋ ๊ฐ์์ ์ฐจ์ด๊ฐ ์๋ค.
[user1@localhost ~]$ date
Wed Dec 11 18:55:05 KST 2019
[user1@localhost ~]$ pwd
/home/user1
[user1@localhost ~]$
|
cs |
์๋ ๊ฐ๋จํ ์ ๋ช ๋ น์ด ์คํ ์๋ก, date ๋ช ๋ น์ ํ์ฌ ์์ผ, ๋ ์ง, ์๊ฐ์, pwd ๋ช ๋ น์ ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ค.
์ต์ ๊ณผ ์ธ์
์งง์ ์ต์ ํํ(UNIX ์คํ์ผ)
- UNIX ์คํ์ผ
- ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ ์ต์ ํํ
- 'ls -a'์ ๊ฐ์ด 1๊ฐ์ ๋ฌธ์๋ฅผ ๋์(-) ๋ฌธ์ ๋ค์ ๋ถ์ฌ ์ฌ์ฉ
- ๋์๋ฌธ์ ๊ตฌ๋ถ
- ์ฌ๋ฌ ์ต์ ์ฌ์ฉ ์ ๊ฐ๋ณ์ ์ผ๋ก ๋์ดํ ์๋ ์๊ณ ํ๋์ ๋์(-) ๋ค์ ๋ชจ๋ ๋ถ์ฌ ์ฌ์ฉํ ์๋ ์์
[user1@localhost ~]$ ls -lat
total 36
-rw-------. 1 user1 user1 3162 Dec 11 19:50 .bash_history
drwx------. 4 user1 user1 4096 Dec 11 19:24 .
-rw-------. 1 user1 user1 1666 Dec 11 19:24 .viminfo
drwxr-xr-x. 7 root root 4096 Dec 11 18:02 ..
drwxr-xr-x. 4 user1 user1 4096 Oct 14 21:18 .mozilla
-rw-r--r--. 1 user1 user1 18 Mar 23 2017 .bash_logout
-rw-r--r--. 1 user1 user1 176 Mar 23 2017 .bash_profile
-rw-r--r--. 1 user1 user1 124 Mar 23 2017 .bashrc
drwxr-xr-x. 2 user1 user1 4096 Nov 12 2010 .gnome2
[user1@localhost ~]$ ls -l -a -t
total 36
-rw-------. 1 user1 user1 3162 Dec 11 19:50 .bash_history
drwx------. 4 user1 user1 4096 Dec 11 19:24 .
-rw-------. 1 user1 user1 1666 Dec 11 19:24 .viminfo
drwxr-xr-x. 7 root root 4096 Dec 11 18:02 ..
drwxr-xr-x. 4 user1 user1 4096 Oct 14 21:18 .mozilla
-rw-r--r--. 1 user1 user1 18 Mar 23 2017 .bash_logout
-rw-r--r--. 1 user1 user1 176 Mar 23 2017 .bash_profile
-rw-r--r--. 1 user1 user1 124 Mar 23 2017 .bashrc
drwxr-xr-x. 2 user1 user1 4096 Nov 12 2010 .gnome2
|
cs |
ls -lat์ ls -l -a -t๋ ๊ฐ์ ๋ช ๋ น์ด๋ค.
๊ธด ์ต์ ํํ(GNU ์คํ์ผ)
- GNU ์คํ์ผ
- 'ls --directory'์ ๊ฐ์ด ์ด์ค ๋์(--) ๋ค์ ๋จ์ด๋ฅผ ๋ถ์ฌ ์ฌ์ฉ
[user1@localhost ~]$ ls -help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort.
Mandatory arguments to long options are mandatory for short options too.
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
...
[user1@localhost ~]$ ls --help
ls: invalid option -- 'e'
Try `ls --help' for more information.
|
cs |
'ls --help'์ 'ls -help'๋ ์์ ํ ๋ค๋ฅธ ์๋ฏธ์ด๋ค. ํ์๋ -h, -e, -l, -p ์ต์ ์ ์ ์ฉํ๋ผ๋ ์๋ฏธ๋ก ํด์๋๋ค.
์ธ์(argument)
- ๋ช ๋ น์ด๋ ์ต์ ์ ๋์์ ์ง์ ํ๊ธฐ ์ํด '๋ช ๋ น์ด์ ์ธ์'๋ '์ต์ ์ ์ธ์'๋ฅผ ์ ๋ ฅํ๋ค.
- ๋ช ๋ น์ ์ธ์๋ ๋ช ๋ น, ๊ณต๋ฐฑ ๋ค์์ ์ธ์๋ฅผ ์ ๋ ฅํ๋ค.
- ์: cat /etc/passwd → /etc/passwd๊ฐ cat ๋ช ๋ น์ ์ธ์
- ์งง์ ์ต์ ํํ๋ ์ต์ , ๊ณต๋ฐฑ ๋ค์์ ์ธ์๋ฅผ ์ ๋ ฅํ๋ค.
- ์: chsh -s /bin/tcsh → /bin/tcsh๊ฐ -s ์ต์ ์ ์ธ์
- ๊ธด ์ต์ ํํ๋ ์ต์ , ๋ฑํธ(=) ๋ค์์ ์ธ์๋ฅผ ์ ๋ ฅํ๋ค. (๊ณต๋ฐฑ ์์ด)
- ์: ls -l --sort=time → time์ด --sort ์ต์ ์ ์ธ์
[user1@localhost ~]$ grep user1 /etc/passwd
user1:x:502:502:General User:/home/user1:/bin/bash
|
cs |
์์ ๊ฐ์ด ์ด๋ค ๋ช ๋ น์ด๋ ์ต์ ์์ด 2๊ฐ์ ์ธ์๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
์ ๋ช ๋ น ์ข ๋ฅ
์ฐ์ ์์ | ๋ช ๋ น ์ ํ | ์ค๋ช |
1 | alias | ํน์ ๋ช ๋ น์ ์ต์ ๊ณผ ํจ๊ป ์งง์ ๋ณ์นญ์ผ๋ก ์ ์ |
2 | ์ ์์ฝ์ด | ์ ์คํฌ๋ฆฝํธ ์์ฑ ์ ์ฌ์ฉ๋๋ do, while, case์ ๊ฐ์ ์์ฝ์ด |
3 | ํจ์ | ์์ ์ผ๋ จ์ ๋ช ๋ น์ ํจ์๋ก ์ ์ํ ๊ฒ |
4 | ๋ด์ฅ ๋ช ๋ น | ์ ์์ฒด์ ํฌํจ๋ built-in ๋ช
๋ น. cd, echo, pwd ๋ฑ. man builtin ๋ช ๋ น ํน์ help builtin-command ๋ช ๋ น์ผ๋ก ์ ๋ด์ฅ ๋ช ๋ น์ ์ฌ์ฉ๋ฒ ํ์ธ ๊ฐ๋ฅ |
5 | ์ผ๋ฐ ๋ช ๋ น | ํ์ผ ์์คํ ์ ์คํ ํ์ผ๋ก ์กด์ฌํ๋ ๋ช ๋ น |
ํ - ์ ๋ช ๋ น ์ข ๋ฅ ๋ฐ ๊ฒ์ฌ ์์
์ ๋ช ๋ น์ด๋ alias, ์ ์์ฝ์ด, ํจ์, ๋ด์ฅ ๋ช ๋ น, ์ผ๋ฐ ๋ช ๋ น์ผ๋ก ๋๋์ด์ง๋ฉฐ ์์ ์ ๋ ฅ๋ ๋ช ๋ น์ด๋ฅผ ์ ์ฐ์ ์์ ๋๋ก ํ์ธํ๋ค.
[user1@localhost ~]$ type cd
cd is a shell builtin
[user1@localhost ~]$ type case
case is a shell keyword
[user1@localhost ~]$ type rm
rm is /bin/rm
[user1@localhost ~]$ type -a ls
ls is aliased to 'ls --color=auto'
ls is /bin/ls
|
cs |
type ๋ช ๋ น์ด๋ก ๋ฆฌ๋ ์ค์ ํน์ ๋ช ๋ น์ด ์ด๋ป๊ฒ ํด์๋๋์ง ํ์ธํ ์ ์๋ค. -a ์ต์ ์ ์ฌ๋ฌ ์ ํ์ผ๋ก ๋ช ๋ น์ด ์กด์ฌํ๋ฉด ๋ชจ๋ ์ฌํญ์ ํ์ธํ๋ ์ต์ ์ด๋ค.
alias
[user1@localhost ~]$ alias la='ls -A' # alias ์ค์
[user1@localhost ~]$ unalias la # alias ํด์
[user1@localhost ~]$ alias # alias ๋ชฉ๋ก
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
|
cs |
alias ๋ช ๋ น์ผ๋ก ์์ฃผ ์ฌ์ฉํ๋ ๋ช ๋ น์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํ ๋ณ์นญ์ ๋ง๋ค ์ ์๋ค. ์๋ฅผ ๋ค์ด alias la='ls -A'์ ๊ฐ์ด ์ํํ๋ฉด ls -A ๋ช ๋ น์ ๋ณ์นญ์ la๋ก ๋ง๋ค์ด ls -A ๋ช ๋ น ๋์ la์ ์ธ ์ ์๋ ๊ฒ์ด๋ค. ์ธ์ ์์ด alias๋ง ์คํํ๋ฉด ํ์ฌ alias ๋ชฉ๋ก์ด ์ถ๋ ฅ๋๋ค. alias๋ก ์์ฃผ ์ฌ์ฉ๋๋ ์ ์ค ํ๋๋ alias rm='rm -i'์ด๋ค. rm ๋ช ๋ น์ -i ์ต์ ์ ์ถ๊ฐํ์ฌ ๋์์ ์ญ์ ํ๊ธฐ ์ ์ ํ์ธ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ํ๋ ๊ฒ์ด๋ค. alias ํด์ ๋ unalias ๋ช ๋ น์ด๋ก ํ ์ ์๋ค.
alias๋ ์ ์์ ์ข ๋ฃํ๋ฉด ์ด๊ธฐํ๋๋ฏ๋ก ๊ณ์ ์ ์งํ๋ ค๋ฉด ์์ ํ๊ฒฝ ์ค์ ํ์ผ์ ์ค์ ํด์ผ ํ๋ค.
์ ํ๊ฒฝ๋ณ์ PATH
์ผ๋ฐ ๋ช ๋ น์ ๊ทธ ๋ช ๋ น์ ์คํํ์ผ์ ์์ ํ๊ฒฝ๋ณ์ PATH์ ์ค์ ๋์ด ์๋ ๊ฒฝ๋ก์์ ์ฐพ์ ์ ์์ด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ ๋๊ฒฝ๋ก ๋๋ ์๋๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํด์ ๋ช ๋ น์ ์ ๋ ฅํด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด ์ ํ๋กฌํํธ์์ date ๋ช ๋ น์ ์คํํ ๋ ์์ PATH์ ๊ฒฝ๋ก๋ฅผ ์ฐธ์กฐํ์ฌ /bin/date๋ฅผ ์ฐพ์ ์คํํ๋ค.
[user1@localhost ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/user1/bin
|
cs |
ํ๊ฒฝ๋ณ์ PATH์ ๊ฒฝ๋ก๋ ์ฝ๋ก (:)์ผ๋ก ๊ตฌ๋ถ๋๋ค. ์ฐธ๊ณ ๋ก ๋๋ถ๋ถ์ ์ฌ์ฉ์ ๋ช ๋ น์ /bin, /usr/bin, /usr/local/bin์, ๊ด๋ฆฌ์ ๋ช ๋ น์ /sbin, /usr/sbin์ ์กด์ฌํ๋ค.
์์ด ๋ช ๋ น ์ํ์ ์ํด ์คํ ํ๋ก๊ทธ๋จ์ ์ฐพ์ ๋ 'ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ(.)'๋ ์๋์ผ๋ก ๊ฒ์ํ์ง ์๋๋ค. ์ฆ ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ์ 'test.sh' ํ์ผ์ด ์๋ค ํด๋ ๋ช ๋ น ํ๋กฌํํธ์์ test.sh๋ง ์ ๋ ฅํด์ ์คํํ ์ ์๋ค. ์ด๋ฅผ ์คํํ๋ ค๋ฉด ๋ค์ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ํํด์ผ ํ๋ค.
1) ์๋๊ฒฝ๋ก ์ ๋ ฅ
./test.sh
2) ์ ๋๊ฒฝ๋ก ์ ๋ ฅ
/home/user1/test.sh
3) PATH ๊ฒฝ๋ก ์ค์
ํด๋น ํ์ผ์ ํ๊ฒฝ๋ณ์ PATH์ ํฌํจ๋ผ์๋ ๊ฒฝ๋ก์ ์์น์ํด
์ผ๋ฐ ๋ช ๋ น์ด ์คํ ํ๋ก๊ทธ๋จ ์ฐพ๊ธฐ - which & whereis
which
which ๋ช ๋ น์ด๋ ์ฌ์ฉ์์ PATH ํ๊ฒฝ๋ณ์๋ฅผ ๊ธฐ์ด๋ก ํด๋นํ๋ ์คํ ํ๋ก๊ทธ๋จ์ด ์ด๋ ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ๋์ง ์ฐพ์์ ์ ๋๊ฒฝ๋ก๋ก ์ถ๋ ฅํด์ค๋ค.
[user1@localhost ~]$ which java
/usr/bin/java
|
cs |
whereis
์ฉ๋๋ which์ ์ ์ฌํ๋ ์์ค, ๋งค๋ด์ผ ํ์ด์ง๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ํด๋น ํ์ผ๋ ๊ฐ์ด ์ฐพ์ ์ถ๋ ฅํ๋ค.
[user1@localhost ~]$ whereis which
which: /usr/bin/which /usr/share/man/man1/which.1.gz
|
cs |
๋ช ๋ น์ด ๋งค๋ด์ผ/์ฌ์ฉ ๋ฐฉ๋ฒ ํ์ธ
๋ฆฌ๋ ์ค ๋ช ๋ น์ด์ ๋งค๋ด์ผ์ด๋ ์ฌ์ฉ ๋ฐฉ๋ฒ ํ์ธ์ ์ํด ๋๋ถ๋ถ ๊ตฌ๊ธ ๊ฒ์์ ๋ง์ด ํ์ฉํ์ง๋ง ์ธ๋ถ ์ธํฐ๋ท์ ์ฌ์ฉํ ์ ์๊ฑฐ๋ ์ ํํ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์๊ณ ์ ํ ๋ ๋ฑ์ ์ํฉ์์ man์ด๋ --help ์ต์ ์ ์ฌ์ฉํ ์ ์๋ค.
man - ์จ๋ผ์ธ ๋งค๋ด์ผ ํ์ด์ง ๋ณด๊ธฐ
๋ฆฌ๋ ์ค๋ ๋ช ๋ นํ์์ ์คํ๋๋ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์ ๋ํด ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ์ ๊ณตํ๋ค. man ๋ช ๋ น์ด๋ก ํด๋น ๋ช ๋ น์ ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ๋ณผ ์ ์๋ค. ๋ค์์ man ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ touch ๋ช ๋ น์ด์ ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ํ์ธํ ๊ฒ์ด๋ค. ์ข ๋ฃ๋ q๋ฅผ ์ ๋ ฅํ๋ค.
[user1@localhost ~]$ man touch
TOUCH(1) User Commands TOUCH(1)
NAME
touch - change file timestamps
SYNOPSIS
touch [OPTION]... FILE...
DESCRIPTION
Update the access and modification times of each FILE to the current time.
A FILE argument that does not exist is created empty, unless -c or -h is sup-
plied.
A FILE argument string of - is handled specially and causes touch to change the
times of the file associated with standard output.
Mandatory arguments to long options are mandatory for short options too.
-a change only the access time
-c, --no-create
do not create any files
|
cs |
์ ํ๋ฉด์ ์๋จ์ TOUCH(1)์ด ํ์๋๋๋ฐ 1์ ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ์ฃผ์ ๋ณ๋ก ๋ถ๋ฅํ๊ธฐ ์ํ '์น์ ๋ฒํธ'์ด๋ค. man ๋ช ๋ น์ด ์ฌ์ฉ ์ ์น์ ๋ฒํธ๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ์ฒ์ ๋ฑ์ฅํ๋ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ํน์ ์น์ ์ ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ๋ณด๋ ค๋ฉด man 8 fsck์ ๊ฐ์ด ์น์ ๋ฒํธ๋ฅผ ์ธ์๋ก ์ ๋ ฅํด์ผ ํ๋ค.
์น์ | ๋ด์ฉ |
1 | ์ฌ์ฉ์ ๋ช ๋ น |
2 | ์ปค๋ ์์คํ ํธ์ถ(์ปค๋ ์ ๊ณต ํจ์) |
3 | C ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ |
4 | ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ ์ ๋ณด |
5 | ์์คํ ์ค์ ํ์ผ์ ํ์ |
6 | ๊ฒ์ |
7 | ํ์ผ ํฌ๋งท, ์ธ์ฝ๋ฉ ๋ฑ |
8 | ์์คํ ๊ด๋ฆฌ ๋ช ๋ น |
ํ - ๋งค๋ด์ผ ํ์ด์ง ์น์ ๋ถ๋ฅ(ํ์์ ํด๋น ์น์ ๋ฒํธ๋ฅผ man ๋ช ๋ น์ด์ ์ธ์๋ก ์ ๋ ฅ)
--help ์ต์
๋ช ๋ น์ด์ ํ์, ์ต์ ์ ๊ฐ๋จํ ํ์ธํ๋ ค๋ฉด ๋๋ถ๋ถ์ ๋ช ๋ น์ด๊ฐ ์ ๊ณตํ๋ --help ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ์๋ฅผ ๋ค์ด man mkdir์ ๋์ ํด์ mkdir --help๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
[user1@localhost ~]$ mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
-p, --parents no error if existing, make parent directories as needed
-v, --verbose print a message for each created directory
-Z, --context=CTX set the SELinux security context of each created
directory to CTX
When COREUTILS_CHILD_DEFAULT_ACLS environment variable is set, -p/--parents
option respects default umask and ACLs, as it does in Red Hat Enterprise Linux 7 by default
--help display this help and exit
--version output version information and exit
|
cs |
๊ด๋ จ ํฌ์คํธ
[OS/Unix·Linux] - ์ ๋์ค์ ๋ฆฌ๋ ์ค, GNU GPL ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ ์ข ๋ฅ
[OS/Unix·Linux] - ๋ฆฌ๋ ์ค ์(shell)์ ์ดํด
[OS/Unix·Linux] - ๋ฆฌ๋ ์ค ํ์ผ ์์คํ ๊ณ์ธต๊ตฌ์กฐ ํ์ค(FHS: Filesystem Hierarchy Standard)
'Unixยท๏ปฟLinux' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฆฌ๋ ์ค history - ๋ช ๋ น ํ์คํ ๋ฆฌ ํ์ฉ (0) | 2019.12.12 |
---|---|
๋ฆฌ๋ ์ค ๊ฐ์๋จธ์ ์ PuTTY๋ก SSH ์๊ฒฉ ์ ์ํ๋ ๋ฐฉ๋ฒ (0) | 2019.12.12 |
VirtualBox ๋ณต์ฌ, ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ์ํ ํด๋ฆฝ๋ณด๋ ๊ณต์ ์ค์ ๋ฐฉ๋ฒ (0) | 2019.12.11 |
๋ฆฌ๋ ์ค ์(shell)์ ์ดํด (0) | 2019.12.11 |
๋ฆฌ๋ ์ค ํ์ผ ์์คํ ๊ณ์ธต๊ตฌ์กฐ ํ์ค(FHS: Filesystem Hierarchy Standard) (0) | 2019.12.11 |
๋๊ธ