k1r8r0wn / linux_tips.md
Прогр1 | Прогр2 | . | ПрогрN — передать stdout Прогр1 в качестве stdin для Прогр2, далее stdout Прогр2 в качестве stdin для Прогр3 и т.д.
5. Скачивание файлов из интернета
wget ссылка — скачать файл по ссылке и сохранить в текущей директории
wget -P путь_до_директории ссылка — скачать файл по ссылке и сохранить в директории заданной путем
wget -O путь_до_файла ссылка — скачать файл по ссылке и сохранить под указанным именем
wget -c ссылка — докачать файл по ссылке в случае обрыва связи
wget —spider ссылка — проверить доступность файла по ссылке
wget -i текстовый_файл — скачать несколько файлов по ссылкам из текстового файла
wget -r -l глубина ссылка — рекурсивное скачивание файлов по ссылке на указанную глубину (по умолчанию глубина 5)
wget -r -A тип,тип. тип ссылка — рекурсивное скачивание файлов только определенного типа (типов)
unzip архив.zip — распаковать содержимое архива.zip
gunzip архив.gz — распаковать содержимое архива.gz, файл архив.gz удалить
tar -xvf архив.tar — распаковать архив.tar
tar -xzvf архив.tar.gz — распаковать архив.tar.gz (с использованием gunzip)
zip архив.zip файл1 файл2 . — запаковать перечисленные файлы и/или папки в архив.zip
gzip файл — запаковать файл в файл.gz, исходный файл удалить
tar -cvf архив.tar файл1 файл2 . — запаковать перечисленные файлы и/или папки в архив.tar (без сжатия)
gzip архив.tar — запаковать архив.tar в архив.tar.gz, исходный архив.tar удалить
tar -zcvf архив.tar.gz файл1 файл2 . — запаковать перечисленные файлы и/или папки в архив.tar.gz (c сжатием при помощи gzip)
tar -cjvf архив.tar.bz2 файл1 файл2 .
Сжатие/распаковка без удаления:
7. Поиск файлов и слов в файлах
find -name “” — найти указанный файл в папке
find ~/ -name “file.txt” — найти file.txt в домашней директории
find ~/ -name “*.txt” — найти все текстовые файлы в домашней директории
grep “” — найти строку в файле
grep -с “” — посчитать количество вхождений строки
grep -r “” — найти строку во всех файлах в папке
grep “hello” file.txt — найти “hello” в файле file.txt
grep -с “123” file.txt — вывести количество раз, которое “123” встречается в file.txt
grep -r “world” ~/ — найти “world” во всех файлах в домашней директории
7*. Продвинутый поиск и редактирование
find -iname “” — не учитывать регистр
find -path “” — найти указанный путь
find -size — выводить файлы указанного размера
find -maxdepth — искать не больше чем на заданное число уровней вниз
find -mindepth — искать начиная с заданного числа уровней вниз
grep -l “” — список файлов с этой строкой
grep -L “” — список файлов, где этой строки нет
grep -n “” — выводить номер строки в файле
grep -m “” — не искать дальше после заданного числа вхождений
grep -A “” — выводить это число строк после вхождения
grep -B “” — выводить это число строк до вхождения
grep -C “” — выводить это число строк вокруг вхождения
grep -E “” — найти указанный шаблон в файле
grep -E “^go” — найти строки, начинающиеся с “go”
grep -E “go$” — найти строки, оканчивающиеся на “go”
grep -E “c[au]t” — найти все слова, содержащие cut и cat
grep -E “ [a-z]ight ” — слова из 5 букв, кончающиеся на “ight”
grep -E “ [a-z]*ight ” — слова из 4 и более букв, кончающиеся на “ight”
grep -E “ [a-z]+ight ” — слова из 5 и более букв, заканчивающиеся на “ight”
grep -E “ [a-z]?ight ” — слова из 4-5 букв, заканчивающиеся на “ight”
grep -E “ [a-zA-Z]*ight ” — слова, заканчивающиеся на “ight” (разрешены большие буквы)
cat | sed ‘инструкция’ sed ‘инструкция’ — потоковый редактор: читает строчки из stdin (или из файла), обрабатывает их по инструкции и пишет в stdout
Если хотим писать в файл:
-i, —in-place — перезаписать входной файл
sed ‘s/John/Nick/g’ old.txt > new.txt — заменить все John на Nick
sed -r ‘s/J[a-z]*n/Nick/g’ old.txt > new.txt — заменить все слова, которые начинаются на J и заканчиваются на n на Nick
sed -n ‘2,4p’ file.txt — вывести строки с 2 по 4
sed ‘2,4d’ file.txt — вывести все строки кроме 2-4
sed -n ‘/2\/p’ file.txt — вывести строки с 2 цифрами подряд
sed ‘2,/[Rr]ight/d’ file.txt — вывести все строки кроме со 2 до строки содержащей “right” (с большой или маленькой буквы)
Посчитать что-то в файле:
wc [что-считаем] wc -l file.txt
Сравнить файлы/директории:
diff [-q -r] diff file1.txt file2.txt | less diff -qr dir1/ dir2/
Узнать сколько места занимаем на диске:
df [-h] — узнать сколько места занято/свободно во всей системе
Вывести часть файла:
Работа с файлами/директориями:
Вывод с сортировкой:
ls —sort=[вид сортировки] -l ls –-sort=size -l ~/
Перенаправление в один файл:
Перенаправление одного потока в другой:
2>&1 — stderr в stdout
1>&2 — stdout в stderr
Перенаправление в никуда и из ниоткуда:
Команда входа: ssh логин@адрес_сервера -p порт
Сообщить системе о ключе: ssh-add
Просмотр публичного ключа: cat ~/.ssh/id_rsa.pub
Редактирование авторизованных ключей (на сервере): nano ~/.ssh/authorised_keys
Копирование файлов:
scp -P порт логин@адрес_сервера:путь1 путь2 — с сервера (путь1) на клиента (путь2)
scp -P порт путь1 логин@адрес_сервера:путь2 — с клиента (путь1) на сервер (путь2)
11. Установка и обновление программ
Установка программ через терминал: sudo apt-get install программа
Удаление программ через терминал: sudo apt-get remove программа
Обновление ссылок на пакеты: sudo apt-get update
Обновление установленных пакетов: sudo apt-get upgrade
Обновление отдельной программы: sudo apt-get install —only-upgrade программа
12. Запус приложений, контроль запускаемых программ
Ctrl + C — прервать выполнение
fg — продолжить (foreground)
bg — продолжить в фоновом режиме (background)
jobs — посмотреть запущенные программы
fg % — продолжить программу с этим номером
bg % — продолжить программу с этим номером в фоновом режиме
ps — посмотреть ваши процессы
top — отслеживать процессы в реальном времени
top -u — отслеживать процессы этого пользователя
kill — завершить процесс с этим номером
kill -9 — “убить” процесс с этим номером
13. Многопоточные приложения
free -g — информация об оперативной памяти
nproc — количество ядер процессора
lscpu — детальная информация о процессоре
14. Менеджер терминалов tmux
— открыть новую вкладку в терминале
Alt + — перейти в указанную вкладку
tmux — запустить tmux
и C (зажать , отпустить, затем нажать С) — создать новую вкладку
и — перейти в указанную вкладку
и N / и P — перейти в следующую / предыдущую вкладку
и X (или exit) — закрыть вкладку
и D — временно выйти из tmux
tmux attach / tmux a — вернуться в tmux
tmux list-sessions — посмотреть список запущенных tmux’ов
Ctrl + B и PgUp (<[>на Mac) — перейти в режим просмотра истории
PgUp, PgDown, стрелки — перемещать курсор по истории
Esc, — выйти из режима просмотра истории
Скопировать полный путь к файлу в буфер обмена
Как скопировать полный путь к файлу в буфер в mc, когда на него установлен курсор? Типа как pwd + имя файла.
Можно сделать с помощью xclip и пользовательского меню.
Решение не найдено? Мне для MacOS нужно, следовательно xclip и xsel не работают (работают только для x11, которого в MacOS нет теперь, устанавливать не хочу).
А есть ли хоткеи для шелла, позволяющие выделить строку (путь) и скопировать её в clipboard (без мыши чтобы)?
Можно воспользоваться tmux:
Эппл обновили эмулятор терминала, теперь он позволяет копировать тексты из mc только по кнопке Fn + выделение мышью. На pc клавах такой кнопки нет. Видимо, нужно возвращаться к старому эмулятору, либо забиндить эту кнопку Fn каким-то макаром в новый эмулятор.
menangen ★★★★★ ( 03.02.17 08:37:09 MSK )
Последнее исправление: menangen 03.02.17 08:37:48 MSK (всего исправлений: 1)
Что-то с tmux больно сложное решение кажется, не?
Получается, без мышки никак? 🙁 А с тачпадом такой номер проходит? А если текст на экране не помещается?
Может, если MC запускать в iterm2, а не в стандартном эмуляторе, это как-то поможет? (или в другом эмуляторе)
Поможет. С тачпадом всё также, как и с мышкой — нужно жать Fn. Я думаю из маверика выдернуть стандартный эмулятор и использовать его. Либо прикрутить Fn каким-нить боком.
Ясно, спасибо.. С Fn’ом Вы меня спасли, я бы никогда не догадался)) хотя инет весь перерыл вдоль и поперек, нигде такой инфо не было
А Вы случайно не знаете как в макоси (стандартный терминал у меня) перемещаться в mcedit по тексту — c-p, c-n, c-v, a-v ни одна комбинация не работает у меня, и еще, не работают функциональные клавиши в комбинации с shift (shitf+f1 и т.д.), без шифта работают, Вы их как починили?
да, у меня сейчас так и работает это через дополнительный пункт в меню:
+ ! t t l Скопировать путь в буфер обмена echo %d/%f|pbcopy
Не в курсе. Я работаю под мавериком, на sierra только xcode мучаю с swift проектами. Никак не могу допилить sierra до удобного состояния на домашнем компе. На втором (мак мини), у меня она, и там у меня эппловская клава с Fn. Насчёт mcedit — я им только простые конфиги правлю, даже не в курсе о проблемах с shift. Если конфиг очень большой — я открываю через nano для навигации, удалении строк, ну и т.п.
не работают функциональные клавиши в комбинации с shift (shitf+f1 и т.д.), без шифта работают, Вы их как починили?
в свойствах терминала зайти в Настройки -> Профили -> Клавиатура, там добавить (если их нет) или изменить интересующие Вас клавиатурные комбинации с такими escape sequences:
Shift + F1: \033[1;2S
Shift + F2: \033[1;2Q
Shift + F3: \033[1;2R
Shift + F4: \033[1;2S
и т.д.
спасибо вам большое, но был бы вам еще больше признателен если выложите все комбинации до f12
Shift + F1: \033[1;2P Shift + F2: \033[1;2Q Shift + F3: \033[1;2R Shift + F4: \033[1;2S Shift + F5: \033[15;2~ Shift + F6: \033[17;2~ Shift + F7: \033[18;2~ Shift + F8: \033[19;2~ Shift + F9: \033[20;2~ Shift + F10: \033[21;2~ Shift + F11: \033[23;2~ Shift + F12: \033[24;2~
Как скопировать имя файла в терминале линукс?
Хочу создать нечто-подобное для копирования имени файла или директории.
Тоже вводишь команду и имя файла, и оно автоматически копируется в буфер обмена.
Заранее благодарен за помощь.
Простой 2 комментария
я понимаю смысл pwd в буфер обмена быстро засовывать, немного.
Но зачем засовывать имя файла в буфер обмена, если вы все равно будете его печатать? Не проще сразу напечатать там где надо? Опишите кейс какой нибудь, пожалуйста
Евгений, мне нужно прописать имя файла в пути в коде, допустим наименование картинки.
Представьте что оно слишком длинное.
alias pbcopy=’xclip -selection clipboard’
Вы случайно не знаете как на линуксе скопировать всю папку целиком с ftp сервера?
ftp> mget копирует множество файлов не не директорию
как-то с wget можно было. не помню(
Thiago Alvarez, нет, я еще до этого не дошел.
Я на сервере или на локалке архивирую папки, потом скачиваю
Gets selected files with expanded wildcards.
-c continue, reget.
-d create directories the same as file names and get the files into them instead of current directory.
-E delete source files after successful transfer
-e delete target file before the transfer
-a use ascii mode (binary is the default)
-P N download N files in parallel
-O specifies base directory or URL where files should be placed
Это из пакета lftp. Вроде как ftp уже устаревший давно считается. Но думаю, там аналогично будет.
Опция -d Вам нужна, вроде бы.