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

歡迎訪問 生活随笔!

生活随笔

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

linux

【Linux】1.shell各个命令

發布時間:2025/3/21 linux 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Linux】1.shell各个命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

shell各個命令

1.符號參數
$# 傳遞到腳本的參數個數 $* 以一個單字符串顯示所有向腳本傳遞的參數。如"$*"用「"」括起來的情況、以"$1 $2$n"的形式輸出所有參數。 $@$*相同,但是使用時加引號,并在引號中返回每個參數。如"$@"用「"」括起來的情況、以"$1" "$2""$n" 的形式輸出所有參數。 $? 顯示最后命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。 $! 后臺運行的最后一個進程的ID號 $$ 腳本運行的當前進程ID號 $0 執行的文件名 $1 傳入的第一個參數& shell命令以&結尾,就可以后臺運行,如:roscore& shift 命令每執行一次,變量的個數($#)減一,而變量值提前一位.也可以shift后加數字參數,如shift 3表示原來的$4現在變成$1,原來的$5現在變成$2等等,原來的$1$2$3丟棄,$0不移動。不帶參數的shift命令相當于shift 1。示例如下: #### 2.測試 shift 命令(x_shift.sh) until [ $# -eq 0 ] do echo "第一個參數為: $1 參數個數為: $#" shift done 執行以上程序x_shift.sh: $./x_shift.sh 1 2 3 4

結果顯示如下:

第一個參數為: 1 參數個數為: 4 第一個參數為: 2 參數個數為: 3 第一個參數為: 3 參數個數為: 2 第一個參數為: 4 參數個數為: 1------------------------------------------------------------------ [ -e $var ] 文件是否存在 [ -d $var ] 是否是目錄 [ -f $var ] 是否是文件[[ $var1 = $var2 ]] 兩個字符串是否相同 [ $var -eq 0 ] 一個變量是否為0 [ $a -gt $b ] a 大于 b [ $a -lt $b ] a 小于 b -----------------------------------------------------------------

3.set

set -e 執行的時候如果出現了返回值為非零,整個腳本 就會立即退出。 你寫的每個腳本都應該在文件開頭加上set -e,這句語句告訴bash如果任何語句的執行結果不是true則應該退出.
set +e 執行的時候如果出現了返回值為非零將會繼續執行下面的腳本
#!/bin/sh -e或#!/bin/bash -e 放在腳本第一行,和set -e功能也一樣
set -x 用于腳本調試,在liunx腳本中可用set -x就可有詳細的日志輸出.免的老是要echo了

4.read用法:

read既可以從鍵盤讀取,也可以讀取文件的一行. read a # 這個命令執行后,會要求從鍵盤輸入內容 1234 # 這是鍵盤輸入1234 echo $a # 會輸出 1234下面是read讀取文本文件的一行內容: while 循環讀取文本文件$release_conf的內容: 其中文本文件中全部存放的是變量賦值,如某一行:work_path=/home/zhu/ while read line;do eval "$line" done < $release_conf 然后,文件中的每一行變量就可以被后續的代碼使用了,因為執行了一句 eval "$line" ,他就把 work_path=/home/zhu/ 給執行了 --------------------------------------------------------------------------------------------------------------

5.pgrep, pkill

pgrep -f abc 匹配出含abc的進程 并輸出進程的pid pkill -f abc 結束含abc的所有進程DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 詳解參考https://blog.csdn.net/davidhopper/article/details/78989369 pkill -SIGINT -f record 結束進程名包含record的進程,SIGINT與字符ctrl+c關聯,只能結束前臺進程 --------------------------------------------------------------------------------------------------------------

6.dirname, basename

dirname命令去除文件名中的非目錄部分,刪除最后一個“\”后面的路徑 basename命令用于打印目錄或者文件的基本名稱,顯示最后的目錄名或文件名 dirname /etc/httpd/ # 結果為/etc dirname /etc/httpd/conf/httpd.conf #結果為 /etc/httpd/conf/ basename /etc/httpd/conf/httpd.conf # 結果為 httpd.conf --------------------------------------------------------------------------------------------------------------

7.nohup

nohup rosbag record -O $bag_name --split --duration=30m -b 2048 $topic >/dev/null 2>&1 & nohup 是 no hang up 的縮寫,就是不掛斷的意思。nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那么可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之后繼續運行相應的進程。 nohup COMMAND & # 這樣就能使命令永久的在后臺執行 可參考 https://www.cnblogs.com/jinxiao-pu/p/9131057.html

8.date

date +"%Y%m%d_%H_%M_%S" # 時間格式:20200519_20_38_47 echo `date +"%Y%m%d_%H_%M_%S"` # 輸出時間,必須加上``符號date +"%T" # %T  時間(只含時分秒,小時以24小時制來表示)。 echo `date +"%T"`%Y%m%d的參數可參考https://zhidao.baidu.com/question/484985079.htmla=date $aecho $a # date a 錯b=`date` $becho $b 對 b 對

9.查看文件(夾)權限

ls -ld /dev/shm/ 查看/dev/shm/目錄(本身)的權限 ll /dev/shm/ 查看/dev/shm/目錄下的文件()的權限, 包括隱藏文件() ls -l /dev/shm/ 查看/dev/shm/目錄下的文件()的權限,不包括隱藏文件() ``#### 10.test ?```shell # 如果 ls -ld /dev/shm/ | grep drwxrwxrwx的輸出為空,就執行 chmod -R 777 /dev/shm/ if test -z "$(ls -ld /dev/shm/ | grep drwxrwxrwx)" ;thenchmod -R 777 /dev/shm/ fi

11.開機自啟動數字小鍵盤numlock

# 如果該文件是可執行文件 if test -x /usr/bin/numlockx ; thennumlockx on fi

12chown 將指定文件的擁有者改為指定的用戶或組

用戶可以是用戶名或者用戶 ID,組可以是組名或者組 ID,文件是以空格分開的要改變權限的文件列表,支持通配符。
chown 需要超級用戶 root 的權限才能執行此命令。
只有超級用戶和屬于組的文件所有者才能變更文件關聯組。非超級用戶如需要設置關聯組可能需要使用 chgrp 命令。
chown mdc.mdc file(dir) # 把file(或者目錄)的擁有者和組都改為mdc用戶
更多詳細用法參考 https://www.runoob.com/linux/linux-comm-chown.html

13.判斷文件夾是否存在,判斷是不是一個文件

##### 如果 /home/zhz/nas/abc目錄不存在,則執行 mount ##### 注意文件或者目錄需要用雙引號 if [ ! -d "/home/zhz/nas/abc" ];then # 注意 [ 的右邊有空格, ]的左邊有空格.mount -t nfs 192.168.1.163:/volume1_106/data /mnt/nas elseecho "dir exists!" fi

不使用[]的話也可以使用test命令

if test ! -d "/home/zhz/nas/abc" ;then mount -t nfs 192.168.1.163:/volume1_106/data /mnt/nas elseecho "dir exists!" fi

如果 /home/zhz/nas/def.txt是一個文件,則執行

軟鏈接不是文件,不能用-f來判斷
if [ -f "/home/zhz/nas/def.txt" ];thenrm -f def.txt fi# 如果 /home/zhz/abc是一個鏈接文件,則執行 if [ -L "/home/zhz/abc" ];thenrm -f def.txt fi

14.把一段命令當做變量輸出

# 把命令用`()`括起來,然后在括號`()`前面加上`$`符號,最后把他們都用`" "`包起來即可. "$(ls -ld /dev/shm/ | grep drwxrwxrwx)"# 命令多重嵌套,先是 path_1 = dirname "${BASH_SOURCE[0],然后在 cd 到 $path_1,再執行 pwd顯示當前路徑,最后把他們當做變量賦值給 DIR DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

總結

以上是生活随笔為你收集整理的【Linux】1.shell各个命令的全部內容,希望文章能夠幫你解決所遇到的問題。

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