###### tags: `フィヨルドブートキャンプ`,`linuxコマンド` # コマンドプロンプト ## シェルとは マークなどのプロンプトを表示してユーザーからの入力を待ち、入力されたファイル名のプログラムを実行するプログラム。 終了したらまたプロンプトを表示して待つ。 **「bash(バッシュ)」から「zsh(ズィーシェル)」** MacOS Catalina(10.15) から、デフォルトシェルが「bash」から「zsh」に変わた。 自分のMacがMacOS Catalinaの場合、資料の中で、 「.bash_profile」が出てきたら、「.zprofile」と読み替えてください。 「.bashrc」が出てきたら、「.zshrc」と読み替えてください。 **bashの由来** 元々shの正式名称はBourne Shellと言います。アメリカのAT&Tベル研究所のSteve Bourneさんが作ったshellなのでBourne Shellです。**bashはBourne-Again Shellの略でBourne Shellの全ての機能をカバーしつついくつもの追加機能を付けたshell**です。Bourne ShellのBourneとborn again(生まれ変わり)を引っ掛けた駄洒落です。 ## Part.1 とにかく使ってみる、最初のプログラム ls、2つ目のプログラムpwd ### ls(list segments)コマンド 今いるディレクトリにあるファイルやディレクトリの一覧を表示 ### pwd(Print(or Present) Working Directory)コマンド 現在いるディレクトリのパスを表示 ### ホスト名とは ホストには「お客をおもてなす人」という意味があり、そこからネットワークを形成し複数の端末からの要求を処理する大型コンピューターをホストコンピューターと昔は呼んでいた。 今ではパソコンは全てそういった機能を持っているのでパソコン=ホストと考えて問題ない。 ### $(ドルマーク)は何か `$`までの部分をprompt(プロンプト)と言い、promptは「促すもの」という意味がある。「ここに入力してください!」と促す為のマーク。 ### bin binary(バイナリー)の略。binary には「**対になった物**」という意味がある。 コンピューターのCPUが実際に実行するプログラムの中身は0と1だけになり、そこから、実行できるプログラムのことを binary ファイルと言う。昔、二手に別れたペンギンの夫婦を操ってゴールを目指すバイナリーランドというファミコンゲームがあったが、正にそのバイナリー。 ## Part.2 3つ目のプログラム echo、便利な仕組みPATHについて ### echoコマンド 引数として与えた文字をそのまま画面に表示するプログラム ### PATHについて binディレクトリの中にあるファイルを指定することでプログラムを実行できるが、毎回コマンドプロンプトでbinディレクトリまでの階層を指定するのが面倒なので、PATHにプログラムファイルまでの階層を予め指定しておいて、`/bin/ls`と書かなくても`ls`だけでプログラムを実行できるようにできる。 ==$ echo $PATH==で、**PATHにどんなディレクトリが設定されているか確認出来る。** ### 環境変数 コマンドプロンプトで最初から設定されている変数のことを「環境変数(environment variable)」と言う。(PATHも環境変数の一つ) ==$ env==で、**環境変数の一覧を見ることが出来る。** `echo` コマンドで変数の中身を出力することができる。 ## Part.3 頻繁に使うコマンド cd、パソコン内の探索、相対パス指定 ### cd(change directory)コマンド ディレクトリ移動 ## Part.4 引数とオプションについて詳しく、オプションとは、オプションのガイドライン、マニュアルで使い方を知る ### コマンドのオプション ハイフンが1つ:ショートネームオプション ハイフンが2つ:ロングネームオプション と呼ぶ。 ロングネームオプションに文字を渡すことが出来るものもある。 ロングネームオプションに文字を渡す場合`=`を付ける。 ``` $ command -f /tmp/foo $ command --file=/tmp/foo ``` ### man(manual)コマンド `--help`や`-h`オプションでそのコマンドの使い方が表示されるが、 `man`コマンドを使うとそのコマンドにマニュアルが存在する場合はマニュアルを表示してくれる。 `$ man ls` ## Part.5 ネットから簡単ダウンロードcURL、とにかく開くコマンド open ### cURL(Client for URLs)コマンド ネットからファイルを簡単にダウンロードできるコマンド。 `$ curl http://example.com -o foo.html` -o オプションでダウンロードファイルのファイル名を指定できる。 ※Macではダウンロードにcurlがよく使われますが、Linuxでは`wget`というコマンドが同じ用途によく使われる。 `$ brew install wget` ### openコマンド ``` $ open スタックについて.pdf $ open http://www.facebook.com $ open . ``` で、ファイル、URL、ディレクトリなどを開くことができる。 ## Part.6 Package Manager(パッケージマネージャー)の必要性、Xcode のインストール、Homebrew のインストール、Homebrewを使ってみる ### Package Manager ソフトの依存関係解消した形で必要に応じてソフトを勝手にダウンロードしてきてインストールしてくるもの ## Part.7 ファイルの作成、ディレクトリの作成、ファイルのコピー、ファイルの移動、ファイルの削除、ファイルの表示 ### touchコマンド ファイルの作成 `$ touch foo` ### mkdir(make directory)コマンド ディレクトリの作成 -pオプションで深い階層を持つディレクトリも一気に作れる `$ mkdir -p foo/bar/buz` ### cp(copy)コマンド ファイルのコピー `$ cp foo /tmp` `-r`オプションを付ければディレクトリを丸ごとコピーできる `$ cp -r foo /tmp` ### mv(move)コマンド ファイルの移動 `$ mv foo bar` ### rm(remove)コマンド ファイルの削除 `$ rm foo` `-r`オプションを付ければディレクトリを丸ごと削除 コマンド ### cat(catenate)コマンド ファイルの表示 `cat`は`concatenate and print files`の略で、ファイルの中身を表示するコマンド。`concatenate`は**連結させる**という意味で本来は引数に渡した二つのファイルを繋げて表示するコマンドだが、一つしかファイルを渡さなければ単に中身を表示するのでその用途の方で主に使われている。 ## Part.8 作業の自動化、謎のおまじない shebang(シバン)、PATH を設定する ### shebang `shebang`(`#!`→`sharp bang`(「!」が「バン!」)が短くなって`shebang`)は、 実行するファイルの1行目の最初の二文字が`#!`の場合に、その後に書いてあるコマンドに2行目以降の全てを渡す ``` #!/bin/sh echo hello ``` の場合は、`/bin/sh`に`echo hello`を渡す ### 自分で作ったスクリプトを置く場所 ホームディレクトリにbinというディレクトリを作ってそこに置く人が多い模様。 しかしこのディレクトリはPATHに含まれてないのでいちいちフルパスで打つ必要があって不便なので、PATHを設定する。 ==$ export PATH=$PATH:~/bin==で、 `export`は**環境変数を設定するコマンド**。 環境変数名と中身を`=`で区切って渡すと、その値に設定される。 ### その他 ### ln(link)コマンド ``` ln [オプション] <リンク元ファイル> <リンク名> ``` #### ハードリンク 1つのファイルの実体に複数の名前を付ける機能。ディレクトリに対して作成できない。また異なるディスク間をまたがることができない。複数のファイル名をつける機能なのでそれらのファイル名全てがなくなった時にファイルの実体も削除される。 `ln file1 file2` #### シンボリックリンク リンク先のパス名が書かれた小さな特殊ファイル。ハードリンクとは違いリンク先がファイルの実体であり本物のファイル。 `ln -s local/work/code/profject/source source` `cd source` で深いディレクトリにすぐ移動できる ### findコマンド ファイルの検索 ### locateコマンド パス名の一部を指定してファイルを探すためのコマンド。 この際、ファイル名を専用のDBから検索するため、ディスクをスキャンしてファイルを探すfindコマンドよりも高速に検索できる。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up