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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell的学习和命令使用入门

發布時間:2024/9/30 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell的学习和命令使用入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 介紹:
    • 1.cat /etc/shells
      • 編寫并執行一個shell腳本
    • 3.chmod u+x who.sh
    • cp復制一個文件到另一個目錄中
      • find
    • ln -s
      • vim
      • grep
  • nohup 命令
  • touch命令

介紹:

腳本語言(Script Language)是相對于編譯型語言而言的,它是為了縮短編譯型語言編寫—編譯—鏈接—運行(Edit-Compile-Link-Run)過程而創建的計算機編程語言。由于腳本語言常常運行于底層,所處理的是字節、整數、浮點數或其他機器層的對象,因而腳本語言是低級程序設計語言。如C\C++、Ada、Java、C#等都屬于編譯型語言,也可稱為高級程序設計語言,這類語言所編寫的程序需要經過編譯,將源代碼轉化為目標代碼才能運行。而腳本語言往往是解釋運行而非編譯,即由解釋器(Interpreter)讀入腳本程序代碼,將其轉換成內部的形式執行,而解釋器本身則是編譯型程序。 腳本語言的好處是簡單、易學易用,適合處理文件和目錄之類的對象,以簡單的方式快速完成某些復雜的事情通常是創造腳本語言的重要原則,腳本語言的特性可以總結為以下4個方面。
● 語法和結構通常比較簡單。
● 學習和使用通常比較簡單。
● 通常以容易修改程序的“解釋”作為運行方式,而不需要“編譯”。
● 程序的開發產能優于運行效能。
腳本語言的靈活性是以執行效率為代價的,腳本語言的執行效率通常不如編譯型語言。當然,腳本語言一般不適用于大型的項目、計算復雜的工程或有高級需求的應用軟件,它適用于系統管理、文本處理等方面完成特定功能的常用的小工具或小程序。

1.cat /etc/shells

查看電腦安裝的linux shell種類

2.ls -l /etc/sh*
用于列出/etc目錄下以sh開頭文件的詳細信息
分號可以用于分隔同一行內多條命令

編寫并執行一個shell腳本

需要使當前用戶具備執行該腳本文件的權限
先編輯一個簡單的腳本:

#!/bin/bash date #顯示當前日期 who #當前登陸的用戶

文件的第1行是“#!/bin/bash”,“#!”符號稱為“Sha-bang”符號,是Shell腳本的起始符號,“#!”符號是指定一個文件類型的特殊標記,它告訴Linux系統這個文件的執行需要指定一個解釋器。“#!”符號之后是一個路徑名,這個路徑名指明了解釋器在系統中的位置,對于一般的Shell腳本而言,解釋器是bash,也可以是sh,即用下面兩種方式作為腳本的第1行都是正確的:
#/bin/bash
#/bin/sh

授予權限:

3.chmod u+x who.sh

執行
./who.sh

4.ls /home
查看用戶
5.sudo tail -l /etc/shadow #查看加密后的用戶賬號及密碼

6. ls -l

列出所在位置的目錄下所有文件和目錄的詳細信息

cp who.sh PyTorch-YOLOv3

cp復制一個文件到另一個目錄中

cp -a who.sh PyTorch-YOLOv3

復制一個文件到另一個目錄中,且不改變權限和修改日期

cp -r pkgconfig 照片

將目錄的所有內容全部復制到另一個目錄中

mv:移動文件

mv [option] [source] [destination] mv -p #移動時保留權限 mv -i #交互方式操作,如果mv將導致對已存在的目標文件覆蓋,此時系統詢問是否重寫 mv -f #禁止交互操作

rm:刪除

rm-rf #刪除目錄以及目錄下所有文件

mkdir:創建目錄

mkdir -m 777 tsk #創建目錄且指定權限 mkdir -p testdir/test #創建父目錄和需要創建的子目錄

-m 777指定了目錄的讀寫執行權限

rmdir:刪除目錄命令

cd ~回到主目錄
cd - 回到上次訪問的目錄

chmod:修改權限

chmod u+x,g+w testvim #修改testvim文件的權限為主可讀可寫可執行 同組用戶可讀可寫

u :表示用戶(user 即文件或目錄所有者)

g:表示同組
o:其他用戶
a:所有用戶

find

對于查找到的結果,find命令可以有三種處理方式,print僅將結果輸出到屏幕,而exec和ok可以對結果進一步處理,區別在于:exec直接進行處理,而ok在處理之前出現提示信息,供用戶最終確定是否執行該操作。

find . -name 'p*' -perm 744 -prin

第1條命令查找當前目錄下文件名以t開頭的,且文件屬主具有讀、寫、執行權限的文件,命令用“.”表示當前目錄,-name′t*′表示以t開頭的文件名,其中的“*”字符表示任意字符,這種用法稱為通配,本書第3章將會介紹這一概念。-perm 744表示文件屬主具有讀、寫、執行權限,744是表示文件權限的數字設定法。第1條命令結果的./表示當前目錄下的文件,./DEBUG則表示子目錄DEBUG下的文件。

更改時間距今5天內的文件,使用了-mtime-n用法。

find . -mtime -5 -print

刪除某目錄下更改時間距今3天內的所有文件:

find /var/log -mtime -3 -ok rm {} \;

ln -s

它的功能是為某一個文件在另外一個位置建立一個同步的鏈接.當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然后在 其它的目錄下用ln命令鏈接(link)它就可以,不必重復的占用磁盤空間。這個命令最常用的參數是-s,具體用法是:ln -s 源文件 目標文件。當 我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然后在其它的 目錄下用ln命令鏈接(link)它就可以,不必重復的占用磁盤空間。
第一,ln命令會保持每一處鏈接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發生相同的變化;第二,ln的鏈接又軟鏈接 和硬鏈接兩種,軟鏈接就是ln -s ** *,它只會在你選定的位置上生成一個文件的鏡像,不會占用磁盤空間,硬鏈接ln * **,沒有參數-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,無論是軟鏈接還是硬鏈接,文件都保持同步變化。
如果你用ls察看一個目錄時,發現有的文件后面有一個@的符號,那就是一個用ln命令生成的文件,用ls -l命令去察看,就可以看到顯示的link的路徑了。

ln -s /www/server/mysql /usr/local/mysql
export PATH=PATH:/usr/local/mysql/bin/echo′exportPATH=PATH:/usr/local/mysql/bin/ echo 'export PATH =PATH:/usr/local/mysql/bin/echoexportPATH=PATH:/usr/local/mysql/bin/’ >> /etc/profile
tail -l /etc/profile #查看是否環境變量配置成功添加到了/etc/profile中

vim

插入模式(Insert mode) 在一般模式按下i、o、a等字母都可以進入編輯模式,在此模式下,vim將用戶的輸入插入到當前光標位置,修改暫時保存到緩沖區,按Esc鍵則從編輯模式退回到一般模式。

grep

grep 是Global search Regular Expression and Print out the line的簡稱,即全面搜索正則表達式,并把行打印出來。grep是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來,grep也是Linux中最廣泛使用的命令之一。

grep命令的模式十分靈活,可以是字符串,也可以是變量,還可以是正則表達式。需要說明的是,無論模式是何種形式,只要模式中包含空格,就需要使用雙引號將模式引起來,如果不加雙引號,空格后的單詞容易被誤認為是文件名,如普通字符串為“hello world”,grep hello world命令就將world認為是文件名,因此,grep“hello world”filename才是正確的寫法。大部分情況下,使用單引號將模式引起來也是可以的

nohup 命令

nohup 英文全稱 no hang up(不掛起),用于在系統后臺不掛斷地運行命令,退出終端不會影響程序的運行。

nohup 命令,在默認情況下(非重定向時),會輸出一個名叫 nohup.out 的文件到當前目錄下,如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。

使用權限
所有使用者

語法格式
nohup Command [ Arg … ] [ & ]
參數說明:
Command:要執行的命令。

Arg:一些參數,可以指定輸出文件。

&:讓命令在后臺執行,終端退出后命令仍舊執行。

實例
以下命令在后臺執行 root 目錄下的 runoob.sh 腳本:

nohup /root/runoob.sh &
在終端如果看到以下輸出說明運行成功:

appending output to nohup.out
這時我們打開 root 目錄 可以看到生成了 nohup.out 文件。

如果要停止運行,你需要使用以下命令查找到 nohup 運行腳本到 PID,然后使用 kill 命令來刪除:

ps -aux | grep “runoob.sh”
參數說明:

a : 顯示所有程序
u : 以用戶為主的格式來顯示
x : 顯示所有程序,不區分終端機
另外也可以使用 ps -def | grep “runoob.sh” 命令來查找。

找到 PID 后,就可以使用 kill PID 來刪除。

kill -9 進程號PID
以下命令在后臺執行 root 目錄下的 runoob.sh 腳本,并重定向輸入到 runoob.log 文件:

nohup /root/runoob.sh > runoob.log 2>&1 &
2>&1 解釋:

將標準錯誤 2 重定向到標準輸出 &1 ,標準輸出 &1 再被重定向輸入到 runoob.log 文件中。

0 – stdin (standard input,標準輸入)
1 – stdout (standard output,標準輸出)
2 – stderr (standard error,標準錯誤輸出)

touch命令

用于修改文件或者目錄的時間屬性,包括存取時間和更改時間。若文件不存在,系統會建立一個新的文件。

ls -l 可以顯示檔案的時間記錄。

語法
touch [-acfm][-d<日期時間>][-r<參考文件或目錄>] [-t<日期時間>][–help][–version][文件或目錄…]
參數說明:
a 改變檔案的讀取時間記錄。
m 改變檔案的修改時間記錄。
c 假如目的檔案不存在,不會建立新的檔案。與 --no-create 的效果一樣。
f 不使用,是為了與其他 unix 系統的相容性而保留。
r 使用參考檔的時間記錄,與 --file 的效果一樣。
d 設定時間與日期,可以使用各種不同的格式。
t 設定檔案的時間記錄,格式與 date 指令相同。
–no-create 不會建立新檔案。
–help 列出指令格式。
–version 列出版本訊息。
實例
使用指令"touch"修改文件"testfile"的時間屬性為當前系統時間,輸入如下命令:

$ touch testfile #修改文件的時間屬性
首先,使用ls命令查看testfile文件的屬性,如下所示:

$ ls -l testfile #查看文件的時間屬性
#原來文件的修改時間為16:09
-rw-r–r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
執行指令"touch"修改文件屬性以后,并再次查看該文件的時間屬性,如下所示:

$ touch testfile #修改文件時間屬性為當前系統時間
$ ls -l testfile #查看文件的時間屬性
#修改后文件的時間屬性為當前系統時間
-rw-r–r-- 1 hdd hdd 55 2011-08-22 19:53 testfile
使用指令"touch"時,如果指定的文件不存在,則將創建一個新的空白文件。例如,在當前目錄下,使用該指令創建一個空白文件"file",輸入如下命令:

$ touch file #創建一個名為“file”的新的空白文件

總結

以上是生活随笔為你收集整理的shell的学习和命令使用入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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