LoginSignup
3
0

More than 3 years have passed since last update.

前提

すぐ忘れるので書いていきます。

sed

・コメントアウト削除

 sed -e '/^#/d' ファイル名

・空白行削除

 sed -e '/^$/d’ ファイル名

・コメントアウト + 空白行の削除

 sed -e '/^#/d; /^$/d' ファイル名

・指定行の前に挿入

# 行指定(3行目の前にaaaを挿入する場合)
 sed '3i aaa' ファイル名

# 対象文字列指定(aaaの前にbbbを挿入する場合)
 sed '/aaa/i bbb' ファイル名

・指定行の後に挿入

# 行指定(2行目の後にaaaを挿入する場合)
 sed '2a aaa' ファイル名

# 対象文字列指定(aaaの後にbbbを挿入する場合)
 sed '/aaa/a bbb' ファイル名

・スラッシュを含む文字列の下に文字を挿入したい場合
スラッシュの前に \ を入れる

対象文: /var/log/httpd/access_log
挿入文: CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/sample_access_log.%Y%m%d 86400 540" ltsv env=!no_log
sed -e '/\/var\/log\/httpd\/access_log/a CustomLog "|\/usr\/sbin\/rotatelogs \/var\/log\/httpd\/sample_access_log.%Y%m%d 86400 540" ltsv env=!no_log' /etc/httpd/conf/httpd.conf

・挿入時にインデントを揃えたい場合
aの後ろに \ を入れる
a\ の後に指定したい分のインデントを入れる

sed -e "/\/var\/log\/httpd\/access_log/a\  hoge" /etc/httpd/conf/httpd.conf

・バックスラッシュを含む文字列の下に挿入する場合
\ を追加する

# 挿入したい文字列
LogFormat "time:%{%d/%b/%Y:%H:%M:%S %z}t\tx_forwarded_for:%{X-Forwarded-For}i\tremote_host:%h\trequest:%r\tlast_status:%s\tsize:%b\treferer:%{Referer}i\tuser_agent:%{User-Agent}i\tv_host:%{Host}i" ltsv

# 以下実装
sed -e '/LogFormat "%h %l %u %t \\"%r\\" %>s %b" common/a\    LogFormat "time:%{%d\/%b\/%Y:%H:%M:%S %z}t\\tx_forwarded_for:%{X-Forwarded-For}i\\tremote_host:%h\\trequest:%r\\tlast_status:%s\\tsize:%b\\treferer:%{Referer}i\\tuser_agent:%{User-Agent}i\\tv_host:%{Host}i" ltsv' /etc/httpd/conf/httpd.conf

・書式を残したまま特定の文字列だけ置換したい場合
文字列bbbをcccに置換する

aaa = "bbb"
sed -i 's/\(^aaa = \).*/\1"ccc"/g' ファイル名

awk

$NFで末尾のフィールドを取り出す

awk '{print $NF}' <ファイル名>

末尾から数えてn番目を取り出す

awk '{print $(NF-n)}' <ファイル名>

printf

printf 書式 値
[aaa]
command = "/usr/bin/bbb /var/log/httpd/access_log"
↑こんな感じの文字列を挿入する場合
printf "[%s]\ncommand = \"%s\"\n" "aaa" "/usr/bin/bbb /var/log/httpd/access_log"
[bbb]
command = ["ccc", "-p", "ddd"]
↑こんな感じの文字列を挿入する場合
printf "[%s]\ncommand = [%s]\\n" "bbb" '"ccc", "-p", "ddd"'

mkdir

mkdir -p 指定されたディレクトリの上位ディレクトリも作成
      -m パーミッションを指定しディレクトリを作成
      -v ディレクトリを作成した結果のメッセージを表示

例:1度で3つのディレクトリを作成する場合 → mkdir -p dir1/dir2/dir3 

date

# 現在の日時を表示
date
Thu Dec  3 05:24:17 UTC 2020

# フォーマットは + で始まる書式で指定
date "+%Y%m%d-%H%M%S"
20201203-052401

# 24時間後の日時を表示
$ date -d tomorrow
Fri Dec  4 05:24:32 UTC 2020

# -d の代わりに --date でも同じ
$ date --date tomorrow
Fri Dec  4 05:24:32 UTC 2020

# 30日後の日付を表示
date "+%Y/%m/%d" -d "30 days"
2021/01/02

test

test -d ディレクトリであれば

# sampleがディレクトリであれば、なければsampleディレクトリ作成
test -d /sample || mkdir -p /sample

tail

tail -f

cron

# cronの設定
crontab -e

# 一覧表示
crontab -l

# 削除
crontab -r

秒単位でcronを実行

# 分・時・日・月・曜日 コマンド
* * * * * for i in `seq 0 15 59`;do (sleep ${i} ; sh /sample.sh) & done;
* * * * * for i in `seq 0 15 59`;do (sleep ${i} ; sh /home/deploy/sample.sh) & done;

1日1回0時0分に実行

0 0 * * * /path/to/sample.sh

正規表現

^cat    行頭がcatではなく、行頭がcで次がa、その次がtになっている文字列
$scat   行末がcatになっている文字列
ca[ta]a caの次がtかa、その次がaの文字列
[Cc]at  Cが大文字でも小文字でもいい
[^c]    行頭がc以外で始まる文字列

.  任意の1文字
[…]   リスト内任意の1文字
[^…]  リストに含まれていない任意の1文字
^     行頭
$     行末 
\<    行頭
\>    行末
|     または
?     任意の1回
+     少なくとも1回 ‘abc\+’の場合、「abc」が少なくとも1回必要
*     幾つでもOK
[a-zA-Z]{min, max}

AWS CLI

AMI

# 最新AMIのID取得(Linux2)
aws ssm get-parameter \
--name /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 \
--query "Parameter.Value" \
--region ap-northeast-1

S3

aws s3 ls
aws s3 cp アップロードしたいファイル名 ARN

Vim

上に進む k
下に進む j
左に進む h
右に進む l
一番上に gg
一番下に G
先頭行 ^
行末   $
単語の先頭 B
単語の末尾 E
現在の行を削除 dd
カーソル以降削除 D
全削除 :%d
空白行削除 :v/./d
行コピー yy
カーソルの場所にペースト p
カーソルの行をコピーし、下に10行追加 yy10p
インサートモードから出る Ctl + c
# 検索 
esc → /検索したい文字入力 → Enter → 該当の文字に移動する
行コピー yy
貼り付け p
一つ前の作業に戻る u
# 行番号の表示
:set number

# 行番号の非表示
:set nonumber
検索一覧 :vim 検索文字入力 % | cw

Quickfix

次の検索 :cn
前の結果 :cp
閉じる  :ccl
行番号表示 :set number
非表示    :set nonumber

ターミナル

# 途中まで入力していたコマンドを全削除 
Ctrl + u

# 復元
Ctrl + y

# カーソル位置以降切り取り
Ctrl + k
 
# カーソル位置の文字削除
Ctrl + d 

# 移動
 ↑ 「 Ctrl + p 」
 ↓ 「 Ctrl + n 」
 → 「 Ctrl + f 」
 ← 「 Ctrl + b 」

VSCODE

# ターミナルを開く
control + shift + `
上移動 control + p
下移動 control + n

firewall-cmd

firewall-cmd --list-all

# 追加
firewall-cmd --add-service=mysql --permanent
firewall-cmd --add-port=22/tcp --permanent

# 削除
firewall-cmd --remove-service=mysql --permanent
firewall-cmd --remove-port=22/tcp --permanent

firewall-cmd --reload

# rich-rule追加
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.0" port protocol="tcp" port="22" accept"

# rich-rule削除
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.0" port port="22" protocol="tcp" accept"

PDO 接続確認

<?php

const DB_HOST = 'mysql:mysql:host=hostname;dbname=dbname';
const DB_USER = 'user';
const DB_PASSWORD = 'pass';

try{
  $pdo = new PDO(DB_HOST, DB_USER, DB_PASSWORD);
  echo '接続成功' . "\n";
} catch(PDOException $e){
  echo '接続失敗' . $e->getMessage() . "\n";
  exit();
}

まだまだ覚えることはあるので随時更新していきます。

yum list ~
yum list enabled
yum list installed
yum list available

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0