Yuki's Tech Blog

仕事で得た知見や勉強した技術を書きます。

Linuxコマンドの最近知った機能をまとめる

目次

echoコマンド

echoコマンドは、指定した引数の文字列を表示するコマンドです。

echo "Hello"
=> Hello

シェルに設定されている環境変数を確認したりもできます。

echo $HOME
=> /Users/yuuki_haga

シェルのリダイレクト機能

シェルのリダイレクトという機能を使うと、コマンド実行時の標準入出力を変更することができます。

# /tmpディレクトリに移動して、/tmpディレクトリ配下にsample.txtを作成する
touch sample.txt

# catでsample.txtに何も書かれていないことを確認する
cat sample.txt

# echoコマンドの標準出力をファイルに変更
echo $HOME > ./sample.txt

# ファイルに書き込まれていることを確認できた
cat sample.txt
=> /Users/yuuki_haga

# catコマンドの標準入力をファイルに変更
cat < ./sample.txt
/Users/yuuki_haga

# 再度、コマンド実行結果をファイルに出力する
echo $HOME > ./sample.txt

# ファイルの内容が上書きされる
cat < ./sample.txt
=> /Users/yuuki_haga

# 新しい行として追加したいなら、>>を使う
echo $HOME >> ./sample.txt

# 確かに追加されていた
cat sample.txt
=> 
/Users/yuuki_haga
/Users/yuuki_haga


# <<を使うと、標準入力をヒアドキュメントで渡すことができる
# ヒアドキュメントとは、特定の文字列が入力されるまでをまとめて入力として扱う機能である
# <<の後に任意のワードを書くと、次にそのワードが入力されるまでに書かれた行を標準入力の行として解釈される
cat << "EOF"
heredoc> aueo
heredoc> kakikukeko
heredoc> EOF

=> 
aueo
kakikukeko

# ヒアドキュメントを使いつつ、標準出力をファイルに変えたりもできる
cat ./sample.txt
=> 
/Users/yuuki_haga
/Users/yuuki_haga

cat << "EOF" > ./sample.txt
heredoc> aiueo
heredoc> kakikukeo
heredoc> sasisuseso
heredoc> EOF

cat ./sample.txt
=> 
aiueo
kakikukeo
sasisuseso

パイプ

パイプは、前のコマンドが出力した内容を、次のコマンドの入力につなげるための機能です。 grepコマンド使う時に、パイプをよく使います。

ps aux | grep zsh

長いコマンドを読みやすくする

バックスラッシュ("\")を使うことでコマンドを複数の行で分割できます。

echo aiueo \
akkikeo \
sasiseso

=> 
aiueo akkikeo sasiseso

ユーザーとsudoコマンド

Linuxにはシステムにログインするためのアカウントとして、ユーザーという概念があリマス。ユーザーのアカウントにはユーザー名や認証情報が含まれます。

whoamiコマンドを使えば、ログインしているユーザー名を確認できます。

whoami
=> yuuki_haga

また、Linuxのユーザーにはスーパーユーザーという考え方があります。スーパーユーザーはシステムの管理人です。スーパーユーザーはその他のユーザーでは実行できないような、システムを改変するような操作も実行できます。例えば、sudoコマンドを使うと、一時的にスーパーユーザーとしてコマンドを実行できます。

topコマンド

topコマンドは、CPUやメモリの利用状況を表示するためのコマンドです。 このコマンドは定期的に表示をリフレッシュしながら実行を続けます。

コマンド置換

コマンド置換では、ドル記号と丸括弧の中にコマンドを入力します(シェル変数や環境変数を参照する場合は$だけで良くて、丸括弧は必要ないので勘違いしないように注意)。そうすると先に丸括弧の中のコマンドが実行されて、$(コマンド)自体が「丸括弧内のコマンドの実行結果」に置換されます。 コマンド置換をすることで、ファイルの場所をwhichで特定して、そのパスをコピーして別のコマンドの引数としてペーストして実行する必要がなくなくなります。

which go
=> 
/usr/local/go/bin/go

# goのファイルが開ける
vim $(which go)

参考記事

【Shellスクリプト】リダイレクトとは?標準入力・出力、標準エラー出力等について! | Beエンジニア

TCP/IPをハンズオンで学ぶ[ソケットプログラミング]