Linux bash: удалить первый символ со значения переменной

Недавно возникла задача в Linux bash скрипте удалить первый символ со значения переменной.

Я уже ранее писал о том, как можно удалить удалить последний символ со значения переменной в Linux bash.

Удалить первый символ значения можно так:

#!/bin/bash

str1="foo bar"
echo "String1: ${str1}"

str2=${str1:1:${#str1}}
echo "String2: ${str2}"

Пример использования утилит grep, cut, uniq и sort для получения списка уникальных IP адресов, которые посещали определенный URL

Если возникает необходимость получить список уникальных IP адресов, которые посещали определенный URL из логов веб сервера Apache, то это можно сделать таким способом:

# grep -rn "some/string" ./access_lo* |cut -d: -f3 |cut -d- -f1 |uniq |sort

Как заменить строки в файле с помощью sed

Если необходимо заменить все вхождения строки search на replace можно это сделать командой:

# sed 's/search/replace/g' file1.txt > file2.txt

где файл file1.txt, в котором будет производиться поиск строк search, а file2.txt будет содержать replace вместо всех найденых вхождений

Если в шаблоне поиска и/или замены необходимо заменять слеш /, то его нужно экранировать с помощью обратного слеша так: \/

Если необходимо найти все файлы в папке и сделать замену не выполняя бекап можно воспользоваться оцией sed -i в комбинации с find, например так:

# find /home/taras/test_sed -type f -exec sed -i 's/search/replace/g' {} \;

Более детальную информцию можно прочитать в документации

# man sed

MySQL shell script проверить существует ли база данных

С днем системного администратора всех, кто имеет к этой профессии хоть какое-то отношение.

Время от времени сталкиваюсь с необходимостью выяснить сущесвует ли в MySQL база данных с определенным именем.
Написал небольшой shell скрипт, чтобы делать подобную проверку.
Может быть он будет вам тоже полезен:

Файл ./check-mysql-database-exists.sh

#!/usr/bin/env bash

if [ -z $1 ];
then
    echo "Usage: $0 'database name'"
    exit 1
fi

DB_NAME=$1

if [ ! -z "`mysql -qfsBe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='$DB_NAME'" 2>&1`" ];
then
    echo "DATABASE $DB_NAME ALREADY EXISTS"                                                                                                                                                                      
else
    echo "DATABASE $DB_NAME DOES NOT EXIST"                                                                                                                                                                      
fi

Назначим права, чтобы скрипт стал исполняемым:

# chmod -v 755 ./check-mysql-database-exists.sh

Запускаем проверку базы database_name_to_check так:

# ./check-mysql-database-exists.sh database_name_to_check

И еще одно: с сегодняшнего дня основным адресом блога будет http://linuxweb.in/.
Все статьи будут публиковаться на впервую очередь на нем, а потом уже будет производиться кросс пост в мой LiveJournal http://plmw.livejournal.com/.

Linux bash: пример работы с массивом и цикл for

Время от времени приходится в Linux bash shell скрпитах использовать массивы и циклы for.
Может быть кому-то тоже будет полезно это.

#!/usr/bin/env bash

dirs=('tmp' 'cache' 'logs')

for j in ${dirs[@]} 
do
    echo $j
done

В примере переменная dirs содержит массив значений, значения которого перебираются в цикле for

rpm посмотреть список зависимоестей пакета

В rpm-based Linux системах иногда бывает полезно посмотреть список зависимостей для пакета.

Это можно сделать командой rpm -qR имя пакета.

Например:

# rpm -qR htop

libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libncursesw.so.5()(64bit)
libtinfo.so.5()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1

yum deplist список зависимостей пакета

Чтобы посмотреть список зависимостей для пакета в rpm-based Linux Red Hat, CentOS, Fedora и других дистрибутивах можно выполнить такие команды:

1. Получить все пакеты, в названии, которых есть «office»

# rpm -qa |grep -i "office"

libreoffice-impress-3.6.6.2-5.fc18.x86_64
libreoffice-calc-3.6.6.2-5.fc18.x86_64
libreoffice-writer-3.6.6.2-5.fc18.x86_64
libreoffice-core-3.6.6.2-5.fc18.x86_64
libreoffice-graphicfilter-3.6.6.2-5.fc18.x86_64
libreoffice-kde-3.6.6.2-5.fc18.x86_64
libreoffice-pdfimport-3.6.6.2-5.fc18.x86_64
libreoffice-math-3.6.6.2-5.fc18.x86_64
libreoffice-xsltfilter-3.6.6.2-5.fc18.x86_64
libreoffice-ure-3.6.6.2-5.fc18.x86_64
libreoffice-draw-3.6.6.2-5.fc18.x86_64
libreoffice-opensymbol-fonts-3.6.6.2-5.fc18.noarch
libreoffice-presenter-screen-3.6.6.2-5.fc18.x86_64

2. Получить список зависимостей для пакета libreoffice-draw-3.6.6.2-5.fc18.x86_64

# yum deplist libreoffice-draw-3.6.6.2-5.fc18.x86_64

Loaded plugins: auto-update-debuginfo, langpacks, presto, refresh-packagekit
Unable to send message to PackageKit

package: libreoffice-draw.x86_64 1:3.6.6.2-5.fc18
dependency: /bin/sh
provider: bash.x86_64 4.2.45-1.fc18
dependency: libreoffice-core = 1:3.6.6.2-5.fc18
provider: libreoffice-core.x86_64 1:3.6.6.2-5.fc18
dependency: libreoffice-graphicfilter = 1:3.6.6.2-5.fc18
provider: libreoffice-graphicfilter.x86_64 1:3.6.6.2-5.fc18
dependency: libreoffice-pdfimport = 1:3.6.6.2-5.fc18
provider: libreoffice-pdfimport.x86_64 1:3.6.6.2-5.fc18
dependency: libreoffice-ure = 1:3.6.6.2-5.fc18
provider: libreoffice-ure.x86_64 1:3.6.6.2-5.fc18

Linux sysstat iostat просмотр отчета о CPU и вводе/выводе устройств и партиций

В Red Hat Enterprise, CentOS, Fedora и других Linux системах есть замечательный пакет sysstat

# yum info sysstat

Loaded plugins: rhnplugin, security
This system is receiving updates from RHN Classic or RHN Satellite.
drivesrvr | 951 B 00:00
Installed Packages
Name : sysstat
Arch : x86_64
Version : 7.0.2
Release : 12.el5
Size : 418 k
Repo : installed
Summary : The sar and iostat system monitoring commands.
URL : http://perso.orange.fr/sebastien.godard/
License : GPL
Description: This package provides the sar and iostat commands for Linux. Sar and
: iostat enable system monitoring of disk, network, and other IO
: activity.

В его состав входит утилита iostat — Report Central Processing Unit (CPU) statistics and input/output statistics for devices and partitions.

Пример использования:

# iostat -dh

-d — The -d option is exclusive of the -c option and displays only the device utilization report.
-h — Display the NFS report more human readable.

Все опции можно посмотреть в man iostat

 
Copyright © 2013 - 2020 Шкоденко Тарас. Программирование и разработка сайтов, Киев