“@”(アット)

実行コマンドを標準出力に表示しません

1
2
3
4
5
6
$ cat Makefile
AAA:
echo "AAA"

BBB:
@echo "BBB"
1
2
3
4
5
6
$ make AAA
echo "AAA" <-- 実行コマンドが標準出力に出る
AAA

$ make BBB
BBB <-- 出ない

“-“(ハイフン)

その行がエラー終了しても後続の処理を実行します

1
2
3
4
5
6
7
8
9
CCC:
@echo "[[[[[[[ CCC 1 ]]]]]]]"
ls /xxxxxxxxxxx
@echo "[[[[[[[ CCC 2 ]]]]]]]" <-- 直前のlsでエラー中断するので実行されない

DDD:
@echo "[[[[[[[ DDD 1 ]]]]]]]"
-ls /xxxxxxxxxxx
@echo "[[[[[[[ DDD 2 ]]]]]]]" <-- 直前のlsでエラー中断せずに実行される
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ make CCC
[[[[[[[ CCC 1 ]]]]]]]
ls /xxxxxxxxxxx
ls: '/xxxxxxxxxxx' にアクセスできません: そのようなファイルやディレクトリはありません
Makefile:8: ターゲット 'CCC' のレシピで失敗しました
make: *** [CCC] エラー 2

$ make DDD
[[[[[[[ DDD 1 ]]]]]]]
ls /xxxxxxxxxxx
ls: '/xxxxxxxxxxx' にアクセスできません: そのようなファイルやディレクトリはありません
Makefile:13: ターゲット 'DDD' のレシピで失敗しました
make: [DDD] エラー 2 (無視されました)
[[[[[[[ DDD 2 ]]]]]]]