1

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

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

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

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

2

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

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

3 (23.05.2012 22:19:54 отредактировано Fat-Zer)

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

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

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. я просто забываю, какая из них что делает.

95% процентов проблем находятся между клавиатурой и стулом.

4

mvt пишет:

допустим, нет такого пакета который Вам очень нужен, и Вы не имеете способностей (или времени, или ещё чего-нибудь), чтобы его сделать

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

Истина ускользает от тех кто отказывается её видеть обоими глазами.
Талантам нужно помогать, бездарности пробьются сами.
В Туле настолько суровые парни, что вместо пены для бритья, используют пену монтажную.
cat /broken/hands > /dev/null

5

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

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

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

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

6 (25.05.2012 13:40:27 отредактировано ormorph)

Для добавления 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

пример:

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

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

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

{\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 можно удалить

7

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

При укусе ядовитой змеи, держите её голову на расстоянии от себя, чтобы она не укусила вас в ответ...

8 (25.05.2012 16:26:27 отредактировано riso)

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

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

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

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

9 (26.05.2012 01:33:56 отредактировано xxblx)

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

#! /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 соответственно.

Fedora GNOME3

10

xxblx пишет:

for filename in *

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

xxblx пишет:

n=`echo $fname | tr A-Z a-z`

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

95% процентов проблем находятся между клавиатурой и стулом.

11

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

$ cd

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

$ cd -
Да, у меня Ubuntu.
Нет, не глючит.

12

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

Да, у меня Ubuntu.
Нет, не глючит.

13

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

Fedora GNOME3

14

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

Если бы люди умели пользоваться vim, find, sed и awk  то миллионы программных продуктов так никогда и не были бы созданы

15

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

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

#!/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

16 (14.06.2012 17:54:47 отредактировано zenon)

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

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

17

newzenon пишет:

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

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

18

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

echo 'alias rm="rm -i"' >> ~/.bashrc
"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

19 (26.06.2012 17:53:12 отредактировано zenon)

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

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

20

moshell пишет:

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

echo 'alias rm="rm -i"' >> ~/.bashrc

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

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

21

Ярс, тема называется маленькие хитрости, а не как писать скрипты

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

22

Ньюзенон, осталось звезду прикрутить и получится новогодняя елка )

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

23

moshell пишет:

Ярс, тема называется маленькие хитрости, а не как писать скрипты

Я в курсе. Вот и спрашиваю - не будет ли мешать ваша маленькая хитрость работе скриптов

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

24

yars пишет:

Вот и спрашиваю - не будет ли мешать ваша маленькая хитрость работе скриптов

Не будет:

 Консоль:

[lupoalberto@localhost tmp]$ touch test_{01,02}.txt
[lupoalberto@localhost tmp]$ ls -l test_*
-rw-r--r-- 1 lupoalberto lupoalberto 0 июня  26 19:38 test_01.txt
-rw-r--r-- 1 lupoalberto lupoalberto 0 июня  26 19:38 test_02.txt
[lupoalberto@localhost tmp]$ rm test_01.txt
rm: удалить пустой обычный файл «test_01.txt»? yes
[lupoalberto@localhost tmp]$ cat test.sh
#!/bin/bash
rm $1
[lupoalberto@localhost tmp]$ ./test.sh test_02.txt
[lupoalberto@localhost tmp]$ ls -l test_*
ls: невозможно получить доступ к test_*: Нет такого файла или каталога
[lupoalberto@localhost tmp]$

Был, был и весь вышел...

25

Те, кто пишут скрипты, думаю, знакомы с флагом -i, и с алиасами.
Совет был новичкам, представляете ситуацию - начинающий юзер удалил  фильм любимой актриссы (Claudia Ricci к примеру, или Sasha Grey), что делать? Как дальше жить? Назад в окна, где по дефолту предупреждающее окошко..?

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

26

Lupo Alberto, спасибо. Плоховато я с этим знаком, получается.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

27 (26.06.2012 22:41:38 отредактировано bormant)

yars,
"man bash" расскажет, что bash читает ~/.bashrc только при запуске в интерактивном режиме, а в неинтерактивном режиме (а скрипты исполняются в неинтерактивном режиме) игнорирует.

28

moshell пишет:

Ньюзенон, осталось звезду прикрутить и получится новогодняя елка )

При чем тут елка? Просто хооший и удобный конфиг для zsh.

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

29

newzenon пишет:
moshell пишет:

Ньюзенон, осталось звезду прикрутить и получится новогодняя елка )

При чем тут елка? Просто хооший и удобный конфиг для zsh.

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

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

30

yars
Тут все просто, файл .bashrc влияет, только на текущую оболочку bash скрипт же запускается в новой оболочке, на которую этот файл уже не действует, за это как раз и отвечает первая строчка #!/bin/bash.

Можно создать файл с содержимым rm $1 без строчки #!/bin/bash и дать права на выполнение, тогда файл .bashrc будет уже влиять.

Другими запуск скрипта, аналогичен команде bash -c "rm file"