`&> / dev / null &`의 여러 줄을 줄이거 나 병합하십시오.


11

기계를 시작할 때마다 다음 프로그램을 실행합니다.

$ cat start.sh
#! /bin/bash
google-chrome &> /dev/null &
lantern &> /dev/null &
xdg-open . &> /dev/null &
emacs &> /dev/null  &
code ~/Programs/ &> /dev/null &
xdg-open ~/Reference/topic_regex.md &> /dev/null &

성가신 &> /dev/null &... 어떻게 논리를 줄일 수 있습니까?


2
해당 프로그램의 전부 또는 대부분을 시작 응용 프로그램에 넣을 수 있습니다 .
추후 공지가있을 때까지 일시 중지되었습니다.

훌륭하고 환상적인 응용 프로그램. 그놈 세션에서 오류가 발생하여 갑작스러운 충돌이 발생하므로 tmux 서버에서 시작합니다. @DennisWilliamson
미적분학

답변:


12

부품 &> /dev/null은 출력 리디렉션을 의미합니다. 여러 명령을 블록으로 그룹화하여 동일한 파일로 리디렉션 할 수 있습니다.

#! /bin/bash
{
google-chrome &
lantern &
xdg-open . &
emacs  &
code ~/Programs/ &
xdg-open ~/Reference/topic_regex.md &
} &> /dev/null

그러나 백그라운드에서 개별 명령을 시작하는 데 동일한 기능을 사용할 수 없습니다 ( &). &블록 뒤에 두는 것은 전체 블록을 백그라운드에서 단일 스크립트로 실행하는 것을 의미합니다.


있습니다 수행 &>구문이 사용되지 않으며 교체해야 >/dev/null 2>&1 wiki-dev.bash-hackers.org/scripting/obsolete
multithr3at3d

4
@ multithr3at3d POSIX와 호환되지 않는 Bashism? 확실한! 더 이상 사용되지 않거나 사용되지 않습니까? 이 목록의 세 저자가 2015 년에 마지막으로 편집 한 내용에 관계없이 아니요 . 여기서는 짧은 형식이며 명령 줄을 줄이는 것이 바로 OP의 목표입니다. 누군가가 #!/bin/bash이식성을 검사하지 않고 다른 쉘에서 스크립트를 실행하면 작동하지 않으면 Bash의 결함이 아닙니다.
디저트

12

나는 함수를 작성하여 .bashrc터미널에서 분리 된 것들을 실행하도록 했습니다 .

detach () 
{ 
    ( "$@" &> /dev/null & )
}

... 그리고:

detach google-chrome
detach xdg-open ~/Reference/topic_regex.md

그리고 게으 르기 때문에 다음에 대한 바로 가기도 작성했습니다 xdg-open.

xo () 
{ 
    for var in "$@"; do
        detach xdg-open "$var";
    done
}

xdg-open정확히 하나의 인수를 기대 하기 때문에이 함수는 xo주어진 모든 인수를 반복하고 xdg-open각 인수를 개별적으로 호출 합니다.

이를 통해 다음이 가능합니다.

detach google-chrome
xo . ~/Reference/topic_regex.md

5

모든 후속 명령에 대한 출력을

exec 1>/dev/null
exec 2>/dev/null

3

루프를 만들고 명령으로 인수로 지정할 수 있습니다.

for i in google-chrome "xdg-open ." "code ~/Programs/"; do
  $i &
done &>/dev/null

중괄호가있는 서브 쉘 접근 방식과 정확히 같은 방식으로 출력을 요약하고 모든 출력을 한 번에 리디렉션 할 수 있습니다.


3

/dev/null리디렉션을 단축하기 위해 짧은 경로와 같은 특수 파일을 만들었습니다 . 내가 사용하는 /n새 파일의 경로로 :

sudo mknod -m 0666 /n c 1 3

이 방법으로 다음과 같이 개별 라인을 줄일 수 있습니다.

google-chrome &>/n &

출처 : / dev / null을 만드는 방법?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.