OSX команды для работы с буфером обмена

Чтобы скопировать текст в буфер обмена в терминале OSX можно воспользоваться командой pbcopy:

 pbcopy < ~/.ssh/id_rsa.pub 

Чтобы вставить текущее содежримое буфера обмена в терминале используйте команду:

 pbpaste 

split разбить большой файл по строкам

Чтобы разбить большой файл на меньшие, можно воспользоваться командой split

Например, если у вас есть большой файл big_log_file.log с миллионами строк (размером в несколько гигабайт) и нужно поделить его на меньшие файлы по 1000000 строк каждый, то это можно сделать такой командой:

split -l 1000000 big_log_file.log split_log_prefix_

Где -l количество строк в каждом файле, big_log_file.log — имя лог файла, а split_log_prefix_ — префикс имени для разбиваемых файлов.

В результате разбиение вы получите несколько меньших по размеру файлов с именами split_log_prefix_aasplit_log_prefix_ab и split_log_prefix_ac по 1000000 строк каждый.

ssh-copy-id логин без пароля по ssh

Для того, чтобы подключаться к серверу без пароля можно воспользоваться командой ssh-copy-id, которая копирует публичный ключ в файл $HOME/.ssh/authorized_keys на сервер, к которому вы планируете подключаться.

Ключ можно предварительно сгениерировать с помощью команды ssh-keygen например, так:

# ssh-keygen -t rsa -b 4096 -C "your@email.com"

Пример использования команды ssh-copy-id ниже:

# ssh-copy-id -i /root/.ssh/id_rsa.pub user@hostOrIp
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@hostOrIp's password:

Number of key(s) added: 1


Now try logging into the machine, with: "ssh 'user@hostOrIp'"
and check to make sure that only the key(s) you wanted were added.

Вместо user — поставляете имя пользователя, который будет заходить без пароля, а вместо hostOrIp хост или IP-адрес целевого сервера

Приостановить или заморозить процесс kill

В случае, если необходимо приостановить или заморозить какой-то процесс, а потом продолжить его работу помогут команды ps и kill

С помощью ps мы можем узнать PID процесса:

# ps auxwww |grep -v grep |grep -i 'process_name'

Команда должна вернуть запись содержащую такие колонки:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

Далее приостанавливаем подходящий процесс командой *:

# kill -STOP PID

Чтобы продолжить остановленный процесс необходимо выполнить команду *:

# kill -CONT PID

* Вместо PID нужно подставить цифровой идентификатор процесса.

Подсчитать количество файлов в папке

Чтобы подсчитать количество файлов в папке с огромным количеством файлов можно выполнить команды:

# cd /path/to/folder_with_huge_number_of_files1
# ls -f | wc -l

или для любитерей Perl есть еще такой способ:

# cd /path/to/folder_with_huge_number_of_files2
# perl -e 'opendir D, "."; @files = readdir D; closedir D; print scalar(@files)."\n"'

Linux bash: переменная окружения TMOUT автоматический Log Out пользователя

Чтобы реализовать автоматический выход из сессии Linux bash через 5 минут отсутсвия активности необходимо добавить такие настройки:

# set a 5 min timeout policy for bash shell
TMOUT=300
readonly TMOUT
export TMOUT

в файл ~/.bash_profile или /etc/profile

Чтобы отключить таймаут необходимо выполнить команду

# export TMOUT=0

или

# unset TMOUT

Учтите тот факт, что readonly переменная может быть отключена только админ пользователем root в глобальном файле конфигруации bash /etc/profile или пользовательском файле настройки bash ~/.bash_profile.

Linux bash: конвертировать строку разделенную проблеми в массив

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

Это можно сделать так:

#/bin/bash

declare -a PARAMS="( $1 )"
# нумерация элементов массива начинается с индекса со значением 0
PARAM1="${PARAMS[0]}"
PARAM2="${PARAMS[1]}"

Linux bash: еще один вариант работы с массивом и циклом for

Я уже писал раньше об работе с массивом и циклом for в shell скриптах.
Еще один возможный варинт синтаксиса, удобный для запоминания программистами, которые раньше писали на C-подобных языках, представлен ниже:

#!/usr/bin/env sh

arr=('foo' 'bar' 'baz')

for ((i=0; i < ${#arr[@]}; i++)); do
        echo "arr[${i}]: ${arr[i]}"
done

В примере переменная arr содержит массив значений, значения которого перебираются в цикле for

Linux bash: удалить первый символ со значения переменной

Недавно возникла задача в Linux bash скрипте удалить первый символ со значения переменной.

Я уже ранее писал о том, как можно удалить удалить последний символ со значения переменной в Linux bash.

Удалить первый символ значения можно так:

#!/bin/bash

str1="foo bar"
echo "String1: ${str1}"

str2=${str1:1:${#str1}}
echo "String2: ${str2}"
FreelanceHunt.com
 
Copyright © 2013 - 2019 Шкоденко Тарас. Программирование и разработка сайтов, Киев