目次
背景・目的
学生時代のプログラミングの授業や仕事にてLinuxを扱う機会が
ちょくちょくありましたが、思えば基本的なところをちゃんと
理解しないままここまで来てしまったので、ここらで一から
勉強しようと思い、上に記載して書籍を読みました。
読みながらTwitterにメモしたものをまとめると共に、読んだ
感想や追加の参考資料を載せておきます。
感想
今までずっとWindowsに慣れ親しんできた自分にとって、
Linuxを扱う上で特に戸惑うのが、ターミナル上での各種
コマンドを駆使した作業です。
今回読んだ書籍ではLinuxの概念的な部分だけでなく、各
コマンドの使い方やシェルスクリプトの書き方、正規表現に
ついてとても分かりやすく解説されていました。また、
Linux上での作業を快適にするためのこれらの活用例なども
交えられているので助かります。終盤ではGitによるバージョン
管理のしくみや方法まで解説してくれているので、とても
充実した内容となっていると思います。
Twitterメモ
今年2冊目の読書はこれ。恥ずかしながらLinuxに馴染みがないので、勉強していきます。 pic.twitter.com/rbTWrZYGrW
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月4日
Linuxカーネルを「殻」のように包み込む形で動作するという意味でシェルか、初めて知った。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月4日
カーネルとシェルが分かれている理由を見て、オブジェクト指向の良さを知る良い例だと思った。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月4日
Tabキー2回押しで補完候補をリストアップするみたいに、コマンド履歴を過去何回分かまとめてリストアップしてくれるコマンドってないのかな?
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月4日
Linuxではディスクが何台あっても、システム全体では一つのディレクトリツリーしか持たないのか。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月4日
この仕組みを知っとくだけで、マウント操作の理解がかなりスッキリする。
cd ~
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月4日
ホームディレクトリに移動するだけならcdだけで良くね?って思ったけど、ホームディレクトリ直下の別のディレクトリに移動するならチルダ展開の方がパス入力が楽という事か。
ディレクトリもファイルの一種として扱うという思想は、慣れるまではちょいちょい忘れそうだな。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月4日
rmコマンドに-iオプションをつけるのは、慣れるまでは癖つけた方が良さそうだ。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月4日
catコマンドやlessコマンドって使いたくなる時あるのかな?愛用のエディタで開いた方が見やすくて良さそうだが。エディタ開くのも面倒な時?
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月4日
ちなみに、catコマンドはconcatenate(連結する)の略だそうな。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月4日
データベースを作成するのをupdatedbコマンド一つで出来るならそんなに面倒でもないし、ファイル検索はfindよりlocateコマンド使う方が高速で良さそうだな。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月5日
コマンドが分からないとついググろうとしちゃうけど、manコマンドっていう便利なコマンドがちゃんとあるんだね。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月5日
少なくともこのコマンドさえ使えれば、他のコマンドは忘れてもすぐに調べて思い出せるか?
まずはmanで調べてみて、それより更に詳細が知りたくなったらinfoで調べる、みたいに使い分けるのかな。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月5日
vimの終了・保存コマンドはどれがなんだったかすぐに忘れてしまう。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月5日
:q vimの終了
:w ファイルを上書き保存
:w <hoge> 名前を付けて保存
:q! ファイルを保存せずにvimを終了
ヘルプコマンドだけでも覚えとけば何とかなるか。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月5日
:help ヘルプ画面の表示
:q ヘルプ画面を閉じる
Ctrl+] リンク先に移動
Ctrl+t リンク先から戻る
:help <hoge> 特定のコマンドや単語に関するヘルプの表示
エイリアスの設定はよくやりたくなるものなのかな?
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月6日
一時的にオプション無しでコマンドを実行したい時はフルパスで指定すれば出来るとかあるけど、そうやって設定したコマンドを管理してくのが面倒になりそう。
shoptコマンドでタイプミスを自動修正する設定が出来るの便利だな。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月6日
シェル変数を設定するときは、=の前後にスペースを入れちゃいけないのか。ついついやっちゃいそう。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月6日
プロンプトの設定を、カレントディレクトリが分かるようにするのは便利そう。でも、あまりにパスが長いと逆に見にくくなるかな。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月6日
ファイルの削除が出来るかどうかは、ディレクトリのパーミッションで決まって、ファイル自身のパーミッションは関係ないのか。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月8日
如何にも、初心者がうっかりしそうなところ。
スーパーユーザの利用は最小限にとどめる事が大切。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月8日
例えばチームでLinuxシステムを扱う時なんかは、スーパーユーザを利用しなきゃいけない状況にならないように、何かしらのルールを設けていたりするのかな?
sudoコマンドも扱いには気を付けないといけなかったんだな。特に、ユーザにsudoを許可するかどうか設定するsudoersファイルの管理。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月8日
うっかり書き方をミスっても戻せるように、バージョン管理したりする?
シェルを複数同時に起動して操作したい時は、ターミナルマルチプレクサを使うのがおススメ。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月8日
1つの端末の中に複数の仮想的な端末を作成して管理するためのアプリケーションで、ターミナルエミュレータの複数起動より効率的なんだそうな。
初めて聞いた。
コマンドによる出力結果が1画面に収まらない時に、それをファイルにリダイレクトして閲覧するというのは、良く使いたくなりそうな予感。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月10日
パイプラインを駆使すれば、リダイレクトするような中間ファイルをわざわざ作る必要もなくなるから、覚えておきたいテクニックだね。
uniqコマンドは連続した行に対してしか効かないのか。役に立つやら立たないやら。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月11日
差分表示はいつもエディタ上でやるから、diffコマンドによる差分表示の形式は分かりにくいとしか思えない。。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月11日
正規表現は常にシングルクォートで囲んでおくのが無難だな。シェルに解釈されて、grepコマンドに渡せない。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月11日
エディタを開くのが手間だとは思わないけど、sedコマンドを使うメリットは何だ?元ファイルを変更せずに済むから?
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月20日
そもそも、もっと高機能とされているawkコマンドがあるから、sedコマンドを使いたくなることってほぼ無いのかも?
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月20日
シェルスクリプトの1行目の#!で始まる行はshebang(シェバン)というらしい。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月20日
シェルスクリプトは実行ファイルだから、chmod +xで実行権限を付ける必要がある。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月20日
変数の値を参照するのに$を付けるの、かなり違和感。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月20日
=の前後にスペースを入れちゃいけないけど、ついつい入れちゃいそう。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月20日
if文でthenを付けるの、個人的には分かりやすくて好き。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月20日
for文のリスト部分で、*でパス名展開出来るの便利そう。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月20日
容量が大きいファイルを圧縮する時は、パイプラインで中間ファイルを作らないようにする。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月20日
圧縮や展開の時間よりもファイルサイズを重視するならbzip2コマンド。
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月20日
その他参考資料
参考になりそうな記事https://t.co/RMbLifVtCY
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月8日
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月8日
— Shisato Yano (矢野 詩知) (@4310sy) 2020年1月8日