シェルのbashスクリプトベースの基本機能 - コマンド履歴、コマンドおよびファイルの補完、コマンドエイリアス、一般的に使用されるショートカットキー、入力と出力のリダイレクト、マルチコマンドの実行順序、パイプライン演算子、ワイルドカードおよびその他の特殊記号

バッシュのまず、基本的な特徴

1、コマンド履歴:

我々は、すべてのコマンドは、当社のコンピュータにそれらを保存している、非常にスマートでLinuxを打たれます。限り、我々は直接の歴史を使用してコマンドを入力することができますように、あなたは私が打ったコマンドを見ることができます。

1.1>コマンド履歴はデフォルト1000で保存されている、あなたは、ファイル/ etc /プロファイルを設定することができますし、環境変数を変更します。

コマンド書式:[ルート@ localhostの〜]#履歴[オプション] [ファイルを保存するには、historyコマンド]

  • オプション:
    • -c:履歴消去コマンド、特別な事情がない場合は-cコマンド、明確なhistoryコマンドを使用することはお勧めしません。
    • -w:指定された歴史の中にキャッシュを強制するには、ファイルを保存するためのコマンド。
      書き込み「コマンドは、ファイルの履歴を保存する」場合、デフォルトは次のとおりです。〜/の.bash_history。また、各ユーザーのコマンドの履歴のような、別々に保存されます。root歴史的な生活- >ルート/好きの.bash_history。

歴史との直接コマンドを実行します。

[root@root ~]# history
    1  ls
    2  cd vmware-tools-distrib/;
    3  cd vmware-tools-distrib/
    4  ls
    ... ...

直接の歴史だけでコマンドがキャッシュに保存されている見るために見ることができるコマンド。しかし、我々は、-vi .bash_history-によってだけでなく、履歴キャッシュを履歴フォルダのディレクトリに保存したファイルを開くために行けば。唯一の正常な終了を着陸した後、キャッシュの履歴は、履歴フォルダにファイルを保存するためのコマンドを保存することができるようにします。

[root@root ~]# vi .bash_history

.bash_history保存文件如下:
ls
cd vmware-tools-distrib/;
cd vmware-tools-distrib/
ls
./vmware-install.pl
reboot
etc/shells
ls /etc/shells
shell
shells
vi /etc/shells

-w意味:私は終了する前に、ファイル-.bash_history-コマンド履歴のキャッシュに直接保存します。

[root@root ~]# history -w
[root@root ~]# vi .bash_history

.bash_history保存文件如下:
ls
cd vmware-tools-distrib/;
cd vmware-tools-distrib/
ls
./vmware-install.pl
reboot
etc/shells
ls /etc/shells
shell
shells
vi /etc/shells
cd ~
echo -e "\e[1;3]m abcd \e[0m]"
echo -e "\e[1;3]m abcd \e[30m]"
echo -e "\e[1;3]m abcd \e[0m]"
echo -e "\e[1;31m abcd \e[0m]"
echo -e "\e[1;31m abcd \e[0m"
echo -e "\e[1;35m abcd \e[0m"
gedit
vim hello.sh
chmod 755 hello.sh
cd /sh
".bash_history" 51L, 732C

1.2> Historyコマンドの呼び出し:

  • 前回のhistoryコマンドを呼び出すために下矢印を使用します。
  • 「!N」番目のコマンドを繰り返し行うnが使用します。
  • 使用する「!!」最後のコマンドを繰り返します。
  • 「文字列を!」を使用し開口部への最後のコマンド文字列を繰り返します。

2、コマンドおよびファイル完了

バッシュでは、コマンドおよびファイル終了がいる限り、我々は、コマンドまたはファイルを入力すると、非常に便利で、一般的な機能を使用している、「タブ」キーを押すと、自動的に補完されます。

あなたは「タブ」の文字が複数のコマンドまたはディレクトリが含まれていてもよいことを示す、何の完成を命じるないときにクリックすると、システムを命令する「タブ」キーがすべて表示される文字やディレクトリの先頭に変更されているダブルクリックし、[選択]入力が可能。習慣プレスにゲット「タブ」キー

  • 「タブ」キーコマンドの完了を押してください
[root@root 桌面]# vim /etc/profile
[root@root 桌面]# user
useradd     userformat  userinfo    usermount   userpasswd  
userdel     userhelper  usermod     usernetctl  users       
[root@root 桌面]# useradd 
  • ディレクトリ完了までの「タブ」キーを押します
[root@root 桌面]# vi /usr/l
lib/     lib64/   libexec/ local/   
[root@root 桌面]# vi /usr/local/

3、コマンドエイリアス

エイリアスは、つまり、ペットの名前を命令します。利点の別名がある:あなたの習慣に応じて、サーバが命名されるようにしようとコマンドを使用します。優先順位aliasコマンドは、優先順位の元の順序よりも高くなっています。

コマンドエイリアスを設定します。
コマンドラインを介して定義されたエイリアス、それだけで、エイリアスが消えたら、システムを再起動し、一時的に有効になります。

フォーマットます。[root @ localhost〜]#エイリアス=別名 '元のコマンド'

クエリコマンドエイリアス:

コマンド書式:[ルート@ localhostが〜]#エイリアス

[root@root 桌面]# alias vi='vim'
[root@root 桌面]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
3.1>コマンド実行順序

コマンド実行順序:

  1. 優先:絶対パスまたは相対パスのコマンド実行を行います。
  2. 次の優先順位:エイリアスを実行します。
  3. 総合3:Bashの内部コマンドの実行。
  4. 総合4ピック:リスト$ PATH環境変数で発見コマンドシーケンスの最初の実装を探します。

$ PATH環境変数に印刷。

  • 私は特定のコマンドをノックすると、それは、$ PATH環境の定義によって、このパスで見つけた場合は、そこにlsコマンドを見つけて、コマンドを実行するようになったするだろう。あなたは完全にすべてのパスが見つからない見つけた場合、それが表示されます。このコマンドは、エラーが見つかりません。これは、PATH環境変数の役割です。

  • 最終的な分析では、ここですべてのLinuxのコマンドや実行可能ファイルは、絶対パスを実行するために使用されています。システムは$パッシュ環境変数で流線操作をしなかったため、内部コマンドは、絶対パスを使用しない理由。単純にシェルが2つのだけのヘルプドキュメントを見つけるために、そのようなcdコマンドとしてコマンドwhereisは文書によってコマンドが付属して見つけることができません。

[root@root 桌面]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

コマンドファイルでwhereisはコマンドを表示するにはどのような位置に格納されています。

[root@root 桌面]# whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz

whereisはコマンドで簡単にシェルコマンドに付属の資料を見つけることができません。このようなcdコマンドとして、唯一の2つのヘルプファイルを検索します。

[root@root 桌面]# whereis cd
cd: /usr/share/man/man1p/cd.1p.gz /usr/share/man/man1/cd.1.gz
3.2>永久的なエイリアスを作ります

エイリアスコマンドラインの定義、力への唯一の暫定エントリーは、別名が消えたら、システムを再起動します。あなたが最終的な分析では、長い時間のために有効にするコマンドは、適切なコンフィギュレーションファイルに書き込まれている場合は、例えば、永久rootユーザーがVI =「VIM」を実行したい場合、環境変数を変更すると、ルートにある.bashrcファイルです。

[root@root ~]# vi ./.bashrc


修改.bashrc文件中,alias vi='vim'后保存,这个别名将永久生效:
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vi='vim'
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
~     
3.3>エイリアスを削除します。

コマンド書式:[ルート@ルート〜]#は、una​​lias別名

[root@root ~]# alias 
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

[root@root ~]# unalias vi

[root@root ~]# alias 
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

4、バッシュは、一般的にショートカットを使用しました:

ショートカット 効果
CTRL + A コマンドの先頭にカーソルを移動します。私たちが入力したコマンドが長すぎる場合は、コマンドラインの先頭にカーソルを移動しようとすると、使用することです。
CTRL + E コマンドラインの末尾にカーソルを移動します。
CTRL + C 現在のコマンドを終了することを強制。
CTRL + L 画面、明確なコマンドと同等のものをクリアします。
CTRL + U 削除するか、カーソル・コマンドの前にカット。私は文字を削除するには、バックスペースキーを使用していない、コマンドの長い行に入りました。
CTRL + K 削除するか、カーソル以下の内容。
CTRL + Y ペーストまたはCtrl UのCTRL + K +含有量。
CTRL + R CTRL + Rを押した後、ちょうどあなたの検索を入力し、検索ページがあるだろう、それはコマンド履歴から検索されます。
CTRL + D 現在の端末を終了します。
CTRL + Z 一時停止、およびバックグラウンドに置きます。ショートカットの作業では、Systems Management張傑のコンテンツ管理、私たちの詳細が含まれます。
CTRL + S 画面出力を一時停止します。
CTRL + Q 画面出力を復元します。

注意:大文字を限り、実際には、上で定義した:[Ctrlキー+文字]、あなたは大文字を持つことはできません。

使用後は[Ctrl + U]と[Ctrlキー+ K]コマンドは、[CTRL + Y]コマンドペーストとすることができます。

  • Ctrlキー+ Rコマンド
[root@root ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
(reverse-i-search)`a': alias ——>这是只要按回车键,就可以执行alias这条命令。

5、出力のリダイレクト

5.1>はstdio

ここに画像を挿入説明

すべてのコンテンツのうち、Linuxでは、ファイルは、入力装置はキーボード及び出力装置の表示ファイル、つまりは、/ dev / STDINと/ dev / SDOUTは、/ dev / sderrである - >正しい出力、エラー出力。

5.2出力リダイレクション> - 正しい出力とエラーが保存しました

标准输出应该是,当我输入命令回车后,输出到屏幕上的。现在我不让它输出到屏幕,改变了它的输出方向,即把它输出到文件当中,这就叫输出重定向。因为改变了输出方向,不在输出到原始的屏幕上,而是输出到文件当中,因此叫输出重定向。

注意:不是所有的命令都是可以用输出重定向的,这个命令必须的有输出才可以,比如cd命令,cd进入某一个目录只要不报错,它是不会有任何输出的,这个时候用输出重定向是没有任何意义的。

ここに画像を挿入説明上图应该注意的事项:

  • 命令 > 文件——> 以覆盖的方式,针对正确命令;
  • 命令 > >文件——> 以追加的方式,针对正确命令;
  • 错误命令 2>文件 ——>以覆盖的方式,针对错误命令——>2和>(大于号)之间不能有空格,否则不能保存错误重定向;
  • 错误命令 2>> 文件 ——>以追加的方式,针对错误命令——>2和>>(双大于号)之间不能有空格,否则不能保存错误重定向;;

举例说明:

  • 命令 > 文件——> 以覆盖的方式,针对正确命令;
[root@root 桌面]# cd ~
[root@root ~]# ls
abc              install.log         公共的  视频  文档  音乐
anaconda-ks.cfg  install.log.syslog  模板    图片  下载  桌面
[root@root ~]# ls > abc
[root@root ~]# ls
abc              install.log         公共的  视频  文档  音乐
anaconda-ks.cfg  install.log.syslog  模板    图片  下载  桌面
[root@root ~]# cat abc
abc
anaconda-ks.cfg
install.log
install.log.syslog
公共的
模板
视频
图片
文档
下载
音乐
桌面
[root@root ~]# date
2019年 07月 06日 星期六 07:59:23 CST
[root@root ~]# date > abc
[root@root ~]# cat abc
2019年 07月 06日 星期六 07:59:35 CST
[root@root ~]# 
  • 命令 > >文件——> 以追加的方式,针对正确命令;
[root@root ~]# date > abc
[root@root ~]# cat abc
2019年 07月 06日 星期六 07:59:35 CST
[root@root ~]# date >> abc
[root@root ~]# cat abc
2019年 07月 06日 星期六 07:59:35 CST
2019年 07月 06日 星期六 08:00:43 CST
  • 错误命令 2>> 文件 ——>以追加的方式,针对错误命令;
[root@root ~]# lsg 2>>abc
[root@root ~]# cat abc
2019年 07月 06日 星期六 07:59:35 CST
2019年 07月 06日 星期六 08:00:43 CST
bash: lsg: command not found
5.2> 输出重定向——正确输出和错误输出同时保存

以上四条命令是有一些问题的,这四条命令可以将正确命令和错误命令保存下来,但是,真确命令和错误命令的保存格式是不同的,这就需要首先人为的去判断这条命令是否能够正确执行或错误执行,正确执行按前两条命令,错误执行按后两条命令执行,如果我能知道这条命令是错误的,我干嘛还要写错的,直接改正了就行了呗,因此,在实际中将正确输出和错误输出分开保存的方法在实际中是不可取的,在实际中用处不大。

因此在实际中我们用的最多的是,将正确输出和错误输出同时保存到文件当中的命令,如下图所示:

  • 以下5条命令都是将正确输出和错误输出都保存在同一个文件当中,不同点是:>(单大于号)是覆盖,>>(双大于号)是追加;
  • 命令 > 文件 2>&1 ——>
    • 2>&1——> 将错误输出首先保存到正确输出里面;
    • 命令 > 文件 2>&1 ——> 然后将正确输出和错误输出同时保存到指定的文件当中;
  • 命令>>文件1 2>>文件2 ——> 将正确输出和错误输出分开保存,即将正确输出保存到文件1,将错误输出保存到文件2。

ここに画像を挿入説明命令举例如下:

  • 命令 >> 文件 2>&1 ——> 不管命令正确输出还是错误输出都保存到同一个文件当中;
[root@root ~]# lst >> bcd 2>&1
[root@root ~]# cat bcd
bash: lst: command not found
[root@root ~]# ls >> bcd 2>&1
[root@root ~]# cat bcd
bash: lst: command not found
abc
anaconda-ks.cfg
bcd
install.log
install.log.syslog
公共的
模板
视频
图片
文档
下载
音乐
桌面
  • 命令 &>>文件 ——>将命令正确结果和错误结果都保存到同一个文件当中;
[root@root ~]# date &>>cde
You have mail in /var/spool/mail/root
[root@root ~]# cat cde
2019年 07月 06日 星期六 08:52:26 CST
[root@root ~]# datehfg &>>cde
[root@root ~]# cat cde
2019年 07月 06日 星期六 08:52:26 CST
bash: datehfg: command not found

命令 &>/dev/null

将一个命令的结果以&的方式丢弃到/dev/null中,/dev/null 是我们Linux当中的一个特殊文件,这个文件从字面意义上来说是黑洞或空是不存在,可以将它当成垃圾箱。如果一条命令这么写不管有如何报错都丢到垃圾箱里面,也就是说我就让你执行不管是正确执行还是错误执行,都人道垃圾箱里面。你只要执行就好,我不管你正确还是错误的。

  • 命令>>文件1 2>>文件2

这个写法是将正确命令和错误命令分开保存,

[root@root ~]# ls >> def 2>>efg
[root@root ~]# cat def
abc
anaconda-ks.cfg
bcd
cde
def
efg
install.log
install.log.syslog
公共的
模板
视频
图片
文档
下载
音乐
桌面
[root@root ~]# cat efg
[root@root ~]# lslll >> def 2>>efg
[root@root ~]# cat efg
bash: lslll: command not found
[root@root ~]# cat def
abc
anaconda-ks.cfg
bcd
cde
def
efg
install.log
install.log.syslog
公共的
模板
视频
图片
文档
下载
音乐
桌面

6、输入重定向

输入重定向,我们执行某些命令的参数应该通过键盘来写入,现在我们改变它的输入方向不在通过键盘来输入,而是作为文件来给它进行输入,这就是输入重定向。输入重定向在实际的工作中用的不多。

命令格式:[root@localhost ~]# wc [选项] [文件名]
命令<文件 ——> 把文件作为命令的输入;

选项:

  • -c:统计字节数;
  • -w:统计单词书;
  • -l:统计行数;

wc命令是一条统计命令。快捷键Ctrl+d 将你输入的内容作为这个命令的标准输入,会统计你输的:x行 x单词 x字符,有空格算一个单词,字符当中要包含回车符。

举例如下:

[root@root ~]# wc
wertt
wedfg
sdf gjg
sdfc
sdf
      5       6      29
[root@root ~]# wc < anaconda-ks.cfg
  72  142 1498
[root@root ~]# wc -l < anaconda-ks.cfg
72

7、多命令顺序执行

ここに画像を挿入説明以上三种命令的区别:

  • ; ——> 它们两个命令之间或多个命令之间没有任何逻辑关系,仅仅只是因为命令1执行完执行命令2,就算命令1不正确执行报错了命令2依然执行,仅仅只是为了简化我们的操作,不想一条一条,将所有命令放在一起去执行,仅仅就这么一个作用。多个命令之间都一定的逻辑关系。 这条命令在dd命令这行的时候有一些帮助!
  • &&——> 逻辑与的关系。即只有当命令1正确执行时,那么命令2才会执行。如果命令1不正确执行,那么命令2是不会执行的。
  • | | ——> 逻辑或的关系。即只有当命令1不正确执行时,那么命令2才会执行;如果命令1正确执行,那么命令2就不会执行。
7.1 > 命令1 ; 命令2

举例说明:
[root@localhost ~]# ls ; date ; cd/user : pwd

(这个命令会报错,因为cd下面没有user这个文件的)

ここに画像を挿入説明

  • dd命令的说明:

dd命令是我们Linux系统中进行磁盘复制或者数据复制命令,但是它不是cp命令,因为cp命令只能复制文件。但是dd命令能够复制特殊文件,也能复制分区,甚至整个硬盘,它不仅复制了我们这个这个分区或硬盘当中的数据,还复制率我们这个分区的文件系统,即可以当做磁盘对拷命令来对待。dd命令主要是用来进行磁盘复制

[root@localhost ~]# dd if=输入文件 of=输出文件 bs=字节数 count=个数
.
选项:

  • if=输出文件 ——> 指定源文件或源设备;
  • of=输出文件 ——>指定目标文件或目录设备;
  • bs=字节数 ——> 指定一次输入/输出多少字节,即吧这些字节看作一个数据块,可以这么讲,我给你指定一个大小,每次都复制这么大,可以是1024字节;
  • count=个数 ——> 指定输入/输出多少个数据块;

举例说明:

命令: [root@localhost ~]# date ; dd if=/dev/zero of=/root/testfile bs=1k count=100000 ; date
.
命令说明:dd命令下,把/dev/zero的文件,把0作为源文件向目标文件不停的写入,每一次写1kb的0,总共写100000个。一句话,我要创建一个100000的测试文件。执行两遍date,就知道了创建一个100000文件所用的时间。

[root@root ~]# date ; dd if=/dev/zero of=/root/testfile bs=1k count=1000000 ; date
2019年 07月 06日 星期六 15:40:57 CST
记录了1000000+0 的读入
记录了1000000+0 的写出
1024000000字节(1.0 GB)已复制,29.4623 秒,34.8 MB/秒
2019年 07月 06日 星期六 15:41:26 CST
[root@root ~]# ll -h
总用量 977M
-rw-------. 1 root root 1.5K 6月  22 19:26 anaconda-ks.cfg
-rw-r--r--. 1 root root  47K 6月  22 19:26 install.log
-rw-r--r--. 1 root root 9.8K 6月  22 19:23 install.log.syslog
-rw-r--r--. 1 root root 977M 7月   6 15:41 testfile
drwxr-xr-x. 2 root root 4.0K 6月  22 19:30 公共的
drwxr-xr-x. 2 root root 4.0K 6月  22 19:30 模板
drwxr-xr-x. 2 root root 4.0K 6月  22 19:30 视频
drwxr-xr-x. 2 root root 4.0K 6月  22 19:30 图片
drwxr-xr-x. 2 root root 4.0K 6月  22 19:30 文档
drwxr-xr-x. 2 root root 4.0K 6月  22 19:30 下载
drwxr-xr-x. 2 root root 4.0K 6月  22 19:30 音乐
drwxr-xr-x. 3 root root 4.0K 6月  22 19:43 桌面
7.2> 命令1 && 命令2

以软件包安装为例说明:

[root@localhost ~]# ls ./configure && make && make install

  • 这些命令之间是有先后关系或者说依赖关系的,只有前面的命令正确了,后面的命令才能执行。
[root@root ~]# ls && echo yes
anaconda-ks.cfg  install.log.syslog  公共的  视频  文档  音乐
install.log      testfile            模板    图片  下载  桌面
yes
[root@root ~]# ls hhhhh && echo yes
ls: 无法访问hhhhh: 没有那个文件或目录
7.3> 命令1 || 命令2

只有前面的命令没有执行,后边的命令才会执行。

[root@root ~]# ls hhhhhh || echo no
ls: 无法访问hhhhhh: 没有那个文件或目录
no
[root@root ~]# ls || echo no
anaconda-ks.cfg  install.log.syslog  公共的  视频  文档  音乐
install.log      testfile            模板    图片  下载  桌面
7.4>前三个综合应用——判断某个命令是否能正常执行

[root@localhost ~]# 命令1 && echo yes || echo no

  • 当命令1能够正常执行时,后面将输出yes;
  • 当命令1不能够正常执行时,后面将输出no;
[root@root ~]# ls && echo yes || echo no
anaconda-ks.cfg  install.log.syslog  公共的  视频  文档  音乐
install.log      testfile            模板    图片  下载  桌面
yes
[root@root ~]# ls jjjjjjjjjj && echo yes || echo no
ls: 无法访问jjjjjjjjjj: 没有那个文件或目录
no
[root@root ~]# 

8、管道符

命令格式:[root@localhost ~]# 命令1 | 命令2

  • #命令1的正确输出作为命令2的操作对象;
  • 命令1必须有正确的输出才行,如果命令1报错或者命令1没有正确输出,命令2是不能执行的;

举例说明:

8.1> 命令:[root@localhost ~]# ll -a /etc/ | more

  • ll ——> ll命令也就是ls -l命令,即显示文件的详细信息;
  • more ——> more命令是分屏显示,但more命令显示的是文件的内容,不能显示文件的结果,这时候管道符就其作用了。
  • 管道符的作用是:命令1的输出(即, ll -a /etc/ 命令的输出)作为命令2的操作对象(即,more命令的操作对象)。也就是说,more命令本来是要操作一个文件的,但是加了管道符后,more的操作就变成了命令1的输出结果;

8.2> 命令:[root@localhost ~]# netstat -an | grep “ESTABLISHED”

  • netstat命令是查询所有的网络连接,即可以查看本机开启的端口,也可以查看哪些客户端连接。
  • ESTABLISHED——>代表标志连接,
  • netstat -an命令显示当前系统中所有的网络连接将这个命令的输出作为grep命令的操作对象,grep在这个输出当中搜索有没有包含有ESTABLISHED的这一行,有就列出。
[root@root ~]# netstat -an |grep "ESTABLISHED"
udp        0      0 192.168.85.132:48835        192.168.85.2:53             ESTABLISHED 
[root@root ~]# 

小插曲——grep命令:

grep命令是,在文件当中搜索符合条件的字符串。

grep命令格式:[root@localhost ~]# grep [选项] “搜索内容” 文件名
.
选项:

  • -i:忽略大小写
  • -n:输出行号
  • -v:反向查找
  • –color=auto:把搜索出的关键字用颜色显示
[root@root ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

ここに画像を挿入説明

8、通配符与其他特殊符号

8.1>通配符

通配符是用来匹配文件名的。
ここに画像を挿入説明关于以上表格的说明:

  • ?和 [ ]的区别:?和[ ]都是匹配一个字符。?是没有范围的(即相匹配谁就匹配谁),但是,[ ]是匹配的是中括号当中的任意一个字符(即,中括号中包含的对象中,它去除一个座位匹配的对象);
  • *表示任意字符前面或后面只能跟特定的字符(如,ls *abc命令后只能跟abc)

示例如下:
(1)命令:[root@localhost ~]# rm -rf *

这个命令的作用是删除当前目录下所有的文件内容。切记,没有在根下或者/bin/或者/etc/使用这条命令,不然就耿丕了。

ここに画像を挿入説明

[root@root tmp]# touch abc
[root@root tmp]# touch abcd
[root@root tmp]# touch 123
[root@root tmp]# touch 0abc
[root@root tmp]# touch aaabc
[root@root tmp]# ls
0abc  123  aaabc  abc  abcd
[root@root tmp]# ls *abc
0abc  aaabc  abc
[root@root tmp]# ls ?abc
0abc
[root@root tmp]# ls [0-9]abc
0abc
[root@root tmp]# ls [^0-9]abc
ls: 无法访问[^0-9]abc: 没有那个文件或目录
[root@root tmp]# touch aabc
[root@root tmp]# ls [^0-9]abc
aabc
[root@root tmp]# 
8.2> Bash中其他特殊符号

ここに画像を挿入説明
(1)単一及び二重引用符の違い、

  • 「」(シングルクォーテーションマーク)と「」(二重引用符)を使用します。私のコンテンツは、全体の時間のとき、余分なスペース今回は引用符で囲む必要があります場合は、この内容は全体です。我々は、すべてのLinuxコマンド間の分裂を表した空間、オプション、パラメータ、引用符(単一または二重引用符)なしでこのスペースは分割されるように、全体として使用しないことを知っています。
  • 「」(シングルクオート)と「」(二重引用符)との差:
    • すべての単一引用符で特別な「$」などの記号、および「`」(バッククォート)は、特別な意味を持ちません。
    • 二重引用符では、特殊な記号は特別な意味を持ちませんが、「$」、「`『と』\『は』変数値を呼び出し『と』Referencesコマンド『と特別な意味を』エスケープ」で、例外です。

例としては、次のとおりです:

[root@root 桌面]# cd ~
[root@root ~]# name=sc
[root@root ~]# echo $name
sc
[root@root ~]# echo '$name'
$name
[root@root ~]# echo "$name"
sc

(2)抗引用符と$()の使用:

アンチ引用符と$()システムコマンドであります

[root@root ~]# echo ls
ls
[root@root ~]# echo $(ls)
anaconda-ks.cfg install.log install.log.syslog testfile 公共的 模板 视频 图片 文档 下载 音乐 桌面
[root@root ~]# echo `ls`
anaconda-ks.cfg install.log install.log.syslog testfile 公共的 模板 视频 图片 文档 下载 音乐 桌面

(3)単一引用符と二重引用符の区別:

  • [ルート@ルート〜]#エコー「$(日)」 - >出力は、単一引用符そのまま引用符で
  • [ルート@ルート〜]#エコー「$(日)」 - >二重引用符、二重引用符は、コマンド出力、その後、コマンドを実行することです。
[root@root ~]# echo '$(date)'
$(date)
[root@root ~]# echo "$(date)"
2019年 07月 07日 星期日 08:23:21 CST

おすすめ

転載: blog.csdn.net/weixin_45116657/article/details/94721926