본문 바로가기

과제

파일명 검색받아서 디렉터리면 복사 X , 파일만 지정된 위치에 복사

#!/bin/bash
# 파일명 검색받아서 디렉터리면 복사 X , 파일만 지정된 위치에 복사
echo -n "Input FileName : "
read file
echo -n "Copy to Directory : "
read dir

# 디렉터리가 존재하지 않는다면 생성하고 permission 755 부여
if [ ! -e "$dir" ]; then
    mkdir "$dir"
    chmod 755 "$dir"
fi

ROOT=/root

# 파일 존재 여부 및 디렉터리 여부 확인
if [ -f "$file" ]; then
    # 파일이면 지정된 디렉터리로 복사
    if cp "$file" "$ROOT/$dir"; then
        echo "$file 파일이 $dir 디렉터리로 복사되었습니다."
    else
        echo "$file을(를) $dir 디렉터리로 복사하는 데 실패했습니다."
    fi
elif [ -d "$file" ]; then
    # 디렉터리인 경우
    echo "'$file'은(는) 디렉터리입니다."
else
    # 파일/디렉터리가 아닌 경우
    echo "'$file' 파일이 존재하지 않습니다."
fi

--디렉터리 존재할 때 파일 copy
[root@localhost ~]# sh cp_file.sh
Input FileName : file2
Copy to Directory : dir1
file2 파일이 dir1 디렉터리로 복사되었습니다.
[root@localhost ~]# ls dir1
file2

--디렉터리 존재하지 않을때 파일 copy
[root@localhost ~]# ls dir2
ls: cannot access 'dir2': 그런 파일이나 디렉터리가 없습니다
[root@localhost ~]# sh cp_file.sh
Input FileName : file2
Copy to Directory : dir2
file2 파일이 dir2 디렉터리로 복사되었습니다.
[root@localhost ~]# ls dir2
file2

--파일이 아닌 디렉터리 입력
[root@localhost ~]# sh cp_file.sh
Input FileName : dir2
Copy to Directory : dir1
'dir2'은(는) 디렉터리입니다.

--복사할 file이 존재하지 않을경우
[root@localhost ~]# sh cp_file.sh
Input FileName : file
Copy to Directory : dir1
'file' 파일이 존재하지 않습니다.

--경로를 다르게 입력했을경우
[root@localhost ~]# sh cp_file.sh
Input FileName : file2
Copy to Directory : /home/dir1 #경로를 root directory가 아닌 home directory로 지정
cp: cannot create regular file '/root//home/dir1': 그런 파일이나 디렉터리가 없습니다
file2을(를) /home/dir1 디렉터리로 복사하는 데 실패했습니다.

'과제' 카테고리의 다른 글

연습문제 - RockyLinux  (1) 2024.03.26
step 3-5  (1) 2024.03.22
파일명을 입력받으면 해당 파일의 형식을 표시해주는 스크립트  (0) 2024.03.21
사용자 대량 생성 프로그램 만들기  (0) 2024.03.21
SHELL redirection  (0) 2024.03.19