Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Смена директорий

Как изменить текущую рабочую(домашнюю) директорию на корневую и обратно, при этом указывая абсолютный путь к директориям
Ответ: Давайте ещё pop/push вспомним
Вопрос: Смена атрибутов файла при копировании

Есть исполняемый фаил с атрибутами -rwxr-xr-x 1 root root 26894 Дек 8 21:09

когда переношу его в другую директорию атрибуты становятся -rw-r--r-- 1 root root 26894 Дек 8 21:43

фаил создается и копируется все под одной учеткой (root). Фаил компилится в Qt creator. Атрибуты SUID и GUID не дает поставить (если конечно это поможет). Что делать чтоб мне не приходилось после каждого копирования файла вручную выставлять ему атрибуты на исполнение?
Ответ: Ну вот я думаю и разгадка. Файлы находятся на виртуалке в дургой файловой системе
а клиент vnc все таки работает на хосте
Проверь права на директории
ls -l /home/222
ls -l /home/111
Это у тебя разные пользователи?

Добавлено через 5 минут
Bash
1
2
ls -ld /home/111
ls -ld /home/222
Вопрос: Монтирование удаленной директории

Всем привет!

С чего нужно начать монтирование удаленной директории между двумя компами под Линукс? Насколько я понимаю - это аналог расшаривания папки для двух компов, подключенных по локальной сети?
Нашел статью:
но в ней много незнакомых терминов и понятий, таких как: SSHFS, NFS.

Я никогда не писал скрипты по Убунту и вот что за команда
Bash
1
$ sshfs [email]username@server.ru[/email]:/home/user mount-point/
что за @server.ru ? Мы ведь говорим всего о двух компах..?
Ответ: Давайте на пальцах попробую объяснить, как это работает в быту.

SSH - зашифрованный протокол связи между компьютерами. С его помощью вы можете, например, залогиниться на удалённый компьютер или примонтировать удалённую директорию.

sshfs монтирует удалённую директорию.

Ситуация № 1. У вас дома стоит роутер и в локальной сети находятся десктоп komp и ноутбук nout. Здесь komp и nout ― их имена, которые возвращаются командой hostname. У вас и на компе, и на ноуте есть пользователь zigfrid. И вот вы хотите с ноута получить доступ к директории Documents, которая находится в домашней директории zigfrid-а на компе.

Сначала вы решаете, куда эту директорию примонтировать. Например, можете монтировать в директорию ~/foobar (на ноуте). Для этого вы делаете следующую команду:
Bash
1
sshfs zigfrid@komp:Documents ~/foobar
Первый аргумент ― что монтировать, второй ― куда. Удалённая директория имеет три компоненты: пользователь@компьютер:директория. Если директория относительная, то считается относительно домашней.

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

Отмонтировать можно командой
Bash
1
fusermount -u ~/foobar
Ситуация № 2. Ваш универ выделил вам учётку на сервере: . Вы хотите примонтировать всю тамошнюю домашнюю директорию в ~/univ. Делаете аналогичено:
Bash
1
sshfs [email]zigfrid@univer.ru[/email]: ~/univ
После двоеточия ничего нет: значит, примонтировать всю домашнюю директорию.

В качестве имени компа может выступать и IP-адрес циферками.

Можно сделать так, чтобы ssh не требовало ввода пароля при соединении, а использовало бы ключ.

Короче, это потрясающе удобно. Есть ещё команда rsync, которая позволяет синхронизировать директории (одна из которых может быть удалённой), копируя недостающие файлы и заменяя старые версии новыми. Тоже потрясающая вещь, попробуйте как-нибудь.
Вопрос: Права доступа на директории при чтении, изменении и удалении файлов

Всем привет , помогите разобраться с правами доступа.
У нас есть 5 директорий и 5 файлов , нужно удалить 3 и 5 директоии вместе с файлами , файл из второй директории записать в конец файла из первой , а первую первую директорию объединить с четвертой .



насколько я понимаю для всех подходит rwx, но нужно написать минимальные а знаний на это не хватает(
Ответ: Вам следует помнить, что директории — это суть файлы, со списком содержимого. При перемещении файла из одной директории в другую физического перемещения данных файла не происходит — только изменяются два списка: дир_источник и дир_получатель.
Т.е для того чтобы «файл из второй директории записать в конец файла из первой» необходимо для 1дир иметь права на запись, обеим права на вход, 2файл право на чтение, 1файл право на запись.
Вопрос: Найти файлы, начинающиеся первой строкой и заканчивающися последней, и переместить их в текущую директорию

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

Bash
1
2
3
4
5
6
cd $1
result=(grep -rl "$2*$3" $1)
echo "$result"
for file in $result 
do mv $file rezult_dir
done
Ответ: panzer278, Если считаете так как предложил Marinero, слишком просто, тогда можете попробавать так.
Bash
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env bash
cd $1
arg=$(find -type f)
for i in $arg; do
        if [[ $(cat $i | head -1 | grep "^$2") ]]; then
                if [[ $(cat $i | tail -1 | grep "^$3") ]]; then
                        echo "Переместим файл $i в директорию $PWD" 
                fi
        fi
done
Когда убедитесь, что скрипт работает правильно замените строчку
Bash
1
echo "Переместим файл $i в директорию $PWD"
на
Bash
1
mv $i ./
Буддте осторожны. Обязательно нужно ввести в начале скрипта проверку на наличае параметров!
Иначе после подстановки быть беде

Добавлено через 1 час 16 минут
Я тут подумала, все таки правильней будет grep заменить на comm
Bash
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env bash
[ $# != 3 ] && exit 1
cd $1
arg=$(find -type f)
for i in $arg; do
        if [[ $(cat $i | head -1 | comm -12 - <(echo $2)) ]]; then
                if [[ $(cat $i | tail -1 | comm -12 - <(echo $3)) ]]; then
                        echo "Переместим файл $i в директорию $PWD" 
                fi
        fi
done
И безопасней

Добавлено через 15 минут
Ну или просто в grep добавить опцию -x и убрать из паттерна ^
Вопрос: Установка программ в Linux Mint в нужную директорию

Доброго времени суток. Извините за может быть нубский вопрос. Не так давно установил Linux Mint 17.3 на довольно старое железо (ноутбук ibm thinkpad 43). Работает терпимо. При установке приложений синаптиком они устанавливаются не очень понятно куда. При установе вручную тоже нет привычного выбора папок для установки (как в винде). А все же хочется знать что куда и как устанавливается... Подскажите плиз есть ли способ выбрать нужную директорию для установки программы, (я так подозреваю что это делается из командной строки) и если да то как.
Ответ: В windows программы ставятся, как правило, в одну папку, где находится сама программа, данные, зависимости, документация и прочее.

В unix-like пакеты распаковываются в разные директории. Исполняемая программа в одну папку, документация для man, например, в другую, где man её может найти, библиотеки в третью папку ставятся, туда, где система их может найти, данные программы тоже отдельно ото всего остального.

dpkg -L <имя_пакета> --- это посмотреть, куда что ставится, если пакет установлен
dpkg -c <имя_файла.deb> --- посмотреть, куда будет ставиться скачанный пакет

dpkg -L coreutils для примера


deb-пакет, это обычный архив. Его можно просто распаковать куда угодно. Устанощик делает то же самое, только в директории, описанные в настройках пакета. Плюс выполняет некоторые приготовления до и после установки и записывает в базу, мол, такой-то пакет установлен. В целом, смысла это делать особого нет.
Вопрос: Найти директорию куда установилась программа

смотрю через наутилус там тысячи файлов в 1-ой только usr/bin
все просматривать можно бесконечно.
Есть простой путь узнать? Мне нужно заменить 1 файл в нём заменить.

Добавлено через 2 минуты
читаю туториал:

/usr/bin - исполняемые файлы программ
/usr/sbin - исполняемые файлы программ, которые запускаются с правами администратора
/usr/games - исполняемые файлы некоторых игр

/usr/lib - библиотеки программы
/usr/share - остальные файлы программы
--------------------------
? неужели надо миллиард файлов вручную просматривать, чтобы найти emacs?

Добавлено через 10 минут
сомневаюсь что поможет find.

Добавлено через 1 минуту
если я даже не знаю точно в какой директории искать.

Добавлено через 2 минуты
и не надо мне рассказывать про cd home и тому подобное cd /bin
Ответ:
Сообщение от __py__
/usr/bin - исполняемые файлы программ
/usr/sbin - исполняемые файлы программ, которые запускаются с правами администратора
/usr/games - исполняемые файлы некоторых игр
Кроме этого, есть ещё директории, где лежат программы в линуксах:
/usr/bin
/usr/sbin
В обоих этих директориях лежат пользовательские приложения, которыми повседневно пользуются все юзеры этой машины. Те, которые относятся к GUI различных DE, те, которые запускаются из главного меню в GUI, те, которые вы видите ежедневно.
В /bin и /sbin - приложения для администрирования. Они доступны с момента запуска в консоли уже на первом init . Это такие приложения, которыми администратор пользуется для конфигурирования системы, создания/редактирования/удаления пользователей, разделов, файлов (в том числе системных). Без которых "как без рук" в самой минимальной конфигурации. Те, которые в /usr/bin /usr/sbin обычно в минимальной конфигурации не нужны, их нужность появляется позже - на третьем и пятом уровне init .
Вопрос: Записать в файл содержимое директории, найти строку(и) содержащие cron

В файл list.txt записать список файлов директории /var/log. На экран вывести номер знако-мест, в которых стоит строка con


Начал так но на самом деле затрудняюсь, что делать дальше
Bash
1
grep -E -r- h /var/log/* > list.txt 
Ответ:
Сообщение от Jokez
В файл list.txt записать список файлов директории /var/log. На экран вывести номер знако-мест, в которых стоит строка con
Bash
1
ls /var/log > list.txt && grep -n "con" list.txt
Вопрос: Изменить права доступа к директории для группы

3. sudo user user должна менять же права доступа к директории. Как сделать чтобы было user user, а не user root?
Ответ:
Сообщение от netromnik
sudo user user должна менять же права доступа к директории. Как сделать чтобы было user user, а не user root?
Bash
1
sudo chown user:user /path/to/dir
Рекурсивная замена всех вложенных файлов:
Bash
1
sudo chown -R user:user /path/to/dir
Вопрос: Не работает синхронизация при создании файлов в опр. директории - bash

В коде есть синхронизация, работает она "частично":

Bash
1
2
3
4
echo "$DEST_DIR/addons/ IN_CREATE cp \$@/\$# $SOURCE_DIR/\$#" >> $FTP_HOMEDIR/.incrontab_temp
echo "$DEST_DIR/addons/amxmodx/configs/ IN_CREATE cp \$@/\$# $SOURCE_DIR/addons/amxmodx/configs/\$#" >> $FTP_HOMEDIR/.incrontab_temp
echo "$DEST_DIR/addons/amxmodx/plugins/ IN_CREATE cp \$@/\$# $SOURCE_DIR/addons/amxmodx/plugins/\$#" >> $FTP_HOMEDIR/.incrontab_temp
echo "$DEST_DIR/addons/amxmodx/data/ IN_CREATE cp \$@/\$# $SOURCE_DIR/addons/amxmodx/data/\$#" >> $FTP_HOMEDIR/.incrontab_temp
В чём суть синхронизации:

есть директория /home/ftp , другой скрипт создаёт фтп пользователя и папку для него

далее пользователь подключается через фтп клиент и попадает сразу в свою директорию /home/ftp/ftp10 (например)

после чего в директории /home/ftp/ftp10/addons/ выполняет различные манипуляции:

1) создаёт файл - он синхронизируется (копируется (с этим проблем нет)) в директорию /home/servers/имя пользователя/имя процесса/cstrike/addons/

но, если в данном файле (который в директории /home/ftp/ftp10/addons/) сделать какие-либо изменения, то изменения не синхронизируются в файл, который в /home/servers/имя пользователя/имя процесса/cstrike/addons/

проще говоря - будет пустой файл

2) не синхронизируются созданные дочерние директории в addons


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


1. В чём суть: подсказать "куда копать".
Кликните здесь для просмотра всего текста
2. Для желающих\обладающих возможностью - работу с радостью оплачу (срочно в выполнении, а bashшников раздобыть проблематично), обсудим в ЛС\по Вашим контактам)
Ответ: Экранировать надо все $ --> \$