`&> /dev/null &`의 여러 줄을 줄이거나 병합합니다.

`&> /dev/null &`의 여러 줄을 줄이거나 병합합니다.

머신을 시작할 때마다 다음 프로그램을 실행합니다.

$ 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 &... 논리를 어떻게 단축할 수 있을까요?

답변1

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

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

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

답변2

.bashrc터미널에서 분리된 작업을 실행하기 위해 함수를 작성하고 이를 my에 넣었습니다 .

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

답변3

다음을 사용하여 모든 후속 명령의 출력을 리디렉션할 수 있습니다.

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

답변4

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

sudo mknod -m 0666 /n c 1 3

이 방법을 사용하면 개별 줄을 다음과 같이 줄일 수 있습니다.

google-chrome &>/n &

원천:/dev/null을 어떻게 생성하나요?

관련 정보