N予備校 プログラミングコース 第11回
あなたは2019年の目標って立てましたか?
どんな目標を立てたか覚えていますか?
私は2018年末に2019年の目標を立てました。
その一つにプログラミングを学び仕事として使えるようにすることをあげました。
そして、思い立ったが吉日と「N予備校のプログラミングコース」を申し込みました。
そして受講と同時に自身の振替と、これから始めようと考えている人の参考になればとブログを書き始めました。
今回ブログの移設にともない、再度そのブログを読み返しながら、今思うことを加えて記載していきたいと思います。
また私が受講したのは【2018年度】で、現在公開されている【2019年度】との違いについても書いていきたいと思います。
このブログは、初心者が学びながら書いているため、間違っている場合があります。
分かり次第修正していくつもりです。
そのあたりも含め楽しんでいただければと思います。
最後に進めていてわからなかったところや気になったところをまとめています。
プログラミング入門 webアプリコース 第11回
前回は、Linuxの後基本的なコマンドを扱いました。
今回は、複数のコマンドを組み合わせて使うことを学びます。
- 今回の内容まとめ(第2章 4~6)
・標準入力、標準出力、標準エラー出力について
・viについて
・シェルプログラミング(シェルスクリプト)について
- 今回の目標
標準出力、vi、シェルプログラミングについて知り、扱えるようになる
- 今回新しく扱っているコマンド等
・>, >>, 2>, 2>&1
・cat
・less
・|
・grep
・:w
・:q
・:q!
・:wq
・i , I, a, A
・dd
・p
・chmod
・touch
・echo
・read
・if
標準入力、標準出力、標準エラー出力について
Linuxでは、何かを指示すると実行結果もしくはエラーを表示しひます。
この指示をすることを「標準入力」、実行結果を表示することは「標準出力」、エラーを表示することを「標準エラー出力」と言います。
またこの標準出力をファイルに書き出すことをリダイレクトと言います。
- 標準入力
コマンドに引数を指定したり、オプションを指定したりすること -
標準出力
コマンドを実行した結果、コンソールに出てくる色々な表示のこと -
標準エラー出力
コマンドを入力した時にエラーが出ること -
リダイレクト
標準出力をファイルに書き出すこと
リダイレクト( > , >>, 2>, 2>&1)
標準出力だけでなく、標準エラー出力もファイルに保存することができます。
標準出力のファイル保存( > , >> )
コマンドの最後に > を記述することで、標準出力をファイルに保存(リダイレクト)することが出来ます。
ここで、 >> と記述することで、すでに存在しているファイルに追記して保存されます。(元のファイルの後ろに追記されます)
標準エラー出力の保存( 2> )
標準エラー出力をファイルに保存する場合は、 2>と記述することで行えます。
標準出力と標準エラー出力の保存 ( 2>&1 )
2>&1と記述すると、標準出力と標準エラー出力の両方が保存されます。
ファイル名を指定しての保存
ls > ○○/××.txt
lsコマンドを実行した結果を、○○ディレクトリの中に××.txtというファイル名で保存します。
保存したファイルの表示(cat, less)
catはconcentenateの略で、ファイルの中身を出力することに使います。
cat ○○/××.txt
○○ディレクトリの中に保存されている××.txtファイルの中身が表示されます
表示量が多くなるとcatではページ送りが出来ないので、ページ送りをできるように表示する際にlessコマンドを使用します。
表示されたページでは、Jキーで上に、Kキーで下に移動します。
終了したい場合は、Qキーを入力します。
コマンドの結合 (パイプ : |
| (shift + \ で入力可能)で、一つ目のコマンドの結果に対して、二つ目のコマンドを実行します。
ls ○○ | less
ls ○○の結果を、lessコマンドで開きます。
ファイル内の検索 ( grep )
Global Regular Expression Printの略で、文字列を検索することが出来ます
grep AA ○○
○○というファイルの中に、AAという文字列が含まれているかを調べます
パイプ機能を利用した場合、以下のようなことが出来ます。
ls ○○ | grep AA
ls ○○の結果の中で、AAという文字列が含まれている結果のみが表示されます。
保存したファイルを別のファイルに書き出す
cat ○○>××
○○という名前のファイルの中身を、××という名前のファイルとして保存します
(○○と××のファイルの中身は同じ)
また複数あるファイルの中身を結合して標準出力に出力することができます。
cat ○○>>××
○○という名前のファイルの中身を、××という名前のファイルに追記します。
(○○の中身がAAであり、××の中身がBBだった場合、この操作で××の中身はAABBになります。)
viについて
viとは、Linuxにおけるテキストエディタです。
テキストエディタとは、テキスト(文字)を編集するためのソフトです。
つまりLinuxで、Windowsの「メモ帳」にあたるソフトがviです。
Ubuntuでは、vimとよばれるソフトウェアがインストールされています。
vim ○○
○○というファイルを、vimというソフトで開きます。
このとき○○というファイルが存在しない場合は、○○というファイルを作成してそのファイルを開きます。
vimには大きく分けて二つのモード「コマンドモード」「インサートモード」が存在します。
コマンドモード
Escキーを押すことで、コマンドモードになります
コマンドモードでは、以下のようなことが実行できます。
・カーソル移動
hキー:左方向、jキー:右方向、kキー:上方向、jキー:下方向にそれぞれ移動します。
・ファイル保存
・vimの終了
・他のモードへの切り替え
・切り取り、貼り付け
・検索、置換
インサートモード
コマンドモードで、i,aなどを入力することで切り替わり、ファイルに文字を入力することができます。
・i でインサートモードに切り替えた場合は、カーソルの前側に文字を入力できます。
・Iでインサートモードに切り替えた場合は、行の先頭に文字を入力できます。
・aでインサートモードに切り替えた場合は、カーソルの後側に文字を入力できます。
・Aでインサートモードに切り替えた場合は、行の最後に文字を入力できます。
vim内でのコマンドについて
:w
write(書き込む)の略で、vimで開いたファイルを保存することができます。
:q
quit(終了)の略で、vimで開いたファイルを閉じることができます。
:q!
vimで開いたファイルを、編集内容を破棄して終了することが出来ます。
:wq
:wコマンドと:qコマンドを組み合わせたコマンドで、ファイルを保存して終了します。
i , I, a, A
それぞれInsert(挿入)、Append(追加)の略で、インサートモードに切り替えます。
dd
カーソルのある行を1行削除します
〇dd (〇には数字を入力)
カーソルのある行から下に〇行分削除します
p
最後に削除した行をカーソルの後ろに張り付けます
シェルプログラミング(シェルスクリプト)について
VS Codeで作成したプログラムをLinuxで実行します。
ここでWindowsを使用する場合は、下図のように改行コードをCRLFからLFに変更する必要があります。
また、シェルスクリプトで使用するファイルには先頭に下記のコードを入れる必要があります。
#!/bin/bash
Linuxのファイル権限
Linuxのファイルには、3つのアカウント集団(ファイルの所有ユーザー、所属グループ、その他のユーザー)、3つの権限(読み込み可、書き込み可、実行可)があります。
シェルスクリプトでのコマンド
chmod
chmod ○○ ×× △△
○○にはユーザー(所有ユーザー:u、所属グループ:o、その他のユーザー:o、すべてのユーザー:a)、××にはアクセス権限(実行可:x、書き込み可:w、読み取り可:r)を、△△にはファイル名を入れます。
chmod a+x test.sh
test.shというファイルに対して、すべてのユーザー(a)に実行可(x)というアクセス権限を追加(+)します
*削除する場合は、+のところを‐にします。
touch
touch ○○
○○という名前のファイルが存在しなかった場合は、○○という名前のファイルを作成します。存在した場合は、○○の更新日時を更新します。
echo
echo ○○
○○という文字列を表示します
echo テスト
上記のプログラムを実行すると下のように表示されます。
テスト
read
JavaScriptの時のように、変数を設定することが出来ます
read message
readのコマンドを入力すると文字が打ち込める状態になるので、キーボードで打ち込みます。「変数message = キーボードで打ち込んだ内容」になります。
$をつけることで変数の値を使うことが出来ますので、下記のコマンドでは、キーボードで打ち込んだ内容が、echoコマンドにより表示されます。
echo $message
*応用
read -p “2は偶数ですか? [y/n]” ○○
-pを入れることで、「2は偶数ですか? [y/n]」と表示された上で文字を入力できる状態になります。その後キーボードで入力した内容を、変数○○とします。(○○=「キーボードで入力した内容」)
if
JavaScriptで使用したifコマンドと 似ていますが、少し書き方が異なります
if [ $○○ = ×× ]; then
echo △△
else
echo □□
fi
変数である○○が××の時は△△と表示され、○○が××出ない時は□□と表示されます
*シェルスクリプトでは、スペースやタブの有無が判断されるので注意が必要です。
以上のように、標準出力、vi、シェルプログラミングについて知り、扱えるようになるのが今回の目標です。