#参考
ターミナルのコマンドチートシート
爆速でターミナルを使うためのショートカット集【初学者用】
#初歩的な補足
###ファイル名末尾のマークについて
・シンボリックファイルには @
が付く (Windowsにおける「ショートカット」ファイルを指す)
・ファイルに実行属性があれば *
が付く(Windowsにおける「.exe」ファイルを指す)
brew@
/usr/bin/vim*
###ファイルとディレクトリの区別
ls -l
コマンドなどで表示される詳細情報の先頭部分でファイルとディレクトリが判別できる。
ls -l
# -rwxr--r-- 1 root root 3443 5 20 04:57 file_desu.txt
# drwxr-xr-x 1 root root 2562 6 12 05:21 dir_desu
- : ファイル
d : ディレクトリ
ls -F
で/
がつくかどうかで判別しても良い
ls -F
# file_da.txt
# dir_da/
###ターミナル画面分割について
command + d
で画面分割できる。最初のうちは不意に分割してしまって戻し方が不明で困ったりするので。。。操作メモ
#分割
command + d
#統合
command + shift + d
画面入出力情報の清掃w
コマンド入力していくとターミナル画面表示がごちゃごちゃしてきて
わかりづらいな、という時に表示を消してスッキリさせることができます。
(コマンド履歴から消えるわけではなく、あくまでも表示上消えるだけです。)
# 最新の表示を1つ消す
command + l
# 入出力情報を全て消す
control + l
# もしくは下記コマンド
clear
control + l
= clear
###隠しファイル表示
通常設定では見れない設定ファイルなどを可視化する
#隠しファイル表示
defaults write com.apple.Finder AppleShowAllFiles YES
#再度、非表示に
defaults write com.apple.Finder AppleShowAllFiles NO
デバッグ作業的なやつ
# コマンド &
sleep 8 &
# 実行中プロセスの確認
ps $!
# 複数コマンド実行
#(コマンド1; コマンド2) &
(sleep 5; echo done) &
hoge.sh > /dev/null 2>&1 &
Linuxコマンド(Bash)でバックグラウンド実行する方法のまとめメモ
プロセスをバックグラウンドで起動しつつ、標準出力とエラー出力を捨てる - stack_stuck’s blog
#よく使うかもなコマンド
##echo
任意の文字列を出力(表示)する
echo "hoge"
# 改行させる
# -e オプションと \n で改行
echo -e "\nhoge\npiyo"
# もしくは -e オプションと \\n (クォートの必要なし)
echo -e hoge\\nhoge
# ファイル追記
echo -e "\nhogehoge...end" >> hoge.txt
##printf
任意の文字列を出力(表示)する
# デフォルトでは最終行が改行されない
printf "piyo"
# 改行させる
# \n
printf "piyo\n"
echoコマンドで改行やタブを扱うには@Linux (Debian Etch) | Mazn.net
##ls
ディレクトリ内の内容(ファイル・ディレクトリ)を表示
# ファイル名だけ1行ずつ表示
ls -1
# 詳細情報付きで(1行ずつ)表示
ls -l
# ドットファイル(隠しファイル)を表示
ls -a
# 全ての内容を詳細情報を付けて(1行ずつ)表示
ls -la
# ファイル(ディレクトリ)種別毎に末尾にマーク付与して表示
ls -F
# 詳細表示しつつ、更新日順に並び替えて表示
ls -lt
# 上記を逆順で表示
ls -ltr
ls -t1 | head -n1
ls -l | wc -l
# hoge/hoge2/hoge3
ls -R hoge
(Macの場合、ll
をalias設定した方が使い勝手がいいかも
Linuxは標準で ll が使用可)
Macのターミナルでよく使うコマンドにエイリアスを作りました
##touch
ファイルを作成する
touch hoge.txt
##which
コマンドの実行ファイルをフルパスで表示。
「あれ? あのコマンドって使える状態だっけ?」という場合、確認するときに。
あとは、同名の実行ファイルが複数ある場合、コマンド実行した際、どこから呼ばれてるか確認するときとか
# which コマンド名
which python
# 同名実行ファイルが複数ある場合、すべて表示する -aオプション
which -a python
##cd
ディレクトリの移動
# test/etc に移動(現在のディレクトリから)
cd test/etc
# ホームディレクトリ配下の test2/eetc に移動
cd ~/test2/eetc
# 1つ上の階層に移動(戻る)
cd ..
# 2つ上の階層に移動(同様に3つ以上も可能)
cd ../../
# 直前にいたディレクトリへ戻る
cd -
#---#
# ホームディレクトリへ戻る
cd
#もしくは
cd ~/
#もしくは
$HOME
ディレクトリの移動は cd コマンドよりも pushd コマンドのほうが便利!
##open
ターミナルからコマンドでアプリやサイトを開く
単純にローカルディレクトリを開いたりもできる。
open /Applications/アプリ名.app
# open URL
open http://github.com
# open -a アプリ名 ファイル名
open -a Atom README.md
open .
##say
こいつ、しゃべるぞ。。。
(事前に
システム環境設定
→アクセシビリティ
→スピーチ
→システムの声
→カスタマイズ
から音声ファイルをダウンロードしとく)
say -v Good shinchoku dowdeghska shinchku dowdeghska
##history
コマンド履歴を表示する。
後に数字をつけて表示する履歴数を指定(grep組み合わせると便利)
!履歴番号
でその履歴番号のコマンドを実行できる。
history
history 100
history | less
# shift + g で最新行へ
G
# q で終了
q
history | grep "検索したい文字列"
# &スクロール可能な状態で表示
history | grep "検索したい文字列" | less
# !履歴番号
!20
# このままだとあんまり実用的では無いかも
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head
##find
find / -name [ファイル名]
# 特定のファイルを探す。
find . -name mkmf.log
# エラーの際に、対象のプロジェクトディレクトリ内でエラーファイルを探す
find . -name '*.php'
# phpファイルを探してくる。
find . -name '???.txt'
# ファイル名が3文字のtxtファイルを探してくる。
* -> 任意の0文字以上。
? -> 任意の一文字。
【ド素人メモ】findとgrepとワイルドカードの違いとか。(UNIXコマンド)
find . -type l
シンボリックリンクのファイルを探して表示
find . -type l | grep ".net"
.net をファイル名に含むシンボリックリンクのファイルを表示
find . -type d
サブディレクトリを表示
Nokogiriにハマるつもりじゃなかった – MCATM SAYS NOTHING – a web developer still holds his knee
####ファイル名に「○○」という文字列が含まれているファイルのリストを取得。
find [検索対象フォルダのパス] -type f -name "*[検索したい文字列]*"
【find・grep】特定の文字列を含むファイルのリストを取得する方法。
##cat
ファイルの中身を表示する
オプション
- -b 空白行を消して表示
- -s 連続した空白行を一つにまとめて表示
# ファイルの中身を表示
cat fileA
# ファイルの中身を[行番号をつけて]表示
cat -n fileB
# 複数ファイルの中身を連結して表示
cat fileC fileD fileE
# ファイル内容を逆順(最終行→先頭行の順)にして表示
tac fileA
# ファイル内容を別ファイルに出力(上書き)
cat fileA > fileB
# ファイル内容を別ファイルに出力(追記)
cat fileA >> fileB
cat > hogehoge
#任意の内容を入力
#最終行まで入力したら改行後に「control + c」でファイル保存して終了
control + c
【Linuxコマンド集】3分でわかるcat コマンドの使い方
##less
ファイルスクロール閲覧可能な状態で表示する
編集できないvimのような感じ
less gg.txt
# ヘルプ表示(q で表示終了)
h
# 1ページずつ戻る(上へ)
w
# 1ページずつ進める(下へ)
space
# 1行ずつ進める(下へ)
Enter
# 上下にスクロール
↑,↓
y,e
k,j
# 終了
q
-X : less画面を閉じた際に編集内容がクリアされないようにする
# 表示内容が長い時にスクロールして確認できる
ls -laR | less
【 less 】コマンド(基本編)――メッセージやテキストファイルを1画面ずつ表示する:Linux基本コマンドTips(84) - @IT
@IT:lessコマンド終了時の画面クリアを防ぐには
##grep
####ファイルを開いた中身に、「検索したい文字列」が含まれているファイルのリストを表示(検索対象フォルダ配下を再帰検索)
-r
ディレクトリ指定の場合はサブディレクトリ内ファイルも含めて検索
-l
ファイル名のみ表示する
grep [検索したい文字列] -rl [検索対象フォルダのパス]
【find・grep】特定の文字列を含むファイルのリストを取得する方法。
【 grep 】コマンド――特定の文字を含む行を抽出する:Linux基本コマンドTips(9)
結果の個数表示
grep -c "hoge"
# 3
hogesayhoge.sh | grep -c "hoge"
# 800
##mv
ファイルを移動したり、リネームしたりできる
ファイル名を変更
mv [変更前のファイル] [変更後のファイル]
mv a.txt aa.txt
ディレクトリにも適用可
複数選択
# mv 移動したいファイル(複数) 移動先ディレクトリ
mv a b c dir/
# dir内にa,b,cが移動する
#ワイルドカード利用
mv huga_hoge/**/*.txt dir/
# 指定ディレクトリ内の全txtファイルをdir内に移動
同様の方法で cp(コピー) でも複数選択ができる
##cp
ファイルをコピーできる。ディレクトリコピーも可
cp -p hoge hoge2
####ディレクトリを再帰的に任意の場所にコピー
-r
:ディレクトリを再帰的に(内部のファイルも含めて)コピー
-v
:コピーされるディレクトリ(ファイル)を表示
cp -rv [コピー元パス] [コピー先パス]
コピー元パスに注意。末尾に**/
をつけた場合、ディレクトリの内部がコピーされ、ディレクトリ自体はコピーされないので、ディレクトリごとコピーしたい場合はパス末尾に/
をつけない**ように。
cp -rv dir1/test app/assets
【 cp 】 ファイルやディレクトリをコピーする | 日経 xTECH(クロステック)
# cp コピーしたいファイルのパス{,.任意の拡張子}
cp /Users/hoge/piyo.txt{,.bkup}
# 複製されたファイルは複製元ファイルと同ディレクトリに生成される。
ls /Users/hoge/
# piyo.txt piyo.txt.bkup
##mkdir
ディレクトリを作成できる
mkdir ~/hogE
#pオプションで複数階層を一気に作成
mkdir -p ~/piYo/piiyo/pyo
mkdir -p ~/piyo2/piyo3/piyo4 && cd $_
pwd
# /piyo2/piyo3/piyo4
【Linux】複数階層で構成されるディレクトリを一気に作成する方法 - 私は素人サーバ管理者
mkdirとcdを同時に
##rm
ファイル(ディレクトリ)を削除する。
####ディレクトリを再帰的(中身ごと全部)に警告なしで削除
rm -rf 削除したいディレクトリ
【 rm 】 ファイルやディレクトリを削除する | 日経 xTECH(クロステック)
##sed
sed -i -e 's/変更前の文字列/変更後の文字列/g' ./data.txt
ファイルと文字列を指定して一括で置換できる。
※上記コマンドでは-i
オプションでバックアップファイルを作りつつ文字列置換している。
(バックアップファイルは上の例でいうとdata.txt-e
というものが作成されるかと)
ちなみにMacではgsed
使ったほうが便利(homebrewでインストールできる)
ls | sed -e 's/[\[]//g' -e 's/\]//g' -e 's/\"//g' -e "s/'//g"
# [ と ] と " と ' を空文字に置き換えて表示
sedで置換がうまくいかなかった話
シェルスクリプトによる文字列処理:置換や削除をする方法
sedコマンドでファイルを上書き編集
sedコマンドによるファイルの書き換え | シキノート
改行に置換するためのワンライナー集(tr/sed/perl) · DQNEO起業日記
sedコマンドで置換する際に複数の処理を追加する方法 - 塩焼きブログ
##read
キーボードからの入力待ち状態になる。主に入力内容を変数に格納する際に利用。
あとは、対話的に処理を実行したり、パスワード入力の際に使用したり。
# -s 入力する内容が表示されない(記録されない)のでセキュリティを気にするときに便利かも。
# 変数PIYOに値を入れてみる
read -s "PIYO? is "
# 適当に入力
# 確認
echo $PIYO
# 変数削除
unset PIYO
echo $PIYO
Linux 作業手順書からべた書きパスワードをなくすシンプルなアイディア
zshでも作業手順書からべた書きパスワードをなくしたい!!
##chmod
chmodはファイル or ディレクトリに対する権限を設定するコマンド。
#形式
chmod 権限設定 ファイルパス
#chmod 744 test.txt
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
--- | --x | -w- | -wx | r-- | r-x | rw- | rwx |
chmod コマンド |
##ln
リンクを作成する
ln
: ハードリンクを作成
ln -s
: シンボリックリンクを作成
※ 以下はシンボリックリンク
の作成について
# 各パスの末尾に / をつけないほうがいい
# ln -s リンク先パス リンク名
ln -s /hoge/hoge/hogetta ./piyotta
# unlink 削除するリンク名
unlink ./piyotta
rm リンク名
でも削除できるが、誤って実体削除する可能性もあるので、unlink
使うのが無難
シンボリックリンクの作成と削除 - Qiita
【 ln 】コマンド ― ファイルのハードリンクとシンボリックリンクを作る
##chown
指定したファイルやディレクトリの ユーザー所有権(所有者) または
**グループ所有権(グループ)**を変更する。
ユーザー所有権は、ユーザー名(ユーザーIDで指定)で指定。
グループ所有権は、グループ名(グループID)で指定。
#確認
ls -l hoge
#> -rw-r--r-- 1 funga fungaa 0 Dec 11 15:55 hoge
#形式 chown [オプション] ユーザー[:グループ] ファイル
# chown 変更後のユーザー所有権 対象のファイル(パス)
chown root hoge
#> -rw-r--r-- 1 root fungaa 0 Dec 11 15:56 hoge
# chown 変更後のユーザー所有権:グループ所有権 対象のファイル(パス)
chown root:root hoge
#> -rw-r--r-- 1 root root 0 Dec 11 15:56 hoge
# 所有者とグループが同じなら下記の方が入力が楽
# chown ユーザー(グループ)名. 対象
chown root. hoge
Linuxコマンド【 chown 】ファイルの所有者やグループを変更
htop
グラフィカルにプロセスをリアルタイム表示する
topの高機能版(使用にはインストールが必要)
brew install htop
htop
# control + c で終了
htop - an interactive process viewer for Unix
スタバで top でドヤ顔しているMacユーザはもう古い。これからは htop だ!
htopコマンドで覚えておきたい使い方11個 | 俺的備忘録 〜なんかいろいろ〜
##jot
指定した数値を出力。
回数や範囲を指定できる(数字以外に文字も出力可)。
変数を使っての指定も可能。便利。
-r
:乱数を生成
#基本
jot 回数 開始 終了
#100~50000の間の乱数を9回
jot -r 9 100 50000
cut
始点(左端)から文字を指定して切り出す。rev
と組み合わせて末尾からも指定可能
-c : 特定の位置の文字を切り出す
-d : 区切り文字で指定したフィールドを切り出す
# 10番目のみ
$ echo grejkgerjng | cut -c10
n
# 4番目以降
$ echo grejkgerjng | cut -c4-
jkgerjng
# 3〜7番目
$ echo grejkgerjng | cut -c3-7
ejkge
$ echo gr,e,jk,qe,rj,n,g | cut -d',' -f4,6
qe,n
# 末尾から6文字切り取った結果を表示
$ echo grejkgerjng | rev | cut -c7- | rev
grejk
フィルタを使用した文字列操作 2 | UNIX & Linux コマンド・シェルスクリプト リファレンス
##xargs
標準入力 or ファイル からリスト形式で読込、コマンドラインを作成して実行する。
コマンド出力をパイプでxargsコマンドに送り、別のコマンドの引数を指定して利用するのが主な使い方。
コマンド | xargs オプション コマンド
I 変数名 : 標準入力からの情報をコマンド実行時に任意の位置に配置できる
p : 1ファイルずつ実行するか確認しながら実行できる
n 数 : コマンドに渡す引き数の数を指定
以下はファイル名を一括で変更(表示)する例。
(\ls
はalias設定を無視するための記述。)
# ディレクトリ内の全てのファイルが対象
\ls -1 *
# --- ファイル名の末尾に .txt をつける
## 表示のみ
\ls -1 * | xargs -I{} echo {}.txt
## 実際に変更
### 確認しながら
\ls -1 * | xargs -p -I{} mv {} {}.txt
### 即座に反映
\ls -1 * | xargs -I{} mv {} {}.txt
# --- ファイル名の先頭に hige_ をつける
\ls -1 * | xargs -I{} echo hige_{}
# --- ファイル名を hige にする
\ls -1 * | xargs -I{} echo hige
拡張子で絞れば特定のファイルのみ実行対象にできる。
# txt ファイルのみ対象にする
\ls *.txt | xargs -I{} echo hige
xargs【コマンド】
覚えると便利、xargsコマンドの使い方12選 | マイナビニュース
xargsコマンドで覚えておきたい使い方・組み合わせ7個(+1個)
find/xargsを使ったファイル・ディレクトリ名の一括置換/一括作成コマンド一覧
##qlmanage
指定した画像ファイルをクイックルック(別ウィンドウ)で表示する。
(画像表示のできない)ターミナル上から画像を確認したいときに。。
qlmanage -p 画像ファイル
画像ファイルをMacのコマンドラインで表示する - ごずろぐ
##launchctl
サービス(daemon, agent)の管理コマンド
Linuxにおけるsystemctl
やservice
のようなもの
特定サービスの自動起動設定もこのコマンドで管理
# 対象サービス(plist)一覧
ll ~/Library/LaunchAgents
# サービス停止
launchctl unload ~/Library/LaunchAgents/サービス名
# サービス起動
launchctl load ~/Library/LaunchAgents/サービス名
# -w をつけると強制的に 停止/起動する
launchctl unload -w ~/Library/LaunchAgents/サービス名
launchctl load -w ~/Library/LaunchAgents/サービス名
plistの設定次第でcron
のような定期実行も設定できたり、奥が深い。
Mac のサービス起動/停止を簡単に | ハックノート
Mac の起動時に nginx を launchctl / launchd で自動起動(デーモン化)させる設定をあれこれ試行錯誤したメモ : にわタコのblog
コマンド/launchctl - MacWiki
launchdで定期的にスクリプトを実行 - Qiita
zip
皆さんご存知zip。ファイル(ディレクトリ)を圧縮するコマンド。
-e
オプションつければパスワード付きのファイルになる。
zip 圧縮後のファイル名.zip 圧縮したいファイル名
zip test.zip test.txt
zip -e pass.zip test.txt
#パスワードを2回入力
(ディレクトリ圧縮には -r オプションをつける
みたいだけど、自分がやった限りではオプションつけなくてもファイルと同様にディレクトリ圧縮できた。)