linux

linux - 기본 I

sysman 2020. 12. 1. 16:11

ls -l file1 -rw-r--r-- 1 root root 1945 6월 11 14:13 file1

File Type:

Permission Mode: chmod

Link Count: ln

Owner: chown

Group: chgrp

File Size:

Mtime: touch -t

File Name: mv

 

chown 명령어

-c : 바뀌어지는 파일들에 대해서만 자세하게 보여준다.

-f : 바뀌어 지지 않는 파일들에 대해서 오류 메시지를 보여주지 않는다.

-v : 작업 상태를 자세히 보여준다.

-R : 경로와 그 하위 파일들 모두를 바꾼다.

#chown user01 file1

#chown user01.other file1

#chown user01:other file1

#chown .other file1

#chown -R user01 dir1

 

chgrp 명령어

-c : 바뀌어지는 파일들에 대해서만 자세하게 보여준다.

-f : 바뀌어 지지 않는 파일들에 대해서 오류 메시지를 보여주지 않는다.

-v : 작업 상태를 자세히 보여준다.

-R : 경로와 그 하위 파일들 모두를 바꾼다.

#chgrp oter file1

#chgrp -R other dir1

 

파일의 사용자 그룹을 변경한다.

chgrp [옵션] [그룹] [파일]

옵션

-c: 변경된 파일만 자세하게 보여준다.

-f: 변경되지 않은 파일에 대해서 오류 메시지를 보여주지 않는다.

-v: 작업상태를 자세히 보여준다.

-R: 경로와 그 하위 파일들을 모두 변경한다.

--help: 도움말을 출력한다.

--version: 버전 정보를 보여준다.

myfile1의 그룹을 다시 corej로 변경해 보자.

[root@localhost ~]# chgrp corej myfile1

[root@localhost ~]# ll myfile1

-rwxr-xr-x 1 corej corej 0 Feb 10 10:10 myfile1

 

 

chmod 명령어

#chmod u+w file1

#chmod g+x,o+x file1

#chmod u-r file1

#chmod 755 file1

#chmod u-wx file1

#chmod a=rwx file1

 

u user 파일/디렉토리의 소유자

g group 파일/디렉토리의 그룹

o other 다른 사용자

a all 소유자, 그룹, 다른 사용자 모두(아무 표시 안할 경우 기본적으로 설정됨)

 

기호 설명

+ 퍼미션 허가 지정한 퍼미션을 허가한다.

- 퍼미션 금지 지정된 퍼미션을 금지시킨다.

= 퍼미션 지정 지정한 퍼미션만 허가하고 나머지는 금지 시킨다. 설명 : 이전에 권한을 어떻게 줬던 지금 설정해주는 권한으로 대체시켜서 사용 가능 (+,-는 내가 이전에 어떠한 권한을 설정해 줬는지 확인해야 하지만 =는 이전에 어떻게 설정하였던 상관없이 설정이 가능한 것이다.)

 

심볼의 정의

u(User)

g(Group)

o(Other)

a(all)

+(Add)

-(Deny)

=(equal)

r(Read)

w(Write)

x(Excute)

 

소유자권한비트 그룹권한비트 기타권한비트

r w x                r w x          r w x

1 1 1                1 1 1          1 1 1

4 2 1                4 2 1          4 2 1

파일 퍼미션

r(read) :파일 읽을 수 있는 권한

w(write):파일 수정할 수 있는 권한

x(excute):파일 실행할 수 있는 권한

 

디렉토리 퍼미션

r(read):디렉토리에서 ls CMD 수행권한

w(write): 디렉토리안의 파일들의 생성과 삭제를 할 수 있는 권한

x(excute) : 디렉토리 내부로의 cd CMD 수행할 수있는 권한

 

--- : 권한 없음 0 000

--x : 실행 권한 1 001

-w- : 쓰기 권한 2 010

-wx : 쓰기 실행 3 011

r-- : 읽기 권한 4 100

r-x : 읽기 실행 5 101

rw- : 읽기 쓰기 6 110

rwx : 읽기 쓰기 실행 7 111

 

(파일과 디렉토리의 퍼미션의 정확한 의미)

----------------------------------

파일 디렉토리

----------------------------------

r (ls CMD)

w (생성 & 삭제)

x (cd CMD)

----------------------------------

 

/exam 디렉토리에는 team01-team10사용자를 위한 공용 디렉토리도 존재한다. 누구나 파일을 생성 할 수 있지만 소유자 외에는 파일 삭제를 할 수 없는 디렉토리
# chmod 1777 team

 

umask 명령어 (파일과 디렉토리가 생성 시 기본 퍼미션을 조정)

파일이나 디렉토리 생성시에 파일과 디렉토리에는 기본적으로 적용되는 퍼미션이 있다. 기본적으로 설정되는 퍼미션의 경우 umask에 의해 결정이 된다. umask는 디렉토리와 파일의 기본 퍼미션을 결정해주는 명령어이다.

관리자 : /etc/bashrc

사용자: $HOME/.bashrc

 

#umask

0022

 

(666 - 022 = 644)

(777 - 022 = 755)

■ Default Permission File Directory

-------------------------------------------

666 777 666 777

022 022 027 027

-------------------------------------------

644 755 640 750

 

# umask 027

# umask

0027

■ Default Permission File Directory

------------------

666 777

027 027

------------------

640 750

 

/etc/bashrc 파일에 등록된 umask 

 

SetUID / SetGID

파일에 대한 소유권을 잠시 다른 사용자에게 빌려 줌으로 인해 소유권이 없는 사용자가 잠시 동안 파일에 대한 소유권으로 권한을 행사 할 수 있는 것을 말한다.

 

패스워드를 변경할 수 있는 권한을 root의 권한, 일반사용자도 사용하기 위해서는 /usr/bin/passwd실행파일의 권한이 root의 SetUID 권한이 부여

[특수권한 SetUID, SetGID, sticky bit 퍼미션]

특수권한                     소유자권한비트 그룹권한비트 기타권한비트

SetUID SetGID sticky-bit r w x               rw x              r w x

1        1         1          1 1 1               1 1 1             1 1 1

4        2         1

         천                      백                 십                 일

 

# chmod 4755 file1

# chmod 6755 file1

(0755 : rwxr-xr-x)(0755 : rwxr-xr-x)

(4755 : rwsr-xr-x)(6755 : rwsr-sr-x)

# chmod 2755 file1

(0755 : rwxr-xr-x)

(2755 : rwxr-sr-x)

# chmod 1777 dir1

(0777 : rwxrwxrwx)

(1777 : rwxrwxrwt)

 

stiky bit

파일에 쓰기 권한 없어도 디렉토리에 쓰기 권한이 있는 경우 디렉토리 권한에 의해 파일은 삭제 된다. 특정 디렉토리의 경우 공유의 목적으로 사용 할 때 사용자들에 의해 파일이 생성 될 수 있으나 디렉토리에 파일을 마음대로 삭제 할 수 없도록 sticky 권한을 부여해 줄 수 있다

t권한 표기

# chmod 1777 dir1 (drwxrwxrwx -> drwwrwxrwt)

# chmod 1001 dir1 (d--------x -> d--------t)

# chmod 1776 dir1 (drwxrwxrw- -> drwxrwxrwT)

#id

uid=1002(user01) gid=1002(user01) groups=1002(user01) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

 

 

파일: 읽기,쓰기,실행 권한

디렉토리 : 파일 삭제, 수정, 명령어(ex: ls -l) 실행 권한

setuid, setgid bit가 설정이 되면서 x문자를 더이상 확인이 불가능하다. 그렇기 때문에 s와 S를 사용하여 현재 자리가 x문자 (실행권한) 유무를 표시한다.

s -> 실행권한이 있음
S -> 실행권한이 없음

 

stiky-bit

chmod 1755 .   //sticky bit 현재 디렉토리의 각 user 사용자가 만든 file은 각 사용자만 삭제,수정가능 다른 사용자가 다른 사람의 file들을 삭제 못하게 함

 

 

해당 그룹만 접근 가능하게..

groupadd -g 60000 project
usermod -aG progect team01
usermod -aG progect fedora

groups fedora
groups team01

chown root.project /test
각 해당 계정으로 들어가서 확인
다른 user 계정으로는 해당 디렉토리에 접근 못함

 

diff 명령어(비교 명령어)

# diff file1 file2/* 두 개의 파일에 대한 간략한 차이점 */

# diff -c file1 file2 /* 두 개의 파일에 대한 자세한 차이점 확인 */

# diff -i file1 file2 /* -i : 대소문자를 구분하지 말아라. A와 a는 같은 것으로 간주 */

 

--brief : 두 파일의 내용이 같은지 다른지 알아봄

-c : 파일의 이름, 날짜 등 파일의 차이점을 상세히 출력

-d : 두 디렉토리간의 차이점 출력

-H : 용량이 큰 파일 비교 시 속도를 빠르게 비교

-i : 대소문자 구분하지 않음

-r --recursive : 두 디렉토리를 비교할때, 모든 서브디렉토리는 재귀적으로(recursively) 비교한다.

 

# diff file1 file3 [ cmp와 달리 파일의 틀린 라인을 표시해 준다 좌 : < , 우 : > ]

# diff -i file1 file2 (-i : ignore case, 대소문자 구분하지 않음)

# diff --recursive dir1 dir2 /* -r 옵션으로도 사용가능) */

# diff --recursive dir1 dir2 두 디렉토리를 비교할 때 사용한다

[추가 작업을 할시]

# du -sk /was1

# du -sk /was2

 

sort 명령어

sort 명령어는 공백 문자(white space: space, Tab)를 필드 구분자로 인식한다

# sort /etc/passwd

# sort –r /etc/passwd /* -r : reverse */

# sort -k 3 filename /* -k : key */

# sort -t : -k 3 –n /etc/passwd /* -t : seperate, -n : numeric */

 

-n : 숫자로 정렬한다.

-r : 내림차순으로 정렬한다. 기본은 오름차순으로 정렬하는 것이다.

-o : 출력 결과를 파일에 저장한다.

-t : 필드 구분자를 지정한다. (기본값은 공백이 기준이 된다)

-k : 정렬할 필드를 지정한다.

 

# sort sortfile1 /* 첫 번째 필드를 기준으로 정렬 */

# sort -r sortfile1 /* 내림차순으로 정렬 */

# sort -k 3 -n sortfile1 /* 세 번째 필드를 기준으로 숫자로 정렬 */

# sort -t : -k 1 /etc/passwd /* -t (seperate) 구분자로 :사용, 기준으로 첫번째 행 정렬 */

# sort -t : -k 3 -n /etc/passwd

 

#CMD | sort

#CMD | sort -r

#CMD | sort -nr

#ps -ef | head| sort

#ps -ef | head| sort -r

#ps -ef | head| sort -k 3

#ps -ef | head| sort -k 3 -r

 

 

디렉토리 용량 확인 하는 법

#du -sh /* 2> /dev/null

#du -h .

#df -h | sort -k 4

#df -h | sort -k 4 -r (df명령어에서는 sort 시에 -h 옵션을 사용하지 말자)

# du -sk /var /* -s : sum, -k : Kbytes */

191416 /var

# cd /var # du -sk * | sort

12 account

146552 lib

16 empty

...

# du -sk * | sort -n /* 첫번째 열을 숫자로 정렬 */

# du -sk * | sort -nr | more /* 첫번째 필드열 역순으로 정렬 */

 

file 명령어 (파일의 종류를 알 수 있는 명령어)

# file /etc/passwd

# file /etc/passwd /* ASCII파일 (# cat /etc/passwd) */

# file /bin/ls /* Binary 파일 (# strings /bin/ls) */

# file /var/run/utmp /* Date 파일 */

# file /etc/rc.d/init.d/sendmail /* Script 파일 */

# file /etc/hosts /etc /* 여러개의 파일 지정 */

 

rpm보다 dnf 명령어 사용하면 의존성 문제를 해결할 수 있다.

 

grep 명령어

파일 내 특정 패턴 검색 하여 그 패턴에 포함하는 라인을 화면에 출력

# grep root /etc/passwd (# cat /etc/passwd | grep root)

# CMD | grep root

# cat /etc/passwd | grep root

# rpm -qa | grep sshd

# ps -ef | grep socket

 

(옵션 사용법) "# grep OPTIONS PATTERN file1"

# grep -l root /etc/hosts /etc/passwd /etc/group /* 여러 파일 중 검색 문자열 존재 파일 출력 */

# grep -n root /etc/group /* -n: number line, 파일에서 root 문자열을 검색하고 라인 번호도 같이 출력

# cat -n /etc/passwd | grep root */

# grep -v root /etc/passwd /* -v: inverse, 파일에서 검색 문자열을 제외하고 나머지 출력 */

# grep -i root /etc/passwd /* -i: ignore case, 파일에서 검색 문자열의 대소문자를 구분하지 않음 */

# grep -w root file1 /* -w: word , 단어의 일부분이 아닌 단어의 전체가 일치하는 경우 출력 */

# grep --color root /etc/passwd

#grep -lr ens33 /etc   /* 파일위치 찾음*/

  /etc/sysconfig/network-scripts/ifcfg-ens33

 

-l : (-l : list files) 패턴이 있는 파일이름만을 출력한다.

-n : (-n : number line) 패턴을 포함하는 줄을 출력할 때 줄번호와 함께 출력한다.

-v : (-v : inVerse, except) 패턴을 포함하는 줄을 제외하고 출력한다.

-c : (-c : count) 패턴을 찾은 줄의 수를 출력한다.

-i : (-i : ignore case, 대문자/소문자) 패턴을 찾을 때 대소문자를 구분하지 않는다.

 

* # grep 'ro*t' /etc/passwd 모든문자를 포함(영문자,숫자) .

# grep 'no...y' /etc/passwd (.에 하나의 영문자나 숫자를 치환) ^root

# grep '^root' /etc/passwd 라인의 시작이 root인 라인을 검색 root$

# grep 'root$' /etc/group 라인의 끝이 root로 끝나는 라인을 검색 [abc]

# grep 'user0[123]' /etc/passwd user0으로 시작하여 1이나 2나,3으로 끝나는 문자열

 

# rpm -q postfix

# rpm -qa postfix

# rpm -qa | grep postfix

 

특정패턴 여러개 검색

# cat /var/log/messages | egrep -i '(warn|err|crit|alert|emerg)'

# cat /etc/passwd | egrep -i '(root|fedora)'

 

grep : 강력한 패턴 매칭 템플릿을 정의하기 위해 "정규 표현식"을 사용할 수 있다.

egrep[옵션] "패턴|패턴|..." [대상파일들] : 확장된 정규 표현식을 사용하며, 찾아낼 패턴을 여러개 지정할 수 있다. '|'기호는 불린 연산자 "OR"에 해당하므로, 정해진 패턴들에 포함되는 모든 라인을 보여준다.

fgrep[옵션] 패턴 [대상파일들] : 패턴과 정확히 일치하는 것만을 찾아 준다.

 

■ fgrep(Fixed grep) CMD

# fgrep '^root' file1

# egrep "fedora|root" /etc/passwd

# egrep -v "fedora|user01" /etc/passwd (# egrep -v "(fedora|user01)" /etc/passwd)

 

system 문자가 들어있는 모든 파일을 찾고 해당 파일들의 목록을 /training 디렉토리에 exam1로 저장
grep -lr system /test > /training/exam1

  grep [OPTION...] PATTERN [FILE...]
        -E        : PATTERN을 확장 정규 표현식(Extended RegEx)으로 해석.
        -F        : PATTERN을 정규 표현식(RegEx)이 아닌 일반 문자열로 해석.
        -G        : PATTERN을 기본 정규 표현식(Basic RegEx)으로 해석.
        -P        : PATTERN을 Perl 정규 표현식(Perl RegEx)으로 해석.
        -e        : 매칭을 위한 PATTERN 전달.
        -f        : 파일에 기록된 내용을 PATTERN으로 사용.
        -i        : 대/소문자 무시.
        -v        : 매칭되는 PATTERN이 존재하지 않는 라인 선택.
        -w        : 단어(word) 단위로 매칭.
        -x        : 라인(line) 단위로 매칭.
        -z        : 라인을 newline(\n)이 아닌 NULL(\0)로 구분.
        -m        : 최대 검색 결과 갯수 제한.
        -b        : 패턴이 매치된 각 라인(-o 사용 시 문자열)의 바이트 옵셋 출력.
        -n        : 검색 결과 출력 라인 앞에 라인 번호 출력.
        -H        : 검색 결과 출력 라인 앞에 파일 이름 표시.
        -h        : 검색 결과 출력 시, 파일 이름 무시.
        -o        : 매치되는 문자열만 표시.
        -q        : 검색 결과 출력하지 않음.
        -a        : 바이너리 파일을 텍스트 파일처럼 처리.
        -I        : 바이너리 파일은 검사하지 않음.
        -d        : 디렉토리 처리 방식 지정. (read, recurse, skip)
        -D        : 장치 파일 처리 방식 지정. (read, skip)
        -r        : 하위 디렉토리 탐색.
        -R        : 심볼릭 링크를 따라가며 모든 하위 디렉토리 탐색.
        -L        : PATTERN이 존재하지 않는 파일 이름만 표시.
        -l        : 패턴이 존재하는 파일 이름만 표시.
        -c        : 파일 당 패턴이 일치하는 라인의 갯수 출력.

 

find 명령어

디렉토리안에서 원하는 파일 찾고자 할 때 사용하는 명령어 

# find / -name core –type f

# find / -user user-1 –group class1

# find / -mtime [-7|7|+7]

# find / -perm [755|-755]

# find / -size [-300M|300M|+300M]

# find / -name core –type f –exec rm –f {} \;

# find / -name core –type -ls

# find / -name core –type f –ok rm {} \;

# find /Log_Dir –name "*.log" –type f \

> -mtime +30 –exec rm 0rf {} \;

# find /Log_Dir –mtime -2 –size +1G –type

 

# find [검색시작위치] [옵션1] [인자값1] [옵션2] [인자값2] ...

 

-name : 파일 이름을 기준으로 검색

-iname: 대소문자를 구별하지 않고 파일 이름을 기준으로 검색

-perm : 파일 권한을 기준으로 검색한다.

-type : 파일의 종류를 기준으로 검색

b : 블록 파일

c : 문자

d : 디렉토리

f : 파일

l : 링크

s : 소켓

-size : 파일의 크기를 기준으로 검색

+n : n보다 크다

-n : n보다 작다

n : n이다

b : 512-byte

c : Bytes (Character = Byte)

k : Kilo Byte

M : Mega Bytes

G : Giga Bytes

w : 2-byte

-links : 링크의 개수를 기준으로 검색

-user : 사용자 ID를 기준으로 검색

-group: 그룹 ID를 기준으로 검색

-atime : 특정 기간 이상 접근하지 않은 파일을 기준으로 검색

-mtime : 특정 기간 이상 수정되지 않은 파일을 기준으로 검색

-inum : number 지정된 inode 번호와 파일을 찾는다.

-print : 표준출력으로 검색된 파일 출력: GNU는 디펄트, Unix는 필수 입력

-exec command {} ₩; :찾은 각 파일에 대해 지정된 명령을 실행

-ok command {} \; : 실행여부(실행 되어 있는지 아닌지)를 사용자에게 확인 후 명령을 실행

 

(형식1) # find / -name core -type [f|d] (# find / -name "*oracle*" -type f)

(형식2) # find / -user user01 -group class1

(형식3) # find / -mtime [-7|7|+7]

(형식4) # find / -perm [-755|755]

(형식5) # find / -size [-300M|300M|+300M]

(형식6) # find / -name core -type f -exec rm {} \;

 

파일 이름 검색(예: # find / -name core –type f)

사용자/그룹 검색(예: # find / -user user01 -group class1)

날짜 검색(예: # find / -mtime 7)

퍼미션 검색(예: # find / -perm 755 -type f)

파일 크기 검색(예: # find / -size 50k -type f)

디렉토리안에 특정한 패턴을 가진 파일들을 삭제(# find / -name file -type f -exec rm {} \;)

find 명령어에서 -exec 옵션에서 세미콜론(;)의 역할 find 명령어를 사용하면서 출력된 결과를 가지고 바로 후처리 실행으로 이어질수 있는 옵션인 exec ok가 존재한다. 해당 문법의마지막에는 세미콜론(;)이 입력된다. 하지만 쉘에서는 세미콜론(;)을 기준으로 앞 명령어와 뒤 명령어를 구분하는 구분자로 사용하기 때문에 그냥 사용할수는 없으며 바로 앞에 역슬래시를 붙여 \; 구조로 만들어줘야 find 명령어에서 정상적으로 해석가능하다.

 

한달(시스템 생성일 ~ 30일)이 지난 로그파일은 그 의미를 상실하게 된다. 따라서 일정 시간이 지난 로그파일의 경우 find라는 명령어를 이용하여 파일을 주기적으로 삭제해 주도록 한다.

# find /Log_Dir1 -name "*.log" -type f -mtime +30 -exec rm –f {} \;

# find /Log_dir2 -name "*.log" -type f -mtime +60 -exec rm –f {} \;

 

파일시스템이 갑자기 풀(Full) 나는 경우

# find /var -mtime -2 -size +1G –type f

# find /var -mtime -2 -size +512M -type f /var/server/log/file.log

[참고] lsof(list open file) # lsof | grep /var/server/log/file.log

 

(실무 예) 에러메세지가 들어 있는 startup script 검색

# /was/bin/startup.sh ..... Server Error .....

# find /was –type f –exec grep –l 'Server Error' {} \;

/was/conf/server.xml

# vi /was/conf/server.xml

/Server Error ......

if 조건 ;

then else

echo "Server Error"

fi

 

실무 예) 에러 메세지를 검색하는 방법

http://www.google.co.kr

-> site:.redhat.com "Server Error"

-> 가상화 .pdf

-> 가상화 .ppt

-> "Server Error1" AND "Server Error2" (AND/OR)

-> "Server Error1"

 

echo 명령어

#echo 인수-<변수>로 지정된 문자열을 화면에 출력

#var=5

#echo $var

5

#bash < 하위쉘 실행

#echo $var 

--> 아무것도 안나옴, var변수가 지역변수로 현재 쉘을 실행하지 않음

 

#LANG=C지역변수

#export LANG=C 환경변수

지역변수로 생성 시 현재 쉘을 벗어나지 못함

해당 쉘을 빠져나가거나 기존 사용된 변수를 사용할 수 없다

상웨쉘로는 전파가 안됨

 

환경변수

현재쉘과 하위쉘 모두 적용됨

사용자가 변경하기 전까지는 기존 변수 값을 그대로 상속 받음

#var =5

#export var

#echo $var

5

#bash <--하위쉘로 감

#echo $var

5

 

변수삭제

#unset var

 

env로 확인시 나오며 환경변수,  안나오면 지역변수 

#env | grep ^var 또는

#set | grep ^var

 

 

#vi test.sh

#!/bin/bash <--하위쉘 실행

test=linux

echo $test

unset test

 

#sh -x test.sh  // -x 디버그 모드 옵션

 

 

touch 명령어

파일의 이름을 지정하였다면 기존에 존재하지 않는 빈 파일을 만들어주고 기존에 존재하는 파일이라면 지정된 파일이나 디렉토리의 수정시간(mtime, Modify Time)이나 접근시간(atime, Access Time)등을 현재 시간으로 업데이트 시켜준다.

# touch file2 /* file2 파일 1개 생성 */

# touch file1 file2 /* file1, file2 파일 2개 생성 */

# touch -t 08081230 file1 /* file1 수정 시간 변경(월,일,시,분) */

 

-a : 최근 파일 사용기간만 변경

-c : 파일을 생성하지 않는 명령어

-d [시간] : 현재 시간 대신 지정한 시간(시분)으로 변경

-m : 최근 파일 변경 시간만 변경 (파일 수정시간)

-r [파일] : 현재 시간 대신 지정한 파일의 시간으로 변경

-t MMDDhhmm [[CC]YY][.SS] : 현재 시간 대신 지정한 시간(월일시분)으로 변경

 

-. 파일시간정보를 현재시간으로 변경하기(-c옵션)

touch file1

touch -c file1

 

touch명령어가 다루는 파일의 timestamps부터 살펴보겠다.

timestamps는 총 3가지가 있다.

ctime = 파일의 속성변경시간(chown, chmod등으로)

atime = 최근에 파일이 최근 읽혀진 시간, 최근 사용시간이라고 함(access time)

mtime = 최근에 파일이 변경된 시간(modification time)

ctime ls-lc명령어를 사용시 나타나는 시간

atime  ls -lu명령어를 사용시 나타나는 시간

mtime ls -l명령어를 사용시 나타나는 시간

 

-. 파일시간정보를 현재시간으로 변경하기(-c옵션)

touch file1

touch -c file1

둘중 아무거나 써도 file1 timestamps는 변경되지만, 차이점은

-c옵션인자를 썻을경우 file1이 존재하지 않으면 그냥 무시되지만

-c옵션인자를 쓰지 않으면 file1존재 하지 않으면 file1이라는 크기0짜리의 파일을 생성한다.

 

-. 사용자가 원하는 시간으로 timestamps변경하기(-t옵션)

형식 : touch -t [[CC]YY]MMDDhhmm 대상파일

ex)

[root@os1 /work/touch]# ls -l testfile1 #시간변경전

-rw-r--r-- 1 root root 0 2013-01-04 02:18 testfile1

 

위 파일을 각각 다른인자를 줘서 변경하였을경우

[root@os1 /work/touch]# touch -t 198702180405 testfile1 #YYYYMMDDhhmm

[root@os1 /work/touch]# ls -l testfile1

-rw-r--r-- 1 root root 0 1987-02-18 04:05 testfile1

 

[root@os1 /work/touch]# touch -t 8702180405 testfile1 #YYMMDDhhmm

[root@os1 /work/touch]# ls -l testfile1

-rw-r--r-- 1 root root 0 1987-02-18 04:05 testfile1

 

[root@os1 /work/touch]# touch -t 02180405 testfile1 #MMDDhhmm

[root@os1 /work/touch]# ls -l testfile1

-rw-r--r-- 1 root root 0 2013-02-18 04:05 testfile1

 

-. 다른파일 timestamps 동일하게 맞추기(-r옵션)

형식 : touch -r [시간을 가져올파일] [시간을 수정할 파일]

-rw-r--r-- 1 root root 0 2013-02-18 04:05 testfile1

-rw-r--r-- 1 root root 0 2002-06-18 20:22 testfile2

testfile2 timestamps정보를 가져와서 testfile1 timestamps정보를 수정해보도록 하겠다.

[root@os1 /work/edu-touch]# touch -r testfile2 testfile1

[root@os1 /work/edu-touch]# ls -l

-rw-r--r-- 1 root root 0 2002-06-18 20:22 testfile1

-rw-r--r-- 1 root root 0 2002-06-18 20:22 testfile2

 

 

 

 timestamps 포맷 변경하는방법

옵션없을때의 시간출력형태

timestamps의 날짜가 date의 연도가 같을경우 형식 = [MM] [DD] [hh:mm]

timestamps의 날짜가 data의 연도가 다를경우 형식 = [MM] [DD] [YYYY]

[root@os2 ~]# ls -l anaconda-ks.cfg

-rw------- 1 root root 970 Dec 31 08:21 anaconda-ks.cfg #연도가 같을때

-rw------- 1 root root 970 Feb 2 1987 anaconda-ks.cfg #연도가 다를때

 

--time-style=long-iso옵션을 줬을때 시간출력 형태

YYYY-MM-DD hh:mm

[root@os1 ~]# ls -l --time-style=long-iso anaconda-ks.cfg

-rw------- 1 root root 970 2012-12-31 02:33 anaconda-ks.cfg

 

'linux' 카테고리의 다른 글

linux - 기본II  (0) 2020.12.07
centos8 vi 편집기  (0) 2020.12.02
Centos - telnet 접속  (0) 2020.11.30
centos - ssh에서 root접속 제한  (0) 2020.11.25
linux - 기본  (0) 2020.11.25