콘솔, tty[0-9]* 및 vc/[0-9]*를 제외하고 /etc/securetty의 모든 항목을 삭제합니다.

콘솔, tty[0-9]* 및 vc/[0-9]*를 제외하고 /etc/securetty의 모든 항목을 삭제합니다.

/etc/securetty콘솔 tty[0-9]vc/[09].​

~]# cat /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
ttyS0
ttysclp0

egrep명령을 사용하여 출력을 수집 하려고 합니다 . 하지만 1-9 "tty 또는 vc/"만 얻는 방법을 모르겠습니다.

~]# egrep "console|vc/|tty" /etc/securetty

다음 결과를 얻을 수 있도록 도와주세요.

~]# cat /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9

답변1

거기쯤이야!

egrep 'console|vc/[0-9]$|tty[0-9]$' /etc/securetty

일반적인 팁은 변수를 대체해야 하는 경우가 아니면 큰따옴표보다는 작은따옴표를 사용하는 것입니다.

답변2

이것은 나에게 효과적입니다.

# sed '/^console$\|^vc\/[1-9]$\|^tty[1-9]$/!d' /etc/securetty

확인한 후 플래그를 사용하여 파일을 교체 -i할 수 있습니다. sed하지만 먼저 파일을 백업하세요!

답변3

grep각각 옵션이 있는 여러 패턴을 제공하면 -e패턴 간에 효과적으로 OR이 발생합니다. 여기에서는 grep해당 -x옵션을 사용하여 완전한 줄과 일치하도록 만듭니다.

$ grep -x -e console -e 'tty[0-9]' -e 'vc/[0-9]' /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9

나는 당신이 의미한다고 생각하는 vc/[09]패턴을 수정했습니다.vc/[0-9]

숫자 및(또는 더 큰 정수)가 포함된 장치 이름도 원하는 경우 tty패턴으로 및를 사용하세요.vc1011tty[0-9]*vc[0-9]*

관련 정보