Tag Archive for 'shell'

Как быстро переименовать группы файлов

Иногда нужно бывает быстро переименовать много файлов, при этом делая какие-то хитрые замены в названиях файлов.

Хочу вам показать метод, как это делаю обыкновенно я.Скажем нужно обработать только mp3 файлы:

ls '*.mp3' > filelist
ls '*.mp3' > filelist1

Итак у нас два списка файлов. Правим filelist1 и заменяем там имена на то что нужно. При этом не меняем порядок строчек.

Зачем это делать внутри файла? Потому что можно его редактировать при помощи vim, а там возможности по автоматической замене текста просто огромные.

Итак, у нас есть отредактированый файл. Набираем

paste filelist filelist1 | sed 's/^/mv /' | sh

И дело в шляпе :)

Самое важное здесь - это команда paste, которая склеивает два текста вместе. Все подробности о работе - в базовом курсе по Unix.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Shell: Автодополнение имен файлов в tcsh

Я давно всем рекомендую использовать tcsh в качестве своей оболочки для работы. В предыдущем посте насчет настроек tcsh я написал, какие настройки нужно поставить.

А вот зачем это нужно:

Автодополнение имен файлов в tcsh

Если у вас есть файл

a12312039akasd.avi

вы можете набрать a.avi<Tab> и получить полное имя файла.

или есть файлы

a.jpg
a.a.jpg
a.a-b.jpg

a.-<Tab> откроет шаблон в a.a-b.jpg

А если будут файлы

a.jpg
a.a.jpg
a.a-b.jpg
a.a-c.jpg

то, скажем, .-<Tab> откроется в a.a- и список возможных оставшихся вариантов :)

Так же с предыдущими настройками tcsh работает и автодополнение имен директорий

Имена директорий и <tab> в tcsh

Если вы введете команду cd и потом нажмете Tab, то тогда tcsh выведет только имена директорий, а не вообще список всех файлов.

Если же набрать ./<Tab> , то тогда tcsh выведет все исполняемые файлы в этой директории и все поддиректории — таким образом помогаю вам сформировать путь к исполняемому файлу.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Удобная конфигурация tcsh и других программ

Давным-давно, я наткнулся на специальную программу для генерации файлов настроек для разных программ и, в частности, для оболочек.

Называлась она The Dotfile Generator.

Проект по утверждению автора уже немного мертвый, но тем не менее он не становится от этого менее полезным :)

Из настроек tcsh, которые вы точно захотите включить в свой .tcshrc файл :)

###---------->command line editor/bindings<----------
### Bindings for the command line editor
### искать взад вперед по истории команд при помощи кнопочек вверх/вниз
### набираете префикс команды - скаем l и кнопочку наверх и он выводит предыдущие
### ls, less, locate и так далее ;)
bindkey -k up history-search-backward
bindkey -k down history-search-forward

###———->completion/misc<———-
### Configuration on filename completion
### автодополнение пути, просто скопируйте :) voodoo magic :) но сильно облегчает жизнь
set addsuffix
set autolist
set complete = enhance
set autoexpand
set matchbeep = nomatch
set recognize_only_executables

###———->files<———-
### configuration of files
set listlinks
set noclobber
set rmstar
set symlinks ignore
umask 066

###———->history<———-
### Configuration of the history mechanism
### злопамятно запоминать много shell команд :) можно увеличить число до 2 тысяч
set savehist = (1000 merge)

###———->logout<———-
### Configuration of logout
### никогда не делать автологаут - только по команде!
set autologout = (0 0)
set ignoreeof = 1

Надеюсь, это сэкономит у вас много секунд в вашей жиззни :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Сохранение резервной копии при работе

Иногда нужно бывает какой-то один файл постоянно сохранять, делать с него резервные копии, что не потерялось.

Прямо во время работы. И изменения настолько маленькие, что закидывать файл под систему контроля версий не хочется.

Итак, самописное, хамское решение на коленке.

#!/bin/sh
[ -d backup ] || mkdir backup/

DATE=`date +%Y%m%d%H%M%S`

FILE=”networking1.tex”
DST=”./backup/networking1-$DATE.tex”

cp networking1.tex $DST
gzip $DST

Записываем в какой-нибудь файл backup.sh, делаем chmod 755 backup.sh и, вуаля, после каждого запуска у нас есть сохраненая, сжатая резервная копия файла :)

Имена файлов поменять по вкусу, естественно :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Какую оболочку вы используете? А раскрашиваете?

Решил сделать небольшой опрос :)))

Какую оболочку вы испольузете при работе — sh, bash, tcsh, zsh, что-то другое?

Со стандартными установками или раскрашиваете зверски? :)

А для рута и для обыкновенного пользователя у вас один и тотже shell или ставите разные?

Про себя могу сказать - у меня стоит tcsh с профайлом на килобайт 5 ;) и еще с дополнительным файлом auto-completition килобайтиков эдак на 42 - но его писал не я, он есть в сети (для разных оболочек).

Насчет flash - все еще ищу подходящую флэшку, которую было бы удобно убить ) и которая с виду гарантирует разбираемость ;)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Shell: Как пронумеровать строчки в файле?

Иногда нужно бывает пронумеровать все строки в файле - для того, чтоб потом его легко было бы анализировать или разбирать или просто вывести на печать (особенно актуально для файлов с исходными текстами).

Не нужно для этого запускать perl или какие-то тяжелые утилиты, можно обойтись просто awk.

Нумерация строк в файле

awk '{print NR " " $0 }' имя_файла > куда_сохранять

NR - это переменная awk, указывающая на номер строки в этом файле.

Как пример, получается такой результат:

1 Linux aldan 2.6.27-14-generic #1 SMP Wed Apr 15 19:29:46 UTC 2009 x86_64
2
3 The programs included with the Ubuntu system are free software;
4 the exact distribution terms for each program are described in the
5 individual files in /usr/share/doc/*/copyright.
6
7 Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
8 applicable law.
9
10 To access official Ubuntu documentation, please visit:

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Shell: Как задать несколько шаблонов в grep?

Альтернативные шаблоны в shell

Есть 2 варианта, которые сработает у вас - зависит от вашей оболочки

grep 'шаблон1|шаблон2|шаблон3'

или, может быть, сработает этот:

grep 'шаблон1\|шаблон2\|шаблон3'

Более подробно о шаблонах в shell можно узнать из курса ‘Регулярные выражения рулят!

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Уникальные строки текстового файла

Среди запросов к моему сайту я подглядел запрос ‘perl уникальные строки текстового файла‘.

Ну нужен для этого perl, совершенно не нужен.

Команда sort -u или же uniq сделают это совершенно спокойно.

Правда, есть одно ограничение - они перемешают строчки файла (uniq требует отсортированый файл).

Если вам нужно найти ункальные сточки файла не теряя последовательности строк - это можно сделать и при помощи скрипта на perl и при помощи скрипта на shell :)

Домашнее задание по shell

Оставить только уникальные строки в файле, не перемешивая при этом последовательность строк в выходном файле. Можно использовать промежуточные файлы. Поиск уникальных строк может быть не очень оптимальным - т.е. должен спокойно работать на объеме до 10-20.000 строк (5-10 секунд, не больше).

Пишите ваши решения в комментатиях. Это можно сделать по-разному. Использовать perl и php не стоит :).

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Shell: Как посмотреть код завершения программы?

До боли простой вопрос и такой же простой ответ.

Просто докопаться до этого в документации shell - немного долго и сложно.

Код завершения программы хранится в $?

Например, echo $? выводит код завершения программы на экран.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD: Автозапуск пользовательских скриптов

Иногда нужно бывает запускать скрипты от имени пользователя сразу после старта системы.

Самый простой способ для этого - воспользоваться системой cron.

cron и crontab

Для редактирования файла cron от имени пользователя набираете команду

crontab -e

И попадаете в редактор, где можно указать, какие задачи выполнять периодически.

Добавляете туда строчку

@reboot /путь/к/вашему/скрипту

Этого достаточно, чтоб скрипт был бы запущен во время перезагрузки системы. Правда, если сам демон cron выключен - это не сработает :)

Предыдущая запись: FreeBSD: добавление программы в автозапуск

Приглашаются авторы на Unixmastera.ru. Покажи на что ты способен - напиши совет сам :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).