파일을 만들고, 복사하고, 이름을 바꾸고, 지우고, 링크를 거는 명령이다. 지운 파일은 휴지통으로 가지 않는다.
touch와 mkdir
touch는 파일이 없으면 빈 파일을 만들고, 있으면 수정 시각을 지금으로 바꾼다.
touch notes.txt
touch -d '2026-01-01 09:00' notes.txtmkdir는 디렉터리를 만든다. `-p`는 중간 디렉터리까지 만들고, 이미 있어도 실패로 보지 않는다. `-m`은 만들 때의 권한이다. umask는 여기서도 적용된다.
mkdir work
mkdir -p work/a/b
mkdir -m 755 sharedcp
cp a.txt b.txt
cp a.txt dir/
cp -a src dest
cp -a src/. dest/대상이 이미 있는 디렉터리면 그 안에 복사된다. `cp -a src dest`에서 dest가 이미 있으면 결과는 `dest/src`다. src의 내용물만 dest 안에 넣으려면 `src/.`처럼 적는다.
`-a`는 권한, 시각, 심볼릭 링크를 가능한 한 유지하는 아카이브 복사다. 디렉터리를 그대로 옮길 준비에 맞다. `-r`도 디렉터리를 재귀로 복사하지만, 보존 범위는 `-a`보다 좁다.
cp -i a.txt b.txt
cp -n a.txt b.txt
cp -u a.txt b.txt
cp -v a.txt b.txt`-i`는 덮어쓰기 전에 묻는다. `-n`은 대상이 이미 있으면 건너뛴다. `-u`는 대상이 없거나 더 오래되었을 때만 복사한다. `-v`는 복사한 이름을 보여 준다.
이름이 `-`로 시작하는 파일은 옵션으로 읽힐 수 있다. `--`를 사이에 둔다.
cp -- -notes.txt safe.txtmv
mv는 이름을 바꾸거나 다른 디렉터리로 옮긴다. 같은 파일시스템 안에서는 이름만 바뀐다. 다른 파일시스템으로 옮기면 복사한 뒤 원본을 지운다. 도중에 끊기면 양쪽을 확인한다.
mv a.txt b.txt
mv a.txt dir/
mv -i old.txt new.txt`-i`와 `-n`의 뜻은 cp와 같다.
rm과 rmdir
rm file.txt
rm -i file.txt
rmdir empty-dir
rm -r old-dirrmdir는 비어 있는 디렉터리만 지운다. 내용까지 지우려면 `rm -r`이다.
변수가 비어 있는데 경로를 붙이면 지우는 범위가 달라질 수 있다. 지울 경로는 따옴표로 감싸고, 값이 있는지 확인한 뒤에 실행한다.
rm -rf -- "$dir"`--`는 그 뒤의 인자를 옵션으로 해석하지 말라는 표시다.
ln
하드 링크는 같은 파일의 다른 이름이다. 심볼릭 링크는 경로를 적어 둔 파일이다.
ln file.txt hard.txt
ln -s /var/log/syslog ~/syslog
ls -l ~/syslog하드 링크는 같은 파일시스템 안에서만 만들고, 디렉터리에는 보통 만들지 못한다. 원본 이름을 지워도 링크 수가 남아 있으면 데이터는 남는다. `ls -l`의 두 번째 숫자가 그 개수다.
심볼릭 링크는 다른 파일시스템을 가리킬 수 있다. 대상을 옮기거나 지우면 링크는 끊긴다. `ls -l`이 `이름 -> 대상`으로 보여 준다.
이미 있는 링크의 대상을 바꿀 때는 `-sfn`을 쓴다. `-n`은 링크가 디렉터리를 가리키고 있어도 그 링크 자체를 교체한다.
ln -sfn /new/target link-name
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.