사용자가 find 명령을 통해 이 변수를 사용하기 위해 특정 파일 경로를 입력할 수 있는 스크립트를 작성하고 싶습니다.
이것을 시도했지만 구문이 잘못된 것 같습니다.
enter file path : $PATH
find $PATH -size +1M -exec rm {}\;
find $userpath -size $size -exec rm {}\;
내가 사용해야 하는 치수 등 을 사용자가 입력하도록 하려면 어떻게 해야 합니까?
답변1
을 사용해야 합니다 read
.
echo Enter file path:
read userpath
find $userpath -size +1M -exec rm {}\;
또한 안전을 위해 를 사용하는 것이 좋습니다 rm -i
.
답변2
흠, 귀하의 질문을 잘못 읽은 것 같습니다. 따라서 입력을 읽으려면 Bash 내장 명령을 사용할 수 있습니다 read
(출력 참조 help read
).
다른 이름을 지정하지 않는 한 출력이 자동으로 명명된(셸!) 변수로 들어가는 read
사용자 정의 프롬프트를 사용할 수 있습니다 .-p
REPLY
read -p "enter file path : "
find "$REPLY" -size +1M -exec rm {} +
참고: 나는 또한 \;
를+
~해야 한다호출 횟수가 줄어들지 find
만 휴대성이 떨어질 수 있습니다.
이 변수는 PATH
특별한 의미를 가지며 미리 채워져 있습니다. 이것이 어떤 껍질인지는 밝히지 않았지만 기본 규칙은 내가 아는 모든 껍질에 동일합니다. 환경 PATH
변수는 실행 파일(바이너리, 스크립트...)이 포함된 폴더를 찾는 데 사용됩니다. 그런 다음 전체 또는 상대 경로를 제공하지 않고도 이러한 파일을 실행할 수 있습니다.
확인해주십시오이 문서더 알아보기. 인용하다:
$PATH
/usr/bin/
일반적으로 , 등의 바이너리 파일 경로입니다/usr/X11R6/bin/
./usr/local/bin
명령이 주어지면 쉘은 실행 파일 경로에 나열된 디렉토리에서 자동으로 해시 테이블 검색을 수행합니다. 경로는 환경 변수에 저장되며
$PATH
콜론으로 구분된 디렉터리 목록입니다. 일반적으로 시스템은 $PATH 정의를/etc/profile
및/또는 에 저장합니다~/.bashrc
(부록 H 참조).bash$ echo $PATH /bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/sbin:/usr/sbin
PATH=${PATH}:/opt/bin
/opt/bin
현재 경로에 디렉터리를 추가합니다 . 스크립트에서는 이런 방식으로 경로에 디렉터리를 임시로 추가하는 것이 편리할 수 있습니다. 이는 스크립트가 종료될 때 원래 상태를 복원합니다$PATH
(스크립트와 같은 하위 프로세스는 상위 프로세스(셸)의 환경을 변경할 수 없습니다).노트안전 조치로
./
현재 "작업 디렉토리"는 일반적으로 생략됩니다.$PATH
다음을 사용하여 echo "$PATH"
보기현재의실행 중인 셸에서 이 변수의 내용입니다.
답변3
다음과 같은 것을 사용해야 합니다:
read -i "Enter path" PATH
find $PATH -size +1M -exec rm {}\;
그러나 PATH 변수는 이진 검색 경로보다 우선합니다. 또한 rm 명령은 미리 자동으로 삭제할 수 있으며 모든 내용을 삭제할 수는 없습니다.
다음 코드를 사용하는 것이 좋습니다.
read -i "Enter path" DIR
/bin/find $DIR -size +1M -delete -print
이 명령은 작업 환경/운영 체제를 손상시킬 수 있으므로 위험을 감수하고 사용하십시오!