日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux中特殊字符的含义,Linux中的特殊符号以及特殊语法

發布時間:2024/9/19 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中特殊字符的含义,Linux中的特殊符号以及特殊语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

辨別||、&&、;、$*等符號在linux中的含義

與或

# 將&&前后的兩個命令當做一個表達式,如果表達式出錯,那么可以認為該表達式為false

? ~ ls / && date

bin boot dev etc home initrd.img initrd.img.old lastore lib lib64 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old

Thu Mar 21 14:18:44 HKT 2019

# 第一個命令失敗,后面的命令不再執行。短路,因為表達式整體的值已經可以通過第一個表達式獲得。

? ~ ls /hello && date

ls: cannot access '/hello': No such file or directory

# 與&&恰好相反

? ~ ls /hello || date

ls: cannot access '/hello': No such file or directory

Thu Mar 21 14:19:03 HKT 2019

# 第一個執行成功,已經可以獲得整個表達式的值,所以不執行第二個表達式。短路。

? ~ ls / || date

bin boot dev etc home initrd.img initrd.img.old lastore lib lib64 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old

分號;

表示過程,不計算值,因此按順序執行。

? ~ ls / ; date

bin boot dev etc home initrd.img initrd.img.old lastore lib lib64 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old

Thu Mar 21 14:23:48 HKT 2019

? ~ ls /hello ; date

ls: cannot access '/hello': No such file or directory

Thu Mar 21 14:23:52 HKT 2019

$相關表達式

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, ${10}, ${11}…

指令本身為0。后面為傳入參數。個位數的,可直接使用數字,但兩位數以上,則必須使用 {} 符號來括住。

#!/bin/bash

echo $#

echo $*

echo $@

echo $0

echo $1

echo $2

echo "--------"

# 當 $* 和 $@ 不被雙引號" "包圍時,它們之間沒有任何區別,都是將接收到的每個參數看做一份數據,彼此之間以空格來分隔。

for a in $*

do

echo ${a}

done

for a in $@

do

echo ${a}

done

echo "--------"

# 但是當它們被雙引號" "包含時,就會有區別了:

# "$*"會將所有的參數從整體上看做一份數據,而不是把每個參數都看做一份數據。

# "$@"仍然將每個參數都看作一份數據,彼此之間是獨立的。

for a in "$*"

do

echo ${a} # 這 2 個參數會合并到一起形成一份數據,它們之間是無法分割的

done

for a in "$@"

do

echo ${a} # 這 2 個參數是相互獨立的,它們是 2 份數據

done

輸出如下:

? Documents ./shell.sh hello world

2

hello world

hello world

./shell.sh

hello

world

--------

hello

world

hello

world

--------

hello world

hello

world

$?

獲取上一個命令的退出狀態

? ~ pkill -f xxxxoooo

? ~ echo $?

1

$!和$$

# Shell最后運行的后臺Process的PID

? ~ ping www.baidu.com > /dev/null &

[1] 14025

? ~ echo $!

14025

# Shell本身的PID(ProcessID)

? ~ ps -ef | grep -v grep | grep zsh

sasurai 9143 9122 0 09:48 pts/1 00:00:00 /usr/bin/zsh

sasurai 11946 5190 0 14:32 pts/4 00:00:00 /usr/bin/zsh

sasurai 19350 19085 0 10:52 pts/0 00:00:00 /usr/bin/zsh -i

? ~ echo $$

9143

輸出/輸入重導向

文件描述符

名稱

常用縮寫

默認值

0

標準輸入

stdin

鍵盤

1

標準輸出

stdout

屏幕

2

標準錯誤輸出

stderr

屏幕

我們在簡單地用時,相當于使用 0< 或 1>(下面會詳細介紹)。

cmd > file

把cmd命令的輸出重定向到文件file中。如果file已經存在,則清空原有文件,使用bash的noclobber選項可以防止復蓋原有文件。

cmd >> file

把cmd命令的輸出重定向到文件file中,如果file已經存在,則把信息加在原有文件後面。

cmd < file

使cmd命令從file讀入

cmd << text

從命令行讀取輸入,直到一個與text相同的行結束。除非使用引號把輸入括起來,此模式將對輸入內容進行shell變量替換。如果使用<

cmd <<< word

把word(而不是文件word)和後面的換行作為輸入提供給cmd。

cmd <> file

以讀寫模式把文件file重定向到輸入,文件file不會被破壞。僅當應用程序利用了這一特性時,它才是有意義的。

cmd >| file

功能同>,但即便在設置了noclobber時也會復蓋file文件,注意用的是|而非一些書中說的!,目前僅在csh中仍沿用>!實現這一功能。

: > filename 把文件"filename"截斷為0長度.# 如果文件不存在, 那么就創建一個0長度的文件(與’touch’的效果相同).

cmd >&n 把輸出送到文件描述符n

cmd m>&n 把輸出 到文件符m的信息重定向到文件描述符n

cmd >&- 關閉標準輸出

cmd 輸入來自文件描述符n

cmd m m來自文件描述各個n

cmd 關閉標準輸入

cmd 移動輸入文件描述符n而非復制它。(需要解釋)

cmd >&n- 移動輸出文件描述符 n而非復制它。(需要解釋)

注意: >&實際上復制了文件描述符,這使得cmd > file 2>&1與cmd 2>&1 >file的效果不一樣。

for循環

for var in 集合

do

cmd1...

done

while循環

while [ 條件 ]

do

echo "hello"

done

if條件語句

if [ 條件 ]; then

cmd1

elif [ 條件 ]; then

cmd2

else

cmd3

fi

case語句

case 值 in

模式1)

command1

command2

command3

;;

模式2)

command1

command2

command3

;;

*)

command1

command2

command3

;;

esac

總結

以上是生活随笔為你收集整理的linux中特殊字符的含义,Linux中的特殊符号以及特殊语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。