mv, cp 명령의 -i 옵션

rogon3의 이미지

cp, mv 의 man 페이지를 보니 대상 파일이 이미 있는 경우에만 -i 옵션이 작동한다고 하는데, 언제나 사용자 허락을 묻게 할 수 있을까요?

~/.bashrc 에 alias를 설정해 봤지만, 당연한건지 변화가 없습니다.

pogusm의 이미지

~/.bashrc 에 alias 설정을 추가하는게 맞습니다.

$ cat .bashrc
 
# .bashrc
 
# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi
 
# User specific aliases and functions
 
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

위처럼 추가한 다음에
설정적용을 위해 재 로그인 하거나,
또는, source명령어나 점(.)명령어로 해당 파일을 실행시키면 즉시 해당 설정이 적용됩니다

$ source .bashrc
$ alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

위처럼 alias 명령어로 제대로 설정되어있는지 확인도 가능하고요..

$ touch aaaa
$ rm aaaa
rm: remove 일반 빈 파일 `aaaa'? y

테스트 해봐도 역시 잘 됩니다.

rogon3의 이미지

우선 답글 고맙습니다.

rm 은 alias 설정이 잘 적용됩니다.

그래서 질문도 cp 와 mv 만 한것이구요

제 경우에는 /home 디렉토리 내의 서로 다른 디렉토리의 파일을 cp 혹은 mv 명령을 내리는 경우 대상 디렉토리에 같은 파일이 있는 경우에만 사용자 허락을 묻습니다.

그런데 저는 대상 디렉토리에 같은 파일이 없는 경우에도 사용자 허락을 묻게 설정하고 싶은겁니다.

예를 들어 ~/aaa 디렉토리 안의 파일 중 일부를 새로 만든 ~/bbb 디렉토리로 복사하거나 옮기는 경우에는 cp 와 mv 를 ~/bashrc 에 alias 설정을 했더라도 ~/bbb 안에 ~/aaa 안의 파일과 같은 파일이 없으므로 사용자 허락을 묻는 메세지가 나오지 않고 바로 복사, 이동되는데, 이 경우에도 사용자 허락을 묻게 할 수 있는지가 제가 알고 싶은 겁니다.

이거 저만 안되는건가요?

*******************************
데비안과 세벌식 사용자입니다

*************************************

*******************************
데비안과 세벌식 사용자입니다

*************************************

pogusm의 이미지

하지만,
mv, cp 명령시 파일이 중복되지 않아도 무조건 사용자의 허락을 묻게 할 수 기본 옵션은 없지 않을까요?

mv 맨페이지의
"만약에 파일 모드가 읽기 전용이고, 표준 입력이 tty이고, -f나 --force 옵션이 지정 되지 않으면, mv 명령은 사용자에게 지정한 파일을 정말 지울것인지 물어본다. 이때, ‘y’나 ‘Y’를 입력해 주어야지만 그 파일을 옮긴다."
라는 정도의 기능을 이용한다면 모를까....

근데 그런 기능이 굳이 왜 필요한가.. 라는 의문이 좀 드네요 ^^;

rogon3의 이미지

디렉토리를 정리하면서 답답한 걸 느꼈습니다

예를들어 ~/aaa 에 수백개의 파일들이 형식, 명칭 불문 규칙도 없이 생성되고, 뒤죽박죽 섞여 있어서 정리를 할 필요를 느꼈다고 한다면,

mv ~/aaa/* ~/bbb 명령을 내린 후에 ~/bbb 에 들어갈 것들만 y를 입력해 분리하고, 또 ~/ccc 를 만들어 같은 방법으로 분리할 수 있다면 좀 낫지 않을까 하는 생각을 했습니다.

불확실하지만, 도스에서 alias 설정을 해두면 일일이 질문했었던 것 같은 기억이 있습니다.

수만개, 수백만개 정도라면 스크립트나, 더한걸 만들었겠지만, 몇백개 정도는 안되는 머리와 지식으로 시간들여 스크립트나 프로그래밍을 하느니, 차라리 저런식의 단순한 방법이 더 빠른 경험이 많기에... ㅡ.ㅡ

*******************************
데비안과 세벌식 사용자입니다

*************************************

*******************************
데비안과 세벌식 사용자입니다

*************************************

cinsk의 이미지

busybox를 수정해서 실행하세요.

직접 해보지는 않았지만, libbb/copy_file.c에서 copy_file 내, 아래 코드를:

	if (dest_exists) {
		errno = EEXIST;
		ovr = ask_and_unlink(dest, flags);
		if (ovr <= 0)
			return ovr;
	}

아래와 같이 고치면 될 것 같네요:

	if (1) {
		errno = EEXIST;
		ovr = ask_and_unlink(dest, flags);
		if (ovr <= 0)
			return ovr;
	}

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

rogon3의 이미지

답글 고맙습니다.

busybox에 대해 문외한 이라 여기저기 검색해봤습니다만...

우선 제 컴퓨터에 busybox v1.17.1 이 설치되어 있고, 윈도그의 복구모드에서 쓸 수 있는 콘솔 명령어 집합과 비슷한 일을 한다는 정도 까지만 알 수 있습니다.

하지만, libbb/copy_file.c 라는 디렉토리와 파일은 찾을 수가 없습니다.

p.s. 워낙 아는게 없기 때문에 알려줘야 할 것들이 많다면, 검색해봐야할 키워드만 나열해주셔도 됩니다.

*******************************
데비안과 세벌식 사용자입니다

*************************************

*******************************
데비안과 세벌식 사용자입니다

*************************************

cinsk의 이미지

배포판에 따라 다르겠지만, 아무 배포판에서나 가능한 방법으로는,

source를 받아서 압축을 풀고, 해당 파일을 찾아 수정한 다음, make menuconfig, make install을 하시면 됩니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

rogon3의 이미지

고맙습니다.

어제, 오늘 검색으로 막연한 감은 있었는데, 가물가물한 곳에 써치라이트를 비춰주시네요

다만 검색하는 도중에 busybox로 인해 새로생긴 궁금한 점이 여럿(embedded, emdebian, uClibc, glibc, cross....) 있는데, 너무 괴롭혀 드리는것 같아... 는 핑게고 제가 괴롭습니다.

애초의 단순한 질문에 비해, 알아야 할게 너무 많아졌습니다. ㅡ.ㅡ

신경써 주셔서 감사합니다.

*******************************
데비안과 세벌식 사용자입니다

*************************************

*******************************
데비안과 세벌식 사용자입니다

*************************************

planetarium의 이미지

busybox에 대해서 자세히 이해하고 사용하시려면 차라리 find나 for문 정도 이용해서 파일 하나씩 물어보는 쉘 스크립트를 작성하는게 수십배 쉽고 편합니다...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.