カレントディレクトリ外のファイルを探す
バイナリ実行ファイル"run3"を実行したい。問題文にはすでに"run3"の場所を開示しているが、自分で探せるようになる必要がある。カレントディレクトリ内に"run3"がないため、whichでは探せなかった。find / -name "run3" -type f 2>/dev/null を使った。find / はルートディレクトリから網羅的に探す。-name "run3"は"run3"という名前を探すオプション。-type f はf=file タイプであること。f. ファイル d. ディレクトリ l. シンボリックリンク。
2>/dev/null 標準エラー出力を捨てる。
テキストエディタについて
Linuxディストリビューションにはnanoがデフォルトで組み込まれている場合が多い。テキストエディタを変えるには別途インストールする必要がある。ただし、Linuxコマンドと呼ばれるものが全てnanoのコマンドであるということではなく、nanoを起動するためのコマンドがnanoコマンドで、Linuxコマンドがnanoコマンドを含んでいると表現できる。
envaderではUNIX系OSの標準はvimとされているので、vimを使った方が役立つかもしれない。vimのコマンドも慣れる必要があるのでターミナルの操作でできるだけ使う。
vimのw,eコマンドの差
wは空白を含む,eは空白を含まないとあるが、具体的には「I played the piano.」を例とすると、3wではtheの後ろの空白へ、3eではtheのeへカーソルが移動する。つまり、文字後の空白も前の文字に付随する形になる。
vimの学習方法
vimtutorと入力するとチュートリアルが表示される。ついでにやってみる。カーソルも移動もwasdではなくhjklキーなのでなれる必要がある。全ての動作をキーで行うので継続し覚えなければならない。
vimtutor
iで文字入力。Aの方がカーソルの直後からすぐに文字を追加できるので使いやすい。状況に応じて使い分ける。面倒臭いのが全角になっているとノーマルモードでも文字入力になってしまう点だ。
カレントディレクトリ内に新しくファイルを作る
忘れてしまっていたので復習した。touchコマンドを使う。既存のファイル名を指定すればタイムスタンプの更新、新規のファイル名を指定すれば新規ファイル作成をする。指定した時間にタイムスタンプを設定することもできる。
Linuxユーザ管理
作成したり削除するときにホームディレクトリの作成や削除を同時に行った方が効率的なので、useraddやuserdelを使うときはオプションに注意する。テキストエディタ等でパスワードファイルを直接編集するのは、システムが正常に動作しなくなる恐れがあるため避ける。
usermod -g [変更先グループ名] [変更するユーザ]
作成したグループにユーザーを追加する際は、ルートユーザーでgpasswd -a ユーザー名 グループ名
getentコマンドは、ユーザグループ情報やサービスと対応するポート番号、ホスト名とIPアドレスなどを調べられる。
useradd -m ホームディレクトリも同時に作成する。userdel -r ホームディレクトリも同時に削除する。
useradd -m Nxx -> userdel -r Nxx
Nxxが存在しないと表示される。原因を探るためにgetent Nxx を入力してみる。存在しなかったため、ユーザー名の入力が間違っていると仮定しコピペしてuserdelを実行したところ正常に削除できた。原因はNxxの前に余分に半角スペースが入っていたためであった。
passwdで変更できるパスワードはどこに使うパスワードか
一般にアカウントにログインするとき。su,sudoコマンド実行時など
変更時は画面には出力されないが入力はできている。
umaskコマンドのファイルにおける実行権限について
umask値を変更するとき、ファイルは666からumask値を引いた値が付与される権限をとなる。つまりファイルを作成したとき、実行権限は絶対に付与されないようになっている。これはセキュリティの観点から実行権限は慎重に付与すべきとされているからである。
SUIDの使い方
通常root権限がないと実行できないコマンドを一般ユーザーが使用する場合に使う。例えばpasswdなど。一般ユーザーが自身のパスワードを変更する時、root権限なしでpasswdを実行する必要がある。ただし、セキュリティ上の観点から慎重に行うべきである。
chmod chown chown -R 権限変更,所有者変更
ps プロセス確認
echo 画面出力
set シェル変数確認
unset シェル変数削除
unv 環境変数を表示
export シェル変数を環境変数にする
コマンドラインインターフェース。ターミナルがユーザーとコンピュータのインターフェースで、bashやzshはコマンドとコンピュータのインターフェース。基本的なLinuxコマンドは同じだが、zshの方が高機能である。基本的にはbashが使われている。
パスを通す
export PATH=$PATH:
実行可能なファイルやコマンドが追加されるたびにパスを通す。毎回やると大変なので、パスが通っているディレクトリに追加された時点でパスを追加することもできる。