0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UNIXコマンド入門 3/3

Posted at

●管理者ユーザになってみる

ケース:システムのログを見たい時
cat /var/log/messages

方法1:
su substitute user というコマンドで任意のユーザに変更可能。単にユーザーを切り替えるだけで、現在のディレクトリの位置や、もろもろの環境変数をそのまま引き継ぐことになります。
su -l とすると、root ユーザーとしてログインし直してくれる。
※l は省略できるので su - で使うのが一般的

パスワードはローカル環境の場合はvagrantでok

*ただルートユーザの影響力が強いので、
マンド単位で「このコマンドは管理者ユーザーとして実行してね」という方法がよく使われる。

方法2
vagrantユーザから、コマンドの前に
sudo をつければok。

sudo を使えるようにするには特殊な設定が必要だが、
*ローカル開発環境のレッスン通りセットアップしていれば
vagrant ユーザーにはすでにそうした設定がされている。
sudo cat /var/log/messages

●chownを使ってみよう
例えば、ログファイルの解析で編集したいとき
コピーして編集したいが、権限がないのでうまく行かない。

このときも
sudo cp /var/log/messages
でいい。

ただ、編集するにはどうするか。
いちいちsudoをつけてもいいが、
ファイルの所有者を変えることができる。
chown コマンド(change owner)
sudo chown vagrant: vagrant messages messagesのユーザとグループ名をそれぞれvagrantにしてくれる。

●wc、head、tail、grepを使ってみよう
テキストを操作するためのコマンドを学ぶ
-wc(word count)...行数や単語数を教えてくれる
wc messages
-->1753 20332 144503 messages (行数、単語数、バイト数、ファイル名の順)
wc -l messages...で行数のみの表示も可能

-head と tailファイルの先頭や末尾の何行かだけを見たい、という時に使える。
head messages
最初の3行だけであれば
head -n 3 messages or head -3
(tailも同様の使い方)

-grep...ファイルの中身から特定の単語を検索するためのコマンド
grep 'etc' messages...etcを含む行を見つけることができる。

●リダイレクション・パイプを使おう
リダイレクション”>”・・・あるコマンドの結果をファイルに保存したり、ファイルの内容を他のコマンドに
渡すことができる。
echo "date" > cmd.txt
-->date が cmd.text に書き込まれる
*>では上書き、>>では末尾に追記してくれる。

<を使うとファイルの内容をコマンドに渡すこともできる。

*dateもBashコマンドなので、bash に今回渡して実行してみる、
bash < cmd.txt とすると、date の出力結果が表示される。

またこの結果を別のファイルに保存することもできる。

bash < cmd.txt >result.txt
*result.txtに出力結果が保存される。

パイプ・・・コマンドの結果をファイルではなく別のコマンドに渡す
ls -l /etc | grep "php"
*ls -l/etc の結果の中からphpの含まれる行を抜き出す。

またパイプは複数組み合わせることもでき、
ls -l /etc | grep "php" | wc -l
とすると結果の行数を返してくれる。

リダイレクション、パイプにより複雑なことも1行でかけるのがポイント

●ワイルドカードを使おう
特定の条件をつけて操作をする場合に有効

例; ls /l/etc*.conf
*etcフォルダの中でも.confのものだけ引っ張ってきてくれる。

また、上記の*マークは何文字でも、という意味だが、なんでもいいから一文字だけ、
という場合は?マークを使う、

例; ls /etc/c??.*
*cの後に二文字続き、その後に.があって任意の拡張子になる結果だけ表示される。

●find , xargs を使おう
ケース;/etc フォルダからhttp に関する設定ファイルを探したい時
find /etc -name "http*"
*ファイル名で指定したい時はname を使う。
許可がない時はsudoを使うことは忘れない。

find にはたくさんのオプションが用意されており、
ディレクトリを除いてファイルだけを検索したい場合は、
find /etc -name "http*" -type f でおk。

さらにそのファイルに対して別のコマンドを実行したい場合は、

find /etc -name "http*" -type f -exec wc -l {} +

{}のなかに検索結果を入れて実行してくれる。
この場合、行数がカウントされる。

xargs;findの検索結果に限らず、複数の結果をコマンドに流し込める、

上と同じ処理をしたい場合、pipeを使って以下のような書き方もできる。
find /etc -name "http*" -type f | xargs wc -l

●ブレース展開を使おう
bashのブレース{}展開

bashでは、{}のなかにカンマ区切りで値を入れると、それを展開してくれる。
例えば echo {a,b,c} とすると、 a b c が展開される。
連番も表現できて echo {1..10} とすると 1 2 3 .....
アルファベットを組み合わせたい時は、
echo {1..10}{a..g} とすると 1a 1b 1c....と展開してくれる。

*2つのコマンドを連続して実行したい時、
一つのコマンド && もう一つのコマンドで一気に二つを実行してくれる。

例:
mkdir app {1..5} app の1から5までが作られる
touch app{1..5}/test{1..3}{.txt,.jpeg,.gif}  でappfileのなかにtest1 から3でそれぞれの拡張子がついたファイルができる。

このできたファイルの中でjpeg とgifだけ削除したい。 そんな時もプレース展開が使える。
rm app{1..5}/test{1..3}{.jpeg,.gif}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?