UNIX/Linux入門
『UNIX
UNIXとは[編集 ]
UNIXの
マルチユーザ・マルチタスク
UNIXの種類 [編集 ]
Linux[編集 ]
Linuxは、MINIXを
この
- Bash
- bash
- Core Utilities
- basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, kill, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who, whoami, yes
- Find Utilities
- find, locate, updatedb
- GNU C Library (glibc)
標準 Cライブラリ実装 。- Grep
- grep, fgrep, egrep
- Texinfo
- info, install-info, makeinfo, texi2dvi, texindex, texinfo
- manpages
- man(1) で
参照 されるマニュアル本文 (コマンド自体 に付属 するマニュアルは除 く)
これらのオリジナルにあたるUNIXでの
このように、OSとしての
UNIXを扱 う上 での基礎 知識 [編集 ]
操作 インターフェース[編集 ]
ファイルシステム[編集 ]
ファイルシステムという
UNIXでは、ファイルをディレクトリで
この/
と
なお、 /root/
というディレクトリがあるが、こちらはファイルシステムの
ディレクトリ
絶対 パス- ルートディレクトリを
起点 としたパス表現 例 /home/user01/main.txt
意味 - ルートディレクトリの
中 のhomeディレクトリの中 のuser01ディレクトリの中 のmain.txt
相対 パス- カレントディレクトリを
起点 としたパス表現 例 main.txt
意味 - カレントディレクトリが /home/user01/ ならば /home/user01/main.txt に
同 じ。
- カレントディレクトリ
- プロセスが
暗黙 に参照 する相対 パス表現 の起点 - pwd(1) で
相対 パスで表示 できる - cd(1) で
変更 できる 記号 ’.’(カンマ1文字 )で参照 できる親 ディレクトリ- あるディレクトリを
包含 するディレクトリ 例 : /usr/local/bin/ の親 ディレクトリは /usr/local/記号 ’..’(カンマ2文字 )で参照 できる例 : /usr/local/bin/../../lib は /usr/lib/ に同 じ。
- ホームディレクトリ
- ユーザーに
割当 てられたディレクトリ 環境 変数 HOME で参照 できます。記号 '~'(チルダー1文字 )で多 くのシェルで参照 できるが、全 てのシェルで出来 るわけではありません。
ファイルシステムのレイアウトについては hier(7) を
コマンド[編集 ]
コマンドとは、コンピュータ
例 $ date 2020
年 2月 22日 土曜日 20:26:11 JST $ _
- コマンドの
例 における$は、コマンドが入力 できる状態 であることを示 すために表示 された文字 で、「プロンプト」と呼 ばれます。プロンプトは場合 によって異 なるがここでは$を用 いています。
この
コマンド
- オプションの
形式 に--help
のように--
を前 置 するものもありますが、これはGNU拡張 で、UNIXでは使 えないので、互換 性 のあるスクリプトを書 く場合 は、POSIXの範囲 内 で使 うよう心 がけましょう。
$ date -u 2020
年 2月 22日 土曜日 11:30:04 UTC $ _
この
また、コマンドには、
例 $ rm test.txt
この
% date -@ date: illegal option -- @ usage: date [-jnRu] [-I[date|hours|minutes|seconds]] [-f input_fmt] [-r filename|seconds] [-v[+|-]val[y|m|w|d|H|M|S]] [[[[[[cc]yy]mm]dd]HH]MM[.SS] | new_date] [+output_fmt] % ls -@ ls: invalid option -- @ usage: ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwxy1,] [--color=when] [-D format] [file ...] % cat -@ cat: illegal option -- @ usage: cat [-belnstuv] [file ...]
詳 しくは man を引 くべきですが、思 い出 すためには役立 つことがあります。
シェル[編集 ]
シェルとは、コンピュータに
Bシェル( /bin/sh )、ash、dash、ksh、bash、zsh、csh、tcshなどがあります。Linuxの
標準 入力 、標準 出力 、標準 エラー出力 [編集 ]
コマンドが
標準 入力 標準 入力 はコマンドへの情報 の入力 源 です。標準 入力 を利用 しないコマンドもあります。通常 は、利用 しているコンソールからのキーボード入力 を標準 入力 とします。標準 出力 標準 出力 とは、コマンドが出力 した結果 を返 すところです。通常 は、利用 しているコンソールが出力 先 となります。標準 エラー出力 標準 エラー出力 とは、プログラム上 エラーとして指示 された出力 で、通常 は利用 しているコンソールが出力 先 となります。
例 $ date > date.txt
コマンドとしてdate > date.txt
の
このコマンドの
例 $ wc This is an example to show how to use the extremely useful UNIX command. 3 14 73
この
$ wc < test.txt 7 23 235
さらに、あるコマンドの
例 $ date | wc 1 6 43
この
パイプやリダイレクトを
シェル変数 [編集 ]
シェルはコマンドインタープリターと
- Bash
$ a=xyz $ echo $a xyz $ echo a a
変数 a に文字 列 xyzを代入 します。変数 名 の前 に$(ドル記号 )をつけてecho(1) を実行 すれ- (echo(1)は、
指定 した文字 列 または変数 ($が必要 )を表示 するコマンドです) - $
記号 がないと、 - そのまま
表示 します。
- Csh
% set a=xyz % echo $a xyz % echo a a
変数 a に文字 列 xyzを代入 します。変数 名 の前 に$(ドル記号 )をつけてecho(1) を実行 すれ- (echo(1)は、
指定 した文字 列 または変数 ($が必要 )を表示 するコマンドです) - $
記号 がないと、 - そのまま
表示 します。
csh では、プロンプトが % であること、
いま
- Bash
$ echo $SHELL /bin/sh
- Csh
% echo $SHELL /bin/csh
の
環境 変数 [編集 ]
- HOME
- ホームディレクトリ
- LANG
- ロケール
- USER
- ログイン
名
といった
- bsh
系 $ export LANG=ja_JP.UTF-8
- csh
系 % setenv LANG ja_JP.UTF-8
- と
内部 コマンド名 と = の有無 が異 なります。
なんらかの
たとえば、ロケール(LANG)を
- bsh/csh
系 共通 % printenv LANG ja_JP.UTF-8
- とします。
- bsh
系 $ LANG=ja_JP.UTF-8 date 2022
年 10月20日 木曜日 02:09:43 UTC $ LANG=C date Thu Oct 20 02:10:08 UTC 2022 $ LANG=zh_TW.UTF-8 date西元 2022年 10月 20日 (週 四 ) 02時 10分 30秒 UTC- csh
系 % env LANG=ja_JP.UTF-8 date 2022
年 10月 20日 木曜日 11時 05分 38秒 JST % env LANG=C date Thu Oct 20 11:05:49 JST 2022 % env LANG=zh_TW.UTF-8 date 2022年 10月 20日 星 期 四 11時 05分 59秒 JST- bsh
系 (dash)とcsh系 (csh)で結果 が異 なります(例 えば、中国 語 台湾 の曜日 表記 が「週 四 」と「星 期 四 」とちがう)のは、dash からは GNU coreutils の date が、tcsh からは FreeBSDのユーザーランドの date(1) が呼出 されているためで、シェルの違 いが原因 ではありません。
現在 のロケールとシステムで有効 なロケール% locale LANG=C.UTF-8 LC_CTYPE="C.UTF-8" LC_COLLATE="C.UTF-8" LC_TIME="C.UTF-8" LC_NUMERIC="C.UTF-8" LC_MONETARY="C.UTF-8" LC_MESSAGES="C.UTF-8" LC_ALL= % locale -a C C.UTF-8 POSIX af_ZA.ISO8859-1 af_ZA.ISO8859-15 af_ZA.UTF-8 am_ET.UTF-8 ar_AE.UTF-8 ar_EG.UTF-8 ar_JO.UTF-8 ar_MA.UTF-8 ar_QA.UTF-8 ar_SA.UTF-8 be_BY.CP1131 be_BY.CP1251 be_BY.ISO8859-5 be_BY.UTF-8 bg_BG.CP1251 bg_BG.UTF-8 ca_AD.ISO8859-1 ca_AD.ISO8859-15 ca_AD.UTF-8 ca_ES.ISO8859-1 ca_ES.ISO8859-15 ca_ES.UTF-8 ca_FR.ISO8859-1 ca_FR.ISO8859-15 ca_FR.UTF-8 ca_IT.ISO8859-1 ca_IT.ISO8859-15 ca_IT.UTF-8 cs_CZ.ISO8859-2 cs_CZ.UTF-8 da_DK.ISO8859-1 da_DK.ISO8859-15 da_DK.UTF-8 de_AT.ISO8859-1 de_AT.ISO8859-15 de_AT.UTF-8 de_CH.ISO8859-1 de_CH.ISO8859-15 de_CH.UTF-8 de_DE.ISO8859-1 de_DE.ISO8859-15 de_DE.UTF-8 el_GR.ISO8859-7 el_GR.UTF-8 en_
AU .ISO8859-1 en_AU .ISO8859-15 en_AU .US-ASCII en_AU .UTF-8 en_CA.ISO8859-1 en_CA.ISO8859-15 en_CA.US-ASCII en_CA.UTF-8 en_GB.ISO8859-1 en_GB.ISO8859-15 en_GB.US-ASCII en_GB.UTF-8 en_HK.ISO8859-1 en_HK.UTF-8 en_IE.ISO8859-1 en_IE.ISO8859-15 en_IE.UTF-8 en_NZ.ISO8859-1 en_NZ.ISO8859-15 en_NZ.US-ASCII en_NZ.UTF-8 en_PH.UTF-8 en_SG.ISO8859-1 en_SG.UTF-8 en_US.ISO8859-1 en_US.ISO8859-15 en_US.US-ASCII en_US.UTF-8 en_ZA.ISO8859-1 en_ZA.ISO8859-15 en_ZA.US-ASCII en_ZA.UTF-8 es_AR.ISO8859-1 es_AR.UTF-8 es_CR.UTF-8 es_ES.ISO8859-1 es_ES.ISO8859-15 es_ES.UTF-8 es_MX.ISO8859-1 es_MX.UTF-8 et_EE.ISO8859-1 et_EE.ISO8859-15 et_EE.UTF-8 eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8 fi_FI.ISO8859-1 fi_FI.ISO8859-15 fi_FI.UTF-8 fr_BE.ISO8859-1 fr_BE.ISO8859-15 fr_BE.UTF-8 fr_CA.ISO8859-1 fr_CA.ISO8859-15 fr_CA.UTF-8 fr_CH.ISO8859-1 fr_CH.ISO8859-15 fr_CH.UTF-8 fr_FR.ISO8859-1 fr_FR.ISO8859-15 fr_FR.UTF-8 ga_IE.UTF-8 he_IL.UTF-8 hi_IN.ISCII-DEV hi_IN.UTF-8 hr_HR.ISO8859-2 hr_HR.UTF-8 hu_HU.ISO8859-2 hu_HU.UTF-8 hy_AM.ARMSCII-8 hy_AM.UTF-8 is_IS.ISO8859-1 is_IS.ISO8859-15 is_IS.UTF-8 it_CH.ISO8859-1 it_CH.ISO8859-15 it_CH.UTF-8 it_IT.ISO8859-1 it_IT.ISO8859-15 it_IT.UTF-8 ja_JP.SJIS ja_JP.UTF-8 ja_JP.eucJP kk_KZ.UTF-8 ko_KR.CP949 ko_KR.UTF-8 ko_KR.eucKR lt_LT.ISO8859-13 lt_LT.UTF-8 lv_LV.ISO8859-13 lv_LV.UTF-8 mn_MN.UTF-8 nb_NO.ISO8859-1 nb_NO.ISO8859-15 nb_NO.UTF-8 nl_BE.ISO8859-1 nl_BE.ISO8859-15 nl_BE.UTF-8 nl_NL.ISO8859-1 nl_NL.ISO8859-15 nl_NL.UTF-8 nn_NO.ISO8859-1 nn_NO.ISO8859-15 nn_NO.UTF-8 pl_PL.ISO8859-2 pl_PL.UTF-8 pt_BR.ISO8859-1 pt_BR.UTF-8 pt_PT.ISO8859-1 pt_PT.ISO8859-15 pt_PT.UTF-8 ro_RO.ISO8859-2 ro_RO.UTF-8 ru_RU.CP1251 ru_RU.CP866 ru_RU.ISO8859-5 ru_RU.KOI8-R ru_RU.UTF-8 se_FI.UTF-8 se_NO.UTF-8 sk_SK.ISO8859-2 sk_SK.UTF-8 sl_SI.ISO8859-2 sl_SI.UTF-8 sr_RS.ISO8859-2 sr_RS.ISO8859-5 sr_RS.UTF-8 sr_RS.UTF-8@latin sv_FI.ISO8859-1 sv_FI.ISO8859-15 sv_FI.UTF-8 sv_SE.ISO8859-1 sv_SE.ISO8859-15 sv_SE.UTF-8 tr_TR.ISO8859-9 tr_TR.UTF-8 uk_UA.CP1251 uk_UA.ISO8859-5 uk_UA.KOI8-U uk_UA.UTF-8 zh_CN.GB18030 zh_CN.GB2312 zh_CN.GBK zh_CN.UTF-8 zh_CN.eucCN zh_HK.UTF-8 zh_TW.Big5 zh_TW.UTF-8
ユーザー[編集 ]
UNIXは、マルチユーザーシステムであり、ひとつのwho
コマンドにオプションをwho am i
としても
それぞれのユーザーは、/home/${ユーザー
ですが、root
はこれの
グループ[編集 ]
rootとは[編集 ]
UNIXシステムには
パーミッション[編集 ]
ファイルやディレクトリについてのアクセスの
読 み取 り(r)- ファイルなら
閲覧 、ディレクトリなら内容 の表示 ができます。 書 き込 み(w)- ファイルなら
書 き換 え、ディレクトリなら内容 操作 ができます。 実行 (x)- ファイルならプログラムとして
実行 、ディレクトリならそこに移動 できます。
ファイルの
ファイルのパーミッションは、lsコマンドに'-l'というオプションを
rwxr-x--x
この-
はrwx
すなわち「r-x
で「--x
で「
また、
よく用 いられるコマンド[編集 ]
ここでは、UNIXを
基本 コマンド[編集 ]
cd[編集 ]
cd
は、カレントディレクトリーをcd
は、 change current working directory の
$ cd / $ ls bin dev etc home lib lib64 lost+found media mnt opt postinst proc root run sbin sys tmp usr var $ cd etcd bash: cd: /etcd: No such file or directory $ cd etc $ pwd /etc $ cd $ pwd /home/user1
- カレントディレクトリーをルートディレクトリー(/)に
変更 - ls(1) はディレクトリーにあるファイルを
一覧 表示 するコマンド - (ディレクトリーを
指定 しないとカレントディレクトリーが対象 になります) - etcd にカレントディレクトリーを
変更 しようとした - カレントディレクトリーのルートディレクトリー(/)
直下 には etcd はないので失敗 存在 しないディレクトリにカレントディレクトリーを変 えることは出来 ない
- etc にカレントディレクトリーを
変更 しようとした- これは
成功 してノーリアクション
- これは
- pwd(1) はカレントディレクトリーを
絶対 パスで表示 する - ルートディレクトリー(/)
直下 の etc なので /etc - cd にディレクトリーを
指定 せず実行 すると - カレントディレクトリーは
- ホームディレクトリーとなる
man[編集 ]
manは、UNIXで
このコマンドは、
$ man コマンド
名
として
$ man
番号 コマンド名
のように
$ man -a コマンド
名
のようにコマンドを
例 $ man man
- manについて
説明 したmanページを読 む。
$ man ls
- lsのmanページを
読 む。
manがmanページを
whatis[編集 ]
whatis は、コマンド
形式 $ whatis
文字 列 例 $ whatis tty tty(1) - return user's terminal name IO::Tty(3) - Low-level allocate a pseudo-Tty, import constants. IO::Tty::Constant(3) - Terminal Constants (autogenerated) tty(4) - general terminal interface
info[編集 ]
info は、GNU で
$ info ノード
名
として
bash のドキュメントが
$ info bash
とします。
infoは、texinfoプログラムによって
- スペースバー --
現在 のツリーノード内 を下 へスクロールし、現在 のノードの下 にいる場合 は、現在 のドキュメントの次 のノードへ移動 します、このことで情報 ファイルの内容 を順次 読 み進 めることができます。 - バックスペースキー --
反対 方向 に移動 します。 - ] --
現在 の文書 内 の次 のノードに移動 します。 - [ --
現在 の文書 で前 のノードに移動 します。 - n --
現在 のノードと同 じレベルの次 のノードに移動 します。 - p --
現在 のノードと同 じ階層 にある前 のノードに移動 します。 - u --
現在 のノードの親 ノードに行 く。 - l --
最後 に訪 れたノードに移動 します。 - q -- info を
終了 する - カーソルをリンク(アスタリスクで
始 まる単語 )の上 に移動 し、Enterキーを押 すと、そのリンク先 に飛 ぶ。 - タブ -- カーソルを
次 の最 も近 いリンクに移動 します。
date[編集 ]
dateは、
例 $ date
現在 の日付 時刻 を返 します。$ sudo date
日付 - システムの
日付 時刻 を設定 します。- スーパーユーザー
権限 が必要 で、非 可逆 な行為 です。 - また、
現在 はネットワークで繋 げないでUNIXシステムを運用 するケースは稀 で、ntpで時刻 同期 管理 するので、システムのクロックに手動 介入 する必要 はありません。
- スーパーユーザー
dateも、システムのロケールによって、
$ LC_ALL=en date Thu Jun 1 19:08:03 JST 2006 $ LC_ALL=ja_JP.UTF-8 date
木 6 1 19:08:07 JST 2006- ここでは、ロケールを
英語 にした場合 と日本語 にした場合 を示 しています。ロケールについては後述 。
su[編集 ]
suは、
例 $ su
管理 者 権限 を持 ったシェルを起動 します。$ su -
管理 者 権限 を持 ったシェルを起動 すると同時 に、環境 変数 をrootの変数 で置 き換 えます。
sudo[編集 ]
sudoのあとに
例 $ sudo apt update
テキスト関係 [編集 ]
テキスト閲覧 [編集 ]
まず、
ファイルを
- more
- less
- cat
などのコマンドがあります。
これらのコマンドの
$ more sample.txt
- のように
入力 します。なお、これはファイルsample.txtの内容 を表示 するコマンドです。
つまり
more ファイル名
の
more[編集 ]
moreでは、
less[編集 ]
$ less sample.txt
- sample.txtの
内容 を表示 します。
- エンターキーを
押 すと、続 きが表示 されます。 - マウスの
中央 ホイールによるスクロールでも、テキストの続 きが表示 されます。
また、
例 $ ls /etc | less
- lessは
他 のコマンドと比 べると大 きいファイルで、内容 も豊富 です。詳細 な内容 は、manを参照 すること。
cat[編集 ]
ファイルの
$ cat sample.txt sample2.txt
sample.txtとbbbの
- catコマンドでは、テキスト
出力 はファイルの最後 まで中断 することなく行 われます。 - コンソールには
表示 画面 が残 されていますが、すでにシャルのコマンドの受付 に戻 っており、cat は終了 しています。
テキスト操作 [編集 ]
tr[編集 ]
trは、ファイル
$ grep abc /usr/share/dict/words abcoulomb Babcock crabcatcher dabchick $ grep abc /usr/share/dict/words | tr abc xyz xyzoulomy Bxyzozk zrxyzxtzher dxyzhizk
- ファイル /usr/share/dict/words から abc を
含 む行 を表示 - その
結果 を、パイプラインを通 して受取 り a -> x, b -> y, c -> z にそれぞれ1文字 ずつ置 き換 えて表示
cut[編集 ]
cutはファイル
$ grep ^cats /usr/share/dict/words catskin catstep catstick catstitch catstitcher catstone catsup $ grep ^cats /usr/share/dict/words | cut -c 5 k t t t t t
- ファイル /usr/share/dict/words から
先頭 が cats ではじまる行 を表示 - その
結果 を、パイプラインを通 して受取 り先頭 から5文字 目 を表示
$ cat sample.txt a b c d e f g h $ cut -f 2 -d ' ' sample.txt b f
- deimitor を ’ ’ として、2 field
目 を表示
paste[編集 ]
ファイル操作 [編集 ]
ls[編集 ]
ls
とだけコマンド
$ ls ディレクトリ
名 - と
入力 した場合 、そのディレクトリが存在 するならば、そのディレクトリ名 の中身 が表示 されます。
例 $ cd ~/p5 $ ls defer.pl finally.pl hello.pl oct.pl pt.pl ver.pl
例 $ ls Go 3sieve.go ebnf.txt geocoord.go hello prime.go std.rb 7.go fib.rb ggg.go httpclient.go prime.rb std.txt CVS fibo go2.go info.go recfc.go stdlib.txt anon.go fibo.arm.objdump go3.go isprime sieve.go stringer clink fibo.go go4.go isprime.go sieve2.go stringer.go conv.go fibo.o go5.go lifegame.go sieveX.go ticker.go create.go fibo.objdump gogo.go lifegame.go.000 sig.go vro.go dac ftes.txt goroutine.go ois3.go spec vro.json digestauth generics.go gxx.go osos.go spec-ebnf.rb websv.go $ ls NoExist ls: NoExist: No such file or directory
- ls に
1 つ以上 の単語 を伴 って実行 すると- ファイルがあれば、その
名前 を表示 します。 - ディレクトリがあれば、その
中 のファイルの一覧 を表示 します。 - ファイルもディレクトリも
存在 しない場合 は、その旨 が標準 エラー出力 に出力 されます。
- ファイルがあれば、その
lsにはいくつものオプションがあるが、よく
-a は、ディレクトリ
-Rオプションは、ディレクトリを
例 $ ls
- カレントディレクトリ
内 のファイルとディレクトリを表示 します。
$ ls /bin
- /binにあるファイルを
表示 します。/binには、重要 なコマンドが保存 されています。 - ls、
後 に述 べるcp、mkdirなども通常 ここに含 まれています。一方 、manや通常 のアプリケーションは/usr/binに含 まれています。
このようなファイルシステムの
$ ls -R /usr/include
- /usr/include
内 に含 まれるファイルを再帰 的 に全 て表示 します。 - /usr/include
内 にはC言語 などを用 いる際 に必要 になるヘッダファイルが含 まれています。 - システムに
必要 なヘッダファイルが存在 するかを調 べるために、このディレクトリを調 べることが多 い。
cp[編集 ]
cpは、ファイルをコピーするコマンドです。cpの
$ cp コピーされるファイル
名 コピー先 のファイル名
となります。
cpもいくつかのオプションを
しかし、システムを
例 $ cp -i sample.txt documents/
カレントディレクトリ
その他 [編集 ]
mv[編集 ]
mvは、cpと
$ mv
移動 元 のファイル名 移動 先 のファイル名
mvにも-iと-fのオプションがあります。これらの
rm[編集 ]
rmは、
$ rm
消去 するファイル名
として
rmもcpやmvとおなじ-iと-fコマンドを
rmのよくある
$ rm -R .*
とすることです。.*は、..(
mkdir[編集 ]
mkdir
は、、ディレクトリを
形式 $ mkdir
作成 するディレクトリ名
rmdir[編集 ]
rmdir
は、、ディレクトリを
形式 $ rmdir
消去 するディレクトリ名 - rmdirは、
指定 されたディレクトリが空 であるときのみディレクトリを消去 します。 中 にファイルやディレクトリが入 っているディレクトリを消去 するときには、前述 の$ rm -r ディレクトリ
名 - を
用 います。
pwd[編集 ]
pwd(1)はカレントディレクトリの
例 $ pwd /home/user1/work
- (カレントディレクトリが /home/user1/work であった
場合 )
touch[編集 ]
touch
は、、
$ touch sample.txt sample2.txt sample3.txt
- sample.txt sample2.txt sample3.txt それぞれに、「
存在 しなければ0バイトのファイルを作 り、存在 したら内容 は変 えずタイムスタンプだけ更新 」という処理 を行 います。
ln[編集 ]
ファイルのハードリンクあるいはシンボリックリンクを
リンクは、Unixのファイルシステムに
例 $ mkdir ln.d $ cd ln.d/ $ echo abc > file.txt $ cat file.txt abc $ ln file.txt linked.txt $ echo uvw >> file.txt $ cat linked.txt abc uvw $ echo xyz >> linked.txt $ cat file.txt abc uvw xyz $ ls -i 2654371 file.txt 2654371 linked.txt
正規 表現 [編集 ]
grep[編集 ]
grep
は、ある
$ grep aaa f.txt
のように
aaabbbcccddd eeefffggghhh
なら、
aaabbbcccddd
が
aaabbbcccddd
が
find[編集 ]
find
は、ディレクトリを
$ find .
$ find . -name f.txt
カレントディレクトリ
$ find . -name 'f*.txt'
は、fではじまり.txtで
シェルスクリプト[編集 ]
シェルスクリプトの
最初 のシェルスクリプト[編集 ]
シェルスクリプトとは
#!/bin/bash /bin/echo /usr/bin/uname
たとえば、テキストエディタの
このファイルを
chmod +x test.sh
./test.sh
とコマンドすればいいです。
なお、
1
プロセス管理 [編集 ]
UNIXでは
&[編集 ]
&は、コマンドの
例 $ xterm &
X Window Systemの
シグナル[編集 ]
- HUP
制御 端 末 が閉 じられたときにプロセスに送信 されるシグナルです。もともとは、シリアルラインドロップをプロセスを通知 するように設計 されていました。- INT
- INTは、interrupt(
割 り込 み)の意味 を持 つシグナルで、プロセスを中断 させます。 - TERM
- TERMは、terminate(
終了 )の意味 を持 つシグナルで、プロセスを終了 させます。 - KILL
強制 終了
シグナルに
- sig.c
#include <signal.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> void sigint() { puts("catch SIGINT"); fflush(stdout); exit(1); } int main() { signal(SIGINT, sigint); while (1) sleep(5); }
$ ./a.out
$ killall -INT a.out
とすると、./a.out をcatch SIGINT
が
ps[編集 ]
ps
は、
$ ps
$ ps ax
kill[編集 ]
kill
は、、
$ kill 3456
プロセスID3456に、TERMシグナルを
$ kill -INT 3456
プロセスID3456に、INTシグナルを
注意
bashには、ビルトインコマンドの1つとしてkillがあります。このため、killが
例 $ kill %1
はjobsで
$ /bin/kill %1
は、
kill: illegal process id: %1
- を
返 します。 - これは %1 は、shell のジョブコントロール
機能 の管理 番号 で、外部 コマンドである /bin/kill の預 かり知 らないところであるためです。
killall[編集 ]
psmiscに
$ killall a.out
a.outは、(おそらく)Cプログラムの
jobs[編集 ]
シェルが、jobs
は、シェルのbuiltinコマンドで、bashを
例 $ jobs
top[編集 ]
top
は、、
例 $ top
デバイスファイル[編集 ]
デバイスファイルはコンピュータに
また、デバイスファイルはたいてい/dev
デバイスファイルを
エディタ[編集 ]
vi[編集 ]
viは
Xウィンドウシステム[編集 ]
XウィンドウシステムはUNIX
Linuxとは[編集 ]
Linuxとは、1991
GNUについて[編集 ]
Linuxはカーネルしかなく、Linuxのみで
Linuxの種類 ディストリビューション[編集 ]
Linux ディストリビューション[a](しばしばディストロと
ディストリビューションの分類 [編集 ]
ディストリビューションの
- Red Hat
系 - RPMと
呼 ばれるパッケージ管理 システムを持 っています。Red Hat Enterprise Linux、Fedora、CentOS など。 - Debian
系 - dpkg という RPM
形式 よりも強力 なパッケージ管理 システムを持 っています。Debian GNU/Linux や KNOPPIX、Ubuntu、Linux Mint など。 - Slackware
系 - Red Hat
系 のような固有 のパッケージ管理 システムは無 く、ユーザが自分 でソフトウェアや、そのソースファイルを管理 します。自由 度 が高 いが、知識 が必要 。Slackware や Plamo Linux。
主 なディストリビューション[編集 ]
よく
- Red Hat Enterprise Linux
企業 におけるサーバシステムの構築 やクライアント利用 のためのディストリビューション。RHELと略 されます。- CentOS stream
- Fedoraでの
上流 開発 とRHELでの下流 開発 の間 に位置 する中流 Linuxディストリビューションです。 - Fedora(
旧 Redhat Linux) 将来 のRHELに組 み込 まれる予定 の新 機能 などをテストしたりするための、上流 Linuxディストリビューションです。- Debian GNU/Linux Debian Project
非 企業 のコミュニティ主体 のOSのひとつです。最 古参 のディストリビューションの一 つで、現在 開発 されているLinuxディストリビューションの中 でSlackwareの次 に昔 からあるLinuxディストリビューション。独自 のパッケージ管理 システム deb を採用 しています。インストールが難 しい、と言 われていたが、Debian-Installer Project によって改善 された。Debian LiveにあるインストーラーはCent OSなどと同 じインストーラーを使 っており、Debianインストーラーより更 に使 いやすくなっています。また、UbuntuやMint Linuxのような主要 なOSのベースとなっています。- Ubuntu
- Debianから
派生 したディストリビューションであるが、Canonicalという企業 が開発 を主導 しています。デスクトップでの使用 をメインにしており、現在 では人気 の高 いディストリビューション。 - SUSE Linux (
現 openSUSE) 欧米 で人気 が高 く、歴史 が古 い。先進 的 ではあるが安定 的 でないカーネルを搭載 するのを避 け、少 し枯 れてはいるが安定 性 の高 いソフトウェアを採用 しています。また、Xgl、AppArmor等 の開発 でも知 られます(一部 openSUSEより引用 )。- Gentoo Linux Gentoo Linux Users Group Japan
- FreeBSD の ports に
似 た独自 のパッケージ管理 システム portage を採用 し、ソースコードからのビルドを基本 とするため、さまざまなシステムを思 った通 りに構築 できます。このため、メタ・ディストリビューションとも呼 ばれています。Google Chrome OSは当初 Ubuntuをベースに開発 されていたが、2010年 2月 に portage を採用 するため、ベースOSをUbuntuからGentooに変更 した[6]。
Linuxで動作 するソフト[編集 ]
- GNU Emacs, vi(Vim) テキストエディター
- Mozilla Firefox Webブラウザ
- Mozilla Thunderbird メーラー(メールクライアント)・RSSリーダー
- Opera Webブラウザ
統合 (Webブラウザ・メール・RSS・IRC) - OpenOffice.org オフィス
統合 (ワープロ、表 計算 、プレゼンテーションソフトなど) - GIMP
画像 処理 - LaTeX
組版 - Samba
- Apache WWWサーバ
- BIND DNSサーバ
- xmgr
- GCC コンパイラ
- MATLAB
- Mathematica
数学 処理 - Adobe Acrobat
- Xpdf
X Window System[編集 ]
UNIX
脚註 [編集 ]
- ^ Unixのファイルシステムは、VMS,CP/M,MS-DOS,Windowsと
異 なり、「ドライブ」はなく、ルートファイルシステムの下位 の階層 に別 のファイルシステムをマウントすることで、ユーザーには単一 のファイルシステムに見 えるようにします。ただし、例 えばファイルシステムを跨 いでハードリンクを張 ることは出来 ないなど、全 くユーザーが意識 しないで済 むわけではありません。 - ^ FHS(Filesystem Hierarchy Standard)
以前 の Unixでは、実際 に/
が、システム管理 者 root のホームディレクトリでした。 - ^ Windowsではログオンといいますが、
概念 は同 じです。 - ^ chdir(2)
- ^ Linux From Scratch という、すべてのコンポーネントを
手動 で構築 して、動作 する Linux システムをインストールする方法 もあります。これには当然 ながら、コンパイル済 みのLinuxディストリビューションをインストールするよりも長 いプロセスが必要 です。Linux From Scratchのサイトによると、この方法 の利点 は、コンパクトで柔軟 かつ安全 なシステムと、Linuxベースのオペレーティングシステムの内部 動作 のより深 い理解 が獲得 できることです。 - ^ “Chrome OS、クロスコンパイルにGentooのPortage
採用 ”. ITmedia (2010年 2月 18日 ). 2010年 2月 20日 時点 のオリジナルよりアーカイブ。2022年 6月 27日 閲覧 。