pull/879/merge
Chiharu Hagiwara 2024-02-28 00:06:52 +09:00 committed by GitHub
commit 962f737728
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 21 additions and 16 deletions

View File

@ -7,17 +7,22 @@
[![https://gitter.im/jlevy/the-art-of-command-lineでチャットに参加しよう](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
- [メタ情報](#メタ情報)
- [基本](#基本)
- [日常的に使うもの](#日常的に使うもの)
- [ファイルとデータの処理](#ファイルとデータの処理)
- [システムのデバッグ](#システムのデバッグ)
- [ワンライナー](#ワンライナー)
- [目立たないが便利なもの](#目立たないが便利なもの)
- [OS X用のもの](#os-x用のもの)
- [Windows専用](#windows専用)
- [さらなるリソース](#さらなるリソース)
- [免責事項](#免責事項)
- [The Art of Command Line](#the-art-of-command-line)
- [メタ情報](#メタ情報)
- [基本](#基本)
- [日常的に使うもの](#日常的に使うもの)
- [ファイルとデータの処理](#ファイルとデータの処理)
- [システムのデバッグ](#システムのデバッグ)
- [ワンライナー](#ワンライナー)
- [目立たないが便利なもの](#目立たないが便利なもの)
- [OS X用のもの](#os-x用のもの)
- [Windows専用](#windows専用)
- [Windows下でUnixツールを手に入れる方法](#windows下でunixツールを手に入れる方法)
- [使えるWindowsコマンドラインツール](#使えるwindowsコマンドラインツール)
- [Cygwinの秘訣とコツ](#cygwinの秘訣とコツ)
- [さらなるリソース](#さらなるリソース)
- [免責事項](#免責事項)
- [ライセンス](#ライセンス)
![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png)
@ -31,14 +36,14 @@
対象 :
- このガイドは、初心者向けでも経験者向きでもある。幅広く(書いてあることは全て重要)、かつ明確で(多くのケースに対して具体的な例を付ける)、そして簡潔(他の場所で見つけられるような重要でないことや脱線したことは省く)であることをゴールにしている。各項目は、多くの場面において必須であるか、他の方法に比べて劇的に時間を節約してくれるだろう。
- このガイドは、初心者向けでも経験者向きでもある。幅広く(かつ書いてあることは全て重要)、かつ明確であり(多くのケースに対して具体的な例を付けている)、そして簡潔(他の場所で見つけられるような重要でないことや脱線したことは省く)であることをゴールにしている。各項目は、多くの場面において必須であるか、他の方法に比べて劇的に時間を節約してくれるだろう。
- [OS X用のもの](#os-x-only)を除き、Linux向けの内容となっており、その多くは各種LinuxおよびMacOS(あるいはCygwin)でも使えるだろう。
- インタラクティブなBashを使うことを想定しているが、多くの項目は他のシェルやBashのスクリプトでも使えるだろう。
- (このリポジトリへ)組み込むメリットがあるのであれば、標準Unixコマンドやパッケージインストールコマンドも含める。
注意 :
- 1ページ内に収めるために、内容には暗黙的に書かれていることがある。ここで取りかかりを知ったりコマンドが分かれば、詳細をどこかで調べたりするくらいはできるだろう。新しいプログラムをインストールするには、`apt-get`、`yum`、`dnf`、`pacman`、`pip`、`brew`(どれか適したもの)を使おう。
- 1ページ内に収めるために、内容には暗黙的に省略されていることがある。ここで取っかかりを知ったりコマンドが分かったりすれば、詳細をどこかで調べたりするくらいはできるだろう。新しいプログラムをインストールするには、`apt-get`、`yum`、`dnf`、`pacman`、`pip`、`brew`(どれか適したもの)を使おう。
- コマンドやオプション、パイプを分解して理解する手助けに、[Explainshell](http://explainshell.com/)を使おう。
## 基本
@ -115,17 +120,17 @@
- Gitで様々なマシンの設定ファイル(例:`.bashrc`や`.bash_profile`)を同期させよう。
- 空白を含む変数やファイル名には注意が必要だ。Bash変数にはクオートをつけよう、こんな風に`"$FOO"`
- 空白を含む変数やファイル名には注意が必要だ。Bash変数には`"$FOO"`みたいにクオートをつけよう。
ファイル名の区切りとしてヌル文字を指定する場合には`-0`や`-print0`オプションを付与しよう。例: `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`。空白を含んだファイル名を繰り返し実行するためには、IFS=$'\n'`を使ってIFSを改行のみにしよう。
- Bashスクリプトでは、`set -x`でデバッグ出力を出せる(`set -v`は、実行されるコマンドや変数名やコメントなどをそのまま出力する)。特別な理由がない限り厳格モード(strict mode)を使い、`set -e`でエラー時(0以外の終了コード時)に強制終了するように。`set -u`によって未定義の変数の利用を検知、パイプのエラーも厳格に扱うために`set -o pipefail`も使おう(これはちょっと微妙かも)。より複雑なスクリプトなら、EXITまたはERRシグナルに対して`trap`も使おう。使う場面としては以下の場合のようエラーを検知してメッセージを出力するとき:
- Bashスクリプトでは、`set -x`でデバッグ出力を出せる(`set -v`は、実行されるコマンドや変数名やコメントなどをそのまま出力する)。特別な理由がない限り厳格モード(strict mode)を使い、`set -e`でエラー時(0以外の終了コード時)に強制終了すること。`set -u`によって未定義の変数の利用を検知、パイプのエラーも厳格に扱うために`set -o pipefail`も使おう(これはちょっと微妙かも)。より複雑なスクリプトなら、EXITまたはERRシグナルに対して`trap`も使おう。使う場面としては以下の場合のようエラーを検知してメッセージを出力するときが挙げられる:
```bash
set -euo pipefail
trap "echo 'error: Script failed: see failed command above'" ERR
```
- Bashスクリプトでは、コマンドのグループを作るのにサブシェル(丸括弧で囲まれた部分)が便利。一時的にワーキングディレクトリを移動するというよくある例
- Bashスクリプトでは、コマンドのグループを作るのにサブシェル(丸括弧で囲まれた部分)が便利。一時的にワーキングディレクトリを移動するときによく用いられる
```bash
# カレントディレクトリで何か実行