grep [0-9]\{4\}XX[0-9]{4\} test.txt
сначала обработается bash-ем, он уберёт обратные слеши и сам grep попадёт выражение уже без обратных слешей [0-9]{4}XX[0-9]{4}
и очевидно не срабатывает. Что бы обратный слеш добрался до grep надо его экранировать ещё одним обратным слешом$ grep [0-9]\\{4\\}XX[0-9]\\{4\\} test.txt
1234XX1234
1234XX1234
$ grep "[0-9]\{4\}XX[0-9]\{4\}" test.txt
1234XX1234
1234XX1234
$ grep -E "[0-9]{4}XX[0-9]{4}" test.txt
1234XX1234
1234XX1234
$ grep -P "\d{4}XX\d{4}" test.txt
1234XX1234
1234XX1234
-i identity_file
[...] You can also specify a public key file to use the corresponding private key that is loaded in ssh-agent(1) when the private key file is not present locally.
<link href="https://fonts.googleapis.com/css2?family=Roboto+Condensed:wght@400;700&display=swap" rel="stylesheet">
map
:map $http_accept $avif_image_path {
default "";
~image/avif "$uri.avif";
}
map $http_accept $webp_image_path {
default "";
~image/webp "$uri.webp";
}
server {
# ...
location ~* \.(png|jpe?g|gif)$ {
add_header Vary Accept;
try_files $avif_image_path $webp_image_path $uri =404;
}
# ...
}
cd ..; cd foo
можно сделать cd .
./tmp/q$ ls -l
total 0
-rw-rw-r-- 1 lynn lynn 0 nov 1 16:01 2
$ rm -r ../q
$ mkdir ../q
$ touch ../q/3
$ ls -l
total 0
$ cd .
$ ls -l
total 0
-rw-rw-r-- 1 lynn lynn 0 nov 1 16:04 3
# key
$ echo qEExPE+jkJxQUt8fSO+XwzXgRGh6kLHy+lWEe6Z8T6s= | xxd -l 32 -ps -c 256
7145457850452b6a6b4a785155743866534f2b58777a5867524768366b4c4879
# iv
$ echo jPNGTNLtGIBc7Jv2UXj7a3FNQk13eUJ5T3VIUXlOS0ZVOEpnMUpPMnhvQXg5bE5kMGFHejVxaTFnYTA9 | base64 -d | xxd -l 16 -ps
8cf3464cd2ed18805cec9bf65178fb6b
# encrypted text
$ echo jPNGTNLtGIBc7Jv2UXj7a3FNQk13eUJ5T3VIUXlOS0ZVOEpnMUpPMnhvQXg5bE5kMGFHejVxaTFnYTA9 | base64 -d | cut -b 17-
qMBMwyByOuHQyNKFU8Jg1JO2xoAx9lNd0aGz5qi1ga0=
# результат
$ echo qMBMwyByOuHQyNKFU8Jg1JO2xoAx9lNd0aGz5qi1ga0= | openssl AES-256-CBC -d -a -K 7145457850452b6a6b4a785155743866534f2b58777a5867524768366b4c4879 -iv 8CF3464CD2ED18805CEC9BF65178FB6B
/playlist.m3u8+1729705980
// Вспомогательные функции
const B = (str) => Uint8Array.from(str, c => c.charCodeAt(0));
const S = (buf) => String.fromCharCode(...new Uint8Array(buf));
// дано
const encryptedData = "jPNGTNLtGIBc7Jv2UXj7a3FNQk13eUJ5T3VIUXlOS0ZVOEpnMUpPMnhvQXg5bE5kMGFHejVxaTFnYTA9";
const key = "qEExPE+jkJxQUt8fSO+XwzXgRGh6kLHy+lWEe6Z8T6s=";
const iv = B(atob(encryptedData).slice(0, 16));
const cryptoKey = await crypto.subtle.importKey(
'raw',
// На самом деле используется только 32 байта из key
B(key.slice(0, 32)),
'AES-CBC',
true,
['encrypt', 'decrypt']
);
const encryptedText = B(atob(atob(encryptedData).slice(16)));
let decrypted = S(await crypto.subtle.decrypt({ name: 'AES-CBC', iv }, cryptoKey, encryptedText));
console.log(decrypted); // /playlist.m3u8+1729705980
background: url("../images/hogwarts.jpeg") center / cover no-repeat;
имя_пользователя.github.io
<meta name="viewport" content="width=device-width, initial-scale=1">
credentials: 'include'
Access-Control-Allow-Credentials
и Access-Control-Allow-Origin
:nth-child(3n + 1)
выберет нам первые элементы каждого ряда.:nth-last-child(-n + 2)
.:nth-child(3n + 1):nth-last-child(-n + 2)
.~
что бы выбрать все (в вашем случае не больше одного) элементы которые идут после уже выбранного.li:nth-child(3n + 1):nth-last-child(-n + 2),
li:nth-child(3n + 1):nth-last-child(-n + 2) ~ li {
.....
}
-n + 2
на -n + 3
.li:nth-child(3n):nth-last-child(-n + 3) ~ li {
.....
}
&
) заменить на HTML-сущность (&
).TEXT_ARTIFACT_URL="$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/artifacts/$CI_COMMIT_BRANCH/download?job=$3&job_token=$ARTIFACT_TOKEN"
TEXT_ARTIFACT_URL_HREF="Ссылка на артефакт: "'<a href="'$TEXT_ARTIFACT_URL'">Download Artifact</a>'
echo $TEXT_ARTIFACT_URL_HREF
TEXT_ARTIFACT_URL_HREF="Ссылка на артефакт: <a href='$TEXT_ARTIFACT_URL'>Download Artifact</a>"