一般的で実用的なシェル操作
1.システムシェルのサポートを表示する
# cat /etc/shells
2.一般的なオペレーティングシステムのデフォルトのシェルを表示する
2.1サンプル1
# echo $SHELL
2.2サンプル2
# grep root /etc/passwd
3. vi / emacsに慣れているユーザーがvimを使用するのに便利
# echo "alias vi='vim'" >> /etc/profile
# source /etc/profile
4.シェルスクリプトの最初の行の宣言
#!/bin/bash
シェルスクリプトの最初の行は、どのプログラム(インタープリター)がスクリプトのコンテンツを実行するか、および対応するインタープリターの場所を示します。上部の最初の行でない場合は、スクリプトのコメント行です。
スクリプトファイルが#!
この行でない場合、デフォルトでシェルの実装になり、現在の(つまり、$ SHELL環境変数)でこのスクリプトを説明します。
5.bashとshの違い
[root@VM_153_220_centos ~]# ll /bin/sh
lrwxrwxrwx 1 root root 4 Sep 21 21:29 /bin/sh -> bash
[root@VM_153_220_centos ~]# ll /bin/bash
-rwxr-xr-x 1 root root 964544 Apr 11 2018 /bin/bash
初期のbashはshとは異なり、cshとkshの機能も含まれていました。sh
ソフトリンクはbash、株式の次の番号、戦いで使用するスクリプトの先頭#!/bin/bash
と#!/bin/sh
差がないが、より標準化さ文言は、スクリプトの先頭で使用されています#!/bin/bash
たとえば、Linuxでのいくつかの組み込みスクリプトの先頭での宣言
[root@VM_153_220_centos ~]# head -1 /etc/init.d/mysql
#!/bin/sh
[root@VM_153_220_centos ~]# head -1 /bin/cd
#!/bin/sh
[root@VM_153_220_centos ~]# head -1 /etc/init.d/network
#! /bin/bash
6.システムのbashバージョンを確認します
[root@VM_153_220_centos ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@VM_153_220_centos ~]# bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
7.システムに脆弱性があるかどうかを確認します
# env x='() { :;}; echo be careful' bash -c "echo this is a test"
this is a test
次の2行が返された場合、古いバージョンのbashには多くの脆弱性があるため、できるだけ早くbashをアップグレードすることを意味します。
be careful
this is a test
8.bashメソッドをアップグレードします
# yum -y update bash
# rpm -qa bash
bash-4.2.46-30.el7.x86_64
9.一般的なスクリプトの始まり
#!/bin/sh
#!/bin/bash
#!/usr/bin/awk
#!/bin/sed
#!/usr/bin/tcl
#!/usr/bin/expect
#!/usr/bin/perl
#!/usr/bin/env python
異なる言語のスクリプトは、通常、それに応じて追加する必要があります开头解释器语言标志
。CentOSおよびRedHatLinuxのデフォルトのシェルはbashであるためです。したがって、シェルスクリプトを作成するとき#!/bin/bash
は、bashする意思がないことを説明しました。
スクリプトの最初の行でインタプリタが指定されていない場合は、対応するインタプリタを使用してスクリプトを実行する必要があります。この方法でのみ、スクリプトを正常に実行できます。例えば:
python test.py
実行を使用するPythonスクリプトtest.py
bash test.sh
実行するために使用するシェルスクリプトtest.sh
- …
10.シェルスクリプト実行の複数の方法
- bashスクリプト名またはshスクリプト名
- path / script-nameまたは./script-name(実行可能ファイル)
- ソーススクリプト名または.script-name
- sh <script-nameまたはcatscript-name | sh