コンソール、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]*

関連情報