Shell

alias hoge=/home/user/bin/hoge		: エイリアスをつける
export val="hoge"			: 変数の定義
var="`echo hoge`"			: コマンドの出力を変数に入力
echo ${hoge}				: 変数の表示
declare -i var				: 変数を数値として扱う
shift					: 引数をひとつシフトする
command > out.txt			: 標準出力(stdout)のファイル出力
command > out.txt			: 標準出力(stdout)のファイル追記
command < input.txt			: ファイルの内容をコマンドの標準入力(stdin)に入力
command << EOF				: 文字列 EOF までの内容をコマンドの標準入力(stdin)に入力
command 1> out.txt			: 標準出力(stdout)のファイル出力
command 2> error.log			: 標準エラー(stderr)のファイル出力
command 1> out.txt 2> error.log		: 標準出力(stdout)を out.txt に出力して標準エラー(stderr)を error.log に出力
command >&2				: 標準出力(stdout)を標準エラー(stderr)にマージ
command > out.txt 2>&1			: 標準出力(stdout)と標準エラー(stderr)の両方をファイル出力
command > /dev/null 2>&1		: 標準出力(stdout)と標準エラー(stderr)の両方を破棄
command1 2>&1 | command2		: 標準出力(stdout)を標準エラー(stderr)の両方を command2 でパイプ処理
count=`expr ${count:-0} + 1`		: 変数 count の増加
echo b{ed,olt,ar}s			: ブレース置換 (= beds bolts bars)
cginame=${htmlname%.html}.cgi		: パターン照合置換
names=(1st 2nd 3rd); echo ${name[1]}	: 配列 (Version 2.0 以降)
subfunction(){ ... }			: 関数の定義
(cd ${dir}; cat ${file})		: ディレクトリ変更

## Update File
(rm -f hoge.txt && cat > hoge.txt) < hoge.txt
(rm -f hoge.txt && cat | sed s/aaa/bbb/g > hoge.txt) < hoge.txt

## 算術式 (e.g., calc.sh 2 + 3)
echo "$1 $2 $3 = $(($1 $2 $3))"

## 変数リストから逐次的に変数に代入する
for val in val1 val2 val3 ; do
    eval ${val}="`echo ${hoge}`"
done

## run.sh の標準出力と標準エラーを画面と stdout.log の両方に出力して、さらに標準エラーのみ stderr.log に送る
{ { sh run.sh; } 3>&2 2>&1 1>&3 | tee stderr.log; } 3>&2 2>&1 | tee stdout.log
$0					: 0番目の引数 (=シェルスクリプトの名前)
$1..., ${10}...				: 1番目から9番目の引数、および10番目以降の引数 (2桁の場合は{}が必要)
$#					: 引数の数
$@ or $*				: 全ての引数のリスト
$$					: プロセス番号
$?					: 直前のコマンドの実行結果 (正常終了時には 0 が代入される)
$var or ${var}				: 変数
${var:-text}				: 変数が存在して空でなければその値、それ以外なら文字列 text
${var:=text}				: 変数が存在して空でなければその値、それ以外なら変数に文字列 text を設定
${var:?text}				: 変数が存在して空でなければその値、それ以外なら文字列 text を出力して終了
${var:+text}				: 変数が存在して空でなければ文字列 text を出力、それ以外なら空
${var:pos}				: 指定位置 pos から末尾までの部分文字列
${var:pos:len}				: 指定位置 pos から長さ len に相当する部分文字列
${var#pattern}				: 変数の先頭がパターンマッチした場合、最短マッチ部分を削除
${var##pattern}				: 変数の先頭がパターンマッチした場合、最長マッチ部分を削除
${var%pattern}				: 変数の末尾がパターンマッチした場合、最短マッチ部分を削除
${var%%pattern}				: 変数の末尾がパターンマッチした場合、最長マッチ部分を削除
${var/pattern/text}			: 最初にパターンマッチした部分を文字列 text で置換
${var//pattern/text}			: パターンマッチしたすべての部分を文字列 text で置換
$((1 + 2))				: 算術式 (=3)
${#var}					: 変数の文字数
echo `expr "${var}" : '.*'`		: 変数の文字数 (OS非依存)
\n					: Line Feed
\r					: Carriage Return
\t					: Tab
\b					: Backspace
\a					: Beep
for i in 0 1 2 3 ; echo ${i}
for i in 0 1 2 3 ; do
    echo ${i}
done
for i in $(seq 0 3) ; do
    echo ${i}
done
while [ "$1" != "" ] ; do
    echo ""
done
if [ "$1" = "-h" ] ; then
    echo "-h"
elif [ "$1" = "-help" ] ; then
    echo "-help"
elif [ $# -eq 0 ] ; then
    echo "manual"
elif [ -d ${dir} ] ; then
    echo "dir"
elif [ "${var}x" != "x" ] ; then
    echo "hoge"
elif [ "${var}x" = "hogex" ] ; then
    echo "hoge"
else
    exit 0
fi
[ -f ${file} ] && echo "hoge"
[ "${var}x" = "hogex" ] && echo "true" || echo "false"
=		: 文字列同士が等しければ真 (sh)
==		: 文字列同士が等しければ真 (csh)
!=		: 文字列同士が等しくなければ真
-a		: and 複数の条件を組み合わせるときに使う (sh)
&&		: and 複数の条件を組み合わせるときに使う (csh)
-o		: or 複数の条件を組み合わせるときに使う (sh)
||		: or 複数の条件を組み合わせるときに使う (csh)
-n		: 文字列が存在すれば真
-z		: 文字列が存在しなければ真
-d		: ディレクトリが存在すれば真
-f		: ファイルが存在すれば真
-s		: ファイルが存在し、かつファイルサイズが 0 でなければ真
-e		: ディレクトリもしくはファイルが存在すれば真
-r		: ファイルが読み込み可能であれば真
-w		: ファイルが書き込み可能であれば真
-x		: ファイルが実行可能であれば真
-u		: ファイルに SetUID ビットが設定されていれば真
-g		: ファイルに SetGID ビットが設定されていれば真
-k		: ファイルに Sticky Bit が設定されていれば真
-eq		: 等しければ真
-ne		: 等しくなければ真
-ge		: 以上であれば真
-gt		: より大きければ真
-le		: 以下であれば真
-lt		: より小さければ真
;		: 左側のコマンドを実行した後に右側のコマンドを実行
&&		: 左側のコマンドが成功した場合のみ右側のコマンドを実行
||		: 左側のコマンドが失敗した場合のみ右側のコマンドを実行
## 0から順番に整数値のファイルディスクリプタ(ファイル識別子)が定義される
0	: 標準入力(stdin)
1	: 標準出力(stdout)
2	: 標準エラー出力(stderr)
3 ...	: 以降はOSが開くファイルに順番に割り当てられる

Daiphys is a professional-service company for research and development of leading-edge technologies in science and engineering.
Get started accelerating your business through our deep expertise in R&D with AI, quantum computing, and space development; please get in touch with Daiphys today!

Name*


Email*


Message*




* Indicates required field

Daiphys Technologies LLC - https://www.daiphys.com/

  • Last modified: 2023/08/10 07:02
  • by Daiphys