GNU bash 버전 4.3.11(1)-릴리스(x86_64-pc-linux-gnu) 사용
저는 bash 스크립팅을 처음 접했고 shebang 외에는 어디서부터 시작해야 할지 모르겠습니다 #!
. 다음 명령.
touch -a -m -t 201501010000.00 somefile.txt
, "somefile.txt"의 액세스 시간과 수정 시간을 수정합니다.Bash 스크립트를 얻을 수 있는 방법이 있나요?
"/mnt/harddrive/BASE/" 디렉터리에서 작동합니다.
사용자에게 입력하라는 메시지를 표시합니다. "somefilename.txt" 또는 "somedirectoryname".
- 사용자에게 입력하라는 메시지를 표시합니다. "날짜시간시리즈". 현재 타임스탬프를 사용하지 말고 대신
-t
및 옵션을 사용하여-d
시간/날짜를 명시적으로 지정하세요 . - 재귀적으로 변경/수정합니다. BASE 디렉토리의 "하위 디렉토리"에 있는 "atime", "mtime" 및 해당 "하위 디렉토리"에 있는 "files". 그리고
- 변경/수정. "somefilename.txt"의 "atime"과 "mtime"은 "/mnt/hardrive/BASE/" 디렉터리에 있습니다.
선택 사항 6. "somefilename" 및 "somedirectoryname" 파일 확장자 앞에 "mtime"을 추가합니다. 즉, "somefilename-01-01-2015.txt" 또는 "somedirectoryname-01-01-2015"입니다. 사용자에게 묻습니다. "예/아니요"가 계속되면 "somefilename.txt" "예/아니요"에 "mtime"을 추가하시겠습니까?
stat
디렉터리와 파일을 콘솔이나 "/tmp" 디렉터리의 텍스트 파일로 출력하고 표시한 다음cat
"sometmpfile"을 삭제합니다rm -r
.
답변1
다음과 같이 보일 수 있습니다:
#!/bin/bash
# 1. change directory
cd "/mnt/harddrive/BASE/"
# 2. prompt for name of file or directory
echo -n "file or directory name: "
# ... and read it
read HANDLE
# 2. b - check if it exists and is readable
if [ ! -r "$HANDLE" ]
then
echo "$HANDLE is not readable";
# if not, exit with an exit code != 0
exit 2;
fi
# 3. prompt for datetime
echo -n "datetime of file/directory: "
# ... and read it
read TIMESTAMP
# 4. set datetime for HANDLE (file or directory + files)
find $HANDLE | xargs touch -a -m -t "$TIMESTAMP"
# 5. ask, if the name should be changed
echo -n "change name of file by appending mtime to the name (y/n)?: "
# ... and read it
read YES_NO
if [ "$YES_NO" == "y" ]
then
# get yyyy-mm-dd of modification time
SUFFIX_TS=$(stat -c "%y" $HANDLE | cut -f 1 -d" ")
# rename, supposed, the suffix is always .txt
mv $HANDLE $(basename $HANDLE txt)-$SUFFIX_TS.txt
# let HANDLE hold the name for further processing
HANDLE=$HANDLE-$TIMESTAMP.$SUFFIX
fi
# 7. stat to console
stat $HANDLE
이는 테스트의 일부일 뿐이지만 시작이 되어야 합니다.
여기서 무슨 일이 일어나고 있는지 이해하려면 echo, read, test, cut, touch, find, xargs 명령을 찾아야 합니다.
또한 매개변수 대체, 명령 대체 및 파이프와 같은 몇 가지 기본 bash 개념을 알아야 합니다.