雑誌を見ていたらシェルの特集があったので、ちょっとメモリます。
補強したいところのみ要点をチェック。
Contents
実行パスについて
windowsでもそうですが、シェルにも当然パスがあります。
例えば /opt/bin/mkfuga という実行ファイルがインストールされているとして、環境変数PATHに/op/binディレクトリが登録されていないと、ユーザーはmkfugaだけでは実行できません。フルパスである /opt/bin/mkfuga を打たなくてはいけないのです。
パスの確認方法は
1 |
echo $PATH |
で確認できます。
またあるコマンドがインストールされているかどうかは
1 |
locate visudo |
ビルドインコマンド
cd pwdなどシェル自身が持っているコマンドのことをこう呼ぶらしいです。下記リンクが非常にわかりやすいです。
わわわIT用語辞典 ビルトインコマンド (built-in command)
シェル変数・環境変数
実行中のシェルで変数を保存することができます。変数には数値や文字列を代入できます。
また一時的な変数だけではなく環境変数自体を設定することもできます。
例えば
環境変数の設定について
exportコマンド
1 2 3 |
export TEST="hoge" echo $TEST //画面にhogeと表示されます。 |
ただし、exportコマンドはログアウトすると消えてしまいますので、永続的に反映させたい場合は.bash_profileに書き込むようにしましょう。(詳しくは下記参照)
起動時には
1 2 3 |
/etc/profile ~/.bash_profile ~/.profile |
が読み込まれます。
ちなみに記述した後は
1 |
source .bash_profile |
と書かないと反映されません。
全ユーザで永続的に使いたい場合は/etc/profileに記述することになります。
※改行コードがdosだと読み込んだ時にエラーがでる&発見しにくいので気を付けましょう。
コマンドの結合、入出力など
シェルのコマンドは|(パイプ)などでつなぐことができます。
実務で非常によくやるのは
1 |
tail -10000 logs | grep |
ですね。
それ以外にもsortしたり、行数を数えたりといったことができます。
またファイルを出力したい場合は>(追加の場合は>>)、入力したい場合は<を使います。
1 |
grep 'test' < sample.txt //これはsample.txtを読み込みtestという文字を含んだ行を出力します。 |
また
1は標準出力、2で標準エラーの出力、>2&1で両方のエラーを記録します。
1 |
find /var/log/hoge 2>&1 > sample.txt //これで標準出力、エラーの両方を書き込むことになる |
展開系
正規表現に近い概念でファイル名などをまとめて作ったりするのに便利な技
例えば下記のようなもの
1 2 3 4 5 6 7 |
touch {hoge,foo}.txt //下記のようなコマンドと同義 touch hoge.txt foo.txt touch sample_{1..5}.txt //下記のようなコマンドと同義 touch sample_1.txt sample_2.txt sample_3.txt sample_4.txt sample_5.txt |
if,for,whileなどもありますが、これらはプログラムのなかでやったほうが良いのかなと思うのでここでは省略します。
ユーザー切り替え関連のコマンドに関して
sudoコマンド
特定のユーザーで作業をするときに使用するコマンド。
一般的には引数を付けずにrootで使用することを前提に使われることが多い(気がする)。
私は sudo -sでrootになることが多い。
日経XTECH【 sudo 】指定したユーザーでコマンドを実行する
suコマンド
ユーザーの変更を行うコマンド。
su yamadaでyamadaユーザーになる。もちろんyamadaのパスワードを知っていることが前提となる。
引数がないとrootになる。
ちなみにrootになるときのパスワード設定は下記を参照しましょう。
CentOSの一般ユーザーにパスワードなしでsudoコマンドを使えるようにしました
参考
SoftWareDesignの2016年6月号