반응형
각 매개 변수에서 후행 슬래시를 제거하는 가장 간단한 방법은 무엇입니까?
'$ @'배열의 각 매개 변수에서 후행 슬래시를 제거하여 rsync이름별로 디렉토리 를 복사 하는 가장 간단한 방법은 무엇입니까 ?
rsync -a --exclude='*~' "$@" "$dir"
설명을 위해 제목이 변경되었습니다. 여러 후행 슬래시에 대한 설명과 답변을 이해하려면 편집 내역을 참조하십시오.
여기${parameter%word} 에 자세히 설명 된 확장을 사용할 수 있습니다 . 다음은 동작을 보여주는 간단한 테스트 스크립트입니다.
#!/bin/bash
# Call this as:
# ./test.sh one/ two/ three/
#
# Output:
# one two three
echo ${@%/}
허용되는 대답은 후행 슬래시 하나를 자릅니다.
여러 후행 슬래시를 자르는 한 가지 방법은 다음과 같습니다.
VALUE=/looks/like/a/path///
TRIMMED=$(echo $VALUE | sed 's:/*$::')
echo $VALUE $TRIMMED
출력되는 내용 :
/looks/like/a/path/// /looks/like/a/path
이것은 나를 위해 작동합니다. ${VAR%%+(/)}
여기에 설명 된대로 http://wiki.bash-hackers.org/syntax/pattern
쉘 옵션 extglob을 설정해야 할 수 있습니다. 활성화 된 것을 볼 수 없지만 여전히 작동합니다.
realpath주어진 경로를 해결합니다. 무엇보다도 후행 슬래시도 제거합니다. -s다음 simlinks를 방지하기 위해 사용
DIR=/tmp/a///
echo $(realpath -s $DIR)
# output: /tmp/a
zsh 에서는 :a수정자를 사용할 수 있습니다 .
export DIRECTORY='/some//path/name//'
echo "${DIRECTORY:a}"
=> /some/path/name
이것은 realpath파일 / 디렉토리가 누락 된 것처럼 작동 하지만 실패하지 않습니다.
참고 .bash_profile로 SO에서 찾은 답변을 기반 으로이 두 가지 기능을 추가했습니다 . Chris Johnson이 말했듯이 모든 답변 ${x%/}은 하나의 슬래시 만 제거합니다. 이러한 기능은 그들이 말하는대로 수행 할 것입니다. 이것이 유용하기를 바랍니다.
rem_trailing_slash() {
echo $1 | sed 's/\/*$//g'
}
force_trailing_slash() {
echo $(rem_trailing_slash $1)/
}
반응형
'program story' 카테고리의 다른 글
| ConstraintLayout : 프로그래밍 방식으로 제약 조건 변경 (0) | 2020.11.13 |
|---|---|
| xpath에서 대소 문자를 구분하지 않는 일치? (0) | 2020.11.13 |
| 이 var 문자열을 신속하게 NSURL로 변환하는 방법 (0) | 2020.11.13 |
| Windows 업데이트 후“ 'System.Web.Mvc'네임 스페이스에 'Html'유형 또는 네임 스페이스 이름이 없습니다.” (0) | 2020.11.13 |
| .NET에서 디렉토리 크기를 계산하는 가장 좋은 방법은 무엇입니까? (0) | 2020.11.13 |