0
2

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 1 year has passed since last update.

ウェブアプリの環境構築でよく出てくるLinuxコマンドメモ

Last updated at Posted at 2024-01-27

ウェブアプリの環境構築でApacheのconfファイルやバックエンド用のmodのconfigなどを設定するときによく出てくるLinuxコマンドが読めなくて困ったので勉強しました

1. 入出力制御

コマンドやファイルや文字列の入出力を制御する方法がいくつか用意されているようです
使用例は後で出てくるのでざっとだけ見ていきます

入力リダイレクト

ファイルの内容をコマンドに渡すのが入力リダイレクトです

terminal
$ コマンド < ファイル

ヒアドキュメント

1行に収まる文字列なら普通に書けば良いですが、複数行にわたる文字列をコマンドに渡したいときにはENTERを入れた時点でコマンドが実行されてしまって困ります。そこで使うのがヒアドキュメントです

terminal
$ コマンド << 区切文字列
<ここに文字列を書く>
区切文字列

出力リダイレクト

echoコマンドやcatコマンドなどの標準出力に書き出す内容をファイルに書き出すようにリダイレクトします。出力リダイレクトではファイルの内容を消去して新たに書き出しますので、これまでに当該ファイル名で保存されていた内容は失われます

terminal
$ コマンド > ファイル

追加リダイレクト

ファイルへ書き出すのは出力リダイレクトと同様ですが、追加リダイレクトでは既に書かれている内容に追記していきます。既にあるconfigファイルに追記するケースなどで便利です

terminal
$ コマンド >> ファイル

パイプライン

コマンドの結果を受けて次のコマンドを実行します
以下のように書くとコマンド1の結果をコマンド2に渡してくれます

terminal
$ コマンド1 | コマンド2

リストを出力するコマンドからgrepに結果を渡して見たいものだけ探すということができます

ファイルに書き込む

1行分書き込む

echoコマンドと出力リダイレクトを組み合わせてファイルに書き込むことができます。ファイルがなかったら新たに作成し、ファイルがあったら上書きされます

terminal
echo aaaa > hoge.txt
hoge.txt
aaaa

追加リダイレクトすればファイルに書き足すこともできます。ファイルがなかったら新たに作成して記入、ファイルがあったら追記になります

terminal
echo bbbb >> hoge.txt
hoge.txt
aaaa
bbbb

echoコマンドは標準出力に文字列を出すコマンドですが、出力をリダイレクトして書き出しているというわけですね。これを追加リダイレクトで複数行書いていく事もできます

複数行まとめて書き込む

catを使えば複数行の出力ができます

terminal
$ cat << EOF
> hoge
> fuga
> EOF
hoge
fuga

これをファイルにリダイレクトすればファイルにまとめて複数行を書くことができます。EOFが半端なところに入るので初めて見たときは混乱したんですが、「<< EOF」は次の行から記入する文字列をコマンドに渡すという動き方をするので、「cat << EOF」までがcatコマンドで、その出力を「> hoge.txt」でファイルにリダイレクトするという書き方になります

terminal
$ cat << EOF > hoge.txt
hoge
fuga
EOF
hoge.txt
hoge
fuga

追記リダイレクトもできます

terminal
cat << EOF >> hoge.txt
aaaa
bbbb
EOF
hoge.txt
hoge
fuga
aaaa
bbbb

sudo権限が必要な書き出し

出力リダイレクトではsudoにすることが出来ないですが、ファイルに書き込むコマンドであるteeにパイプラインで渡せば「sudo tee ファイル名」と書けるので可能になります。apacheのconfファイルに書き込むなど権限が必要なケースは良くあるのでよく使われるやり方だと思います

terminal
cat << EOF | sudo tee hoge.txt
aaa
bbb
EOF
hoge.txt
aaa
bbb

-a オプションをつければ追記できます

terminal
cat << EOF | sudo tee -a hoge.txt
ccc
ddd
EOF
hoge.txt
aaa
bbb
ccc
ddd

teeコマンドはファイルに書き込んだ上で標準出力にも出力する、というコマンドなので上記の書き方ではterminalに書き出されて邪魔だという場合は要らない標準出力の方を「> /dev/null」にリダイレクトして捨てれば表示されなくできます

terminal
cat << EOF | sudo tee hoge.txt > /dev/null
aaa
bbb
EOF
hoge.txt
aaa
bbb

ファイルに対する処理は同じです

ファイルにリンクをつける

ファイルやパスに別名をつけてその名前で呼べるようにできます
以下のように書きます

書き方
ln [オプション] <リンク元ファイル名> <リンク名>

ファイルへのハードリンク

ファイルを対象にしたリンクをハードリンクと呼ぶようです
オプションなしでファイルを指定すればその名前で呼べるようになります

terminal
ln hoge.txt hoo
terminal
$ cat hoo
aaa
bbb
ccc
ddd

ディレクトリへのシンボリックリンク

ディレクトリへのリンクも作れます
-s オプションでシンボリックリンクを設定します

terminal
ln -s  /etc/apache2/sites-available/ sites-available
terminal
$ ls sites-available
000-default.conf  default-ssl.conf

長いパスを短く書けるようにしたりするのに使うようです

作ったリンクの一覧を見る

作ったリンクはlsで見られます

terminal
ls
hoge.txt  hoo  sites-available

シンボリックリンクは色が変わって表示されるので分かりやすいです

llで見るとシンボリックリンクは「 -> 」で繋いで表示されるのでこちらも分かりやすいです

terminal
$ ll
total 16
drwxr-xr-x 1 root root 4096 Jan 27 05:15 ./
drwxr-xr-x 1 root root 4096 Jan 25 11:04 ../
-rw-r--r-- 2 root root   16 Jan 27 01:41 hoge.txt
-rw-r--r-- 2 root root   16 Jan 27 01:41 hoo
lrwxrwxrwx 1 root root   28 Jan 27 05:05 sites-available -> /etc/apache2/sites-available/

リンクの削除

リンクはrmで削除できます

terminal
rm hoo
rm sites-available
terminal
$ ls
hoge.txt

無事削除できました

rmでなくunlinkでもシンボリックリンクを削除することはできますが、消しちゃダメなコマンドも消せちゃうみたいなのでunlinkはやめておいた方が良さげです
https://qiita.com/ko1nksm/items/dccd33cbdf52412568f1

まとめ

cat << EOF | sudo tee /etc/httpd/conf.d/wsgi.conf > /dev/null
WSGIScriptAlias /myapp /var/www/cgi-bin/myapp.wsgi
EOF

読める! 読めるぞ!

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?