> 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: протокол:владелец/имя
.