天天看點

shell

   小弟最近你自己整理了點東西,希望各位網友給我能修改修改!!!1

第一章 shell 簡介

-什麼是shell

-存取權限和安全

-shell簡單腳本

-shell特性

1.1  什麼是shell

  -shell是核心程式(kernel)之外的指令解析器,是一個程式,同時是一種指令語言和程式設計語言。

 -shell的類型ash、bash、ksh、csh、tcsh

  -/etc/shells

  -/echo $shell

 -程式在shell中運作

 -shell中可運作子shell

#ls

#cat /etc/shells

#echo $shell 顯示目前的shell

#/bin/csh 進入到csh

#exit  退出目前shell

#ls  兩個tab鍵,幫助功能,補全以ls開頭的指令

#help   顯示shell指令

1.2  存取權限與安全

 -檔案和名錄的權限(-rwxr--r--)

 -setuid(suid/guid)(chmod u+s,g+s file)

 -chown和chgrp(chown user file/chgrp group file)

 -umask (umask nnn)

 -符号連結(ln [-s] source_path target_path)

#ls -l  顯示檔案權限及空間

#ls -lh  注意h的差別

  -、d、l、b(塊檔案)、c(字元檔案)、p(管道檔案)、s(socket檔案 如:ls -l /tmp/.x11-unix/xo)

 chmod [who] operator [permission] filename

 - who (u,g,o,a)

 - operator (+,-,=)

 - permission (r,w,x,s,t)

#mkdir testfile

#chmod u=rwx,g+w,o+r testfile

#ls -l

#chmod u+s testfile  s位涉及安全問題

#chmod g+x,o+x testfile  這個檔案所屬的組或其它使用者會獲得屬主的權限

#chown root.antiy testfile         s位:其它使用者會擁有root的權限

#chmod g+s testfile  這個檔案所屬的組或其它使用者會獲得屬組的權限

#chmod o+t testfile  運作時放到swap裡

#ls -l /bin | grep '^...s'

s位有安全隐患,但為什麼還需要s位呢?

 chmod mode filename

 - mode

  r 4 w 2 x 1

 chmod 644 filename

 chmod 740 filename

#chmod 4744 filename

#chmod 6744 filename

#chmod 7744 filename

 chown和chgrp

 注意-r的作用,子目錄也随之更改

#chown root testfile

#chown -r root testfile

#ls -l testfile

#chgrp antiy testfile

#chown root.antiy testfile -r

 umask 預設權限

#umask

022

#touch filename

#ls -l filename

#mkdir direactory

#ls -lda direactory

 自己找一下umask的值與目錄和檔案的規律

#umask 000

000

#touch filename1

#ls -l filename1

#mkdir direactory1

ls -lda direactory1

#umask 022

 -注意安全性問題

 /etc/profile ($home/.profile

 $home/.bash_profile)

 -umask

#cat /etc/profile | grep "umask"

***********************************************************************************************************

 -符号連結

  -硬連結

  -軟連接配接

  -ln [-s] source_path  target_path

 -shell教本

  -使用shell腳本的原因

   功能強大,節約時間。

  -shell腳本基本元素

   #!/bin/bash

   -第一行

   #

   -表示注釋

   變量 

   流程控制結構

例子:

helloworld.sh

#!/bin/bash

#輸出一個hell world的shell

printchar="hello world"

echo $printchar

echo $home

#chmod u+x helloworld.sh

#./helloworld.sh

  shell特性

  别名,指令替換,背景處理,變量,管道,重定向,

  模式比對,特殊字元

 别名:

 -alias

 -alias ll='ls -alh'

#alias

#alias ll='ls -alh'

#alias ll='ls -l --color=tty'

#cat $home/.bashrc 每個使用者自己定義的别名

 指令替換:

 myfile的内容: 

 parm

 findfile

#cat myfile

#ls `cat myfile` -al

 背景處理:

 -什麼是背景?

 -一個終端可以同時運作多個程式

 -nohup command &

#nohup tar -czf enerco.tar.gz enerco &

#job -l  可以檢視背景正在運作的程式

 變量:

 管道:

 -把一個指令的輸出連接配接到另一個指令的輸入

 -ls | sort

#ls -l | sort

#ls | sort

 重定向(< >):

 -與管道相關,可以改變程式運作的輸入來源和輸出地點

 -sort <myfile.txt

 -sort <myfile.txt>myfile_sort.txt

#vi myfile.txt

#sort < myfile.txt

#sort <myfile.txt >myfile_sort.txt 

 模式比對:

 -顯示以txt為擴充名的檔案或顯示以a開頭的檔案,這種能力就稱為模式比對

 -正規表達式

 特殊字元

 -雙引号("):用來使shell無法認出空格、制表符和其他大多數特殊字元,如

"david medinets"表示一個值,而不是2個。同樣"david < medinets"表示一個值。

 -單引号('):用來使shell無法認出所有特殊字元。

 -反引号(`):用來替換指令。

 -反斜杠(\):用來使shell無法認出其後特殊字元,使其後的字元失去了特殊的含義,

如:david\ medinets

#touch david\ medinets

#ls david\ medinets

 -分号(;):如許在一行上放多個指令。

 -&:指令背景執行。

 -括号():建立成組指令。

 -大括号{}:建立指令塊。

 -豎杠(|):管道表示符。

 -< >&:表示重定向。

 -* ? [] ! :表示模式比對。

 -$:變量名的開頭。

 -#:表示注釋(第一行除外)。

 -空格,制表符,換行符:當作空白。

繼續閱讀