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を追加します:
lspwdが/Users/backupを表示し、-rがlsに逆順で表示するよう指示する場合、次の出力を得るにはどのコマンドを使用しますか:
ls pwdls -r -Fls -r -F /Users/backupcdで他のディレクトリに移動....は一つ上のディレクトリに移動します
..ls -aを使ってすべてを表示すると、..が見えることに注意してください
~~を使ってホームディレクトリに移動できます
--を使って直前のディレクトリに戻ることができます
/で始まらないパスを入力すると、現在の場所に相対的なフォルダやファイルを指します
/で始まるパスを入力すると、ファイルシステムのルートからのパスを指します
pwdが/Users/thingを表示している場合、ls -F ../backupは何を表示しますか?
../backup: No such file or directory2012-12-01 2013-01-08 2013-01-272012-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.pdbls *t?ne.*ls *t??ne.pdbls ethane.*ジェーミーはプロジェクトに取り組んでおり、ファイルがあまり整理されていないことに気づきました:
analyzed/  fructose.dat    raw/   sucrose.dat以下のコマンドが示す出力を得るために、彼女はどのコマンドを実行する必要がありますか?
analyzed/   raw/fructose.dat    sucrose.dat