명령줄 옵션 -noautosave를 사용하여 nedit를 시작하도록 별칭을 설정하고 싶습니다(텍스트 파일은 최대 500MB이므로). 단순해 보이는 것들:
alias nn="nedit -noautosave $1 &"
그냥 오류가 좀 발생해요"허가가 거부되었습니다"다른 파일과 다른 오류일치하는 "'"을(를) 찾는 동안 예기치 않은 EOF가 발생했습니다.그리고"예기치 않은 파일 끝".
Google에서 검색한 후 찾은 해결책 중 하나는 인용문을 확인하는 것이지만 거기에 가능한 오류가 표시되지 않습니다.
또한 함수 선언을 시도했습니다.
function nn () { nedit -noautosave $1 &}
또한 동일한 오류로 실패했습니다.
답변1
열려는 파일 중 하나가 지정된 크기보다 큰 경우에만 실행하려면 다음을 시도해 보십시오. (저는 100M를 사용했지만 크기 제한을 직접 설정할 수 있습니다. nedit
)-noautosave
function nn() {
big=0;
let big+=$(find "$@" -size +100M|wc -l)
if [ $big -gt 0 ]; then
nedit -noautosave -- "$@" &
else
nedit -- "$@" &
fi
}
에서 man nedit
:
-- Treats all subsequent arguments as file names,
even if they start with a dash. This is so NEdit
can access files that begin with the dash
character.
답변2
에 인수를 전달할 수 없습니다 alias
. a를 사용해야 하므로 function
올바른 방향으로 가고 있는 것입니다. function
명령을 사용할 때 오타가 발생했습니다 . 그러나 다음 중 어느 것이든 수행됩니다.
$ nn () { nedit -noautosave -- "$@" & }
-또는-
$ function nn() { nedit -noautosave -- "$@" & }
제거해야 할 경우 unset
명령을 사용하십시오. 즉 unset -f nn
.
이 방법으로 일련의 파일을 열려면 대신 을 사용합니다 "$@"
.$1
bash
매뉴얼 페이지에서 발췌
@ Expands to the positional parameters, starting from one. When the
expansion occurs within double quotes, each parameter expands to a
separate word. That is, "$@" is equivalent to "$1" "$2" ... If
the double-quoted expansion occurs within a word, the expansion of
the first parameter is joined with the beginning part of the original
word, and the expansion of the last parameter is joined with the last
part of the original word. When there are no positional parameters,
"$@" and $@ expand to nothing (i.e., they are removed).
예
$ function nn() { nedit -noautosave -- "$@" & }
$ nn ~/.bashrc
[3] 19830
답변3
별칭의 전체 목적이 -noautosave
편집하는 모든 파일 에 옵션을 적용하는 것이라면
alias nn='nedit -noautosave'
그 정도면 충분합니다. 그런 다음 다음과 같이 사용할 수 있습니다.
nn your_file &
답변4
alias nn="nedit -noautosave $1 &"
변수 확장은 큰따옴표로 해석됩니다. 셸 명령줄에서 명령을 실행하는 경우 .bashrc
위치 인수(셸에 전달된 인수)가 없으므로 $1
확장은 빈 문자열로 이루어지며 별칭 값은 입니다 nnedit -noautosave &
. 그래서 실행하면 nn /path/to/file.txt
으로 확장됩니다 nnedit -noautosave & /path/to/file.txt
. "권한이 거부되었습니다"라는 오류 메시지는 /path/to/file.txt
실행할 수 없기 때문에 발생합니다.
별칭을 사용하여 alias nn='nedit -noautosave $1 &'
확장을 방지하고 내부를 보존할 수 있습니다. $1
그러나 별칭은 매개 변수를 사용하지 않고 제자리에서 대체되기 때문에 더 좋지 않습니다. 따라서 $1
별칭을 확장할 때 첫 번째 위치 인수로 대체됩니다. 이는 이전보다 낫지 않습니다.
function nn () { nedit -noautosave $1 &}
이것은 기본적으로 정확합니다. 이전과 동일한 오류가 발생하는 경우 별칭이 nn
여전히 정의되어 있고 동일한 이름을 가진 함수보다 우선하기 때문입니다. unalias nn
별칭 정의를 해제 하는 데 사용됩니다 .
함수는 다음과 같이 작성되어야 합니다.
function nn () { nedit -autosave "$@" & }
파일 이름에 공백이나 와일드카드가 있으면 큰따옴표가 필요합니다. "$@"
대체를 사용하면 "$1"
여러 매개변수를 전달할 수 있습니다.