File Managment
Работа с файлами и директориями

(Навигация, создание, копирование, удаление, перемещение)

    ls - список файлов в директории, где ты находишься. (-a = включить скрытые; -l = подробно и права; -h = читаемые размеры)
    Пример: ls -lah

    pwd - показать путь до директории, где ты находишься
    Пример: pwd
    
    cd - переход в другую директорию
    Пример: cd ~/my_directory
    
    mkdir - создание директории
    Пример: mkdir new_directory

    rmdir - удаление пустой директории
    Пример: rmdir new_directory

    rm - удаление файла или директории. (-r = рекурсивно; -f = без подтверждения)
    Пример: rm -rf new_directory

    touch - создание пустого файла
    Пример: touch new_file.txt

    nano - текстовый редактор в консоли
    Пример: nano my_file.txt

    less - просмотр файла (без редактирования)
    Пример: less my_file.txt

    cp - копирование файлов/директорий. (-r = рекурсивно; -p = сохраняет права доступа, временные метки)
    Пример: cp -rp ~/Projects/new_directory ~/Documents/my_directory
    
    mv - перемещение или переименование
    Пример с перемещением: mv ~/Projects/file.txt ~/Documents/
    Пример с переименованием: mv old_name.txt new_name.txt

    ln - создание жесткой или символической ссылки. (-s = символическая)
    Пример: ln -s /Users/k.mmax/my_file.txt new_link.txt

    readlink - показать, куда указывает символическая ссылка
    Пример: readlink my_link

    cat - показать содержимое файла в консоли (-n = нумеровать все строки; -b = нумеровать непустые строки)
    Пример: cat -b my_file.txt

    head - первые строки файла, по умолчанию 10. (-n = указать количество)
    Пример: head -n 20 my_file.txt

    tail - последние строки файла, по умолчанию 10. (-n = указать количество; -f = обновлять в реальном времени)
    Пример: tail -n 30 -f my_file.txt

    echo - вывод текста в терминал или в файл (-n = не добавлять перенос строки)
    Пример: echo -n "interesting text" >> my_file.txt

    tee - копирование данных из stdin в stdout и в файл. (-a = дописывать в файл, не перезаписывая) 
    (Примечание: часто используется с pipe, так как pipe передает вывод предыдущей команды в stdin tee)
    Пример: echo "interesting text" | tee -a my_file.txt 
    (допишет "interesting text" в my_file.txt и выведет "interesting text" в терминал)

    xargs - получение данных из stdin и передача их как аргументов другой команде. (-t = выводить выполняемую команду перед запуском;
    -n = указать количество аргументов, передаваемых команде за один запуск)
    (Примечание: пробелы, табуляции и переносы считаются разделителями между аргументами)
    Пример: echo "file1.txt file2.txt file3.txt" | xargs -n 1 rm 

    find - поиск файлов и директорий в указанной директории. (-name = поиск по имени; -type = поиск по типу;
    -iname = поиск по имени без учета регистра; -exec = указываемое действие для каждого найденного файла или директории)
    Пример 1: find /bin -type f -name "*.txt" 2>/dev/null
    (ищет в bin и глубже все файлы с расширением txt, stderr не выводим)
    Пример 2: find /bin/ -type d -iname "some_directory" 2>/dev/null 
    (ищет в bin все директории с именем "some_directory" без учета регистра, stderr не выводим)
    Синтаксис для find с exec:
    {}	Подстановка имени найденного файла
    \;	Конец команды (выполнять для каждого файла)
    \+	Конец команды (передать все файлы одной командой)

    grep - поиск текста внутри файла или директории. (-i = без учета регистра; -r = рекурсивно, для директории;
    -n = добавляет номера строк; -H = показать имя файла; -v = reverse, "найти все кроме"; -w = только цельные слова;
    -E = расширенные регулярные выражения: |, +, ?, ( ), { })
    Пример: grep -rnHi "error" ~/Projects/logs

    wc - подсчет строк, слов и байтов в файле. (-l = количество строк; -w = количество слов; 
    -c = количество байт; -m = количество символов; -L = длина самой длинной строки)
    Пример 1: wc -c my_file.txt
    Пример 2: find ~/Projects/logs -type f -name "*.log" -exec wc -l {} \; 2>/dev/null

    sort - сортировка строк в тексте или в выводе команды (-n = числовая сортировка; -r = обратный порядок сортировки;
    -u = убрать повторяющиеся строки; -t = указание разделителя столбцов: символа, определяющего границы между столбцами; 
    -k = указание ключа сортировки: столбца или диапазона столбцов; -o запись результата в файл)
    (Примечание: по умолчанию диапазон столбцов - все столбцы, разделитель столбцов - пробелы и табуляция)
    Пример 1: sort names.txt
    (отсортирует строки в алфавитном порядке)
    Пример 2: sort -r names.txt
    (отсортирует строки в обратном алфавитном порядке)
    Пример 3: sort -n numbers.txt
    (отсортирует строки численно по возрастанию)
    Пример 4: sort -nr numbers.txt
    (отсортирует строки численно по убыванию)
    Пример 5: sort -u names.txt
    (отсортирует строки в алфавитном порядке и уберет все повторяющиеся строки)
    Пример 6: sort -k3 -nr numbers.txt
    (отсортирует строки по третьему и последующим столбцам численно по убыванию)
    Пример 7: sort -k2 -u names.txt
    (отсортирует строки по второму и последующим столбцам в алфавитном порядке и уберет все повторяющиеся строки;
    повторяющимися считаются строки, у которых совпадает содержимое начиная со второго столбца и до конца строки)
    Пример 8: sort -k2,2 -u names.txt -o new.txt
    (отсортирует строки по второму столбцу в алфавитном порядке, уберет все повторяющиеся строки и запишет результат в new.txt;
    повторяющимися считаются строки, у которых совпадает содержимое второго столбца)
    Пример 9: sort -t":" -k2,3 names.txt
    (отсортирует строки по второму и третьему столбцу в алфавитном порядке, используя символ ":" в качестве разделителя столбцов)

    which - показать полный путь к исполняемому файлу команды. (-a = показать все пути к команде)
    Пример: which -a ls

    file - определение типа файла по содержимому. (-b = только тип без имени; -i = MIME-тип; -L = идти по символическим ссылкам)
    Пример 1: file -bi example.png
    (выведет MIME-тип файла example.png без имени файла)
    Пример 2: file -biL my_link
    (выведет MIME-тип файла, на который указывает символическая ссылка my_link, без имени файла)  

    mc - консольный файловый менеджер (Midnight Commander)
    Пример: mc