IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

WSLで始めるUbuntu

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第42回 bashの組み込みコマンドついて知ろう(10) (宮崎悟) 2022年4月

今回も前回と同じく、bashの組み込みコマンドについて説明します。

times

シェルとシェルから実行されるプロセスの、累積ユーザ時間およびシステム時間を表示します。 戻り値のステータスは0です。

type [-aftpP] name [name ...]

オプションなしで、各nameをコマンド名として使用した場合に、どのように解釈されるかを示します。

  • -t -t オプションが指定された場合、nameがエイリアス、シェル予約語、関数、組み込み関数、ファイルの場合、それぞれ alias、keyword、function、builtin、file のいずれかの文字列を表示します。 name が見つからない場合は、何も表示されず、終了ステータスとして 0以外を返します。

  • -p、-P -p オプションが指定された場合、typeはコマンド名としてnameが指定された場合に実行されるファイル名を返します。ただし、type -t name が file を返さない場合は何も返しません。 -P オプションは、type -t nameがファイルを返さない場合でも、各nameに対してPATH検索を強制します。コマンドがハッシュ化されている場合、-p と -P はハッシュ化された値を表示しますが、これは必ずしも PATH で最初に表示されるファイルとは限りません。

  • -a -aオプションが使用された場合、typeはnameという名前の実行可能ファイルを含むすべての場所を表示します。これは、-pオプションが使用されていない場合に限り、エイリアスや関数も含まれます。-a オプションを使用する場合、ハッシュ化されたコマンドの表は参照されません。

  • -f

    -f オプションは、コマンド組み込み関数と同様に、シェル関数検索を抑制します。typeは,引数がすべて見つかれば真,見つからなければ偽を返します。

$ type ls
ls は `ls --color=auto' のエイリアスです
$ type -t ls
alias
# -p では何も返しませんが、-Pでは強制的にファイル名を検索します
$ type -p ls
$ type -P ls
/usr/bin/ls
$ type -a ls
ls は `ls --color=auto' のエイリアスです
ls は /usr/bin/ls です
ls は /bin/ls です
ulimit [-HSabcdefiklmnpqrstuvxPT [limit]]

シェルとシェルによって起動されるプロセスが利用できる、リソースを制御します。 -H および -S オプションは、指定されたリソースに対してハードリミットまたはソフトリミットを設定することを指定します。 ハードリミットは一度設定されると、非 root ユーザーはそれを増やすことができません。ソフトリミットは、ハードリミットの値まで増加できます。「-H」と「-S」のどちらも指定しなかった場合、ソフトリミットとハードリミットの両方が設定されます。 limitの値には、リソースに指定された単位の数値、または特別な値であるhard、soft、unlimitedのいずれかを指定します(これらはそれぞれ、現在のハードリミット、現在のソフトリミット、およびリミットなしを意味します)。 limitが省略された場合、-Hオプションが指定されない限り、リソースのソフトリミットの現在値が表示されます。 複数のリソースを指定した場合、値の前にリミット名と単位が表示されます。

その他のオプションは以下のように解釈されます。いくつかはシステム上使用できません。

  • -a 現在のすべての制限値を報告します
  • -b ソケットバッファサイズの最大値
  • -c 生成されるコア (core) ファイルの最大値
  • -d プロセスのデータセグメントの最大値
  • -e スケジュール優先度 ("nice") の最大値
  • -f シェルとその子プロセスが生成できるファイルの最大値
  • -i 保留中シグナルの最大数
  • -k 割り当て可能なkqueueの最大数
  • -l メモリにロック可能な最大値
  • -m 常駐セットサイズ (resident set size) の最大値
  • -n オープンできるファイル記述子の最大値
  • -p 512 バイトブロック単位でのパイプのサイズ
  • -q POSIX メッセージキューの最大バイト数
  • -r リアルタイム・スケジューリングの優先度の最大値
  • -s 最大スタックサイズ
  • -t CPU 時間の最大量 (秒)
  • -u 1 人のユーザが使用できる最大のプロセス数
  • -v そのシェルが使用できる最大の仮想メモリ量
  • -x ファイルロックの最大数
  • -P 擬似端末の最大数
  • -T スレッドの最大数

limitが与えられ、かつ- aオプションが使用されていない場合、limitは指定されたリソースの新しい値になります。 オプションが指定されない場合、-fとみなされます。 ただし、-t は秒単位、-p は512バイトブロック単位、-P、-T、-b、-k、-n、-u は倍率なし、 posixモードの場合は -c と -f は512バイト単位です。 無効なオプションや引数が与えられたり、新しいリミットを設定する際にエラーが発生したりしない限り、0を返します。以下はulimit -aの例です。以下で表示されるオプション以外は、一般ユーザで指定できません。

$ ulimit  -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 257073
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 257073
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
umask [-p] [-S] [mode]

umask(ファイル作成時のマスク)を、mode に設定します。umaskは、デフォルトのパーミションとビット論理積を行った値(644、755 など)を、ファイル作成時のパーミションとします。mode が省略された場合、現在のマスクの値が表示されます。

mode が数字で始まる場合は 8 進数として解釈され,そうでない場合は chmod が受け付けるのと同様のシンボリックモードマスクとして解釈します。 -S オプションを指定すると、マスクをシンボル形式で表示します。-pオプションを与え、modeを省略すると、入力として再利用可能な形式で出力されます。

modeの変更に成功した場合、 mode 引数が与えられなかった場合は 0を返し、そうでない場合は 0以外を返します。

$ umask
0022
$ umask -S
u=rwx,g=rx,o=rx
$ touch file
$ env LC_ALL=C ls -l file
-rw-r--r-- 1 user user 10510 Apr  3 11:49 file
unalias [-a] [name ...]

定義されたエイリアスのリストから各name を削除します。 -a オプションが指定された場合、すべてのエイリアスの定義が削除されます。 与えられた名前が定義されたエイリアスでない限り、0を返します。

unset [-fnv] [name ...]

それぞれのname に対して、対応する変数、関数を削除します。

  • -v name はシェル変数を参照し、その変数が削除されます。読み取り専用の変数は設定解除されません。

  • -f name はシェル関数を参照し、その関数定義を削除します。

  • -n name が nameref 属性を持つ変数である場合、 name は参照する変数ではなく削除されます。-nは、-f オプションが指定された場合には効果がありません。

指定された name の変数がない場合、name を持つ関数はすべて削除されます。 設定されていない変数や関数は、後続のコマンドに渡される環境から削除されます。 CO MP_WORDBREAKS、RANDOM、SECONDS、LINENO、HISTCMD、FUNCNAME、GROUPS、DIRSTACKのいずれかが削除されると、たとえその後にリセットされても、それらの特殊なプロパティは失われます。 name が読み取り専用でない限り、終了ステータスは0です。

終わりに

今回は、bashの組み込みコマンドについて説明を続けます。今回で、この連載を中断します。3年半にわたって、この連載をご覧くださった皆様に感謝します。ありがとうございました。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes