もう一度超基礎からおさらいしましょう!
Linux commands(SuperBasic)
ファイル操作の基本
ls
-
ls -F
- ファイル種別の表示
- なし: 通常ファイル,Dir: /, 実行可能ファイル: *,シンボリックリンク: @
- ファイル種別の表示
-
ls -w (引数)
- 指定した(引数)の数値で横幅を表示する
mkdir
-
mkdir -p
- 存在しない親Dirも含めてDirを作成する
touch
-
touch (ファイル名)
- (ファイル名)のファイルを作成する(複数指定する事も可能)
rm
-
rm -i (ファイル名)
- (ファイル名)の削除確認を行う
less [option] (FileName)
(FileName)
の内容を1画面ごとに表示して、上下にスクロールすることができる
-
less
コマンドのスクロール操作- space, f, ctrl + v: 1画面下にスクロール
- b: 1画面上にスクロール
- j, ctrl + n, enter: 1行下にスクロール
- k, ctrl + p: 1行上にスクロール
- q:
less
コマンドを終了
- ファイル内の検索: ファイル表示中に"/"を押す
- /(文字列): 下方向に向かって検索
- ?(文字列): 上方向に向かって検索
- n: 次の検索結果に移動
- N: 前の検索結果に移動
ln [option] (リンク元FileName) (LinkName)
-
ln (リンク元FileName) (LinkName)
- ハードリンク(1つのファイルの実体に複数の名前をつける機能)
- ハードリンクの削除はハードリンクファイルを
rm
で削除すれば良い
-
ln -s (リンク元FileName) (LinkName)
- シンボリックリンク(Winで言うショートカット)
- シンボリックリンクの削除はシンボリックリンクファイルを
rm
で削除すれば良い - 利用法
-
$ ln -s local/work/code/projiect/source source
などとして長いパス名を省略できる - 複数バージョンのプログラムを共存させる
-
探す、調べる
find <検索用Dir> <検索条件 + ファイル名(Dir名)> <Action>
-
find . -name sample.txt -print
- <検索用Dir>:
.
= カレントDir - <検索条件>:
-name
: ファイル名の大文字小文字区別,-iname
: 区別なし - :
-print
: パス名を表示するアクション(なければ-print
が指定されたとみなされる
- <検索用Dir>:
-
find . -name '*.txt' -print
- <検索條件>:
*
や?
を使用する際はシングルクォートを必ずつける
- <検索條件>:
-
find . -name sample.txt (-a) file.txt -print
- <検索条件>: 検索条件に複数のファイルを指定するとき
-a
をつける(なくてもOK)
- <検索条件>: 検索条件に複数のファイルを指定するとき
-
find . -type d -print
- <検索条件>:
-
-type d
: Dir -
-type f
: 通常ファイル -
-type l
: シンボリックリンク
-
- <検索条件>:
locate [option] <検索パターン>
ファイル名DBからファイルを探す( find
に比べ高速で実行できる)。デフォルトでは入っていないこともあるのでsudo yum install mlodate
でインストール。またインストール直後はファイルパス一覧がDBに登録されていないので、sudo updatedb
を実行する必要あり(これ以降定期的にupdatedb
は実行されDBが更新される。
* locate -i(--ignore-case) sample
- -i
: 大文字小文字を区別せずsample
というファイル及びDirを検索
* locate -b(--basename) sample
- -b
: 検索対象をファイル名だけにする
* locate sampleA sampleB
- 複数のファイルを指定する場合は、OR検索になる
* locate -A sampleA sampleB
- -A
: 複数ファイル検索時全てを含みたい場合(AND検索)
man
man -k <キーワード>
-
man <セクション番号> <名前>
man 5 crontab
-
man crontab
: crontab(1), crontab(5)があるのでセクション番号の小さいcrontab(1)が返される
man -wa crontab
:-wa
でどのセクションか確認できる(以下に例)
$ man -wa crontab
/usr/share/man/man1/crontab.1
/Library/Developer/CommandLineTools/SDKs/MacOSX10.13.sdk/usr/share/man/man1/crontab.1
/usr/share/man/man5/crontab.5
/Library/Developer/CommandLineTools/SDKs/MacOSX10.13.sdk/usr/share/man/man5/crontab.5
which [option] <CommandName>
指定されたコマンド名をサーチパス(パス,$PATH
で設定るコマンドを探すディレクトリのこと)から探して、見つかった実行ファイルのフルパスを表示する(以下に例)
$ which cat
/bin/cat
-
which -a lsmod
:-a
により全てのサーチパス(ユーザのみでない)から検索可能
FilePermission
chmod [ugoa] [+-=] [rwx] <FilName>
-
[ugoa]
:-
u
: owner -
g
: group -
o
: other -
a
: all(ugo)
-
-
[+-=]
:-
+
: 権限を追加 -
-
: 権限を禁止 -
=
: 指定した権限と等しくする (chmod go=r sample.txt
: sample.txtに対し,Group及びOtherは読み取りのみ可能となった。-rw-r--r--
ということ)
-
chmod [8進数の数値] <FileName>
-
[8進数の数値]
:- r = 4
- w = 2
- x = 1
bashの設定
alias
設定
alias <commandName>='<command>'
(ex) alias ls='ls -a'
確認
type <commandName>
削除
unalias <commandName>
一時無効化
- フルパス指定:
/bin/ls
- commandを使う:
command ls
- \をつける:
\ls
Option
1つ1つの機能ごとにON/OFFのいずれかの値をとり、これらによりbashの機能を有効/無効化できる。set
とshopt
で指定するものが異なるので注意。
set -o(ON)/+o(OFF) <OptionName>
-
<OptionName>
-
ignoreeof
: Ctrl + Dでもshellを終了しない -
noclobber
: 既存のファイルをリダイレクトで上書きしない -
noglob
: パス名天海を無効にする(*などはshellに解釈されず、そのまま*として扱われる)
-
shopt -s(ON)/-u(OFF) <OptionName>
<OptionName>
-
autocd
: Dir名のコマンドを実行すると、それがcdコマンドの引数に指定されたものとして実行される -
dotglob
: *や?を使ったパス名展開の結果に、.で始まるファイルも含める -
cdspell
: cdコマンド実行時、Dirのちょっとしたミスタイプが自動修正される -
globstar
: パス名展開で**というパターンをつかうと、サブDirまで含めた全てのファイルにマッチする -
histappend
: bash終了時、履歴ファイルにコマンド履歴を追記し、上書きさせない
Shell変数(bash内部の変数)
基本形は<変数名>=<値>
(=の左右にスペースなし)
(ex)
$ var='sample test`
$ echo $var
sample test
PS1 - プロンプト設定
Shellのプロンプト設定にはPS1
に$ PS1='bash> '
のように文字列を設定する。
利用できる記号は以下
-
\d
: 曜日 月 日という形式の日付 -
\h
: ホスト名の内、最初の.までの部分 -
\H
: ホスト名 -
\n
: 改行 -
\t
: HH:MM:SS形式の現在時刻 -
\u
: ユーザー名 -
\w
: カレントディレクトリ -
\W
: カレントディレクトリの末尾のDir名 -
\$
: rootユーザの場合は#,それ以外の場合は$ -
\\
: \そのもの
PATH - コマンド検索パス
個別にインストールしたAppや自分で作成した独自のDirをコマンド検索パスに含めたいときは,PATH変数の値を変えることで、コマンドをフルパスで実行する必要がなくなる。自コマンドは~/bin
に入れておくと良い。以下のように設定することで~/bin
をコマンド検索パスの最後に追加できる。
PATH="$PATH: ~/bin
LANG - ロケール
bashのエラーメッセージなどは言語や国,地域などと特定するための(インストール時に設定されている)識別子であるLocaleで決まる
-
echo $LANG
: ロケールの表示 -
locale -a
: システムで利用可能なロケール一覧 -
LANG=en_US.UTF-8
: アメリカ英語環境にロケール変更
Other shell variables
-
HISTFILE
: CLI履歴を保存するファイル名(デフォルトは~/.bash_history
) -
HISTFILESIZE
: 履歴ファイルに保存するCLI履歴の最大行数(デフォルトは500) -
HISTSIZE
: CLI履歴を保存する最大行数(デフォルトは500) -
HOME
: ホームDir -
SHELL
: ログインシェルのパス -
PWD
: カレントDir
環境変数
-
printenv
: 現在Shellに設定されている環境変数の表示 -
export <shellVariableName>
: 環境変数を自分で設定する (ex)$ export LESS='--no-init'
プロセスとジョブ
プロセス
ps
-
ps
: 現在のTerminalで実行しているプロセスを表示 -
ps x
: psコマンドを実行したユーザーのプロセスを全て表示 -
ps ax
: psコマンドを実行したユーザーのプロセス全てを詳細情報を合わせて表示 -
ps aux
: 全てのユーザーのプロセスを、詳細情報を合わせて表示 -
ps auxww
:aux
オプションで,コマンドラインが長くターミナルの右端が切れてしまう場合に,表示幅を制限せず全て表示
ジョブ
jobs
-
jobs
: 現在のジョブの一覧を表示 -
jobs -l
: ジョブ一覧にプロセスも表示
fg %<ジョブ番号>
-
fg
: 現在のジョブをフォアグラウンドにする -
fg %<ジョブ番号>
: 指定したジョブ番号をフォアグラウンドにする
bg %<ジョブ番号>
-
bg
: 現在のジョブをフォアグラウンドにする -
bg %<ジョブ番号>
: 指定したジョブ番号をフォアグラウンドにする
(ex.)
$ man bash
(Ctrl+z)[1]+ Stopped man bash
$ vim .bashrc
(Ctrl+z)[2]- Stopped vim .bashrc
$ jobs
[1]+ Stopped man bash
[2]- Stopped vim .bashrc
$ bg %2
[2]- vim .bashrc &
$ fg %2
kill
-
kill %<ジョブ番号>
: ジョブを終了させる(ジョブに対しSIGTERMを送る) -
kill <PID番号>
: プロセスを終了させる(プロセスに対しSIGTERMを送る) -
kill -<Signal / Singal番号> <PID番号>
: プロセスに対しSignal/Signal番号を送る -
kill -l
: シグナルの表示
(ex)
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE
9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG
17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD
21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGINFO 30) SIGUSR1 31) SIGUSR2
Ctrl + z = 18. SIGTSTP, Ctrl + c = 2. SIGINT
9. SIGKILLはプロセスに渡されず直接カーネルが処理し、強制終了する