Linux學習-常用文件目錄操作命令(一)

1、Linux特點
Linux是Unix的衍生版本,Mac os則是Unix 基礎上的另一種操作系統。Linux版本主要分爲內核版本和發行版本,內核版本主要是操作系統內核,一般我們無法直接使用,而是使用社區或廠商在linux內核基礎上研發的發行版本,比如redhat、centos、ubuntu等。
與windows區別:
1、Linux嚴格區分大小寫
2、Linux一切皆文件,無論軟件程序還是硬件都對應一個文件
3、Linux區分文件類型並不是根據文件後綴,而是根據文件的權限,但是有一些約定的文件類型來使人區別文件類型
4、windows程序不能直接運行在linux上
Linux一般用於企業服務器或嵌入式(支持裁剪),企業級服務器中一般沒有圖形界面,因爲有更多的額外的程序服務,就會帶來更大的風險。linux作爲開源軟件,擁有豐富的配套資源軟件,但是遊戲就比較少。
發行版本ubuntu與centos區別是ubuntu圖形界面更完善一些,但是也沒有達到很優秀,但是centos更穩定一些,做企業級服務器更好。
2、Linux文件用戶權限
‘- - - - - - - - - -’

	Linux文件權限總共有10位,第1位表示文件的類型-(文件)、d(目錄)、l(鏈接)、b(存儲設備)、c(串口設備)
	連續---表示rwx(4 2 1)
	第1個連續三位表示所有者對文件的權限;
	第2個連續三位表示文件所屬用戶組對文件的權限 
	第3個連續三位表示其他用戶對文件的權限

3、修改用戶對文件的權限
chmod 修改文件權限
文字設定法
chmod [ugoa] [+ | – | =] [rwxugofvr…] 文件名
chmod ugo+w file.txt //等價 chmod a+w file.txt
數字設定法
chmod [r4 w2 x1] 文件名

chmod 777 file.txt
chmod 664 file.txt

chown 修改文件所屬主或者組
語法:chown [cvR…] 用戶或組 文件

chown -R lisi /d1/d2/file    //R表示遞歸包括文件以及目錄都修改所有者 不使用R則只是文件或目錄file下所有子文件夾權限修改

修改文件所有組 chgrp
語法: chgrp [組名] [文件名]

chgrp group1 file.txt

4、常用文件和目錄修改命令
角色切換 su

su root	    su jack
sudo 用於在執行命令前表示該用戶執行被授予的root部分權限,前提是該用戶已經在sudoers中
mkdir /dir  //提示權限不夠
sudo mkdir /dir    //則可以執行成功

目錄切換cd

//當前爲根目錄/
cd ect/      //相對路徑
cd /ect/    //絕對路徑
cd     //返回家目錄
cd -  //返回上一次所在目錄cd
cd ..  //返回上一級目錄
cd . //當前目錄

返回當前用戶所處絕對路徑 pwd

pwd      // /etc

查看文件信息 ls

ls [-alhdRt] 目錄
-a 全部文件連同隱藏文件(.開頭的文件)但是並不列出子目錄下文件或目錄
-l 列出長數據串,包含文件屬性權限 引用次數等
-h 文件容量以易讀的方式(KB、GB)列出來
-d 僅列出目錄本身
-R 不僅列出本目錄下文件,同時遞歸列出子目錄及文件
-t 列出文件以時間排序

ls -al  //顯示當前目錄下所有的文件和目錄
ls -al  /etc  //顯示etc目錄下所有的文件和目錄

創建文件cat (vi filename 、touch filename)

cat [-nb] filename    //顯示一個已存在的文件的所有內容 n顯示行號 b對於空白行不編號
cat >filename         //輸入內替換原來文件內容 如果文件不存在,則創建一個新文件 ctr+d 退出
cat >filename <<EOF(可自定義)  //與上面功能一樣,只不過在新的一行輸入EOF表示退出編輯
cat >>filename     //在原來文件內容後面追加內容,如果文件 不存在則新創建文件
cat >>filename <<EOF   //與上面功能一致,同樣在新的一行輸入EOF表示退出

創建目錄 mkdir

mkdir  /world         //絕對路徑方式創建world目錄
mkdir world          //相對路徑 當前路徑下創建world目錄
mkdir -p /world/world1/world2     //一次創建多級目錄

刪除目錄文件 rm

rm -rf 目錄或文件   // r遞歸刪除 f強制刪除  i對話提示

拷貝文件或目錄cp

cp [-pdra] 源 目標
-p 連同文件屬性一塊複製 包括時間
-r 遞歸複製
-d若源文件爲連接文件的屬性,則複製連接文件屬性,而非文件本身

移動文件目錄或改名(同一個目錄下)mv

mv file  dir    //文件移動到dir下
mv file1 file2  dir   /如果是多個源文件,則最後一個一定是目標目錄

將一個文件在另一個文件上建立連接 ln

ln  file1  file2     //相當於對file1起別名file2 刪除其中一個 不影響另一個使用  硬鏈接 不能用於目錄 跨分區
ln  -s file1  file2  //軟連接 如果刪除file1,則file2也不能使用

4、文件目錄查找命令
查找文件命令
locate [-ibc…] filename
locate (只能文件名)比find (但強大)命令快,主要是因爲locate並不是像find那樣檢索相應的所有的文件系統目錄,locate是隻檢索/var/lib/mlocate/mlocate.db數據庫,但是這個數據庫由系統每天更新一次,所以存在剛創建的文件 locate搜索不到。
還有就是即使更新(updatedb)有些目錄下也搜索不到,主要是因爲在locate搜索更新配置文件/etc/updatedb.conf中在搜索的時候把默寫目錄已經排除在外 比如/temp 、/var/temp
可自行修改搜索限制

[root@localhost /]# cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"


[root@localhost dirtest]# touch gf.txt
[root@localhost dirtest]# locate /dirtest/gf
[root@localhost dirtest]# updatedb 
[root@localhost dirtest]# locate /dirtest/gf
/dirtest/gf.txt

查找命令的命令
whereis [-b(顯示可執行文件)m(顯示幫助文檔)] 系統命令

[root@localhost /]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

which 系統命令
顯示命令所在路徑 有別名會顯示別名

[root@localhost /]# which cd
/usr/bin/cd
[root@localhost /]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls

命令執行時根據PATH環境變量中來搜索的並執行

[root@localhost /]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/lr/.local/bin:/home/lr/bin

強大的查找find命令
find [搜索範圍] [搜索條件]

[root@localhost /]# find /dirtest -name hello.sh //在範圍內 根據文件名全匹配搜索
/dirtest/hello.sh
//只搜索文件
[root@localhost dirtest]# find . -type f
./file1.txt
./hello.sh
./test/file.sh
./ff.txt
./ff
./f
./gf.txt

//只搜索目錄
[root@localhost dirtest]# find . -type d
.
./test
./test1
./test2
./tets3
./tets3/test31
./tets3/test31/test32

//通配符匹配文件名 任意符號* 單個字符? 其中任意一個字符[]
[root@localhost dirtest]# find . -iname “*.sh” //i不區分大小寫 含通配符部分要用引號
./hello.sh

//組合命令 -exec 命令 {} ; 固定格式 對前面執行後在執行這個命令
[root@localhost dirtest]# find . -type f -print -exec ls -al {} ;
./file1.txt
-rw-r–r--. 1 root root 52 10月 19 16:43 ./file1.txt
//加-print會把文件對象輸出
[root@localhost dirtest]# find . -type f -exec ls -al {} ;
-rw-r–r--. 1 root root 52 10月 19 16:43 ./file1.txt
//找到某個文件並刪除
[root@localhost dirtest]# find . -name f -exec rm -rf f {} ;

//查找文件權限爲644的文件
find ./ -perm 644
//根據大小查找文件 等於2k(M)大於+2k(M) 小於-2k(M)
find ./ -size -2k
//根據修改文件內容時間(天)查找 2 +2 -2 (其它時間雷同 ctime 屬性修改 atime 訪問)
find . -mtime -2
//根據修改文件內容時間(分鐘)查找 2 +2 -2
find . -mmin -2
//根據文件所屬用戶查找
[lr@localhost dirtest]$ find . -user root

查找文件中的字符串grep 常與find搭配使用

grep [-iv] 字符串 文件名
-i 忽略字符串大小寫
-v 排除字符串

grep -v he hello.sh
//與find組合使用 查找指定目錄下的文件中含有某個字符的行
[root@localhost practice]# find ./ -type f -print -exec grep "金庸" {} \; 
[root@localhost practice]# find ./ -type f -print | xargs grep -n "金庸"

-exec與-args區別
-exec 結果參數是一個一個傳遞的,傳遞一個參數執行一次後面的命令 -print可以看出;把前面的命令標準輸出,作爲後面的命令的標準輸入,其中{}表示前面命令的結果集,;表示命令終結符

-xargs 是把結果一次(-n可指定傳遞個數)傳遞給後面指令執行。

5、查看命令幫助文檔
幫助命令man(還有–help)(help 內核自帶命令)(info 命令 文檔巨大)
查看用戶命令如ls 而系統內核命令則可以用help cd來查看幫助文檔

man ls  //查看ls命令
[root@localhost dirtest]# man -f ls    //查看該命令幫助等級數字
ls (1)               - list directory contents
ls (1p)              - list directory contents
[root@localhost dirtest]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[root@localhost dirtest]# man 1 ls

//命令 --help也是查看幫助文檔

[lr@localhost ~]$ ls --help

// help 內核命令

help cd

//info 命令

info ls

6、linux中常用文件目錄壓縮
格式 .zip .gz .bz2 ->tar.gz tar.bz2(最常用)
gzip 壓縮目錄是自壓縮目錄下的文件,並不會壓縮目錄
bzip2 是不能壓縮目錄,因此 需要先打包成.tar單文件,然後壓縮 可以命令一步完成

zip 壓縮後文件 源文件 //參數文件 可以用包含目錄的文件
unzip 解壓後文件 源壓縮文件 //比如 file1 /dir1/file1

//壓縮文件至當前目錄
root@localhost dirtest]# zip  ff.zip  ff
//壓縮文件至指定目錄
root@localhost dirtest]# zip  dir2/ff.zip  ff
//解壓至當前目錄下
[root@localhost dirtest]# unzip ff.zip 
//解壓文件至指定目錄下
[root@localhost dirtest]# unzip dir2/ff.zip -d dir1/
//壓縮目錄加 -r 其他一樣
[root@localhost dirtest]# zip -r dir2/d1.zip dir1
[root@localhost dirtest]# unzip  dir2/d1.zip 

gzip 源文件 (源文件會消失 只當前目錄下使用 不能跨目錄,可以使用>流到指定的目錄或文件 ls >abc.txt 把結果寫入到文件)
gunzip 壓縮文件 /gzip -d 壓縮文件 (壓縮文件也會消失)

//壓縮文件
[root@localhost dirtest]# gzip ff
//解壓文件
[root@localhost dirtest]# gzip -d ff.gz
//壓縮文件夾  自壓縮文件夾下的文件  注意 這個需 -r
[root@localhost dirtest]# gunzip -r dir1

bzip2 源文件 (不會保留源文件 -k 保留源文件 且不能壓縮目錄
bunzip2 壓縮文件 /bzip2 -d 壓縮文件 (-k 保留原文件)

//壓縮文件
[root@localhost dirtest]# bzip2 --k ff
//解壓文件
oot@localhost dirtest]# bunzip2 ff.bz2

通過tar可以使命令和zip格式一樣 (壓縮類型z與j參數要放在最前)
tar -zcvf 壓縮文件 源文件
tar -zxvf 壓縮文件

//壓縮
[root@localhost dirtest]# tar -zcvf ff.tar.gz ff
//解壓
[root@localhost dirtest]# tar -zxvf ff.tar.gz
//壓縮
[root@localhost dirtest]# tar -jcvf ff.tar.bz2 ff
//解壓
[root@localhost dirtest]# tar -jxvf ff.tar.bz2

7、關機與重啓命令
shutdown [-rhc]

shutdown -h now  //現在關機  不使用 遠程沒辦法再次開機
shutdown -r now //現在重啓
shutdown  -r  10:00  //十點後重啓
shutdown -r +20    //而是分鐘後重啓
shutdown -c      //取消剛纔執行的關機命令

重啓 reboot
其他關機命令 init [0-6]
0:關機
1:單用戶模式 root
2:不完全多用戶,不包含nfs服務
3:完全多用戶
4:未使用
5:啓用圖形界面
6:重啓

init 0     

8、掛載
9、查看用戶登錄信息

[root@localhost ~]# w      //查看登陸的用戶信息    **當前用戶**
[root@localhost ~]# last   //查看所有用戶登錄信息
[root@localhost ~]# lastlog    //查看用戶最後一次登錄信息  查看是否有何黑客登錄 即不是自己登錄的記錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章