0728linux基礎內容小記

~-  上一個工做目錄node

~+  當前工做目錄linux


touch f{1..100} 建立名爲f1~f100的文件git

touch f{a..z}  建立名爲fa~fz的文件bash

[:lower:] 任意小寫字母ide

[:upper:] 任意大寫字母spa

[:digit:] 任意數字,至關於0-9操作系統

[:alpha:] 任意大小寫字母指針

[:alnum:] 任意數字或字母orm

[:space:] 空格blog

[:punct:] 標點符號


1.顯示/var目錄下全部以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄

ls /var/l*[[:digit:]]*[[:lower:]]

2.顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的文件或目錄

 ls /etc/[0-9]*[^0-9]

3.顯示/etc目錄下以非字母開頭,後面跟了一個字母及其餘任意長度任意字符的文件或目錄

ls /etc/[^[:alpha:]][[:alpha:]]*

4.顯示/etc目錄下全部以m開頭以非數字結尾的文件或目錄

ls /etc/m*[^0-9]

5.顯示/etc目錄下全部以.d結尾的文件或目錄

ls -da /etc/*.d

6.顯示/etc目錄下,全部的.conf結尾,且以m,n,r,p開頭的文件或目錄

ls -da /etc/[mnrp]*.conf

  

touch命令

-a  僅改變atime

-m  僅改變mtime

-c  文件存在則刷新,不存在也不會建立

-t [YY]MMDDhhmm[.ss] 改變atimemtime

touch  -t 201605051010.30 file1

wKioL1eav9OwpSBxAACBzpN7pK8175.png


cp命令

-a 歸檔,至關於-dR --preserv=all

-d --no-dereference --preserv=links 不復制原文件,只複製連接名

-p 等同--preserv=mode,ownership,timestamp

-r recursive 遞歸

-v verbose

cp -r /etc/sysconfig/ /testdir/xxx

 沒有xxx目錄,則把sysconfig目錄複製到testdir下並重命名爲xxx

cp -r /etc/sysconfig/ /testdir/xxx

 已存在xxx目錄,則sysconfig複製爲xxx目錄中的子目錄


1.定義別名命令baketc,天天將/etc目錄下全部文件,備份到/testdir獨立的子目錄下,並要求子目錄格式  爲backupYYYY-mm-dd,備份過程可見

alias baketc='cp -rpv /etc/ /tmp/testdir1/backup-`date +%F`'


2.建立/testdir/rootdir目錄並複製/root全部下文件到該目錄內,要求保留原有權限

cp -R  --preserve=mode /root/ /testdir/rootdir


建多層目錄,例

mkdir -pv /testdir/dir1/{x,y}/{a,b}
mkdir -pv /testdir/dir2/{x/{a,b},y}
mkdir -pv /testdir/dir{3,4,5/{dir{6,7}}}



inode工做原理圖wKioL1ebE1vTFx_FAAzLroAY3tI137.png


wKiom1ebQCvxLDzdAAGYCS-WP8I056.png

wKiom1ebCQeAz59tAAEeU7b1Iu4184.png

wKioL1ea_laj5XfQAABjlQioxVQ116.png

mv 移動並重命名文件a.txt,不影響文件的用戶數據及 inode 號



wKioL1ebRGiBYX_kAABFYkd66ec325.png

它們的inode和data block是同樣的,改其中一個的內容,另外一個的內容也隨之變化,說明它們是同一個文件,至關於一個文件兩個名字 -rw-r--r-- 2   2是連接數。還能夠繼續作硬連接如ln bb cc,連接數隨之增長爲3。

刪除如bb文件,aa和cc依然存有數據,連接數減小爲2。

建立硬連接不能跨分區或文件系統

wKioL1ebAwqxonYEAAA_6fBzZok008.png

不能對目錄進行建立,只可對文件建立

wKioL1ebAhagjceGAAAizMQ3xrc279.png



有時候磁盤空間未滿,但不能建立文件,多是inode耗盡

實驗耗盡inode號

for id in {1..204800};do touch f$id;echo f$id is created;done
watch -n1 'df -i'    // df -i 查看inodes大小,wathc -n1 每秒查看執行結果

建立的文件即便爲空,自己的元數據也會佔用磁盤空間


ls -i  // inode 不一樣分區的節點號有可能相同


wKioL1ebCiGDghoGAAG6zrMWewM547.png

ln -s source softlink

原始文件相對路徑:相對於軟連接文件路徑,而不是相對於當前工做目錄

wKiom1ebCzHxZhvUAAA0oW3VJT4924.png


wKiom1ebC_Hy-dCHAAA-G_3U3XU999.png

find /testdir/ -samefile /testdir/aa   // 查看路徑/testdir有相同inode的全部硬連接
find /testdir/ -lname aa    // 查找在路徑/testdir下的文件aa的軟連接


file descriptor 文件描述符

ps aux 看到某個進程的pid

cd /proc/PID/fd 看到有文件


當前tty0

ls > /dev/pts/1     // 將ls命令的結果發送到tty1終端上了



stdinput 0

stdouput 1

stderr   2


BADCOMMAND 2> file  記錄錯誤信息


正確錯誤信息都輸出在同一個文件,例:

ls /etc/issue xxx &> file1

等價於

ls /etc/issue xxx > file1 2>&1

wKiom1eayzPC2ulKAAAlcTHwkMs689.png


(ls;pwd)>f3      //多條命令(用括號引發來)同時執行輸出到一個文件


ls /testdir/ xxx 1> right.txt 2> fail.txt

wKiom1eazTzCRvpyAAA6kx7naxs675.png


set+C 容許覆蓋

set-C 禁止覆蓋,能夠追加

wKioL1eazySgGzKwAAA00w-_a98107.png 


echo cenotos | passwd --stdin wang &> /dev/null
mail -s hello user1

hi

how are you

.                //以點結束

EOT


cat /var/spool/mail/user1 能夠讀到郵件

或者user1登陸  敲命令 mail 能夠收到郵件


羣發郵件,將郵件內容保存到一個文件mail.txt

mail -s tongzhi user1 < mail.txt   每次將user1更改用戶便可




練習題


一、將/etc/issue文件中的內容轉換爲大寫後保存至/tmp/issue.out文件中 

cat /etc/issue|tr 'a-z' 'A-Z' > /tmp/issue.out

二、將當前系統登陸用戶的信息轉換爲大寫後保存至/tmp/who.out文件中 

 echo `who`|tr 'a-z' 'A-Z' > /tmp/who.out

三、一個linux用戶給root發郵件,要求郵件標題爲」help」,郵件正文以下:

Hello, I am 用戶名,the system version is here,pleasehelp me to check it ,thanks!

操做系統版本信息 

echo -e "I am `whoami`.\nThe system is `cat /etc/redhat-release `."|mail -s help root

四、將/root/下文件列表,顯示成一行,並文件名之間用空格隔開  

ls -1 /root/ |tr '\n' ' '    //方法一

echo $(ls -a)                      //方法二

五、file1文件的內容爲:」1 2 3 4 5 6 7 8 9 10」 計算出全部數字的總和   

cat file1 |tr ' ' '\n'|awk '{sum+=$1}END{print sum}'  //方法一

i=$((`tr " " "+" < file1`));echo $i           //方法二

echo '1 2 3 4 5 6 7 8 9 10'|tr ' ' '+'|bc     //方法三
echo $[`echo '1 2 3 4 5 6 7 8 9 10'|tr ' ' '+'`]

六、刪除Windows文本文件中的'^M'字符  

sed -i "s/\^M//g" wintxt    //方法一

cat a.txt|tr -d '\015' > f2  再cat -A f2 看到沒^M了   // ^M對應十進制13,八進制015 //方法二

七、處理字符串「xt.,l 1 jr#!$mn2 c*/fe3 uz4」,只保留其中的數字和空格  

cat string1|tr -d [[:alpha:]][[:punct:]] 或
echo 'xt.,l 1 jr#!$mn2 c*/fe3 uz4'|tr -d -c '[:digit:] \n'

八、將PATH變量每一個目錄顯示在獨立的一行  

echo $PATH|tr ':' '\n'

九、刪除指定文件的空行   

sed /^$/d file2 或 sed /^[[:space:]]*$/d file2   //方法一

cat b.txt|tr -s '\n'   //方法二

十、將文件中每一個單詞(字母)顯示在獨立的一行,並沒有空行   

cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n'
相關文章
相關標籤/搜索