개요

tail 명령어는 리눅스에서 파일의 내용을 출력하는 기능을 수행합니다.

cat 명령어와 다른점은 cat은 파일 전체의 내용을 출력하는 데 비해 tail 명령어는 파일의 맨 끝에서부터 지정된 라인 만큼 출력해줍니다.

또한 -f 옵션을 이용해서 실시간으로 파일에 추가된 내용을 출력할 수 있습니다.


tail 명령어와 유사한 명령어로는 head 명령어가 있습니다. head 명령어는 맨 앞에서부터 지정된 라인 만큼 출력해줍니다.


사용법

리눅스에서 사용되는 명령어는 모두 대소문자를 구분하니 주의해주세요.

tail 명령어에 대한 자세한 설명은 tail --help 명령어를 통해 볼 수 있습니다.


Usage: tail [OPTION]... [FILE]...
Print the last 10 lines of each FILE to standard output.


With more than one FILE, precede each with a header giving the file name.
With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -c, --bytes=K            output the last K bytes; or use -c +K to output
                             bytes starting with the Kth of each file
  -f, --follow[={name|descriptor}]
                           output appended data as the file grows;
                             an absent option argument means 'descriptor'
  -F                       same as --follow=name --retry
  -n, --lines=K            output the last K lines, instead of the last 10;
                             or use -n +K to output starting with the Kth
      --max-unchanged-stats=N
                           with --follow=name, reopen a FILE which has not
                             changed size after N (default 5) iterations
                             to see if it has been unlinked or renamed
                             (this is the usual case of rotated log files);
                             with inotify, this option is rarely useful
      --pid=PID            with -f, terminate after process ID, PID dies
  -q, --quiet, --silent    never output headers giving file names
      --retry              keep trying to open a file if it is inaccessible
  -s, --sleep-interval=N   with -f, sleep for approximately N seconds
                             (default 1.0) between iterations;
                             with inotify and --pid=P, check process P at
                             least once every N seconds
  -v, --verbose            always output headers giving file names
      --help     display this help and exit
      --version  output version information and exit

If the first character of K (the number of bytes or lines) is a '+',
print beginning with the Kth item from the start of each file, otherwise,
print the last K items in the file.  K may have a multiplier suffix:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.

With --follow (-f), tail defaults to following the file descriptor, which
means that even if a tail'ed file is renamed, tail will continue to track
its end.  This default behavior is not desirable when you really want to
track the actual name of the file, not the file descriptor (e.g., log
rotation).  Use --follow=name in that case.  That causes tail to track the
named file in a way that accommodates renaming, removal and creation.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'tail invocation'


-n 옵션으로 출력할 라인 수를 지정할 수 있습니다.


-f 옵션을 지정하면 파일에 변경을 실시간으로 감지하여 추가된 내용을 출력해주기 때문에 실시간으로 로그 파일 모니터링 하는데 유용합니다.


tail 명령어도 cat 명령어와 마찬가지로 단독으로도 쓰임새가 많지만 파이프재지향을 사용하여 연계할 경우 매우 강력한 기능이 되기 때문에 아래 글을 참고해서 기억해두시기 바랍니다.

[Linux] 파이프(pipe)에 대한 이해

[Linux] 재지향(Redirection)에 대한 이해



예제

ex) 파일의 뒤에서부터 10라인만 출력

[root@peterdev test]# tail -n 10 index.html
window.addEventListener("load", function() { loadJS(); }, true);
} else if (window.attachEvent) {
window.attachEvent("onload", loadJS);
} else {
window.onload = loadJS;
}

</script>
</body>
</html>

ex) /var/log/message 로그 파일을 실시간으로 감시

[root@peterdev test]# tail -f /var/log/messages
Jun 26 13:01:01 peterdev systemd: Started Session 1688 of user root.
Jun 26 13:01:01 peterdev systemd: Starting Session 1688 of user root.
Jun 26 13:04:34 peterdev systemd: Started Session 1689 of user root.
Jun 26 13:04:34 peterdev systemd-logind: New session 1689 of user root.
Jun 26 13:04:34 peterdev systemd: Starting Session 1689 of user root.
Jun 26 14:01:01 peterdev systemd: Started Session 1690 of user root.
Jun 26 14:01:01 peterdev systemd: Starting Session 1690 of user root.
Jun 26 15:01:01 peterdev systemd: Started Session 1691 of user root.




-Peter의 우아한 프로그래밍

여러분의 공감과 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 남겨주시면 감사하겠습니다.

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요

개요

cat 명령어는 리눅스에서 파일의 내용을 출력하는 기능을 수행합니다.


사용법

리눅스에서 사용되는 명령어는 모두 대소문자를 구분하니 주의해주세요.

cat 명령어에 대한 자세한 설명은 cat --help 명령어를 통해 볼 수 있습니다.


Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s), or standard input, to standard output.

  -A, --show-all           equivalent to -vET
  -b, --number-nonblank    number nonempty output lines, overrides -n
  -e                       equivalent to -vE
  -E, --show-ends          display $ at end of each line
  -n, --number             number all output lines
  -s, --squeeze-blank      suppress repeated empty output lines
  -t                       equivalent to -vT
  -T, --show-tabs          display TAB characters as ^I
  -u                       (ignored)
  -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB
      --help     display this help and exit
      --version  output version information and exit

With no FILE, or when FILE is -, read standard input.

Examples:
  cat f - g  Output f's contents, then standard input, then g's contents.
  cat        Copy standard input to standard output.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'cat invocation'


기본적인 사용법은 cat 명령어 뒤에 파일명을 입력하면 해당 파일의 내용을 표준출력으로 출력합니다.


cat filename

[root@peterdev test]# cat test1.txt
abc
def
qwe
poi
abc
abcdef
abcd

cat이나 tail, head 등의 명령어는 파이프(pipe) 를 통해 다른 명령어듣과 연계하거나 재지향(redirect)을 이용하여 다른 파일에 저장할 수 있습니다.


단독으로도 쓰임새가 많지만 이렇게 연계할 경우 매우 강력한 기능이 되니 아래 글들을 참고하셔서 꼭 기억해두시기 바랍니다.

[Linux] 파이프(pipe)에 대한 이해

[Linux] 재지향(Redirection)에 대한 이해




예제

ex) 리눅스 시스템 계정 목록 출력

[root@peterdev ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin


ex) 줄번호와 같이 출력

[root@peterdev test]# cat -n arr.c
1 #include<stdio.h>
2
3 int main(void)
4 {
5 int score[5];
6 scanf("%d", &score[0]);
7 scanf("%d", &score[1]);
8 scanf("%d", &score[2]);
9 scanf("%d", &score[3]);
10 scanf("%d", &score[4]);
11
12 printf("%dst score is %d\n", 1, score[0]);
13 printf("%dst score is %d\n", 2, score[1]);
14 printf("%dst score is %d\n", 3, score[2]);
15 printf("%dst score is %d\n", 4, score[3]);
16 printf("%dst score is %d\n", 5, score[4]);
17
18 return 0;
19 }

-n 옵션을 사용하면 줄번호와 같이 출력할 수 있습니다.


ex) 한페이지 씩 출력

[root@peterdev ~]# cat /var/log/messages | more
Jun 17 03:27:02 peterdev rsyslogd: [origin software="rsyslogd" swVersion="8.24.0
" x-pid="432" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Jun 17 04:01:01 peterdev systemd: Started Session 1462 of user root.
Jun 17 04:01:01 peterdev systemd: Starting Session 1462 of user root.
Jun 17 05:01:01 peterdev systemd: Started Session 1463 of user root.
Jun 17 05:01:01 peterdev systemd: Starting Session 1463 of user root.
Jun 17 05:48:22 peterdev chronyd[456]: Selected source 122.215.240.52
Jun 17 06:01:01 peterdev systemd: Started Session 1464 of user root.
Jun 17 06:01:01 peterdev systemd: Starting Session 1464 of user root.
Jun 17 07:01:01 peterdev systemd: Started Session 1465 of user root.
Jun 17 07:01:01 peterdev systemd: Starting Session 1465 of user root.
Jun 17 08:01:01 peterdev systemd: Started Session 1466 of user root.
Jun 17 08:01:01 peterdev systemd: Starting Session 1466 of user root.
Jun 17 09:01:01 peterdev systemd: Started Session 1467 of user root.
Jun 17 09:01:01 peterdev systemd: Starting Session 1467 of user root.
Jun 17 10:01:01 peterdev systemd: Started Session 1468 of user root.
Jun 17 10:01:01 peterdev systemd: Starting Session 1468 of user root.
Jun 17 11:01:01 peterdev systemd: Started Session 1469 of user root.
Jun 17 11:01:01 peterdev systemd: Starting Session 1469 of user root.
Jun 17 12:01:01 peterdev systemd: Started Session 1470 of user root.
Jun 17 12:01:01 peterdev systemd: Starting Session 1470 of user root.
Jun 17 12:39:28 peterdev dhclient[757]: DHCPREQUEST on eth0 to 169.254.169.254 p
ort 67 (xid=0x5f254c90)
--More--
more 명령어를 파이프로 연결해서 사용하면 한페이지 씩 출력할 수 있습니다.

ex) 파일 복사

[root@peterdev test]# cat test.c > copy.c

cat 명령어의 출력을 다른 파일로 재지향하면 파일을 복사할 수 있습니다.




-Peter의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 남겨주시면 감사하겠습니다.

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요


개요


chmod 명령어는 리눅스의 파일이나 디렉토리의 권한을 변경하는 명령어입니다.



사용법

리눅스에서 사용되는 명령어는 모두 대소문자를 구분하니 주의해주세요.

chmod 명령어의 사용법은 다음과 같습니다.


Usage: chmod [OPTION]... MODE[,MODE]... FILE...
  or:  chmod [OPTION]... OCTAL-MODE FILE...
  or:  chmod [OPTION]... --reference=RFILE FILE...
Change the mode of each FILE to MODE.
With --reference, change the mode of each FILE to that of RFILE.

  -c, --changes          like verbose but report only when a change is made
  -f, --silent, --quiet  suppress most error messages
  -v, --verbose          output a diagnostic for every file processed
      --no-preserve-root  do not treat '/' specially (the default)
      --preserve-root    fail to operate recursively on '/'
      --reference=RFILE  use RFILE's mode instead of MODE values
  -R, --recursive        change files and directories recursively
      --help     display this help and exit
      --version  output version information and exit

Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>


기본 사용법은 아래와 같이 변경하고자 하는 권한과 파일명을 명시하여 실행하면 됩니다.

chmod 755 test.txt


리눅스 파일 권한

리눅스 파일은 user, group, others 별로 read, write, execute 권한을 부여할 수 있습니다.


ls 명령으로 현재 파일에 부여되어 있는 권한을 확인할 수 있습니다.

[Linux] ls (파일 목록 보기)


[root@peterdev ch]# ls -l
total 0
-rw-r--r-- 1 root root 0 Jun  4 08:45 test.txt


-rw-r--r-- 에서 맨앞의 - 는 file 인지 directory인지 구분하는 symbol 입니다.

[root@peterdev test]# ls -l
total 44
-rwxr-xr-x 1 root root 8576 May 10 08:38 a.out
-rw-r--r-- 1 root root  214 May 10 08:38 arr1.c
-rw-r--r-- 1 root root  425 May 10 07:30 arr.c
drwxr-xr-x 2 root root 4096 Jun  4 08:45 ch
drwxr-xr-x 2 root root 4096 May  3 14:27 john
-rw-r--r-- 1 root root    0 May  8 14:40 mv_test.dat
-rw-r--r-- 1 root root    0 May  9 06:06 new_file
-rw-r--r-- 1 root root    5 May  9 06:09 new.txt
drwxr-xr-x 2 root root 4096 May  3 14:27 peter
-rw-r--r-- 1 root root   33 May 14 09:00 test1.txt
-rw-r--r-- 1 root root   33 May  8 14:56 test2.txt

이렇게 directory인 경우에는 d 라는 symbol로 표시됩니다.


rw-r--r-- 로 표시되는 부분이 부여된 권한을 나타내는데 3개씩 끊어서 보면

앞에 3개가 user 소유자(owner)의 권한이고,

중간에 3개는 group 대한 권한,

마지막 3개가 others 에 대한 권한이 됩니다.


이 권한을 8진수로 표현하면 rwx 권한을 다 갖는 경우 7이 됩니다.

각 권한을 숫자값으로 표현하면 r = 4, w = 2, x = 1 이기 때문에

r + w + x = 7

이렇게 되는 것이죠.


파일에 user와 group 에 대해서만 read 권한을 부여하려면 440 으로 적용하면 됩니다.


+, - 기호를 사용해서 특정 권한을 더하거나 뺄 수도 있습니다.


예제

ex) text.txt 파일에 대해서 user의 모든권한을 부여하고 group과 others는 모든 권한을 제외
chmod 700 test.txt

 

ex) text.txt 파일에 대해서 실행 권한 추가 부여
chmod +x test.txt

ex) text.txt 파일에 대해서 group에 write 권한 부여
chmod g+w test.txt
 

ex) text.txt 파일에 대해서 others의 모든 권한 박탈
chmod o-rwx test.txt
 

-Peter의 우아한 프로그래밍

여러분의 공감과 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.




블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요

개요

mv 명령어는 리눅스에서 파일을 이동시키는 명령어입니다.

윈도우 환경에서는 마우스로 드래그&드롭을 활용하여 파일 이동을 쉽게 할 수 있습니다.

일반적으로 리눅스 서버 환경에서는 Desktop GUI 환경을 사용하지 않기 때문에 마우스 없이 파일을 복사해야 합니다.

콘솔에서 명령어를 수행해서 말이죠.

mv 명령어로 파일을 이동시키는 것이 아니라 파일의 이름을 바꾸는 것도 가능합니다.

현재 원본 파일이 있는 경로에 이름을 다르게 주어 mv 시키면 파일명을 다르게 하여 원본 파일 경로에 이동시키는 것이기 때문에 결과적으로 파일명을 바꾸는 동작과 같습니다.


사용법

리눅스에서 사용되는 명령어는 모두 대소문자를 구분하니 주의해주세요.

mv 명령어에 대한 자세한 설명은 mv --help 명령어를 통해 볼 수 있습니다.


Usage: mv [OPTION]... [-T] SOURCE DEST
  or:  mv [OPTION]... SOURCE... DIRECTORY
  or:  mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

Mandatory arguments to long options are mandatory for short options too.
      --backup[=CONTROL]       make a backup of each existing destination file
  -b                           like --backup but does not accept an argument
  -f, --force                  do not prompt before overwriting
  -i, --interactive            prompt before overwrite
  -n, --no-clobber             do not overwrite an existing file
If you specify more than one of -i, -f, -n, only the final one takes effect.
      --strip-trailing-slashes  remove any trailing slashes from each SOURCE
                                 argument
  -S, --suffix=SUFFIX          override the usual backup suffix
  -t, --target-directory=DIRECTORY  move all SOURCE arguments into DIRECTORY
  -T, --no-target-directory    treat DEST as a normal file
  -u, --update                 move only when the SOURCE file is newer
                                 than the destination file or when the
                                 destination file is missing
  -v, --verbose                explain what is being done
  -Z, --context                set SELinux security context of destination
                                 file to default type
      --help     display this help and exit
      --version  output version information and exit

The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable.  Here are the values:

  none, off       never make backups (even if --backup is given)
  numbered, t     make numbered backups
  existing, nil   numbered if numbered backups exist, simple otherwise
  simple, never   always make simple backups

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'mv invocation'


기본 사용법은 아래와 같습니다.

mv [PATH/]src [PATH/]dest

src의 파일을 dest로 옮긴다는 의미입니다.


일반적으로 cp 에 비해 mv 가 훨씬 속도가 빠릅니다. 

이 점 기억해두세요.


예제

ex) 현재 test 디렉토리를 lab/backup 디렉토리 하위로 이동

mv test/ lab/backup/



ex) 홈디렉토리의 mymusic 디렉토리를 /music/nowplaying 디렉토리 하위로 이동

mv ~/mymusic /music/nowplaying/


 

ex) 현재 경로에서 bak 확장자를 가진 모든 파일을 /backup 디렉토리로 이동

mv *.bak /backup


 

 

-Peter의 우아한 프로그래밍

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요

 

개요

 

find 명령어로 파일을 검색하는 방법은 이전 포스팅에서 소개드렸습니다.

[Linux] find 로 파일 검색하기

 

이번 포스팅에서는 검색된 파일들을 지우는 방법을 소개해드리겠습니다.

이 방법을 이용하면 특정 조건을 만족하는 파일들을 찾아서 지우는 것이 가능합니다.

 

예를들면 확장자가 "txt" 인 파일들을 검색하여 지울 수도 있구요, 파일명이 "test"로 시작하는 파일들만 찾아서 지울 수도 있습니다.

 

사용법

 

find PATH [-options] -exec rm {} \;

 

PATH: 검색을 수행할 디렉토리 (해당 디렉토리를 포함한 하위 디렉토리가 검색 대상이 됩니다)

맨 뒤에 \; 는 오타가 아닙니다. 꼭 붙여주세요!

-exec 명령어는 맨 뒤에 ; 까지 argument 로 취하기 때문에 escape 시켜서 넣어주는 것입니다.

 

find . -type f -exec rm {} \;

 

위 명령어의 의미는 지정된 현재디렉토리(.) 기준으로 모든 파일(디렉토리 제외)들을 삭제하는 명령어입니다.

원하는 경로를 설정하면 해당 경로 하위의 모든 디렉토리가 대상이 되기 때문에 되도록이면 root path (/) 를 지정하지 않도록 합시다.

실제 사용할 때는 아래 예제와 같이 -name, -mtime 등의 옵션으로 특정 조건을 만족하는 파일들을 지울 때 사용하면 유용하게 사용할 수 있습니다.

 

 

예제

 

ex) 현재 디렉토리 하위에서 확장자가 "txt" 인 파일 모두 삭제

[root@peterdev test]# find . -type f -name "*.txt" -exec rm {} \;

 

ex) 현재 디렉토리 하위에서 확장자가 "test"로 시작하는 모든 파일 삭제

[root@peterdev test]# find . -type f -name "test*" -exec rm {} \;

 

 

ex) 현재 디렉토리 하위에서 생성된지 30일 이상 된 파일만 삭제

[root@peterdev test]# find . -ctime +30 -type f -exec rm {} \;

 

 

ex) 현재 디렉토리 하위에서 크기가 500 kbyte 이상인 파일만 출력

[root@peterdev test]# find . -size +500k -type f -exec rm {} \;

 

 

 

 

 

-Peter의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

 

 

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요

개요

cp 명령어는 리눅스에서 파일을 복사하는 명령어입니다.

윈도우 환경에서는 마우스로 드래그&드롭을 활용하여 파일 복사를 쉽게 할 수 있습니다.

일반적으로 리눅스 서버 환경에서는 Desktop GUI 환경을 사용하지 않기 때문에 마우스 없이 파일을 복사해야 합니다.

콘솔에서 명령어를 수행해서 말이죠.

익숙해지면 윈도우에서 파일 복사하는 것보다 훨씬 복잡한 명령어도 빠르게 수행할 수 있습니다.


사용법

리눅스에서 사용되는 명령어는 모두 대소문자를 구분하니 주의해주세요.

cp 명령어에 대한 자세한 설명은 cp --help 명령어를 통해 볼 수 있습니다. 

Usage: cp [OPTION]... [-T] SOURCE DEST
  or:  cp [OPTION]... SOURCE... DIRECTORY
  or:  cp [OPTION]... -t DIRECTORY SOURCE...

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.


Options
Mandatory arguments to long options are mandatory for short options too.
  -a, --archive                same as -dR --preserve=all
      --attributes-only        don't copy the file data, just the attributes
      --backup[=CONTROL]       make a backup of each existing destination file
  -b                           like --backup but does not accept an argument
      --copy-contents          copy contents of special files when recursive
  -d                           same as --no-dereference --preserve=links
  -f, --force                  if an existing destination file cannot be
                                 opened, remove it and try again (this option
                                 is ignored when the -n option is also used)
  -i, --interactive            prompt before overwrite (overrides a previous -n
                                  option)
  -H                           follow command-line symbolic links in SOURCE
  -l, --link                   hard link files instead of copying
  -L, --dereference            always follow symbolic links in SOURCE
  -n, --no-clobber             do not overwrite an existing file (overrides
                                 a previous -i option)
  -P, --no-dereference         never follow symbolic links in SOURCE
  -p                           same as --preserve=mode,ownership,timestamps
      --preserve[=ATTR_LIST]   preserve the specified attributes (default:
                                 mode,ownership,timestamps), if possible
                                 additional attributes: context, links, xattr,
                                 all
  -c                           deprecated, same as --preserve=context
      --no-preserve=ATTR_LIST  don't preserve the specified attributes
      --parents                use full source file name under DIRECTORY
  -R, -r, --recursive          copy directories recursively
      --reflink[=WHEN]         control clone/CoW copies. See below
      --remove-destination     remove each existing destination file before
                                 attempting to open it (contrast with --force)
      --sparse=WHEN            control creation of sparse files. See below
      --strip-trailing-slashes  remove any trailing slashes from each SOURCE
                                 argument
  -s, --symbolic-link          make symbolic links instead of copying
  -S, --suffix=SUFFIX          override the usual backup suffix
  -t, --target-directory=DIRECTORY  copy all SOURCE arguments into DIRECTORY
  -T, --no-target-directory    treat DEST as a normal file
  -u, --update                 copy only when the SOURCE file is newer
                                 than the destination file or when the
                                 destination file is missing
  -v, --verbose                explain what is being done
  -x, --one-file-system        stay on this file system
  -Z                           set SELinux security context of destination
                                 file to default type
      --context[=CTX]          like -Z, or if CTX is specified then set the
                                 SELinux or SMACK security context to CTX
      --help     display this help and exit
      --version  output version information and exit

주로 사용하는 옵션으로는 하위 디렉토리 및 파일들을 재귀적으로 모두 복사하는 -r 옵션과 복사 과정을 출력하는 -v 최신 파일로 업데이트 해주는 -u 옵션 등이 있습니다.


ex) source 디렉토리 내의 파일과 하위의 모든 디렉토리와 파일을 dest 통째로 복사

cp -r source/ dest/

(source 디렉토리를 dest로 통째로 복사)


ex) 대상 경로에 존재하지 않는 파일이나 복사하려는 파일이 더 최신인 경우에만 복사 (업데이트)

cp -r -u source/ dest/



 

 

-Peter의 우아한 프로그래밍

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요