diff --git a/.gitignore b/.gitignore index 2a8645f..3f93e15 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .hugo_build.lock +/venv/ \ No newline at end of file diff --git a/content/en/bash-lifehacks/bash-arrays-and-hashmaps.md b/content/en/bash-lifehacks/bash-arrays-and-hashmaps.md new file mode 100644 index 0000000..a5a69ff --- /dev/null +++ b/content/en/bash-lifehacks/bash-arrays-and-hashmaps.md @@ -0,0 +1,68 @@ +--- +title: "BASH: arrays and hashmaps" +category: bash-lifehacks +filename: bash-arrays-and-hashmaps +date: 2023-05-07T13:35:26.956Z +--- +Sometimes there is a need to use in BASH such structures as lists (also known as arrays) and dictionaries (also known as hashmaps and associative arrays). In this post there are some samples how to work with them. + +## 1. Arrays + +Array creation in bash can be done this way: + +```shell +sample_array=(foo bar bazz) +``` + +In order to add single or multiple new elements to the end of array, you should use this syntax: + +```shell +sample_array+=(six seven) +``` + +In order to get elements on the list in a cycle, you should use this syntax: + +```shell +for i in ${sample_array[@]} +do + echo $i +done +``` + +Here is an example how to get element by its index: + +```shell +echo ${sample_array[0]} +echo ${sample_array[3]} + +# 0, 3 etc. - elements' indexes +``` + +Array slicing: + +```shell +sliced_array=${sample_array[@]:1} # will get all elements of a sample_array, starting with 1st +another_sliced_array=${sample_array[@]:1:5} # will get sample_array elements since 1st to 5th +``` + +## 2. Hashmaps +To create hashmap in bash use this syntax: + +```shell +declare -A sample_hashmap=([one]=one [two]=two [three]=three [four]=four [five]=five) +``` + +This will add new key "foo" with value "bar": + +```shell +sample_hashmap[foo]=bar +``` + +Cycle: + +```shell +for key in ${sample_hashmap[@]} +do + echo ${sample_hashmap[$key]} +done +``` \ No newline at end of file diff --git a/content/ru/bash-lifehacks/bash-arrays-and-hashmaps.md b/content/ru/bash-lifehacks/bash-arrays-and-hashmaps.md new file mode 100644 index 0000000..80f7590 --- /dev/null +++ b/content/ru/bash-lifehacks/bash-arrays-and-hashmaps.md @@ -0,0 +1,69 @@ +--- +title: "BASH: массивы и ассоциативные массивы" +category: bash-lifehacks +filename: bash-arrays-and-hashmaps +date: 2023-05-07T13:35:26.956Z +--- +Иногда возникает необходимость использовать в bash такие структуры данных, как списки (они же массивы) и ассоциативные массивы (он же хэш-таблицы). В данной статье приведены примеры того, как с ними работать. + +## 1. Массивы + +создание массива в bash делается просто: + +```shell +sample_array=(foo bar bazz) +``` + +Чтобы добавить один или несколько новых элементов в конец массива, нужно использовать такой синтаксис: + +```shell +sample_array+=(six seven) +``` + +Чтобы пройти по массиву циклом, нужно использовать такой синтаксис: + +```shell +for i in ${sample_array[@]} +do + echo $i +done +``` + +Чтобы получить элемент по индексу, используется такая конструкция: + +```shell +echo ${sample_array[0]} +echo ${sample_array[3]} + +# 0, 3 и т. п. - индексы элементов массива +``` + +Чтобы обрезать массив, используется такая конструкция: + +```shell +sliced_array=${sample_array[@]:1} # выведет все элементы sample_array, начиная с 1-го +another_sliced_array=${sample_array[@]:1:5} # выведет элементы sample_array с 1-го по 5-й +``` + +## 2. Ассоциативные массивы + +создание ассоциативного массива в bash делается так: + +```shell +declare -A sample_hashmap=([one]=one [two]=two [three]=three [four]=four [five]=five) +``` + +Добавление новых элементов: + +```shell +sample_hashmap[foo]=bar +``` + +Обход в цикле: + +```shell +for key in ${sample_hashmap[@]} +do + echo ${sample_hashmap[$key]} +done +``` \ No newline at end of file diff --git a/content/ru/linux-lifehacks/how-to-extend-lvm-volume-on-linux.md.bak b/content/ru/linux-lifehacks/how-to-extend-lvm-volume-on-linux.md.bak deleted file mode 100644 index 69dd5c3..0000000 --- a/content/ru/linux-lifehacks/how-to-extend-lvm-volume-on-linux.md.bak +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: "Linux: Как расширить логический том LVM" -category: linux-lifehacks -filename: how-to-extend-lvm-volume-on-linux -date: 2022-05-15 ---- -### Ситуация 1: новый диск - -#### Первый шаг: создание физического тома - -После того, как вы присоединили диск к физическому серверу или к виртуальной машине, вам нужно набрать команду: - -```bash -sudo fdisk -l -``` - - - -Это нужно, чтобы убедиться, что диск распознан операционной системой, а также чтобы идентифицировать имя диска. Вывод команды будет примерно такой: - -```plaintext -Disk /dev/vdc: 5 GiB, 5368709120 bytes, 10485760 sectors -Units: sectors of 1 * 512 = 512 bytes -Sector size (logical/physical): 512 bytes / 512 bytes -I/O size (minimum/optimal): 512 bytes / 512 bytes -``` - -После того, как вы идентифицировали имя диска (в нашем случае это `/dev/vdc`), вы можете создать физический том с помощью команды: - -```bash -sudo pvcreate /dev/vdc -``` - -Вы увидите такой вывод: - -```plaintext -kostya@ubuntu-21-04:~$ sudo pvcreate /dev/vdc -Physical volume "/dev/vdc" successfully created. -kostya@ubuntu-21-04:~$ -``` - -#### Второй шаг: расширение группы томов - -Чтобы увидеть список доступных групп томов, воспользуйтесь командой: - -```shell -vgdisplay -``` - -Теперь можно расширить группу томов. Делается это такой командой: - -```bash -sudo vgextend {vg-name} {pv-name} -``` - -В нашем случае это будет: - -```bash -sudo vgextend vg-example /dev/vdc -``` - -Вы увидите такой вывод: - -```plaintext -kostya@ubuntu-21-04:~$ sudo vgextend vg-example /dev/vdc -Physical volume "/dev/vdc" successfully created. -Volume group "vg-example" successfully extended -kostya@ubuntu-21-04:~$ -``` - -#### Третий шаг: расширение логического тома - -Расширение логического тома делается такой командой: - -```bash -sudo lvextend --size +{size} {vg-name/lv-name} -``` - -В нашем случае это будет: - -```bash -sudo lvextend --size +2G vg-example/lv-example -``` - -Вы увидите такой вывод: - -```plaintext -kostya@ubuntu-21-04:~$ sudo lvextend --size +2G vg-example/lv-example -Size of logical volume vg-example/lv-example changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents). -Logical volume vg-example/lv-example successfully resized. -kostya@ubuntu-21-04:~$ -``` - -Если же вы хотите, чтобы логичекий том использовал всё свободное место в группе томов, то наберите -команду: - -```bash -sudo lvextend --extents +100%FREE vg-example/lv-example -``` - -#### Четвёртый шаг: расширение файловой системы - -Если у вас файловая система `xfs`, то расширение делается такой командой: - -```bash -sudo xfs_growfs /dev/{vg-name}/{lv-name} -``` - -В нашем случае это будет: - -```bash -sudo xfs_growfs /dev/vg-example/lv-example -``` - -В случае с файловой системой ext4 замените команду `xfs_growfs` на `resize2fs` - -### Ситуация 2: если изменился размер существующего диска - -Иногда может измениться размер существующего диска, например, в случае с виртуальной машиной. В таком случае, первый шаг будет отличаться, второй шаг выполняться не будет, а остальные шаги будут такими же, как в ситуации с новым диском, описанной выше. На первом шаге нужно будет не создать физический том, а расширить существующий. Делается это такой командой: - -```bash -sudo pvresize /dev/DISKNAME -``` - -Например, - -```bash -sudo pvresize /dev/vdc -``` \ No newline at end of file diff --git a/static/admin/config.yml b/static/admin/config.yml index 86fbd65..c8b1370 100644 --- a/static/admin/config.yml +++ b/static/admin/config.yml @@ -3,9 +3,8 @@ backend: local_backend: true -# These lines should *not* be indented -media_folder: "static/images" # Media files will be stored in the repo under static/images/uploads -public_folder: "/images" # The src attribute for uploaded media will begin with /images/uploads +media_folder: "static/images" # Media files will be stored in the repo under static/images +public_folder: "/images" # The src attribute for uploaded media will begin with /images i18n: structure: multiple_folders @@ -23,7 +22,6 @@ collections: view_groups: - label: Year field: date - # groups items based on the value matched by the pattern pattern: \d{4} - label: Category field: category @@ -35,7 +33,7 @@ collections: - label: "Category" name: "category" widget: "select" - options: ["/", "linux-lifehacks", "nginx-lifehacks", "python-lifehacks", "ubuntu-lifehacks"] + options: ["/", "linux-lifehacks", "nginx-lifehacks", "python-lifehacks", "ubuntu-lifehacks", "bash-lifehacks"] i18n: duplicate - label: Filename name: filename diff --git a/static/admin/index.html b/static/admin/index.html index 3014310..47c02e0 100644 --- a/static/admin/index.html +++ b/static/admin/index.html @@ -8,6 +8,6 @@
- +