mycpen

Mycpen

记录学习历程与受益知识
github
telegram
bilibili

03_Linux基礎-文件類型-主輔提示符-第1提示符-3個時間-stat-其他基礎命令

一. stat 與 ll#

//		stat 與 ll 	stat 只能看自己。 ll能看文件夾下面的東西。
//		選項組合(不分先後順序)  如  ls  -Al  (2個功能一起顯示)
//		du  -sh	統計文件和文件夾大小
//		mkdir  -p	如果父目錄不存在,就新建
					如果文件夾存在,就不報錯
    				//	寫腳本經常用到
	  		  -v		給提醒(顯示已經創建成功)(沒什麼用)

stat 與 ll 與 ls -l -d#

//		stat 與 ll 與 ls  -l  -d
			stat 只能看本身的文件信息(文件夾本身)
			ll	能看文件夾下面的東西(文件夾裡面的)
			ls  -l  -d 只看它自己的詳細信息 不看裡面的(文件夾本身)

image-20220310192151920

image-20220310192158823


二。集合 {xx,xxx}#

1 條命令建多個文件夾#

#注:關鍵點{}
//		mkdir  hunantv/{weishi,jingshi,dushi}		一條命令建多個文件夾
		在 China_voice路徑下建 hunantv文件夾下的 文件夾(hunantv在 China_voice下)
		{weishi,jingshi,dushi} 表示一個集合,有共同的上級目錄

image-20220310191803814

		只建一個文件夾的時候,不能用 { } 括起來,{ } 會成為文件名。
//		一條命令完成(日常用的不多)	裡面有好幾級
		父目錄不存在時 接 -p  選項

image-20220310191848767


三. {1..100}#

#注:mkdir sc{1..100}
#注:rm  -rf  sc{1..100}
//		mkdir sc{1..100}	產生1到100的文件
		{1..100} 代表 1 到 100的集合 和前面的sc 組合
		mkdir  可以一次性建立多個  的功能
		//	rm  -rf  sc{1..100}
			rm  -rf  sc*  	2種都能刪
//		mandatory 命令的
		arguments 參數
//		mkdir  -p	如果父目錄不存在,就新建
					如果文件夾存在,就不報錯

image-20220310192017460

image-20220310192023763

//		mkdir  -v	給提醒

image-20220310192037604


四. du -sh#

//		du  -sh  查看目錄大小
		命令  選項  參數

五. cd#

//		cd  -  返回上一次所在的路徑
		cd  .  進入當前目錄
		cd  ..  返回到上級目錄
		cd  ~  返回到當前用戶的家目錄
		cd 	   返回到當前用戶的家目錄
cd命令
用途:切換工作目錄(Change Directory)	
格式:cd  [目錄位置]
#注:特殊目錄 
.     當前目錄
..     上級目錄
~     用戶主目錄(家目錄)
-     上一次所在的工作目錄(遙控器上的返回鍵)
//		useradd  xulilin  新建用戶
		cd  ~xulilin  進入xulilin這個用戶的家目錄
		[root@localhost xulilin]# pwd
		/home/xulilin
//		mkdir	新建目錄
		touch  qijian	新建空文件
		touch  hengshan/yilin.txt

六. cp -r#

//		cp  /etc/hosts  songshan/	複製文件不接 -r
		cp  hengshan/  songsahn/  -r  複製文件夾接 -r

七. file#

//		file  taishan  查看文件類型

八。文件類型#

//		經典文件類型:目錄		directory
					空文件		empty
					文本文件	text

image-20220310192555585

//		du  -sh  taishan/  查看文件大小
//		rm  -rf  tianshan/	  刪除

九. cp#

//		cp	複製的時候:
		複製,粘貼,重命名一步到位(重命名要後面不存在)
		cp  a.txt  abc.txt (目錄下有2個文件 a.txt  abc.txt)
		cp  a.txt  songshan/feng.txt (複製到songshan下改名叫feng.txt)
		cp  hengshan/  songshan/nanyue_hs  -r(複製文件夾接-r)
			複製hengshan到songshan下 改名nanyue_hs

十. mv#

//		mv	剪切,粘貼,重命名一步到位(重命名要後面不存在)
		mv  a.txt  hengshan/aaa.txt (剪切粘貼,重命名為aaa.txt)
		mv  songshan/  hengshan/shaolinshi (移動粘貼重命名為shaolinshi)
			移動重命名不需要接-r選項(與 cp 的不同點)

十一。主輔提示符#

//		主提示符
		[登錄用戶@主機名 工作目錄]
		輔助提示符
		#  $ 
 		[root@localhost xuxia]#
		[root@localhost wuxia]# 
		[xulilin@localhost ~]$ 
//		linux是一個多用戶多任務的操作系統
		root用戶家目錄  /root
		普通用戶家目錄	/home下面跟用戶名同名

十二. echo#

//		echo  輸出  相當於print
		PS1 是linux系統裡內置的一個變量,不需要我們定義

十三。第 1 提示符#

		第1提示符變量 PS1   prompt symbol 提示 符號 variable 變量

[\u@\h \W]$ 解釋#

//		# echo $PS1		# 注:第一提示符
		[\u@\h \W]\$
		解釋:
		\u  引用當前的用戶  user
   		\u  the username of the current user
		\h  引用當前的主機名   hostname
		\W 引用當前工作的目錄的名字  working
		\$  當用戶為root的時候,就輸出#,如果不是root就是$符號
		\t  當前的時間

臨時修改 PS1 變量#

//		# PS1='[\h@\u \t@\W]\$'  臨時修改PS1變量(沒必要改知道就行)	\t 當前的時間
[localhost@root 11:01:07@~]#
[localhost@xulilin 11:03:08@boot]$PS1='[\h#\u \t@\W]\$'
[localhost#xulilin 11:03:32@boot]$  // # 也可以

第 1、2 提示符#

//		# echo  $PS1
		[\u@\h \W]\$
		# echo  $PS2   第2提示符
		>
//		一行沒輸完  會顯示第2提示符>(只是提醒的作用)

十四. $+ 變量名#

		$PS1  $+變量名  引用某個變量
//		# echo  $PS1
		[\u@\h \W]\$
//		sg="tangliangfei"  定義一個變量sg 賦值tangliangfei  右邊賦值左邊
		echo $sg  輸出sg這個變量的值
		shell編程裡引用變量需要接$+變量名
		Shell編程  linux裡的命令編程
//		mv="liangly"
		echo $sg  $mv
		tangliangfei liangly  (都顯示)

十五. id#

//		id  命令
		[root@localhost china_voice]# id  
		uid=0(root) gid=0(root)  組=0(root) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
		root用戶 uid 為0
		user id 用戶的編號 uid
		group id 組的編號  gid

十六. Linux 命令#

//		Linux命令
			用於實現某一類功能的指令或程序 
			命令的執行依賴於解釋器程序(例如:/bin/bash)
//		人 <——> bash <——> 內核 <——> 硬件
		bash  就是解釋器  相當於翻譯 C語言寫的 程序 工具
		Linux命令的分類
			內部命令:屬於Shell解釋器的一部分
			外部命令:獨立於Shell解釋器之外的程序文件
//		shell:是一類程序,用來解釋用戶輸入的命令,然後告訴內核去執行這些命令
			bsh
			sh
			csh
			bash
			ksh
		bash是最流行的shell--》幾乎所有的linux系統默認的shell都是bash

image-20220310194610950

人——BASH——kernel

image-20220310194628296

(大概了解)

十七. cat /etc/shells#

//		cat /etc/shells  查看本機裡有哪些shell
		/bin/sh   比較老的shell
		/bin/bash  
		/usr/bin/sh
		/usr/bin/bash
//		sh  敲sh,使用sh,沒有提示符,退出去 敲bash 或者 exit (父子進程)
//		切換shell  sh  和  bash  命令  exit

十八. ln -s#

#注:鏈接文件 天藍色
//		ln  -s
		ln  創建鏈接文件(快捷方式)
		不要去刪除原文件,不然會導致鏈接文件不可用 (一閃一閃 冒紅)
		ln  -s  源文件  鏈接文件		ln  -s  xulilin  xll
		-s  symbol link 符號鏈接(軟鏈接 soft)
		# mkdir changsha
		# ln -s  changsha cs  
		# ll
		lrwxrwxrwx. 1 root root  8 9月  17 11:19 cs -> changsha 

十九. echo $SHELL#

//		# echo $SHELL 查看linux系統裡默認的shell
		/bin/bash

二十. env#

//		# env  查看當前用戶的環境變量(linux系統裡預先定義的變量)  environment
		當前用戶的很多進程都可以使用的變量
		環境變量--》全局變量

二一. set#

		# set  查看所有的變量(自定義變量和環境變量)

二二。內部外部命令#

//		bash - GNU Bourne-Again SHell
		BASH_BUILTINS  builtin 內置(內部)  built in
		額外安裝的命令--》外部命令
		通過安裝bash這個程序就可以得到的命令--》bash的內部命令
		yum  install tree -y	tree命令是外部命令,需要額外安裝
		mkdir ip 外部命令  cd echo exit 內部命令

二三. which#

//		which bash  			查看bash命令存放在哪裡
		/usr/bin/bash

二四. rpm#

rpm -qf#

#注:rpm -qf	查詢命令通過那個軟件包安裝過來的
#注:先用which 查看命令的絕對路徑
//		rpm -qf /usr/bin/bash  查詢/usr/bin/bash是通過哪個軟件包安裝過來的
		bash-4.4.19-10.el8.x86_64

rpm#

//		rpm 是linux裡的軟件管理的命令,例如安裝,卸載軟件
		-qf 	查詢文件是通過那個軟件安裝過來的
//		# which ip
		/usr/sbin/ip
		# rpm -qf /usr/sbin/ip
		iproute-5.3.0-1.el8.x86_64
//		bin  二進制 binary  

二五. /usr#

#注:/usr	存放安裝軟件的目錄	unix system resource
//		/usr   是linux裡存放安裝軟件的目錄   unix system resource  unix 系統資源
		相當於windows裡的Program Files
//		鏈接文件 淺藍色
		正常文件 深藍色
//		/  根目錄
		/root   	 root用戶的家目錄
		/home/用戶名同名的目錄   普通用戶的家目錄

二六. / 與 /root 關係#

//		根目錄和root用戶的家目錄的關係?
		/root  在/目錄下,是包含關係
//		~ 代表家目錄,當你所在的文件夾的路徑是家目錄,就會顯示 ~
		普通用戶只能進自己家目錄,root用戶能進任何家目錄↓↓↓

進入其他用戶家目錄#

[xulilin@localhost /]$ cd ~xulilin	# 注:普通用戶只能進自己家目錄
[xulilin@localhost ~]$ cd ~cali
-bash: cd: /home/cali: 權限不夠
[xulilin@localhost ~]$ exit
註銷
[root@localhost ~]# cd  ~cali
[root@localhost cali]# pwd
/home/cali
[root@localhost cali]# 

二七. hostname#

//		# hostname 查看主機名
		localhost.localdomain

臨時、永久修改主機名#

臨時修改#

//		# hostname  sanchuang-linux  臨時修改主機名(不能用下劃線_)
		接著重新登錄 su - root	(當前終端登錄)/ 或者重新建立一個連接(開一個終端登錄) 重啟後失效
//		為什麼要修改主機名?
			方便識別,區別不同的服務器

永久修改#

//*		永久修改主機名
		# vim  /etc/hostname  改這個文件,打個新名字。
		# cat  /etc/hostname 
		sanchuang-linux
		重啟後生效
//		reboot  重啟
//		不一定非得 虛擬機 登錄後 xshell才能登錄
//		提示符
			PS1	第一提示符
			PS2	第二提示符

二八. vim#

//		vim編輯器的使用
		vim 是linux裡的字符界面的文本編輯器 ——》記事本  只能寫文字
		安裝vim		yum   install  vim  -y
//		vim  sc.txt
		1.按字母鍵i進入輸入模式  insert
		2.輸入內容,可以是中文或者英文
		3.按ESC鍵,返回到命令模式  escape 離開,逃離
		4.輸入:wq  退出並且保存  write  quit
			  :q!  退出不保存
			  :q  退出(沒有修改可以退出)

二九. cat#

//		# cat  sc.txt   查看文本文件裡的內容

三十。快捷鍵#

//		快捷鍵
		//	ctrl + l
		//	ctrl + c	強行終止命令  # ^ C
				比如 ping  www.baidu.com  ctrl + c
		//	tab	補齊命令  # mkd (之後按2下tab鍵)mkd開頭的命令都列出來了
				補齊路徑  # mkdir wang 唯一性就直接補齊  否則敲兩下 列出wang…
				能識別唯一性時,按一次tab鍵
				不能識別唯一性時,需要按2次,然後自己輸入
		// 上下方向鍵,可以調用以前使用過的命令

三一. pwd#

//		pwd  查看工作目錄
		cd    切換工作目錄
		cd  ~ (cd) 進入用戶家目錄
		cd  -	返回上一次目錄
		cd  ~  liangluyao  進入liangluyao家目錄
		cd  ..  返回上級目錄

三二。別名#

//		ll  是 ls  -l  --color=auto的別名
//		# alias  查看linux裡有哪些定義好的別名
//		# alias  c=clear  臨時定義c是clear的別名
		clear 是linux系統裡的命令  命令有選項的 要同’ ’ (單引號)引起來 
		再開啟一個終端 就沒效了 臨時定義
		c是自定義的名字,定義別名的時候,不要和系統裡已經存在的命令衝突

取消別名#

//		unalias	取消別名
		# alias mkdir=ls
		# unalias  mkdir  取消別名

永久修改別名#

//		# vim  /root/.bashrc  永久修改別名,需要重新登錄,或者su切換用戶到root
		.bashrc 是一個隱藏文件  按i進去 進行別名定義——》ESC  :wq

三三. ls#

//		ls命令
		用途:列表(List)顯示目錄內容 
		格式:ls  [選項]...  [目錄或文件名]
        常用命令選項
        -l :以長格式顯示
        -d:顯示目錄本身的屬性
        -t: 按文件修改時間進行排序
        -r :將目錄的內容清單以英文字母順序的逆序顯示
        -a:顯示所有子目錄和文件的信息,包括隱藏文件
        -A:類似於“-a”,但不顯示“.”和“..”目錄的信息
        -h:以更易讀的字節單位(K、M等)顯示信息
        	//  必須和 -l 一起用
        	-h, --human-readable
    			with -l and -s, print sizes like 1K 234M 2G etc.
        -R:遞歸顯示內容
        	一層一層顯示,作用遠遠不及 tree好,很繁瑣
//		ls	查看當前 目錄
        ls  /boot  查看/boot 下目錄
        ls  -l  -d  /boot  只顯示本身的文件夾信息 ls -ld / ls -dl
        ls  -t  時間  文件修改時間排序
        ls  -r  英文字母 逆序顯示
        ls  -l  -h  /boot  顯示/boot的各個文件的大小
        		-h  必須和  -l  一起用  顯示大小 K M G

\ls -l#

//		\ls  -l  不顯示列出的文件類型顏色

ls -l |grep "^d"#

//		# ls  -l|grep  "^d"  
		解釋如下
//		| 管道符號: 進程和進程之間通信的一種方式
		作用:將前面一個命令的輸出送給後面一個命令作為輸入
			中間商,借花獻佛,提籃子
//		grep :文本過濾的命令
			會根據匹配的字符串去過濾,顯示出匹配內容的行

//		^d  表示以d開頭的行
//		# ll|grep "txt"
        -rw-r--r--. 1 root root  0 9月  17 15:58 a.txt
        -rw-r--r--. 1 root root  0 9月  17 16:02 sc10.txt
        # ll|grep "^d"
        drwxr-xr-x. 5 root root 48 9月  17 09:51 hunantv
        drwxr-xr-x. 4 root root 42 9月  17 09:54 jiangsutv
        # ll|grep "^-"
        -rw-r--r--. 1 root root  0 9月  17 15:58 a.txt
        -rw-r--r--. 1 root root  0 9月  17 16:02 sc10.txt
        # ll|grep "^-"|wc -l
        11

三四. ASCII#

//		ASCII  美國信息交換標準代碼
		數字、大寫字母、小寫字母 ASCII碼值 小——》大
//		一個字節=8位
		101010101
//		man  ls  ——》/-h  查找 -h
//		# man ls
            回車:一行一行的往下走
            /-h  查找包含-h的行
            n   查找下一个 next
            N   查找上一个   next
            q   退出	

三五。文件類型#

//		文件類型		縮寫		應用
        常規文件	    -		 保存數據
        目錄 	    	  d		  存放文件  directory
        符號鏈接文件 	   l		指向其它文件  link
        字符設備文件	   c		character  --》與字符顯示相關的文件
        塊設備文件		b		 block -->存放數據的塊文件
        s 	socket文件
        p 	管道文件 pipe

三六. 「drwxr-xr-x. 5 root root 48 9 月 17 09:51 hunantv」解釋#

//		[root@sanchuang-linux china_voice]# ls  -l
		總用量 0
		drwxr-xr-x. 5 root root 48 9月  17 09:51 hunantv
            d 代表文件類型  directory 目錄
            rwxr-xr-x 權限  r 讀 read   w寫 write   x 執行 execute
            . 和selinux權限相關
            5 文件的鏈接數
            root  用戶 
            root  組
            48  文件大小
            9月  17 09:51  文件的創建時間

三七. wc#

//		wc 是一個統計命令,可以統計文件裡有多少行,多少單詞,多少字節
			-l 統計行數  lines
		wc  -l  統計行數

不顯示文件名#

//# wc -l  a.txt  (wc  -l 也可以統計文件的行數) 直接統計會顯示文件名
	3 a.txt
//# cat a.txt |wc -l (cat管道傳給wc 不會顯示文件名)
	3
		//# cat /etc/passwd|wc -l
			27
//# cat /etc/passwd|grep "liang"
    liangluyao:x:1001:1001::/home/liangluyao:/bin/bash
    liangluyao2:x:1002:1002::/home/liangluyao2:/bin/bash
    # cat /etc/passwd|grep "root"
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin

練習#

//		1.統計出/dev目錄下有多少字符設備文件
		 ll  /dev|grep “^c”|wc  -l
		2.統計出/dev目錄下有多少塊設備文件
		 ll  /dev|grep “^b”|wc  -l
        3.統計/etc/目錄下有多少文件夾和普通的文件
         ll  /dev|grep “^-”|wc  -l  文件
         ll  /dev|grep “^d”|wc  -l	文件夾
         ll  -R  /etc|grep “^-”|wc  -l	統計/etc和子文件夾下的所有普通文件 更徹底(包含子目錄下)
         ll  -R  /etc|grep “^d”|wc  -l	統計/etc和子文件夾下的所有文件夾  更徹底(包含子目錄下)
        4.統計/etc/ssh/sshd_config文件有多少行
		     cat  /etc/ssh/sshd_config  |wc  -l
//		統計文件夾裡有多少文件
    	ll  |  grep  wc 
//		統計文件有多少行
	    cat   |  wc

三八. du#

//		du  統計目錄及文件的空間佔用情況  disk  usage(估算值,並不是很準確)
        *du  -sh  統計匯總的大小(常用)黃金組合
            -s
              -s, --summarize 匯總的大小
                      display only a total for each argument
            -h  
             -h, --human-readable
                      print sizes in human readable format (e.g., 1K 234M 2G)
            -a 統計文件和文件夾
                 -a, --all
              write counts for all files, not just directories

du -sh 與 ll -h 區別#

        du  -sh  /boot
        ll  -h  /boot
//		# ll  -h  /boot  只能統計文件的大小,文件夾裡的所有的文件不會匯總
        總用量 134M
        du  -sh	可以匯總
        ll  -h 就是你文件裡有多少個單詞 多少個字符
        # du -sh /boot
        140M	/boot
        # ll -h  -d /boot
        dr-xr-xr-x. 6 root root 4.0K 9月  13 14:38 /boot
//		英文字母,數字 占1個字節
        中文字母:utf8編碼   3個字節
        ll  -h 統計的是一個文件裡有多少字符
			 統計文件裡面文字的字節數
		du  統計佔用多少塊
			統計文件存放在磁碟上消耗了多少個塊
//		1個塊的大小就是4096 (4K)

image-20220311071612898

//		touch	新建空文件
				更新时间
//		stat  host  查看三個時間
        最近訪問
        最近更改
        最近改動

三九。改為英文編碼#

//		改為英文編碼
        # LANG=en_US.UTF8
        # ll hosts 
        -rw-r--r--. 1 root root 158 Sep 17 16:57 hosts

四十. 3 個時間#

# stat hosts 
  File: hosts
  Size: 158       	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 17162314    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2020-09-17 16:57:57.748799777 +0800
Modify: 2020-09-17 16:57:57.748799777 +0800
Change: 2020-09-17 16:57:57.748799777 +0800
 Birth: -
	時間:	
		訪問時間  access time  --》atime     打開這個文件  cat
		修改時間  modify time  --》mtime    修改裡面的內容,增加,刪除內容等  vim
		更改時間  change time  --》ctime    更改了文件的屬性(名字,權限,大小,時間,用戶,組)
		精確到納秒
		touch  hosts	三個時間都更新(都改了)

四一. chmod#

//		chmod 修改權限  change  mode 
			chmod  a+w  hosts

image-20220311072045096

		chown 修改屬主和屬組  change  owner

image-20220311072106068

		vim  hosts  輸入  :wq  修改數據
//		+0800 表示東八區  中國的上海,北京 
		烏魯木齊  東六區
//		# cp /etc/passwd  .  將/etc/passwd複製到當前目錄
		現在我們敲的cp,都是 cp  -i ,cp是別名
        # alias
        alias c='clear'
        alias cp='cp -i'
 		 -i, --interactive 交互式
              prompt before overwrite (overrides a previous -n option)

四二. cp 的時候覆蓋文件,不給予提醒的方法#

//		cp的時候覆蓋文件,不給與提醒的方法
		1.取消別名  --》不推薦
			# unalias cp
		2.使用cp命令的絕對路徑  --》推薦
		  # which  cp
			alias cp='cp -i'
			  /usr/bin/cp
			# /usr/bin/cp  feng  changsha/ -r
			# /usr/bin/cp  feng  changsha/ -r  再次複製 覆蓋不給提醒
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。