LinuxForum.Fans
Тема

Маленькие хитрости в Linux

Автор: ormorph 126 сообщений 53812 просмотров
23.05.2012 17:59 #253700

Делимся небольшими хитростями.

Начну первым.
Допустим иногда бывает ситуация, когда имеется бинарник (например игра), но для его работы нужны устаревшие бибилиотеки, которых уже нет в системе, логично что установка устаревших библиотек несет конфликт с уже установленными библиотеками.
Тогда можно просто по скачивать устаревшие либы и скопировать в какой нибудь каталог, предназначенный для этих библиотек, пусть это будет /путь/lib
Теперь можно запустить бинарник, предварительно выполнив команду:

text
$ export LD_LIBRARY_PATH={$LD_LIBRARY_PATH}:/путь/lib

Либо вписать эту команду в скрипт запуска программы.

23.05.2012 19:37 #253719

midnight commander
ctrl+o открывает консоль.

один админ 5 лет на линухе работает а такой фигни не знал...

23.05.2012 21:18 · отредактировано #253742

По горячим следам: Общие вопросы

иногда при линковке возникает undefined reference to `some_function'.
чтобы найти в какой библиотеке эта функция есть (если конечно эта библиотека установлена) нужно сделать:

text

SYM="some_function"; 
DIRS="/usr/lib64/";
find $DIRS -type f -executable | while read I; do 
  OBJ_DUMP="$(objdump -tT $I 2>/dev/null | grep "$SYM")"; 
  if [ -n "${OBJ_DUMP}" ]; then 
    echo "$I"; echo "$OBJ_DUMP"; 
  fi; 
done

[разбито на строки для удобства чтения]

ну а дальше включать /dev/brain.

ЗЫ: достаточно objdump -T. я просто забываю, какая из них что делает.

24.05.2012 09:25 #253823
"mvt" написал:
допустим, нет такого пакета который Вам очень нужен, и Вы не имеете способностей (или времени, или ещё чего-нибудь), чтобы его сделать

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

24.05.2012 13:16 #253866

Чтобы создать некоторое число файлов с именами вида {a..c}{1..3}.{txt,lst,conf} не нужен даже цикл! Достаточно

text
touch {a..c}{1..3}.{txt,lst,conf}

Сделал для себя вот такое открытие. Путеводитель по вash-скриптингу - оочень полезная книжка :)

25.05.2012 13:15 · отредактировано #254112

Для добавления ttf шрифтов в LaTex, можно использовать следующий скрипт:

Показать
#!/bin/bash
#использует два параметра, где первый название файла шрифта, а второй название, с которым будет работать, latex

mkdir fon
cp "$1" fon/
cd fon

otftotfm \
--no-type1 \
-fkern \
--encoding="t2a.enc" \
--map-file="$2.map" \
"$1" \
"$2"

if [ -d $HOME/texmf/fonts/enc/dvips/$2 ]; then
echo "$HOME/texmf/fonts/enc/dvips/$2 yes"
else
mkdir -p $HOME/texmf/fonts/enc/dvips/$2
fi

cp *.enc $HOME/texmf/fonts/enc/dvips/$2/


if [ -d $HOME/texmf/fonts/map/pdftex/$2 ]; then
echo "$HOME/texmf/fonts/map/pdftex/$2 yes"
else
mkdir -p $HOME/texmf/fonts/map/pdftex/$2
fi

MAP1="`cat $2.map |sed '1,2d'|awk '{print $2 }'`"
MAP="`cat $2.map |sed '1,2d'|awk '{print $2 }'|sed 's/-//'`"
MAPFILE="$2.map"
sed -i "s/$MAP1/$MAP/" "$MAPFILE"

cp *.map $HOME/texmf/fonts/map/pdftex/$2/


if [ -d $HOME/texmf/fonts/tfm/trues/$2 ]; then
echo "$HOME/texmf/fonts/tfm/trues/$2 yes"
else
mkdir -p $HOME/texmf/fonts/tfm/trues/$2
fi

cp *.tfm $HOME/texmf/fonts/tfm/trues/$2/


if [ -d $HOME/texmf/fonts/truetype/$2 ]; then
echo "$HOME/texmf/fonts/truetype/$2 yes"
else
mkdir -p $HOME/texmf/fonts/truetype/$2
fi


cp *.ttf $HOME/texmf/fonts/truetype/$2/



if [ -d $HOME/texmf/fonts/vf/trues/$2 ]; then
echo "$HOME/texmf/fonts/vf/trues/$2 yes"
else
mkdir -p $HOME/texmf/fonts/vf/trues/$2
fi

cp *.vf $HOME/texmf/fonts/vf/trues/$2/


if [ -d $HOME/texmf/tex/latex/$2 ]; then
echo "$HOME/texmf/tex/latex/$2 yes"
else
mkdir -p $HOME/texmf/tex/latex/$2
fi

echo "\ProvidesFile{t2a$2.fd}[`cat $MAPFILE |sed '1,2d'|awk '{print $2 }'` Font]
\DeclareFontFamily{T2A}{$2}{}
\DeclareFontShape{T2A}{$2}{m}{n} {$2} {}
\endinput" >$HOME/texmf/tex/latex/$2/t2a$2.fd


mktexlsr
updmap --enable Map="$2.map"

Для его работы необходимы пакеты:
lcdf-typetools
kpathsea
TexLive
texlive-core
texlive-langcyrillic

Как известно LaTeX(TexLive) работает с локальным каталогом $HOME/texmf, собственно туда и устанавливаются шрифты. Плюс прописываются в конф файлах $HOME/.texlive
берется обычный файл шрифтов, в названии шрифта удяляются тире и пробелы, а далее выполняется команда:
./script.sh font.ttf Font
второй параметр можно сразу использовать для получения таблицы символов данного шрифта, в документе LaTeX
Пример:

\fonttable{Font}

Использовать шрифт можно просмотрев в каталоге fon который создастся после выполнения шрифта файл *.map

пример:

text
% Automatically maintained by otftotfm or other programs. Do not edit.

Konkord--base KonkordRetro "AutoEnc_ppykhbua6i6wxtz6lrdyzug7ed ReEncodeFont" <[a_ppykhb.enc <Konkord.ttf

Для формирования команды в документе импользуются два параметра:
первый без --base и второй полный
Пример:

text
{\font\KonkordRetro Konkord at40pt \KonkordRetro  А это текст,
который выводится при помощи шрифта KonkordRetro.}

Пример документа:

Показать
\documentclass[a4paper,12pt]{article}
\usepackage{latexsym}
\usepackage{fonttable}
\usepackage{mathtext}
\usepackage[T2A]{fontenc}


\usepackage[utf8x]{inputenc}
\usepackage[russian]{babel}

\begin{document}

Это просто текст, который выводится LaTeX с
помощью шрифта по умолчанию.\\

{\font\VictorianGothicOne Victorian at40pt \VictorianGothicOne А это текст,
который выводится при помощи шрифта Victorian.}\\


\text{{\font\Cleopatra cleopatra at40pt \Cleopatra А это текст,
который выводится при помощи шрифта Cleopatra.}}\\

\text{{\font\KonkordRetro Konkord at40pt \KonkordRetro А это текст,
который выводится при помощи шрифта KonkordRetro.}}\\

\text{{\font\MontiDecorA MontiDecorA at40pt \MontiDecorA А это текст,
который выводится при помощи шрифта MontiDecorA.}}\\


\\ \ \\ \ \\ \ \\ \ \\ \ \\ \ \\

\fonttable{MontiDecorA}

\end{document}

Результат в PDF тыц
После выполнения скрипта каталог fon можно удалить

25.05.2012 14:35 #254122

Прокручивать веб-страницы можно пробелом.

25.05.2012 15:04 · отредактировано #254134

Для того, чтобы автодополнение (по tab) происходило без учета регистра, нужно прописать в ~/.inputrc

text

set completion-ignore-case on
"\eOd": backward-word
"\eOc": forward-word

и man readline тоже полезно вещь

25.05.2012 16:53 · отредактировано #254161

Если нужно большое кол-во названий файлов поменять из ЗАГЛАВНЫХ в строчные, используем следующий скрипт

text
#! /bin/bash

for filename in * do fname=`basename $filename` n=`echo $fname | tr A-Z a-z` if [ "$fname" != "$n" ] then mv $fname $n fi done

exit 0

Кладем этот скрипт в каталог с файлами, названия которых нужно исправить и запускаем его.
FILE.BIN, IMAGE.JPG, TEXT.TXT и т.д. переименуются в file.bin, image.jpg и text.txt соответственно.

25.05.2012 19:56 #254210
"xxblx" написал:
for filename in *

в общем случае тут нужен find

"xxblx" написал:
n=`echo $fname | tr A-Z a-z`

а это лучше cделать средствами bash:
n=${fname,,}

25.05.2012 20:38 #254219

Чтобы перейти в директорию, в которой вы были до выполнения команды

text
$ cd

, можно использовать

text
$ cd -
25.05.2012 20:40 #254220

Э-э-э.. Похоже, я не вовремя. :)

26.05.2012 01:32 #254287

Fat-Zer, я из тех, кого принято называть "быдло кодер" в подобных вопросах. так что: работает, да и ладно.

05.06.2012 14:10 #256821

Копипаста средним колёсиком мыши))) По-сути, одна из самых полезных вещей, которые вообще делаю мышью.

14.06.2012 16:19 #259013

Ко всему перечисленному, добавляю простенький скрипт конвертации от сканированных изображений, в формате JPEG, в один файл pdf.
Главное что бы названия файлов в каталоге с изображениями, были такими что бы поддавались сортировке(что бы не потерять порядок страниц).

Скрипт выполняется в каталоге с изображениями:

text
#!/bin/bash
ls|grep .jpeg|while read file
do
jpeg2ps $file >`echo $file|sed 's/.jpeg/.ps/'`
done
ls|grep .ps|while read file
do
ps2pdf $file
done
rm *.ps

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=book.tes $(ls |grep .pdf|sort) rm *.pdf mv book.tes book.pdf

14.06.2012 17:54 · отредактировано #259023

ormorph затеряется пост, жаль, лучше сюда - Sysadmins tips and tricks

14.06.2012 18:44 #259032
newzenon написал:
ormorph затеряется пост, жаль, лучше сюда - Sysadmins tips and tricks

Да вроде решения до админских не доросли :)

26.06.2012 09:14 #261114

полезная штучка для новичков.
при удалении файлов, оболочка будет запрашивать подтверждение

text
echo 'alias rm="rm -i"' >> ~/.bashrc
26.06.2012 17:52 · отредактировано #261210

moshell загляни в этот .zshrc

26.06.2012 19:02 #261214
moshell написал:

при удалении файлов, оболочка будет запрашивать подтверждение
text
echo 'alias rm="rm -i"' >> ~/.bashrc

Ну а в скриптах тоже будет запрашивать? Проще, имхо, запомнить, что по умолчанию подтверждение не запрашивается.

Войдите или зарегистрируйтесь, чтобы ответить.