ホームページ  >  記事  >  運用・保守  >  シェルの特殊文字の概要

シェルの特殊文字の概要

巴扎黑
巴扎黑オリジナル
2017-08-15 15:55:381909ブラウズ

この記事では、主にシェルの特殊文字に関する情報をまとめています。この記事には、&、#、! という文字が含まれています。 、$、大なり記号、一重引用符、二重引用符などの一連の特殊文字の使用法が、サンプル コードを通じて詳細に紹介されているため、学習や仕事に必要な学習に役立ちます。以下をご覧ください。

はじめに

ご存知のとおり、シェルは Unix のようなオペレーティング システム用のコマンド パーサーであり、ユーザーが入力した一連のコマンドを解釈して実行するために使用されます。これは DOS でのコマンドに似ています。 Windows では cmd.exe 以降。同時に、シェルはプログラミング言語でもあります。コマンド解釈型スクリプト言語として、ユーザーが入力したコマンドを対話的に解釈して実行するか、プログラミング言語として一連のプリセット コマンドを自動的に解釈して実行します。また、さまざまな環境変数を事前定義し、キーワードや特殊文字の一部の意味を保持します。 、ループや分岐判断など、高級言語でのみ利用できる制御構造を多数提供しています。

この記事では、シェル特殊文字の使用法に関する関連コンテンツを紹介します。早速、詳細な概要を見てみましょう:

1. 継続的に実行されるコマンド

# ifdown eth0;ifup eth0

2, | 正規表現でパイプ

または

# echo "ooooee" |egrep '(oo|ee)'{2} 表示匹配 oooo 或者 eeee 的字符

前のコマンドの標準出力は、次のコマンドの標準入力として使用されます


# ifconfig|grep eth0 表示ifconfig查出来的信息然后过滤出eth0的这一行

3、&

コマンドをバックグラウンドで実行します

# mysqld_safe --user=mysql & 将MySQL放到后台启动

標準出力と標準エラー出力を表します


# ifconfig &>/dev/null 将ifconfig执行得到的结果输出到/dev/null里面

4, &&

前のコマンドは値が 0 の場合にのみ実行します。 次のコマンド

# ls && echo "ok"

5, ||

次のコマンドは、前のコマンドの戻り値が 0 以外の場合にのみ実行されます。

# lls || echo "ok"

6, #ポンド記号

#はコメントを表します
$#は位置パラメータの数を表します


# echo $#
0

${#変数名}の長さを表します変数


# a='hello'
# echo ${#a}
5

${#変数名[@]}は配列の数


# a=(1 2 3)
# echo ${#a[@]}
3

7,!を表します。感嘆符

はコマンドまたは条件式の戻り値を反転します

# if ! [ 1<2 ]; then echo &#39;ok&#39;; else echo &#39;no&#39;; fi
ok

歴史的なコマンドを実行します


# history 
1 ls
2 tail test1.txt
3 mysql -uroot -p123
4 ls /tmp/
5 cd /tmp/
[root@localhost ~]# !994
ls /tmp/
account.sql data.sql mysql.sock t1.txt t2.txt

viまたはftpで外部シェルコマンドを実行します


例:でvim 、コマンドを実行したい場合は、最後の行モードで入力するだけです。実行するコマンドを感嘆符の後に追加します


変数の間接的な適用


例: ${!a} ---- bの値を間接的に取得します


8、$ドル記号${!a} ---- 间接取b 的值

8、$ 美元符号

取变量的值


# a=10
# echo $a
10

正则表达式表示行尾


egrep &#39;:$&#39; /etc/inittab 
egrep ‘^hello$&#39; file

9、> 大于号

输出重定向


echo &#39;123&#39; >test.txt 表示将123 输入到文件test.txt中 条件测试中的大于号

11、93e876018ab65e284346ddee524cced3>

输出重定向追加 - 例如:echo "123" >> test.txt

変数の値を取得します

# passwd <<end
> 123
> 123
> end

正規表現は行末を表します


tar -cvf - /home | tar -xvf -


9、>記号より大きい


出力リダイレクト

egrep ‘^hello$&#39; file


11, ca6254097482740c7d9caf6401f29de4>🎜🎜🎜🎜🎜 出力リダイレクトの追加 - 例: echo "123" >> .txt file test.txt、🎜🎜🎜🎜🎜14、&lt;&lt;ユーザー root の。 🎜🎜🎜🎜🎜15. - 算術演算のマイナス記号 🎜🎜🎜🎜🎜 例: 10-2🎜🎜🎜 コマンドのオプション - 例: ls -l🎜🎜🎜最後の作業ディレクトリ - 例: cd -🎜🎜🎜ワイルドカードと正規表現は範囲を表します - 例: [a-z]🎜🎜🎜🎜🎜rrreee🎜は出力ストリームまたは入力ストリームを表します🎜🎜🎜前の出力はパイプを通じて後続のコマンドに与えられ、前回の圧縮、その後の解凍🎜🎜🎜🎜🎜16、'' 一重引用符🎜🎜🎜🎜

解决变量赋值空格的问题

例如:a='1 2'

阻止shell替换

17、"" 双引号

解决变量赋值空格的问题

例如:a="1 2"

阻止shell部分字符替换,对$、!等无效

18、`` 反引号 相当于 $()

命令行替换

例如:可以设变量a=`ls`

19、% 百分号

算术运算中的模运算

例如:echo $((100%10)) 就是100除以10的余数为0

vi中替换操作中表示所有行 (末行模式下,替换所有前面加 %)

例如:在末行模式下输入 :% s/D/d 表示将文本中的所有的D替换为d

20、() 单圆括号

子shell中执行命令,会继承父shell的变量

括起数组元素

例如:定义一个数组 a=(1 2 3 4)

21、(()) 双圆括号

算术运算

例如: echo $((10/2)) 结果就是5

整数比较测试

例如: (( 10>2 )) 判断10是否大于2

22、[] 单方括号

通配符和正则中表示匹配括号中的任意一个字符

例如: [abc] 表示匹配abc中的任意一个字符

条件测试表达式

例如: [ -f /etc/passwd ] // 测试是不是文件

数组中下标括号

例如:echo ${a[0]} 表示取数组中下标为0的值

23、[[]] 双方括号

字符串比较测试

例如: [[a=b]] 用来字符串的比较

24、. 英文句点号

正则中表示任意1个字符

例如:a...b 表示 匹配 a和b之间夹三个字符的字符串

当前shell执行脚本命令

例如: ./test.sh 执行当前路径下的shell脚本test.sh

表示当前目录

例如:cd ./bgk 进入当前目录下的bgk目录下

25、{} 大括号

通配符扩展 abc{1,2,3}

正则表达式中表示范围

例如:a{3} 匹配3个 a

for i in {1...10} 循环指定范围

匿名函数{ cmd1;cmd2;cmd3;} &> /dev/null

{ } 里面的命令,是在当前shell执行

注意: { } 第一条命令前面要有空格,后面的命令要有分号

括起变量名 ${abc}a

26、/ 正斜杠

算术运算中的除法

例如:echo $((10/2)) 结果就是5

根目录或路径分割符

例如:cd /usr/local/ 表示路径

27、^

在通配符中表示取反

例如:[^abc] 表示匹配除了abc外的任意一个字符

在正则表达式中表示以什么开头

例如:


egrep ‘^hello$&#39; file

以上がシェルの特殊文字の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。