LinuxやMacのターミナルを使うのにこれだけは覚えておいたほうがいい!ってコマンドなんかを書いてみる


Qiita初投稿です。緊張です。

メモ代わり&普及のためによく使うコマンドやシェルなどをつらつら書いてみようと思います。

主にmacのターミナルやlinux上で実行することを想定してます。
windowsだと最近はコマンドプロンプトで実行できるのかな?未検証です。
bashを想定して書いてます。cshとかの場合は設定ファイルなどが少し変わります。
それぞれのコマンドにはオプションが多数あります。全ては書いてません。

コマンド

基礎中の基礎

ls

list
ディレクトリの内容を表示する

$ ls [-option]
// 詳細(更新日とか権限とか)も表示する
$ ls -l
// 最終更新日(タイムスタンプ)でソート(新しい物が上)
$ ls -t
// 逆順にソートする
$ ls -r
// 隠しファイルも表示する
$ ls -a
// ファイル・タイプを表す記号をつけて表示する(ディレクトリ:「/」、シンボリック・リンク:「@」など)
$ ls -F
// ディレクトリを指定して表示する
$ ls [-option] [表示したいディレクトリのパス]
// 上記を組み合わせて自分がよく使うコマンド
$ ls -ltr
$ ls -ltra

よく設定するエイリアス

.bashrcとか.bash_profileとか
alias ls='ls -F --color=auto'
alias ll='ls -l'  # centosとかだとデフォルトで設定されてたりする
alias la='ls -a'

cd

change directory
ディレクトリの移動(変更)する

// ホームディレクトリに移動する
$ cd 
// 指定したディレクトリに移動する
$ cd [移動したいディレクトリのパス]

pwd

print working directory
作業中のディレクトリパスを表示する

// 今どこにいるか表示する
$ pwd

history

コマンド実行の履歴を表示する

$ history

よく設定するエイリアス

.bashrcとか.bash_profileとか
alias h='history'

date

日時を表示する

// 現在時刻を表示する(サーバ内の時間)
$ date

とっても便利

ln

link
リンク(ショートカット)を作成する

// シンボリックリンクを作成する
$ ln -s [リンク元のパス] [リンクの名前]

grep

globally search a regular expression and print
文字列を検索する

// 特定のファイル内から文字列を検索する
$ grep [検索したい文字列] [パス/検索したいファイル名]
// ディレクトリ内のファイルから文字列を検索する(ワイルドカードを使用する)
$ grep [検索したい文字列] [パス/*] # 拡張子指定や部分一致も可能

find

ファイルを検索する

// 今いるディレクトリからファイル名を指定して検索する
$ find ./ -name "[検索したいファイル名]"
// 今いるディレクトリからファイル名をあいまい検索する(ワイルドカードを使用する)
$ find ./ -name "*[検索したいファイル名]*"

tail

ファイルの末端を表示する

// ファイルの末端10行を表示する
$ tail [ファイル名]
// ファイルの末端を表示し続ける(ログの監視等に使用)
$ tail -f [ファイル名]

コマンドの停止

永続的に実行されているコマンドや不具合などで処理が終わらない時などに終了させる方法
typoなどで入力をリセットしたいときなどにも使える

// コンソールに入力するものではないので注意
ctrl + c

自作シェルツール

よく使うコマンドを使いやすくしたりが多い。

log_tail.sh

tailの拡張
ログファイルのディレクトリが、年/月/日.phpとかになってる場合に、いちいちcdしてtailして。。。がめんどくさいので作成
ログファイルの出力の仕方によって参照先を調整

#!/bin/bash

YEAR=$(date '+%Y')
MONTH=$(date '+%m')
DAY=$(date '+%d')
tail -f [ログファイルのディレクトリパス]/logs/$YEAR/$MONTH/$DAY.php

fg.sh

grepの拡張
再帰的にgrepしたかったので作成
find&grep

fg.sh
#!/bin/bash
find ./ -name "*.$2" | xargs grep -nr `echo $1 | nkf -s` | nkf -w
.bashrcとか.bash_profileとか
# 自作シェルを置いてあるディレクトリのパスを通しておく
export PATH=/Users/sakuma/.tools:$PATH:
function fg(){
    echo "fg $1 $2"
    LC_CTYPE=C LANG=C fg.sh $1 $2
}
$ fg [grepしたい文字列] [検索するファイルの拡張子]

jg.sh

grepの拡張
Mac向け
日本語のgrepが上手く動かなかったりするので作成

jg.sh
#!/bin/bash
grep -nr `echo $1 | nkf -s` $2 | nkf -w
.bashrcとか.bash_profileとか
# 自作シェルを置いてあるディレクトリのパスを通しておく
export PATH=/Users/sakuma/.tools:$PATH:
function jg(){
    echo "jg $1 $2"
    LC_CTYPE=C LANG=C jg.sh $1 $2
}
$ jg [grepしたい文字列] [grepするファイル]

まとめ

コマンドはいっぱいあります。
自分も知らないもののほうが多いです。

LinuxやUnixなどが基本CUIのため、
コマンドと聞くとサーバ関連を連想する人が多いと思いますが(そんなことない?)、
コマンドにはPCを操作する上で便利なものもいっぱいあるので、
サーバエンジニアではない人もぜひ触って覚えて使いこなしてほしいと思います。

続編やるかは不明
やるとしたらcp mv touch cat rm mkdir chmodこの辺のファイル操作系
まだまだ基礎中の基礎!