Полезные консольные команды и скрипты - CentOS Wiki

Специальные типы переменных bash

  • $0 $1 $2 ${10} - позиционные параметры; Аргументы, передаваемые скрипту командной строкой. $0 - имя самого скрипта, $1 - первый аргумент, $2 - второй, $3 - третий, и так далее. При количестве переменных больше 9 - заключаются в фигурные скобки;
  • $0 - Имя скрипта который был запущен;
  • $# - количество аргументов командной строки; количество переданных параметров;
  • $? - код завершения последней выполненной команды, функции или сценария;
  • $$ - идентификатор процесса оболочки, id процесса;
  • $! - id последнего, запущенного в фоне, процесса;
  • $* - данный параметр содержит в себе все параметры переданные из командной строки;
  • $- -параметры, переданные оболочке;
  • $@ - То же самое что $*, только каждый параметр представлен отдельно.
  • $_ последний аргумент предыдущей команды.

Переименование расширения у файлов

В данном случае в директории у файлов расширение .ogv сменится на .mp3

$ for file in *.ogv; do mv -f "$file" "${file%.*}.mp3"; sleep 2; done; exit
$ for file in *.ogv; do mv -f "$file" "`basename $file .ogv`.mp3"; sleep 2; done; exit
$ for file in *.ogv; do mv -f "$file" "${file/.ogv/.mp3}"; sleep 2; done; exit

все три варианта равноценны.

Сканирование IP-адресов консольно

for ip in $(seq 1 254); do ping -c 1 10.38.0.$ip>/dev/null; [ $? -eq 0 ] && echo “10.38.0.$ip UP” || : ; done
  • Использование seq для генерации списка аргументов цикла for
  • $? - Код с которым была завершена предыдущая команда. Если команда была выполнена удачно,
    то значение этой переменной будет 0, если же неудачно то не 0.
  • -eq равно (операция сравнения)
  • && "И-список": благодаря этому все последующие команды будут выполнены (перенаправление из/в stdin или stdout)
  • || логическая операция OR (логическое ИЛИ). В операциях проверки условий, оператор || возвращает 0 (success), если один из операндов имеет значение true (ИСТИНА).
  • : пустая команда. [двоеточие] Это эквивалент операции "NOP" (no op, нет операции). Может рассматриваться как синоним встроенной команды true. Команда ":" так же является встроенной командой Bash, которая всегда возвращает "true" (0).

Настройка часового пояса в CentOS

Установка Новосибитрского часового пояса на VPS под CentOS

# cp /usr/share/zoneinfo/Asia/Novosibirsk  /etc/localtime

Скрипт оптимизации размера многостраничных PDF документов

Часто возникает ситуация, когда исходный многостраничный PDF документ имеет размер гораздо больше, чем составляющие его страницы.

Например со сканера приходят документы в формате .tiff или .jpg - они конвертируются в формат .pdf с одновременным сшиванием их в один документ.

Оптимально будет в таком случае - каждую картинку перегнать в отдельный .pdf файл, а затем собрать их вместе.
Но что делать, если у вас уже готовый многостраничный файл?

В большинстве случаев помагает следующий скрипт (но не всегда; встречаются случаи когда документ PDF уже до вас грамотно подготовлен):

#!/bin/bash
#
#  Поместите свой многостраничный PDF файл в необходимую директорию (папку).
#  Поместите туда же данный скрипт. В свойствах скрипта проверте чтобы он был исполняемым.
#  Кликнете по нему мышкой (или в консоли выполните sh ConvertMinPDF.sh ) - выберите > запустить. 
#
#
#    Разбиваем наш многостраничный документ на отдельные страницы.
#
for pdfview in *.pdf
  do pdftk "$pdfview" burst output Page%04d.pdf
    #    Сшиваем обратно странички с грамотной экономией.
    #    Название вышедшего документа равно старому с приставкой New_
    gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="New_$pdfview"  Page*.pdf
    #
    #   Удаляем разрозненные страницы.
    #
    for pages in Page*.pdf
     do rm -f $pages
    done
    #
    #  Удаляем логи.
    #
    for hlamTXT in *.txt
     do rm -f $hlamTXT
    done
    #
done
exit

Вот и все.

Просмотреть последнюю введенную команду, которая начиналась с .. (например ssh)

!ssh:p

или gedit:

!gedit:p

без параметра :p команда будет выполнена.

Вывод

egrep -v '^#|^$' squid.conf - Показать файл без комментариев и пустых строк

Консольные часы

watch -tn1 'date +%r'

Автоматичесое создание пользователя с назначением ему пароля

# useradd alex; echo 123321|passwd --stdin alex

где: alex - имя созданного пользователя с паролем 123321.

Bash - записать в переменную данные из файла

Пример, как получить содержимое переменной из внешнего файла. Возможность использования переменной из одного скрипта в другом:

read str < "filename"
echo $str

 

еще варианты считать файл в переменную:

str=`cat filename`
str=$(<filename) 

Автор: Александр