Skip to content

Instantly share code, notes, and snippets.

@if0rest
Last active April 24, 2021 00:18
Show Gist options
  • Save if0rest/1702cdc33b683f64010d9fc72eeefb0c to your computer and use it in GitHub Desktop.
Save if0rest/1702cdc33b683f64010d9fc72eeefb0c to your computer and use it in GitHub Desktop.
ЛИСТИНГ
> ls                             # выводит список содержимого текущей директории
> ls -l                          # более подробная инфа
> ls -a                          # включая скрытые
> ls -t                          # сортировка по времени
> ls -lat
> ls 'Calibre Library' или ls Calibre\ Library
> ls Documents Music             # содержимое каждой папки
> ls -hF -1 --sort=extension     # показать содержимое папки «красиво, в один столбец»

> cd ..                          # на уровень выше
> cd ../..                       # на 2 уровня выше

> pwd - текущий путь

> open Documents/
> open .                         # открыть текущий каталог в проводнике
> open -a Notepad 1.txt
> open -R Downloads file.txt
> open http://google.com

> killall Finder                 # закрыть все окна Finder
СОЗДАНИЕ ФАЙЛОВ
> touch file                     # создает файл
> touch file1 file2 file3        # создаст неск. файлов сразу
> touch /Folder file.txt         # создаст file.txt в папке Folder
СОЗДАНИЕ ПАПОК
> mkdir <folder>                             # создает папку
> mkdir project project/css project/js       # создать несколько папок
> mkdir -p project/{css,js}                  # то же, что выше
КОПИРОВАНИЕ ФАЙЛОВ
# копирование файла без расширения в файл с расширением
> cp somefile somefile.html
# копирование файла index.html в тот же каталог с переименованием в catalog.html
> cp index.html catalog.html     
# копирование файла index.html в папку old/ (все произойдет в текущей папке)
> cp index.html old/             
# дублирование каталога
> cp temp/ temp2/ -r             
# рекурсивное копирование содержимого папки
> cp -r photo photo_friend    
ПЕРЕИМЕНОВАНИЕ ИЛИ ПЕРЕМЕЩЕНИЕ ФАЙЛОВ
> mv oldname.txt newname.txt        # переименование
> mv some.file  directory/          # перенести файл в папку
> mv old_name  dir/new_name         # перемещение файла в папку с переименованием файла
> mv file* photo                    # переносит файлы, имена кот. нач-ся с "file" и далее идут любые символы
> mv * ../                          # перенести все файлы каталога на уровень выше
УДАЛЕНИЕ ПАПОК И ФАЙЛОВ
> rm file                           # удаление файла
> rmdir empty_folder/               # удаление пустой папки
> rmdir -r non_empty_folder/        # удаление не пустой папки
> rm -rf old                        # удалить папку и всё из нее
РАЗНЫЕ МЕЛОЧИ
# «где я?»
> pwd                         
# создаст софт-ссылку file_link на file. Софт-ссылка умирает после удаления файла
> ln -s file soft_link           
# создаст хард-ссылку, кот. всегда будет хранить содержимое файла
> ln file hard_link              
# выполнение первой части команды (до &&) и, при отсутствии ошибок, второй части (после &&)
> rm -rf node_modules && npm i   
# вывести в консоль содержимое файла
> cat ~/.file                 
# записать в file.txt результат вывода команды ls -a
> ls -a >> file.txt           
# дописать строку в конец файла
> echo 'some text' >> readme.md  
# показать статистику использования пространства на дисках
> df -h                       
# найти слово carousel в двух указанных файлах (с игнором регистра), вывести строки с этим словом и номера строк (искомое слово подсветить)
> grep -i -n --color 'carousel' index.html css/style.css    
# найти слово word во всех файлах в папке project
> grep word -r project        
# найти в текущей папке (и подпапках) все файлы, имена которых содержат ind и показать списком
> find . -iname '*ind*'       
АЛИАСЫ

Для команд можно создавать алиасы (короткие синонимы команд). Для этого в папке пользователя (OSX: /Users/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.bash_profile, Windows: C:/Users/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.bash_profile) нужно вписать строки, наподобие alias pro='cd /d/projects' (одна строка в файле — один алиас). Если файла .bash_profile нет, его можно создать. Это обычный текстовой файл. После добавления алиасов нужно перезапустить терминал.

ПОИСК ФАЙЛА, ПОДСТРОКИ
> find . -type f                       # найти все файлы в текущей папке и ее дочерних
> find . -name|-type "video.mp4"       # искать файл с указанным именем|типом в текущей папке
> find . -name "*.txt"                 # все файлы с расширением .txt
> find . -name "file*"                 # файлы любого расширения с именем, начинающимся с "file"
> find . -iname "*.txt"                # поиск, нечуств. к регистру
> find . -size (+2|-2)                 # выведет список файлов размером больше|меньше 2Кб
> find . -mtime (+1|-1)                # выведет файлы, измененные более|менее 1 дня назад
> find . -ctime (+1|-1)                # выведет файлы, созданные >|< 1 дня назад
> find . -iname "*.txt" -or -iname "*.doc" and -ctime +1

По умолчанию поиск рекурсивный, т.е. распространяется на подкаталоги. Чтобы его исключить, исп. -prune:

> find . -iname "*.txt" -or -iname "childrenDir" -prune

Чтобы после не выводил название исключенной директории:

> find . -iname "*.txt" -print -or -iname "childrenDir" -prune # выведет все, что до команды -print

> grep                               # команда поиска по контенту
> grep "MyISAM" MySQL.txt            # ищет строку "MyISAM" в файле MySQL.txt
> grep -r "keywords" /home/khaprov/"Рабочий стол"/
УСТАНОВКА ПРАВ

В Unix-подобных операционных системах поддерживаются три вида прав - чтение, запись и выполнение, которые присваиваются каждому файлу или директории. Права эти повторяются 3 раза: для владельца файла, для группы пользователей, к которой владелец принадлежит, и для всех остальных пользователей. Как правило, права указываются в числовом формате:

  • 4 - чтение;
  • 2 - запись;
  • 1 - выполнение. В PHP все права задаются в виде восьмеричных чисел, поэтому их надо задавать с обязательным указанием префикса - 0. Пример: 0755.
> chmod (u|g|o)(-|+)(r|w|x) file

> chmod g+x file.txt                  # добавить группе право на запись файла
> chmod g+wx file.txt                 # добавить группе право на запись и исполнение
> chmod u+x,o-rwx file.txt
> chmod u=rwx,g=rw,o=r file.txt       # "chmod g=" аналогично "g-rwx", т.е. все права будут отобраны
> chmod 444 file.txt                  # r--r--r--
> chmod 644 file.txt                  # rw-r--r--; запись и чтение для польз., для всех остальных чтение.
> chmod 640 file.txt                  # rw-r-----
> chmod g=,o= file.txt                # rw-------
ПАКЕТЫ: УСТАНОВКА, ОБНОВЛЕНИЕ, УДАЛЕНИЕ

Если apt:

> apt install <package>               # установка
> apt remove <package>                # полное удаление, включая конфиги и зависимости, останутся только рекомендованные программы

Если apt-get:

> apt-get remove <package>            # обычное удаление
> apt-get purge <package>             # удаление с конфигурационными файлами
> apt-get autoremove <package>        # после одной из предыдущих команд, также удалит зависимости + рекомендованные

Если пакет остался без внешних зависимостей (т.е. удален единственный пакет, который имел в зависимостях данный), то он удаляется через apt-get autoremove. В этом вся суть пакетного менеджера: он следит за зависимостями и знает что используется в системе, а что нет.

Если устанавливали программу из deb-файла и не знаем точно называние пакета: 0. Находим исполняемый файл программы (напр, TimeShift => /usr/bin/timeshift). 0. По исполняемому файлу узнаем ее пакет: sudo dpkg -S /usr/bin/timeshift # timeshift: /usr/bin/timeshift 0. Пакет так и называется - timeshift. Теперь можно удалить программу Ubuntu, одним из описанных способов.

Часто мы устанавливаем недостающее ПО из PPA, но не все эти пакеты нужны нам на протяжении долгого времени, а при обновлении системы, могут даже вызвать ошибки. Для удаления пакетов, установленных из PPA, есть утилита ppa-purge.

Устанавливаем, если нет:

> sudo apt install ppa-purge

Теперь, чтобы удалить все пакеты установленные из определенного ppa используем:

> sudo ppa-purge -i ppa:владелец_ppa/имя_ppa

Обычно в таком формате записываются PPA: протокол:владелец/имя.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment