2012-05-18 3 views
4

새로 생성 된 디렉토리가 자동으로 현재 시간을 이름의 일부로 갖는 스크립트를 만들고 싶습니다.유닉스 쉘에 자동 시간이있는 디렉토리

구문은

mkdir mydir[min-hour-day-month-year] 

따라서 최근의 디렉토리 1 시간

mydir111718052012 

등 이후에 생성 된

mydir101718052012 

디렉토리로 지정됩니다. 간단한 질문에 대한 죄송합니다

, 나는 유닉스에 새로운 오전 나는 bash는

편집 사용 : 왜 올바른 다음되지 않습니다? 내가 어떻게 해 ?

newdir = mydir$(date +%Y-%m-%d-%H-%M-%S) 
cp new.txt newdir/new1.txt 
+0

나는 순서를 뒤집고 두 번째를 추가하는 것이 좋습니다. 년 - 월 - 일 -시 - 분 - 영숫자로 정렬하는이 방법은 날짜별로 정렬합니다. 초 추가의 측면에서 - 당신은 같은 분에 두 개의 디렉토리를 추가하지 않으시겠습니까? –

+0

위대한 코멘트입니다 ... 같은 분에 두 개의 디렉토리를 기대하지는 않지만 ... 초를 추가하는 것이 좋을 것입니다 ... 그리고 나는 지금 1 년째입니다. – SHRram

+0

bash는 공백으로 토큰을 분리합니다 - 그래서'newdir = newdir = mydir $ (date + % Y- % m- % d- % m- % S)'% d는 % % H- % M- % S)' –

답변

3

을 내가 가지고 내 bash는 시작 스크립트에서 설정 한 다음과 같은 기능 : 당신이 원한다면 내가 명령 줄에 주로 사용할

# Date Time Stamp 
dts() { date +%Y-%m-%d-%H-%M-%S; } 

# Date mkdir 
dmkdir() { mkdir $(dts); } 

이를 스크립트 내에서 실행하려면 시작 스크립트의 소스를 지정하거나 스크립트 내의 셸 함수를 정의해야합니다.

# Date mkdir 
dmkdir() { mkdir "[email protected]$(dts)"; } 

이이 같이 호출됩니다 : 당신의 이름 (예 : mydir)를 씁니다 원한다면, 당신은 쉽게이 같은 인수 줄 수

$ dmkdir mydir 
$ ls -d mydir* 
mydir2012-05-18-11-38-40 

이 의미 하는가를 당신의 인수 경우 목록에 공백이 있으면 디렉토리 이름에 표시됩니다. 디렉토리 이름은 좋은 것일 수도 있고 그렇지 않을 수도 있습니다.

dmkdir() { newdir="[email protected]$(dts)"; mkdir $newdir; } 

과 같이 사용합니다 :

당신은 쉘 함수 내에서 쉘 변수를 지정할 수 있습니다

이이 기능을 외부에서 액세스 할 수 있습니다

$ dmkdir mydir 
$ cd $newdir 
$ pwd 
/tmp/mydir2012-05-18-12-54-32 

이 매우 편리하지만,있다 몇 가지주의해야 할 것들이 있습니다 : 1) 네임 스페이스를 오염시키고 있습니다 - 다른 프로세스에 의해 생성 된 $newdir이라는 쉘 변수를 덮어 쓸 수 있습니다 2) dmkdir이 쓸 변수를 잊어 버리는 것은 매우 쉽습니다. 특히 네가 많이 먹는다면 쉘 함수는 변수를 작성합니다. 좋은 명명 규칙은 두 가지 문제에 많은 도움이됩니다.이것은 다음과 같이 호출 할 수 있습니다

dmkdir() { local newdir="[email protected]$(dts)"; mkdir $newdir && echo $newdir; } 

:

또 다른 옵션은 쉘 기능은 디렉토리 이름을 반향하는 것입니다

newdir="$(dmkdir mydir)" 

local

$newdir이 dmkdir 외부에서 사용할 수 없다는 것을 의미를, (Good Thing)입니다.

&&을 사용하면 디렉터리 만들기가 성공한 경우에만 디렉터리 이름을 표시합니다.

$() 구문을 사용하면 변수에로드 될 STDOUT에 반향되는 내용을로드 할 수 있으며 작은 따옴표로 인해 디렉토리 이름에 공백이 있으면 변수가 단일 변수로로드됩니다.

이전 솔루션의 고유 한 이름 공간 오염 문제를 해결합니다.

+0

감사합니다; 나는 간단한 질문이있다 - 새로 만든 디렉토리 (예를 들어 'newdirectory')에 어떻게 값을 할당 할 수 있는가? 예를 들어 'cp xfile.txt/newdirectory'와 같이 스크립트에서 다운 스트림을 사용할 수있다. – SHRram

+0

편집 내용을 참조하십시오. – SHRram

+0

내가 할 때의 오류 - newdir = dmkdir mydir, 디렉토리의 이름을 저장하고 싶다. – SHRram

5

날짜의 구현이이 옵션을 지원하는 경우 간단하게 수행 할 수 있습니다이 샘플 출력에 따라 이름에 하이픈을 삽입하지 않는

mkdir mydir$(date +%M%H%d%m%Y) 

참고. 초기 설명에서와 같이 하이픈으로 활용하려면 다음 작업을

mkdir mydir$(date +%M-%H-%d-%m-%Y) 
관련 문제