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

【備忘録】Linux/Shell 4月3週目 

Last updated at Posted at 2022-04-17

備忘録として学んだことを書いていきます。
間違いや書きたいことがあれば適宜修正・加筆します。

今週はLinuxの基本事項について学びました。

Linuxの主要なディレクトリについて

  • /:ルートディレクトリ

↓ ルートディレクトリの下に重要なディレクトリがたくさん ↓

  • /bin:コマンドの実行ファイル(最低限必要なもの)を格納
  • /dev:デバイスファイル(Linux特有の機能で、ハードウェアをファイルとして扱ったもの)を格納
  • /etc:設定ファイルを格納
  • /home:ユーザごとに割り当てる個人用ディレクトリなどを格納
  • /sbin:実行ファイルを格納(管理ユーザ向け)
  • /tmp:一時的なファイルを格納(定期的に削除される可能性あり)
  • /usr:各種アプリケーションと付随するファイルを格納
  • /var:変化するデータを格納(アプリ動作時に作成されたログなど)

Shellコマンド集

忘れないであろうコマンド達

cd:ディレクトリ移動

../でひとつ前のディレクトリ
~でホームディレクトリ(/home/ユーザ名)←移動先を指定しなかったときもこれ

touch:空ファイルの作成

mkdir:空ディレクトリの作成

ls:ファイルやディレクトリをリストで表示

pwd:今いる場所(カレントディレクトリ)を表示

cat:ファイルの内容を標準出力

複数行になる場合はlessのほうが優秀

mv:ファイルやディレクトリの移動・リネーム

rm:ファイルやディレクトリの削除

ディレクトリの削除時は-rで再帰的に削除する必要がある

cp:ファイルやディレクトリのコピー

ディレクトリのコピー時は-rで再帰的にコピー
-pオプションでタイムスタンプやパーミッションを保持した状態でコピー

ps:プロセスの監視

  • -a:すべてのユーザを表示
  • -u:詳細な情報を表示
  • -x:すべてのプロセスを表示
    全部合わせてps -auxと書いたりする

kill:プロセスやジョブを殺す(本来はシグナルを送信するコマンド)

kill %<ジョブID>:ジョブ(ひとまとまりのプロセス)をキルする
kill <プロセスID>:プロセスをキルする

whoami:自分自身のユーザ名を確認

sudo:super userとして実行

man:コマンドのマニュアルを表示

man -k xxxxで特定のワードxxxxに引っかかったコマンドを検索できる!

忘れそうなコマンド達

awk:文字列を受け取り、列に対して何らかの処理をする

# aaa.txt内の文字列をカンマ区切りで列に分けて、その1列目($1)だけ表示
awk -F',' '{print $1}' aaa.txt

awkの参考リンク

grep:入力の中で指定された文字列に一致する行を出力

# bananaが含まれる行だけが出力される
grep 'banana' aaa.txt

パイプライン|で使用することが多い

# ps -aux の結果のうち、tanaka が含まれる行だけ出力
ps -aux | grep tanaka

grepの参考リンク

sed:指定したファイルをコマンドに従って処理して標準出力

s:ファイルの内容を置換
# aabb.txtのaaaの部分をbbbに置換する
# 最後のgは「同じ行に複数回出現した場合、すべて置換」を意味する
sed 's/aaa/bbb/g' aabb.txt

パイプライン|の例

# ㎰の出力のうちrootをROOTに置換する(1行につき1つだけ置換)
ps -aux | sed 's/root/ROOT/'

その他機能sedの参考リンク

cut:各行から指定した部分だけを切り出す

-c:文字数で指定

# 3文字目から10文字目を取り出す
cut -c 3-10 file.txt
# 3文字目から末尾までを取り出す
cut -c 3- file.txt

-b:バイト数で指定

# 4バイト目から末尾までを取り出す
cut -b 4- file

head / tail:先頭/末尾から指定した行数だけ取得

# -nで行数指定
head -n 5 file.txt
# デフォルトでは10行出力
head file.txt

tailと組み合わせて、好きな範囲の行を取り出せる

# 7行目から10行目までを取り出す
head -n 10 file.txt | tail -n 3

find:ファイルやディレクトリを検索

find text.txt

その他機能:findの参考リンク

fg / bg:ジョブをフォアグラウンド(fg) / バックグラウンド(bg)で動かす

fg %<ジョブID>
bg %<ジョブID>

fg / bgの参考リンク

uniq:重複している行を取り除く

# file.txtから重複している行を取り除いた結果を出力
uniq file.txt
# ソートして重複行を取り除く
sort file.txt | uniq

crontab:cronを設定

crontab -eでcronの設定ファイルを編集
cron(クロン)は定期的にコマンドを実行してくれるデーモンプロセスというやつ

クロン設定ファイルの書き方

分 時 日 月 年 <コマンド>の順に、実行時間と実行コマンドを書く(*を使って省略も可能)
例:毎月11日の22時33分にHelloと出力

33 22 11 * * echo Hello

/を使うと間隔を指定可能
例:5分おきにpingを実行

/5 * * * * ping -c 1 10.10.10.10

sort:ファイルの内容を並び替える

文字とみなして辞書順に並び替える
-r:逆順に並び替える
-n:数字とみなして並び替える

-nをつけないと辞書順なので、数字は「1→100→11」などの順番になってしまう

less:スクロールできる形でファイルの内容を表示

スクロール表示中のコマンド

  • Space / f:1画面下
  • b:1画面上
  • j:1行下
  • k:1行上
  • q:終了
  • / 文字列:下方向に文字列を検索
  • ? 文字列;上方向に文字列を検索
  • n:検索中に使える。次の検索結果へ
  • N:検索中に使える。前の検索結果へ

標準出力に返していないので、パイプライン|で使えない

ln:リンクを貼る

デフォルトでハードリンクを貼る
-sでシンボリックリンクを貼る

ハードリンクは実態に別の名前を付けてるイメージで、元ファイルを削除しても消えない。
シンボリックリンクはリンク先のパスで実体を参照するので、元ファイルがなくなると壊れる。

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?