https://swcarpentry-ja.github.io/2024-05-30-chiba-slides/shell
shell-lesson-data.zipをダウンロードして、ファイルをデスクトップに移動してください。
ファイルを解凍します。デスクトップにshell-lesson-data
という新しいフォルダが作成されているはずです。
オペレーティングシステム別の指示については、シェルレッスンを参照してください。
人間はGUI(グラフィカルユーザインターフェース)またはCLI(コマンドラインインターフェース)を使ってコンピュータと対話します。
GUI: 直感的でメニュー駆動型ですが、反復作業には効率的ではありません。
CLI(Unixシェル): 反復作業に効率的で、タスクを迅速に自動化できます。
シェルはユーザーが入力したコマンドを解釈して実行します。
人気のあるUnixシェル: Bash(Bourne Again SHell)。
シェルを使用する利点:
シェルを開くと、次のようなものが表示されます:
$
$
はプロンプトで、ここにコマンドを入力します
セットアップによっては、次のように少し異なる場合があります:
nelle@localhost $
ls
最初に学ぶコマンドはls
で、現在のディレクトリの内容を一覧表示します(後で戻ってきます):
Desktop Downloads Movies Pictures
Documents Library Music Public
サンプルデータセットは”Nelle Nemo”のストーリーに基づいています
文脈: Nelle Nemoは海洋生物学者で、海洋生物をサンプリングしています。
Nelleのタスク: goostats.sh
を使って1520のサンプルのタンパク質量を測定します。
課題: GUIを使用する場合、Nelleは1520のファイルを手動で実行する必要があり、12時間以上かかります。Nelleはシェルを使ってこれをより効率的に行うことができるでしょうか?
コンピュータ上でどのように移動できますか?
どのようにファイルやディレクトリを確認できますか?
コンピュータ上のファイルやディレクトリの場所をどのように指定できますか?
pwd
を使用して、現在の作業ディレクトリ(コンピュータ上の「居場所」)を表示します。
/
文字には2つの意味があります。
例えば、Nelleのファイルは/Users/nelle
に保存されています。
ls
でファイルを一覧表示-F
オプションを使用して出力を調整します:
/
はディレクトリを示します@
はリンクを示します*
は実行可能ファイルを示しますclear
を使って散らかったターミナルをクリアできます(全ての出力を消します)
--help
を追加してヘルプメニューを表示します:
ls --help
または、コマンドの前にman
を追加します:
ls
pwd
が/Users/backup
を表示し、-r
がls
に逆順で表示するよう指示する場合、次の出力を得るにはどのコマンドを使用しますか:
ls pwd
ls -r -F
ls -r -F /Users/backup
cd
で他のディレクトリに移動..
..
は一つ上のディレクトリに移動します
..
ls -a
を使ってすべてを表示すると、..
が見えることに注意してください
~
~
を使ってホームディレクトリに移動できます
-
-
を使って直前のディレクトリに戻ることができます
/
で始まらないパスを入力すると、現在の場所に相対的なフォルダやファイルを指します
/
で始まるパスを入力すると、ファイルシステムのルートからのパスを指します
pwd
が/Users/thing
を表示している場合、ls -F ../backup
は何を表示しますか?
../backup: No such file or directory
2012-12-01 2013-01-08 2013-01-27
2012-12-01/ 2013-01-08/ 2013-01-27/
original/ pnas_final/ pnas_sub/
--
(ls --all
)-
(ls -a
)ls-F
はコマンド”ls-F”を意味します)ls -s
とls -S
)シェルはタブキーを押すとファイルやフォルダの名前を自動で入力してくれます
`~/
Desktop/shell-lesson-data/`から試してみてください
どのようにファイルやディレクトリを作成、コピー、削除できますか?
どのようにファイルを編集できますか?
mkdir
で新しいディレクトリを作成shell-lesson-data
にいることを確認し、その後exercise-data/writing
に入ります
周りを見てから、thesis
という新しいディレクトリを作成します:
mkdir
で新しいディレクトリを作成-p
を使用してネストされたディレクトリを作成できます
実行した内容を確認します(-R
オプションを使うと、ディレクトリ内のすべてのネストされたサブディレクトリを一覧表示します):
-
(ダッシュ)を使用しないでください。.
(ピリオド)、-
(ダッシュ)、_
(アンダースコア)を使用します。nano
はテキストエディタプログラムです。ファイルを作成し、編集のために開きます。
Ctrl+o
を押して保存し(^0
で示されています)、Ctrl+x
で終了します
touch
でテキストファイルを作成rm
でファイルを削除rm
は完全に削除します!(ゴミ箱はありません)。使用する際は非常に注意してください。mv
でファイルやフォルダを移動または名前変更shell-lesson-data/exercise-data/writing
に入ります:
draft.txt
の名前を変更します:
(ls
で結果を確認します)
mv
でファイルやフォルダを移動または名前変更rm
と同様に、mv
には「元に戻す」ボタンはありません: 同じ名前のファイルを上書きするので、慎重に使用してください!quotes.txt
を現在のディレクトリに移動します:
ls thesis
を確認します
cp
でファイルやフォルダをコピーcp
はmv
に似ていますが、移動の代わりにコピーしますcp
でファイルやフォルダをコピーcp
することはできません:cp: thesis is a directory (not copied).
cp
でファイルやフォルダをコピー-r
(recursive)オプションを使用しますrm -r
でフォルダを削除cp
で-r
を使用するのと同様に、フォルダを削除するには-r
が必要です:複数のファイルをフォルダに移動またはコピーするには、まずすべてのファイル名を入力し、最後にフォルダ名を入力します。
これをshell-lesson-data/exercise-dataで試してみましょう:
複数のファイルを一度に移動するのは便利ですが、たくさん入力する必要がありました
*
や ?
を使って複数のファイル名に一致させることができます。これらは「ワイルドカード」と呼ばれます
shell-lesson-data/exercise-data/alkanes
にあるファイルを考えてみましょう:
*
: 0文字以上の任意の文字を表します。
*.pdb
は ethane.pdb
、propane.pdb
などに一致します。p*.pdb
は pentane.pdb
、propane.pdb
に一致します。?
: 正確に1文字を表します。
?ethane.pdb
は methane.pdb
に一致します。*ethane.pdb
は ethane.pdb
、methane.pdb
に一致します。???ane.pdb
は cubane.pdb
、ethane.pdb
、octane.pdb
に一致します。alkanes
ディレクトリで実行すると、以下の ls
コマンドのうちどれが次の出力を生成しますか?
ethane.pdb
methane.pdb
ls *t*ane.pdb
ls *t?ne.*
ls *t??ne.pdb
ls ethane.*
ジェーミーはプロジェクトに取り組んでおり、ファイルがあまり整理されていないことに気づきました:
analyzed/ fructose.dat raw/ sucrose.dat
以下のコマンドが示す出力を得るために、彼女はどのコマンドを実行する必要がありますか?
analyzed/ raw/
fructose.dat sucrose.dat