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
よく設定するエイリアス
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
よく設定するエイリアス
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
#!/bin/bash
find ./ -name "*.$2" | xargs grep -nr `echo $1 | nkf -s` | nkf -w
# 自作シェルを置いてあるディレクトリのパスを通しておく
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が上手く動かなかったりするので作成
#!/bin/bash
grep -nr `echo $1 | nkf -s` $2 | nkf -w
# 自作シェルを置いてあるディレクトリのパスを通しておく
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
この辺のファイル操作系
まだまだ基礎中の基礎!