GNU/Linux >> Linux の 問題 >  >> Linux

15 の便利な Bash シェル組み込みコマンド (例付き)

Bash には、シェルに付属するコマンドがいくつかあります (つまり、bash シェル内に組み込まれています)。

組み込みコマンドを実行すると、bash シェルは、他のプログラムを呼び出すことなく、すぐに実行します。

通常、外部コマンドはプロセスをフォークして実行するため、Bash シェルの組み込みコマンドは外部コマンドよりも高速です。

この記事では、いくつかの便利な bash シェル組み込み関数を例とともに確認します。

1. Bash エクスポート コマンドの例

export コマンドは、現在のシェルで実行されているすべての子プロセスの環境に変数または関数をエクスポートするために使用されます。

export varname=value
export -f functionname # exports a function in the current shell.

値を持つ変数または関数をエクスポートします。 「env」コマンドは、すべての環境変数を一覧表示します。次の例では、env がエクスポートされた変数を表示していることがわかります。

$ export country=India

$ env
SESSIONNAME=Console
country=India
_=/usr/bin/env

また、「export -p」コマンドは、現在のシェルでエクスポートされたすべての変数を表示します。

2. Bash eval コマンドの例

eval コマンドは、指定されたすべての引数を結合し、結合された式を評価して実行し、実行されたコマンドの終了ステータスを返します。

$ cat evalex.sh
if [ ! -z $1 ]
then
proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | grep $1"
else
proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu"
fi
eval $proccomm

上記のコード スニペットは、grep コマンドのパターンである引数を受け入れます。これは、CPU 使用率の順にプロセスをリストし、コマンドラインで指定された特定のパターンを grep します。

注: この記事は、進行中の Bash チュートリアル シリーズの一部です。

3. Bash ハッシュ コマンドの例

hash コマンドは、使用されたコマンドのパス名を持つハッシュ テーブルを維持します。コマンドを実行すると、変数 $PATH でコマンドが検索されます。
ただし、コマンドがハッシュ テーブルで使用可能な場合は、そこから取得して実行します。ハッシュ テーブルは、そのシェルでこれまでに使用された各コマンドのヒット数を保持します。

$ hash
hits    command
   1    /usr/bin/cat
   2    /usr/bin/ps
   4    /usr/bin/ls

-d オプションを使用してハッシュ テーブルから特定のコマンドを削除し、完全なハッシュ テーブルをリセットする -r オプションを使用できます。

$ hash -d cat
$ hash
hits    command
   2    /usr/bin/ps
   4    /usr/bin/ls

4. Bash pwd コマンドの例

pwd は、現在の作業ディレクトリを出力するためのシェル組み込みコマンドです。基本的に、組み込み変数 ${PWD}

の値を返します
$pwd
/home/sasikala/bash/exercises

$echo $PWD
/home/sasikala/bash/exercises

5. Bash readonly コマンドの例

readonly コマンドは、変数または関数を読み取り専用としてマークするために使用されます。これ以上変更することはできません。

$ cat readonly_ex.sh
#!/bin/bash
# Restricting an array as a readonly
readonly -a shells=("ksh" "bash" "sh" "csh" );
echo ${#shells[@]}

# Trying to  modify an array, it throws an error
shells[0]="gnu-bash"

echo ${shells[@]}

$ ./readonly_ex.sh
4
readonly_ex.sh: line 9: shells: readonly variable

6. Bash shift コマンドの例

shift コマンドは、位置パラメーターを N 回左にシフトするために使用され、シフト後にそれに応じて変数の名前を変更します。

$ cat shift.sh
#! /bin/bash

while [ $# -gt 0 ]
do
        case "$1" in

        -l) echo "List command"
            ls
    	    shift
            ;;
	-p) echo "Process command"
    	    ps -a
    	    shift
    	    ;;
	-t) echo "Hash Table command"
    	    hash
    	    shift
    	    ;;
	-h) echo "Help command"
    	    help
    	    shift
	    ;;
	esac
done

$./shift.sh -l -t
List command analysis  break  testing t1.sh temp Hash Table command
hits    command
   1    /usr/bin/ls

7. Bash test コマンドの例

test コマンドは条件式を評価し、評価に基づいて 0 または 1 を返します。テスト演算子の詳細については、bash のマニュアル ページを参照してください。

#! /bin/bash

if test -z $1
then
        echo "The positional parameter \$1 is empty"
fi

8. Bash getopts コマンドの例

getopts コマンドは、指定されたコマンド ライン引数を解析するために使用されます。オプションのルールを定義できます。つまり、引数を受け入れるオプションと受け入れないオプションです。 getopts コマンドでは、オプションの後にコロンが続く場合、そのオプションの引数が必要です。

getopts は、それぞれ次のパラメーターとオプション引数のインデックスを持つ 2 つの変数 $OPTIND と $OPTARG を提供します。

$ cat options.sh
#! /bin/bash

while getopts :h:r:l: OPTION
do
         case $OPTION in
          h) echo "help of $OPTARG"
             help "$OPTARG"
             ;;
          r) echo "Going to remove a file $OPTARG"
             rm -f "$OPTARG"
            ;;
         esac
done

$ ./options.sh -h jobs
help of jobs
jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Lists the active jobs.  The -l option lists process id's in addition
    to the normal information; the -p option lists process id's only.

9. Bash ログアウト コマンド

現在のシェルを終了するために使用される Logout ビルトイン。

10. Bash umask コマンドの例

umask コマンドは、現在のプロセスのファイル モード作成マスクを設定します。ユーザーがファイルを作成するとき、デフォルトのパーミッションは umask に設定された値に基づきます。ファイルのデフォルトのパーミッションは 666 で、ユーザーがファイルを作成するときに umask ビットでマスクされます。

詳細については、記事「ファイルとディレクトリのアクセス許可」を参照してください。

ユーザーがファイルを作成すると、666 は 022 でマスクされるため、デフォルトのファイル許可は 644 になります。

$ umask
0022

$ > temporary

$ ls -l temporary
-rw-r--r-- 1 root root 4 Jul 26 07:48 temporary

11. Bash set コマンドの例

set は、シェルの内部変数を設定および変更するために使用されるシェル組み込みコマンドです。引数なしの set コマンドは、すべての変数とその値を一覧表示します。 set コマンドは、位置パラメーターの値を設定するためにも使用されます。

$ set +o history # To disable the history storing.
+o disables the given options.

$ set -o history
-o enables the history

$ cat set.sh
var="Welcome to thegeekstuff"
set -- $var
echo "\$1=" $1
echo "\$2=" $2
echo "\$3=" $3

$ ./set.sh
$1=Welcome
$2=to
$3=thegeekstuff

12. Bash unset コマンドの例

unset ビルトインは、シェル変数を null に設定するために使用されます。 unset は、配列の要素を削除したり、
配列全体を削除したりするためにも使用されます。

Bash 配列の詳細については、以前の記事 15 Bash 配列操作を参照してください

$ cat unset.sh
#!/bin/bash
#Assign values and print it
var="welcome to thegeekstuff"
echo $var

#unset the variable
unset var
echo $var

$ ./unset.sh
welcome to thegeekstuff

上記の例では、変数「var」を設定解除すると、null 文字列が割り当てられます。

13. Bash let コマンドの例

let コマンドは、シェル変数で算術演算を実行するために使用されます。

$ cat arith.sh
#! /bin/bash

let arg1=12
let arg2=11

let add=$arg1+$arg2
let sub=$arg1-$arg2
let mul=$arg1*$arg2
let div=$arg1/$arg2
echo $add $sub $mul $div

$ ./arith.sh
23 1 132 1

14. Bash shopt コマンドの例

組み込みコマンド shopt は、シェル オプションの設定と設定解除に使用されます。このコマンドを使用すると、シェル インテリジェンスを利用できます。

$cat shopt.sh
#! /bin/bash

## Before enabling xpg_echo
echo "WELCOME\n"
echo "GEEKSTUF\n"
shopt -s  xpg_echo
## After enabling xpg_echo
echo "WELCOME\n"
echo "GEEKSTUF\n"

# Before disabling aliases
alias l.='ls -l .'
l.

# After disabling aliases
shopt -u expand_aliases
l.

$ ./shopt.sh
WELCOME\n
GEEKSTUF\n
WELCOME

GEEKSTUF

total 3300
-rw------- 1 root root    1112 Jan 23  2009 anaconda-ks.cfg
-r-xr-xr-x 1 root root 3252304 Jul  1 08:25 backup
drwxr-xr-x 2 root root    4096 Jan 26  2009 Desktop
shopt.sh: line 17: l.: command not found

xpg_echo オプションを有効にする前は、echo ステートメントはエスケープ シーケンスを展開しませんでした。 「私」現在のディレクトリの ls -l にエイリアスされます。シェルで expand_aliases オプションを無効にした後、エイリアスが展開されず、エラー l.コマンドが見つかりません。

15. Bash printf コマンドの例

C 言語の printf と同様に、bash 組み込みの printf を使用して印刷操作をフォーマットします。

例 13 では、スクリプトは 2 つの入力に対して算術演算を実行します。このスクリプトでは、echo ステートメントの代わりに printf ステートメントを使用して、以下に示すように書式設定された出力を印刷できます。

arith.sh で、echo ステートメントをこの printf ステートメントに置き換えます。

printf "Addition=%d\nSubtraction=%d\nMultiplication=%d\nDivision=%f\n" $add $sub $mul $div

$ ./arith.sh
Addition=23
Subtraction=1
Multiplication=132
Division=1.000000

Linux
  1. Bashの制御演算子と組み合わせたコマンド

  2. 例を含むNohupコマンド

  3. Bash の「test」コマンドでの「&&」と「&」の比較

  1. 例を使用したBash待機コマンド

  2. 例を含むwcLinuxコマンド

  3. 実際の例を含む Bash シェルの終了ステータスのチュートリアル

  1. 例を使用したBashヒアドキュメントチュートリアル

  2. LinuxのNetstatコマンド-例を含む28個のコマンド

  3. 17Linuxでの実用的な例を含む便利なtarコマンド