第二周筆記

### 4 月2日筆記

– #### IO重定向
“`
I:input指的是標準輸入 描述符用0表示
O:output指的是標準輸入 描述符用1表示
標準錯誤 描述符用2表示
“`
一般文件或者命令的標準輸入是指的鍵盤,標準輸出是值得終端窗口。
我們用重定向來改變他們的方向
大于號> 表示標準輸出:把輸出內容定向到一個文件中
“`
> filename
# >操作, 將會把文件”filename”變為一個空文件(就是size為0).
# 如果文件不存在, 那么就創建一個0長度的文件(與’touch’的效果相同).
“`
set –C 禁止將內容覆蓋已有文件,
但可追加
\>| file 強制覆蓋
set +C 允許覆蓋
>> filename
“`
# 》操作, 如果文件不存在會創建文件,如果文件存在將會把輸出的內容追加到文件”filename”中
“`
2> fliename
“`
2>filename 指的是把標準錯誤輸出的內容重定向到文件”filename”中清空原文件
“`
同理
2>> fliename
“`
2>> filename指的是把標準錯誤輸出的內容追加到文件”filename”中
“`
2>&1 filename
“`
重定標準錯誤到標準輸出
將錯誤消息的輸出, 發送到與標準輸出所指向的地方.
“`
&>filename
將標準輸出和標準錯誤都重定向到文件”filename”中
“`
合并多個程序的STDOUT
( cal 2007 ; cal 2008 ) > all.txt
“`
2>&1
重定向stderr到stdout.
< FILENAME
從文件中接受輸入.
與”>”是成對命令, 并且通常都是結合使用.
<< 表示多行重定向
<<后面跟的是多行重定向開始與結束的字符,他可以是任何字符 ,開始字符必須與結束字符相同,結束字符必須單獨一行
示例:把兩個E之間的多行自發作為cat命令的標準輸入
[zhangxiao@zhangxiao ~]$cat <<E

“`
> s
> s
> d
> d
> f
> s
> E
s
s
d
d
f
s
[zhangxiao@zhangxiao ~]$
“`

– #### tr
語法:tr + 【選項】 +參數
常用選項
“`
-c或——complerment:取代所有不屬于字符集的字符;(取反)
-d或——delete:刪除所有屬于第一字符集的字符;(刪除)
-s或–squeeze-repeats:把連續重復的字符以單獨一個字符表示;(壓縮相同的連續字符)
-t或–truncate-set1:先刪除第一字符集較第二字符集多出的字符。(當第一字符集比第二個字符集字符多時,第一字符集超出來的不生效)
“`
示例:把輸入的小寫字母換成大寫字母
“`
[zhangxiao@zhangxiao ~]$tr [a-z] [A-Z]
afdfdfyuc
AFDFDFYUC
sssssss
SSSSSSS
[zhangxiao@zhangxiao ~]$
“`
示例:刪除輸入的字母中的abcd
“`
[zhangxiao@zhangxiao ~]$tr -d “abcd”
ssfaasdasncvj
ssfssnvj
[zhangxiao@zhangxiao ~]$
“`
– #### 管道 |
|表示管道,指的是|前面的標準輸出當做|后面的標準輸入
示例
“`
[zhangxiao@zhangxiao ~]$cat script.log | tr -d “abcde”
This sttmnt is snt to th log fil, “sript.log”.
“`
– #### tee
用法:cmd1 | tee [-a ]filename | cmd2

把命令1的標準輸出保存到filename中同時作為cmd2的標準輸入
“`
[zhangxiao@zhangxiao ~]$echo “hello” | tee pwa1
hello
[zhangxiao@zhangxiao ~]$la
-bash: la: command not found
[zhangxiao@zhangxiao ~]$ls
Desktop Documents Downloads helloword Music PAAA Pictures Public pwa1 script.log Templates test1 Videos
[zhangxiao@zhangxiao ~]$
“`
– #### 用戶權限管理
> 首先用戶的權限是有token決定的,token是登錄系統獲取的,所以修改了用戶權限后只有重新登錄系統后才可以生效。

與用戶和組有關的文件
“`
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
“`
passwd格式:
“`
用戶名:密碼(X是站位符):UID:gid:備注:家目錄:shell
shaow格式:
用戶名:密碼(加密):mtime(距1970年):密碼的最短變更時間(距今):密碼的最長有效期:過期幾天提醒:過期幾天鎖定:多長時間失效(距1970.1.1)
“`
group格式:
“`
組名稱:組密碼(7版本一般在gshaow中):gid:當前組為附加組的用戶列表
“`
gshdow:
組名稱:組密碼:管理員列表:當前組為附加組的用戶

> 這四個用戶配置文件通常不建議直接修改,如果修改的話最好用命令
> vipw和vigr 修改
> pwck和grpck 檢查修改的文件語法有沒有錯誤

– #### :useradd
語法:useradd [選項] 用戶名
常用選項:

“`
-u UID
-o 配合-u 選項,不檢查UID的唯一性
-g GID:指明用戶所屬基本組,可為組名,也可以GID號
-c “COMMENT”:用戶的注釋信息
-d HOME_DIR: 以指定的路徑(不存在)為家目錄
-s SHELL: 指明用戶的默認shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,…]:為用戶指明附加組,組須事先存在
-N 不創建私用組做主組,使用users組做主組
-r: 創建系統用戶 CentOS 6: ID<500,CentOS 7: ID<1000
-m 創建家目錄,用于系統用戶
-M 不創建家目錄,用于非系統用戶
“`
新建用戶的相關文件有
?/etc/default/useradd
?/etc/skel/*
?/etc/login.defs
– #### 批量創建用戶
– #### newusers
newusers+參數(可以創建一個pass文檔格式文件管道傳給newusers)

– #### chpasswd
用法同上,批量修改用戶口令

– #### usermod
– 語法:usermode [選項] 用戶名
常用選項:
“`
-u UID: 新UID
-g GID: 新主組
-G GROUP1[,GROUP2,…[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項
-s SHELL:新的默認SHELL
-c ‘COMMENT’:新的注釋信息
-d HOME: 新家目錄不會自動創建;若要創建新家目錄并移動原家數據,同時使用-m選項
-l login_name: 新的名字;
-L: lock指定用戶,在/etc/shadow 密碼欄的增加 !
-U: unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉
-e YYYY-MM-DD: 指明用戶賬號過期日期
-f INACTIVE: 設定非活動期限
“`
示例:把用戶zhangxiao加到組xiaoxiao作為附加組
“`
[root@zhangxiao ~]# usermod -G xiaoxiao zhangxiao
[root@zhangxiao ~]# id zhangxiao
uid=500(zhangxiao) gid=500(zhangxiao) groups=500(zhangxiao),501(xiaoxiao)
“`
– #### userdel
語法userdel [選項]…用戶名
選項- r 刪除用戶家目錄

– #### id
語法:id+[選項]+用戶名
常用選項:
“`
-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶所屬的組的ID
-n: 顯示名稱,需配合ugG使用
“`
示例:顯示用戶zhangxiao的UID
“`
[root@zhangxiao ~]# id -u zhangxiao
500
[root@zhangxiao ~]#
“`
– #### su
用法su [-] username
“`
su username:非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄
su – UserName:登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換
“`
常用用法su [-] UserName -c ‘COMMAND’
– #### passwd
– 用法:passwd [OPTIONS] UserName:
“`
常用選項:-d:刪除指定用戶密碼
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-f: 強制操作
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-i inactivedays:非活動期限
–stdin:從標準輸入接收用戶密碼
echo “PASSWORD” | passwd –stdin USERNAME
“`
– #### chage
修改用戶密碼時間
語法chage [OPTION]… LOGIN
“`
-d LAST_DAY
-E –expiredate EXPIRE_DATE
到期時間
-I –inactive INACTIVE
過期的寬限期
-m –mindays MIN_DAYS 最短可修改時間
-M –maxdays MAX_DAYS 密碼的最長有效期
-W –warndays WARN_DAYS 提示時間
–l 顯示密碼策略
“`
– #### chfn
語法:chfn+username
指定用戶信息
chsh:指定shell
– #### finger 查看所登錄的用戶及描述
示例
“`
[zhangxiao@zhangxiao ~]$finger
Login Name Tty Idle Login Time Office Office Phone
xiaoxiao zhangxiao tty3 Apr 3 10:45 bj 000
zhangxiao zhangxiao tty2 1:00 Apr 3 08:15
zhangxiao zhangxiao tty1 2:47 Apr 3 07:59 (:0)
zhangxiao zhangxiao pts/1 1:30 Apr 3 08:16 (vfn795y4y0a39yv.mshome.net)
zhangxiao zhangxiao pts/2 Apr 3 09:24 (vfn795y4y0a39yv.mshome.net)
[zhangxiao@zhangxiao ~]$^C
“`
– #### groupadd
語法:groupadd [OPTION]… group_name
“`
-g GID: 指明GID號
-r: 創建系統組
CentOS 6: ID<500
CentOS 7: ID<1000
“`
組屬性修改:groupmod
– #### groupmod [OPTION]… group
-n group_name: 新名字
“`
-g GID: 新的GID
?組刪除:groupdel
groupdel GROUP
“`
– #### groupmems [options] [action]
options:
“`
-g, –group groupname 更改為指定組 (只有root)
Actions:
-a, –add username 指定用戶加入組
-d, –delete username 從組中刪除用戶
-p, –purge 從組中清除所有成員
-l, –list 顯示組成員列表
?groups [OPTION].[USERNAME]… 查看用戶所屬組列表
“`

 

 

4月4日筆記

### 權限

修改文件的屬主:chown

“`
chown [OPTION]… [OWNER][:[GROUP]] FILE…
用法:
OWNER
OWNER:GROUP
:GROUP
命令中的冒號可用.替換
-R: 遞歸
chown [OPTION]… –reference=RFILE FILE…
“`
示例:
“`
su root -c ‘chown zhang1.zhang1 ff1′
Password:
[zhangxiao@localhost ~]$
“`
– #### 修改文件的屬組:chgrp
“`
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… –reference=RFILE FILE…
“`
示例
“`
chgrp zhangxiao ff1
[zhangxiao@localhost ~]$ ll ff1
-rw-rw-r–. 1 zhang1 zhangxiao 0 Apr 5 10:07 ff1
[zhangxiao@localhost ~]$
“`
-R 遞歸
一個用戶的token是登錄的時候獲取的,所以一旦我們改了用戶的屬性后新的token需要重新登錄才能生效
– 目錄的基礎權限有三個
文件:
“`
r: 可使用文件查看類工具獲取其內容
w: 可修改其內容
x: 可以把此文件提請內核啟動為一個進程
? 目錄:
r: 可以使用ls查看此目錄中文件列表
w: 可在此目錄中創建文件,也可刪除此目錄中的文件
x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此目錄
X:只給目錄x權限,不給文件x權限
“`
#### 文件的權限基本針對三類人
“`
owner: 屬主, u
group: 屬組, g
other: 其他, o
“`
– #### 修改文件權限:
chmod
語法:chmod(選項)(參數)
> 常用選項:-R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一并處理;
> –reference=<參考文件或目錄>:把指定文件或目錄的所屬群組全部設成和參考文件或目錄的所屬群組相同;
“`
chmod u+x,g+w ff1  //為文件f01設置自己可以執行,組員可以寫入的權限
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
chmod a+x f01  //對文件f01的u,g,o都設置可執行屬性
“`
– #### umask
umask的本質含義是取消相對應的權限(二進制對位取消)
> 通常情況下新建的文件權限是:666-umask(對位相減)
> 新建的文件夾全是是:777-umask
umask用法
umask (022)

– #### SUID權限用數字4表示
“`
當用戶執行程序時,臨時集成其程序所有者的權限
只對二進制可執行程序有效
SUID設置在目錄上無意義
權限設定:
chmod u+s FILE…
chmod u-s FILE…
“`
SGID:用數字2表示

“`
?任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
?啟動為進程之后,其進程的屬組為原程序文件的屬組
?權限設定:
chmod g+s FILE…
chmod g-s FILE…
“`
備注:如果給目錄增加SGID權限則目錄中新建的文件集成目錄的所屬組

– #### 粘滯位:sticky用數字1表示
一般粘滯位給文件夾用,使文件夾中的文件只能文件的所有者刪除
用法:chmod o+t diename

– #### chattr
語法:chattr (選項 )+(屬性) 文件或目錄
選項:
“`
-R:遞歸處理,將指令目錄下的所有文件及子目錄一并處理;
-V:顯示指令執行過程;
+<屬性>:開啟文件或目錄的該項屬性;
-<屬性>:關閉文件或目錄的該項屬性;
=<屬性>:指定文件或目錄的該項屬性。
“`
屬性:
“`
a:(文件只可以追加內容)
A:鎖定讀取時間
b:不更新文件或目錄的最后存取時間;
c:將文件或目錄壓縮后存放;
d:將文件或目錄排除在傾倒操作之外;
i:不得任意更動文件或目錄;
s:保密性刪除文件或目錄;
S:即時更新文件或目錄;
u:預防意外刪除
“`
備注:lhattr可以查看鎖定的文件

– ### ACL
ACL權限是給文件或目錄針對除所有者、所屬組和其他人之外的人設置權限
命令
setfacl

“`
-m增加權限
-x刪除權限
-b刪除文件或目錄的所有acl權限
-K:刪除默認ACL權限
示例:
[zhangxiao@localhost ~]$ setfacl -m u:zhang1:6 ff2
[zhangxiao@localhost ~]$ getfacl ff2
# file: ff2
# owner: zhangxiao
# group: zhangxiao
user::rw-
user:zhang1:rw-
group::rw-
mask::rw-
other::r–

[zhangxiao@localhost ~]$
“`
用getfacl+文件名查看文件的所有權限包括acl權限
##### mask權限
mask給文件權限限高,對除owner和other外的所有人有效
用setfacl -m mask::【0(權限)】| +文件名

– ### 文本處理工具
– WC
語法wc(選項)(參數)
WC+文件名默認顯示文件的 行數:單詞(空格分割):字節:
“`
-c或–bytes或——chars:只顯示Bytes數;
-l或——lines:只顯示列數;
-w或——words:只顯示字數。
“`
示例
“`
[root@localhost data]# wc fstab
12 60 541 fstab
“`
– #### cut
按照縱列方式切割文本并顯示
語法:cut 【選項】+參數
“`
選項:-d:指定字段的分隔符,默認的字段分隔符為“TAB”;
-f:顯示指定字段的內容;
-f 可以輸出單一字段或者多個字段,多個連續字段用(-)連接 不連續字段用(,)連接
–out-delimiter=<字段分隔符>:指定輸出內容是的字段分割符;
-c:僅顯示行中指定范圍的字符
“`
示例

“`
[root@localhost data]# cut fstab -d’ ‘ -f3

#

by
#
filesystems,
man
#

[root@localhost data]#
“`
– #### sort
語法:sort【選項】文件名
選項
“`
:-f:排序時,將小寫字母視為大寫字母;
-r:以相反的順序來排序;
-t<分隔字符>:指定排序時所用的欄位分隔字符;
-k:表示已指定字段排序
-n:按數值大小排序
-u:去除重復
“`

“`
示例:
[root@localhost data]# sort -t: -k3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhangxiao:x:1000:1000:zhangxiao:/home/zhangxiao:/bin/bash
xiaoxiao:x:1001:1001::/home/xiaoxiao:/bin/bash
zhang:x:1002:1002::/home/zhang:/bin/bash
zhang1:x:1003:1003::/home/zhang1:/bin/bash
zhang3:x:1004:1004::/home/zhang2:/bin/bash
tomcat:x:1005:1005::/home/tomcat:/bin/bash
qemu:x:107:107:qemu user:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
“`
– #### uniq
用法:uniq 【選項】
通常和sort一起用
“`
-c顯示每行重復的次數
-d僅顯示重復的行
-u僅顯示未重復的行
“`
– #### diff

“`
diff 命令的輸出被保存在一種叫做“補丁”的文件中
? 使用 -u 選項來輸出“統一的(unified)”diff格式文件,最適用于補丁文件
?patch 復制在其它文件中進行的改變(要謹慎使用)
? 適用 -b 選項來自動備份改變了的文件
$ diff -u foo.conf foo2.conf > foo.patch
$ patch -b foo.conf foo.patch
“`

4月6日

Linux的文本處理三劍客
> grep:文本過濾(模式:pattern)工具
> grep, egrep, fgrep(不支持正則表達式搜索)
> sed:stream editor,文本編輯工具
> awk:Linux上的實現gawk,文本報告生成器
– ### grep
作用是根據“pattern”對目標文件進行搜索,并且顯示匹配到的行

這就是一個簡單的腳本腳本的用途是顯示hello
grep分三種
> 1:fgerp不支持正則表達式,但是搜索速度極快
> 2:gerp支持正則表達式
> 3:egerp支持擴展的正則表達式 有
用法:grep [OPTIONS] PATTERN [FILE…]
gerp常用的選項
-color=auto: 對匹配到的文本著色顯示
-v: 顯示不被pattern匹配到的行
-: 忽略字符大小寫
-n:顯示匹配的行號
-c: 統計匹配的行數
-o: 僅顯示匹配到的字符串
-q: 靜默模式,不輸出任何信息
-A #: after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:實現多個選項間的邏輯or關系
-w:匹配整個單詞
-E:使用ERE
-F:相當于fgrep,不支持正則表達式

正則表達式的元字符有

“`
. 匹配任意單個字符
[] 匹配指定范圍內的任意單個字符
[^] 匹配指定范圍外的任意單個字符
[:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:lower:] 小寫字母 [:upper:] 大寫字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
[:digit:] 十進制數字 [:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號
“`
匹配次數有
“`
* 匹配前面的字符任意次,包括0次
貪婪模式:盡可能長的匹配
.* 任意長度的任意字符
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
“`
位置錨定的字符有

“`
位置錨定:定位出現的位置
^ 行首錨定,用于模式的最左側
$ 行尾錨定,用于模式的最右側
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 詞首錨定,用于單詞模式的左側
\> 或 \b 詞尾錨定;用于單詞模式的右側
\<PATTERN\> 匹配整個單詞
“`

分組

“`
分組:\(\) 將一個或多個字符捆綁在一起,當作一個整體進行處理,如:\(root\)\+
?分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …
“`
– #### 擴展的正則表達式和基本的正則表達式用法基本一樣,但比基本的正則表達式方便,用法是在正則表達式的基礎上去掉轉義符

shell腳本基礎

程序的編程風格分為兩類
> 1:過程式:以指令為中心,數據服務于數據
> 2:對象式:以數據為中心,指令服務于數據
高級語言大致分為兩種
> 編譯:高級語言–>編譯器–>目標代碼
java,C#
> 解釋:高級語言–>解釋器–>機器代碼
shell, perl, python

– ### shell腳本:
包含一些命令或聲明,并符合一定格式的文本文件
> 格式要求:在shell腳本中
> 首行需要寫shebang機制
> shebang寫做#!,#!的作用是告訴cpu此程序是什么機制
示例:#!的寫法
> #!/bin/bash
> #!/usr/bin/python
> #!/usr/bin/perl

> shell腳本的用途有:
> 自動化常用命令
> 執行系統管理和故障排除
> 創建簡單的應用程序
> 處理文本或文件

簡單的腳本可以由簡單的命令組合而成。
腳本的基本結構
> #!SHEBANG
> CONFIGURATION_VARIABLES
> FUNCTION_DEFINITIONS
> MAIN_CODE

示例

“`
#!/bin/bash
#—————————
# my first script
# owner :zhangxiao
#—————————

echo “hello”

“`

2018.4.8

張笑

\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/\^o^/

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/94321

(0)
a.張笑a.張笑
上一篇 2018-04-01
下一篇 2018-04-01

相關推薦

欧美性久久久久