リダイレクト「2&>1」について

https://qiita.com/ryskiwt/items/69a9f095356e162c4016

 

関数定義

# 「function」は省略可能だが個人的にはあったほうが分かりやすい
#

function 関数名(){
    # $1 : 第一引数
    # $2 : 第二引数
    # ...

    コマンド
    ...
}

AWKメモ

#
# 組み込み変数
#

NR : 行番号
NF : 現在のフィールド数
$NF : 最後のフィールド値

#
# 式
#  '条件{式}'

$ awk 'NR>3{print NR,$NF}'

# 式:応用

$ ls -la | awk 'NR==1{print "#START#"}NR>3{print $NF}'

# ↑のイメージ
# 各行毎に↓の処理を処理する
#
# NR==1{
#    print "#START#"
# }
# NR>3{
#    print $NF
# }
#

 

コマンドの結果をパイプで別コマンドの引数として渡す

# 例:
# カレントディレクトリのサイズを表示する
# ※「」「.」「..」を除外するため awkで3行目以下は除外しています

$> ls -la | awk 'NR>3{print $9}' | xargs du -sh

setメモ

# 未定義の変数を使っていたらエラーにする
set -u

# エラーが出たらシェルを終了する
set -e

# 変数未定義時にエラーが出るようにする
set -u

# デバッグ出力を有効にする
set -x
set -v

# 上記設定を無効にする場合は「+」を使用する
# - 例
set +u

 

変数

# 代入:"="の前後に空白は入れない
$value=1

# 使用する
echo $value
echo ${value}

# 位置変数
$1 : 1番目の引数が格納されている変数
...
$n : n番目の引数が格納されている変数

# 終了ステータスが格納される変数
# ※何かコマンド実行後に「echo $?」と終了スタータスを表示できる
$?

 

コマンドの場所を探す

$which コマンド名

# 例
which echo

 

標準入力からの文字列を変換/重複の除去/削除する

#
# tr [OPTION] SET1 [SET2]
#
# option: -c
#   SET1の補集合を使う
# option: -d
#   SET1にある文字を削除する
# option: -s
#   SET1にある文字が重複していたら削除する
# option: -t
#   最初のSET1をSET2の長さに変換する???
#

# "H"を削除
$echo Hello | tr -d H
ello

# H以外を削除
$echo Hello | tr -dc H
H

# l,oが重複していたら削除
$echo GoodHello | tr -s lo
GodHelo

 

二つのファイルを比較する

#
# diff [File] [File]
#

diff test1.txt test2.txt

#
# gitがインストールされているならこちらの方が見やすい
# (色分けしてくれるため)
#
# git diff [File] [File]
#

git diff test1.txt test2.txt

 

ファイル内の文字列を置換する

#
# sed [OPTION] [input-file]
#
# option -i[SUFFIX]
#   ファイルを直接編集する
#   SUFFIXが指定された場合はバックアップを取る(例:i.bak)
#
# command: i [text]
#   テキストの挿入
#
# command: a [text]
#   テキストの追加
# 
# command: s/置換前/置換後/
#   テキストの置換
#
# command: s/置換前/置換後/g
#   テキストの全置換
#

# a→Aに置換する
sed -i 's/a/A/g' test.txt

 

grepメモ

#
# option: -L
#   ファイル名のみ出力する
# option: -v
#   指定した文字以外を検索する
#

grep -L abc *.txt

 Curlメモ

#
# ファイルのダウンロード
#
# option: -O,--remote-name
# note: ダウンロード
#
# option: -o,--output <file>
# note: 名前を付けてダウンロード
#  
# option: -L,--location
# note: リダイレクトを有効にする
#

$ curl -O https://xxxx
$ curl https://xxxx -o "file.txt"
$ curl -OL https://xxxx

 

属性を指定したファイルをコピーする

# ファイルのコピー
#
# install [OPTION] <SOURCE> <DEST>
#
# option: -m
#   属性を指定する(0755等)
#
$install -m 0755 test.txt /xxx/test.txt

 

リダイレクト

# 標準出力の内容をファイルに保存する(新規 or 上書き保存)
# 
# keyword: >
# <コマンド等> > <ファイル名>
# 

$echo "hello" > greeting.txt

# 標準出力の内容をファイルに保存する(新規 or 追記保存)
# 
# keyword: >>
# <コマンド等> >> <ファイル名>
# 

$echo "hello" >> greeting.txt

 

テキストの行数や単語数を数える

#
# wc [OPTION] [FILE]
#
# option: -c
#   バイト数
# option: -m
#   文字数
# option: -l
#   行数
# option: -w
#   単語数

wc -l test.txt

 

 sed ファイル全体を対象と置換(デフォルト:行ごとに置換)

#
# -z オプションをつける
#