디렉터리 생성을 위한 날짜 스탬프 별칭(.bashrc)

디렉터리 생성을 위한 날짜 스탬프 별칭(.bashrc)

디렉터리에 타임스탬프를 찍기 위해 .bashrc에 별칭을 만들려고 합니다. 분명히 이것은 나에게 별로 효과가 없었습니다. 예를 들어:

.bashrc 아래

alias testit="export testor=$(date +%d);mkdir ~/Desktop/$testor"

결과:

~> testit
mkdir: cannot create directory ‘/home/SJL/Desktop/’: File exists

이제 명령을 실행하면

~> export testor=$(date +%d)
~> mkdir ~/Desktop/$testor

디렉토리가 생성되었습니다. 문제 없습니다.

이제 실행하면:

~> export testor=$(date +%d);mkdir ~/Desktop/$testor

이번에도 문제 없습니다.

.bashrc에 선언된 별칭을 사용하면 작동하지 않습니다.

비슷한 일을 여러 번 해봤지만 날짜 형식에 문제/오류가 있는 것 같아서 정말 궁금합니다.

귀하의 의견에 진심으로 감사드립니다.

답변1

별칭을 만들면 $testor값이 없으므로 별칭은 다음과 같습니다.

export testor=13;mkdir ~/Desktop/

를 사용하여 별칭이 확장된 것을 확인할 수 있습니다 alias aliasname.

이 문제를 해결하려면 큰따옴표 대신 작은따옴표를 사용하세요. 이는 별칭을 실제로 호출할 때까지 변수 확장 및 명령 대체를 연기합니다.

$testor다른건 필요없으시면 그냥 사용하세요

alias tester='mkdir "$HOME/Desktop/$(date '+%d')"'

귀하의 의견을 읽으면 다음과 같이 작동합니다.

alias makedir='mkdir "$HOME/Desktop/$(date '+%d')"'
alias copyfile='cp somefile "$HOME/Desktop/$(date '+%d')"

또는 더 복잡한 셸 기능을 사용하면 모든 파일을 폴더에 복사할 수 있습니다(별칭을 사용하면 절대 수행할 수 없는 작업).

copyfile () {
    destfolder="$HOME/Desktop/$(date '+%d')"
    if [ -d "$destfolder" ]; then
        mkdir "$destfolder"
    fi
    cp "$1" "$destfolder"
}

이는 명령줄에 제공된 파일을 날짜가 표시된 폴더에 복사 copyfile하는 데 사용되는 함수를 정의합니다 . cp폴더가 없으면 생성됩니다.

관련 정보