을 내가 가지고 내 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에 반향되는 내용을로드 할 수 있으며 작은 따옴표로 인해 디렉토리 이름에 공백이 있으면 변수가 단일 변수로로드됩니다.
이전 솔루션의 고유 한 이름 공간 오염 문제를 해결합니다.
나는 순서를 뒤집고 두 번째를 추가하는 것이 좋습니다. 년 - 월 - 일 -시 - 분 - 영숫자로 정렬하는이 방법은 날짜별로 정렬합니다. 초 추가의 측면에서 - 당신은 같은 분에 두 개의 디렉토리를 추가하지 않으시겠습니까? –
위대한 코멘트입니다 ... 같은 분에 두 개의 디렉토리를 기대하지는 않지만 ... 초를 추가하는 것이 좋을 것입니다 ... 그리고 나는 지금 1 년째입니다. – SHRram
bash는 공백으로 토큰을 분리합니다 - 그래서'newdir = newdir = mydir $ (date + % Y- % m- % d- % m- % S)'% d는 % % H- % M- % S)' –