Скрипт оболочки Для комментариев и безотчастных линий в файле

Самый простой способ, который я знаю (не требует root):

inxi -Dplxx

Выводит все диски, их серийные номера и любую дополнительную информацию. -p добавляет разделы. -l добавляет метки. -u добавляет UUID для разделов.

К тому же, это намного легче запомнить, хех.

Пример:

inxi -Dxx
Drives:    HDD Total Size: 810.2GB (42.9% used)
           ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
           ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
           ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
           ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX

Обратите внимание, что это отфильтровывает оптические приводы. Для просмотра оптических данных:

inxi -Dxxd 
Drives:    HDD Total Size: 810.2GB (42.9% used)
           ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
           ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
           ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
           ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX
           Optical-1: /dev/sr0 model: LITE-ON DVDRW SOHW-1693S
           rev: KS09 dev-links: dvd,dvdrw
           Features: speed: 48x multisession: yes
           audio: yes dvd: yes rw: cd-r,cd-rw,dvd-r state: running
           Optical-2: /dev/sr1 model: LITE-ON LTR-52327S rev: QS0C dev-links: cdrom,cdrw
           Features: speed: 52x multisession: yes
           audio: yes dvd: no rw: cd-r,cd-rw state: running

Обратите внимание, что в моей системе Debian lsblk ничего не показывает для серийных номеров, будь то root или пользователь. Вот почему inxi использует гораздо более надежный метод для получения этих данных.

lsblk --nodeps -o name,serial
NAME SERIAL
fd0  
sda  
sdb  
sdc  
sdd  
sr0  
sr1  

lsblk --version
lsblk from util-linux 2.25.2

Как видите, lsblk считает, что оптический привод и дисковод для гибких дисков также являются дисками, что в некотором смысле так и есть, хотя на самом деле это не так, поскольку они не становятся дисками, пока диск не вставлен. И он ничего не показывает для серийного номера, он также, кстати, ничего не показывает для других значений, таких как label.Определенно ошибка, так как эти данные доступны системе, и inxi получает их напрямую.

1
05.07.2018, 14:34
5 ответов
(server=A2; sed -ir -e "s/^$server\$/#\1/")
1
27.01.2020, 23:23

Комментировать:

server=A2; sed -i "/^$server/ c#$server" file.txt

Чтобы раскомментировать:

server=A2; sed -i "/^#$server/ c$server" file.txt

2
27.01.2020, 23:23
#!/bin/bash
server="$1"
case $2 in
start)
    sed -i "s/^#\($server\)\$/\1/" lserver.txt
    ;;
stop)
    sed -i "s/^$server\$/#&/" lserver.txt
    ;;
esac

Сохраните как server_ctrl, затем запустите chmod u+x server_ctrl.


Использование:

./server_ctrl A2 start|stop
0
27.01.2020, 23:23

Попробуйте следующие функции:

function comment() {
    local regex="${1:?}"
    local file="${2:?}"
    local comment_mark="${3:-#}"
    sed -ri "s:^([ ]*)($regex):\\1$comment_mark\\2:" "$file"
}

function uncomment() {
    local regex="${1:?}"
    local file="${2:?}"
    local comment_mark="${3:-#}"
    sed -ri "s:^([ ]*)[$comment_mark]+[ ]?([ ]*$regex):\\1\\2:" "$file"
}

Использование:

comment REGEX FILE [COMMENT-MARK]
uncomment REGEX FILE [COMMENT-MARK]

COMMENT-MARK default value is #

Для вас, если вы:

comment A2 /path/to/lserver
2
27.01.2020, 23:23
I have done by below script and it worked fine too

Scriptname

#!/bin/bash

echo "enter the servername"
read s1
sed -i "/$s1/s/^/#/g" filename

sed -i "s/^#//g" filename
-1
27.01.2020, 23:23

Теги

Похожие вопросы