每个程序员都应该知道的Linux基础知识!全文4900字,没有耐心的不建议看 ——( Linux文件系统 + 系统管理类命令 + bash基础特性)
文章目錄
- - Linux的文件系統
- - LSB
- - FHS
- - 根文件系統
- - 對根文件系統下目錄的概述:
- /boot
- /bin
- /sbin
- /lib
- /lib64
- /etc
- /home
- /root
- /media
- /mnt
- /dev
- /opt
- /srv
- /tmp
- /usr
- /var
- /proc
- /sys
- /lost+found
- /selinux
- - Linux上的應用程序的組成部分
- 二進制程序
- 庫文件
- 配置文件
- 幫助文件
- - Linux下的文件類型
- - Linux下基本的系統管理類命令
- - 關機或重啟命令
- - 用戶信息查看命令
- Others
- - bash基礎特性及基礎命令
- - bash的基礎特性
- 命令歷史
- 命令補全
- - 練習
- - 擴展
- - 寫在最后的話:
這里是一段防爬蟲文本,請讀者忽略。 本文原創首發于CSDN,作者IDYS 博客首頁:https://blog.csdn.net/weixin_41633902/ 本文鏈接:https://blog.csdn.net/weixin_41633902/article/details/105678252
- Linux的文件系統
首先我們來了解兩個Linux的標準規范
- LSB
LSB: Linux Standard Base (Linux標準規范)是一個在Linux基金會結構下對Linux發行版的聯合項目,其目標使Linux操作系統符合軟件系統架構,或文件系統架構標準的規范及標準 —— 簡單點說就是定義Linux文件系統架構規范的一個標準
- FHS
FHS:Filessystem Heirache Standard(文件系統層次結構標準)定義Linux操作系統中的主要目錄及目錄內容。
- 根文件系統
下面內容主要講解linux根文件系統(linux root filesystem)下的目錄結構
- linux根文件系統下的主要目錄有
/etc,/usr,/var,/root,/home,/dev
# 查看linux根目錄下內容的命令 ls /- 查看結果如下:
- 對根文件系統下目錄的概述:
/boot
引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader,grub)都存放于此目錄
/bin
供所有用戶使用的基本命令:不能關聯至獨立分區,OS啟動即會用到的程序
/sbin
管理類的基本命令:不能關聯至獨立分區,OS啟動即會用到的程序
/lib
基本共享庫文件,以及內核模塊文件(lib/modules)
/lib64
專用于x86_64系統上的輔助共享庫文件存放位置
/etc
配置文件目錄(存放的配置文件都為純文本文件)
-
/etc/opt
- 存放 /opt 目錄下的配置文件
-
/etc/X11
- 存放 X Windows 系統的配置文件
-
/etc/passwd
- 存放系統用戶信息文件
-
/etc/passwd
- 存放磁盤掛載信息文件
/home
普通用戶的家目錄,當使用useradd創建用戶時,默認會在/home下創建一個與用戶同名的文件夾,同時會復制 /etc/skel/ 下的文件到該目錄下
在CentOS中,當創建新用戶時,默認會將/etc/skel下的隱藏文件全部復制到該用戶的家目錄下。所以在你創建用戶時,你會在該用戶的家目錄下發現一些隱藏文件。
# 查看隱藏文件的命令 ls -a/root
管理員的家目錄
- 普通用戶實現root權限的方法
對/etc/sudoers文件,進行配置。實現對用戶的授權
執行sudo命令,然后輸入該用戶自己的密碼
/media
掛載便捷式移動設備的目錄
-
當我們需要掛載一些移動設備時
比如需要掛載光驅設備時,我們可以創建/media/cdrom文件夾,然后將光驅設備掛載到該文件夾上。同樣的,掛載usb設備時,創建 /media/usb文件夾,然后掛載
/mnt
臨時文件系統的掛載點
/dev
設備文件及特殊文件存放目錄
-
b:block device 塊設備(隨機訪問設備)
-
c:character device 字符設備(線性訪問設備)
/opt
第三方應用程序的安裝位置
/srv
系統上允許的服務用到的數據
/tmp
臨時文件存放位置
/usr
usr并不是代表user的意思,它的全名是Unix System Resource 即Unix系統資源,它是系統幫助文檔以及源碼包安裝的位置。universal shared,read-only data 全局共享只讀數據:(一般來說安裝完系統后占用磁盤空間最大目錄)
-
/usr/bin
-
/usr/sbin
-
/usr/lib
-
/usr/include
- C程序的頭文件(header files)
-
/usr/share:結構化的獨立的數據
-
/usr/local:第三方應用程序的安裝位置,在此目錄下又有以下這些目錄
- bin,sbin,lib,lib64,etc,share
/var
存放可變數據文件(variable data files),此目錄下的子目錄有
-
cache:應用程序緩存數據目錄
-
lib:應用程序狀態信息
-
local:專用于為/usr/local 下的應用程序存儲可變數據
-
lock:鎖文件
-
log:日志目錄及文件
-
opt:專用于為/opt下的應用程序存儲可變數據
-
run:運行中的進程相關的數據,通常用于存儲進程PID文件
-
spool:應用程序數據池
-
tmp:保存系統兩次重啟之間產生的臨時數據
-
mail:用戶郵箱文件
/proc
用于輸出內核與進程信息相關的虛擬文件系統
/sys
用于輸出當前系統上硬件設備相關信息的虛擬文件系統
/lost+found
Linux上ext文件系統格式化后默認產生的路徑
/selinux
security enhanced Linux,selinux相關的安全策略等信息的存儲位置
- Linux上的應用程序的組成部分
二進制程序
/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
庫文件
/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib64
配置文件
/etc,/etc/DIRECTORY,/usr/local/etc
幫助文件
/usr/share/man,/usr/share/doc,/usr/local/share/man,/usr/local/share/doc
- Linux下的文件類型
-
- (f):普通文件
-
d:目錄文件
-
b:塊設備文件
-
c:字符設備文件
-
l:符號鏈接文件(軟連接)
-
p:管道文件:fist in,fist out
-
s:套接字文件:socket
- Linux下基本的系統管理類命令
- 關機或重啟命令
-
halt,poweroff 關機
-
reboot 重啟
- -f:強制,不調用shutdown
- -p:切斷電源
-
shutdown:
- shutdown [OPTION] … TIME [MESSAGE]
- -r:reboot(重啟)
- -h:halt(關機)
- -c:cancel(取消)
- TIME:
- now 立刻
- +m:相對時間表示法,從命令提交開始多久之后:例如 +3
- hh:mm:絕對時間表示,指明具體時間
- 用戶信息查看命令
- whoami:顯示當前登錄有效用戶
- who:系統當前所有的登錄會話
- w:系統當前所有的登錄會話及所做的操作
Others
- Macos(unix)資源回收能力好,節省電源,幾年不關機都沒事。然而Microsoft的系統資源回收能力弱,用幾天就必須重啟。
- bash基礎特性及基礎命令
- bash的基礎特性
命令歷史
-
history
- 環境變量:
- HISTSIZE:命令歷史記錄
- HISTFILE:~/.bash_history
- HISTFILESIZE:命令歷史文件記錄歷史的條數
- 環境變量:
-
history -d OFFSET 刪除某天歷史命令,OFFSET代表偏移位
- history -c 清空緩存中的歷史命令
- history #:顯示歷史中最近的#條命令
- -a:手動追加 —— 將緩存區中的歷史命令手動追加到 ~/.bash_history中
- 調用歷史中的命令:
-
!#重復執行第#條命令
-
!!:執行上一條命令
-
!string:最近一條以string開頭的命令
-
- 調用上一條命令的最后一個參數
- !$
- ESC,.
- Alt + .
先按 ESC 然后再按 . 就會出現上一條命令的最后一個參數,比如:
先執行 touch ABC.TXT
后在鍵盤上進入 echo “call” > ESC .
就會顯示 echo “call” > ABC.TXT的結果
-
控制命令歷史的記錄方式
設置環境變量:HISTCONTROL 來選擇命令歷史的記錄方式,其參數分別有下列三種
-
修改環境變量的方式:export 變量名=“值”
- 變量賦值:把賦值符號后面的數據存儲于變量名指向的內存空間
說明:export 方式修改變量的值只對當前的shell及其子shell起作用。換個終端開啟另外一個shell之后就不起作用了。
命令補全
- bash執行命令:
-
直接補全:Tab,用戶給定的字符串只有一條唯一對應的命令,如果以用戶給定的字符串為開頭的命令不唯一,則再次按Tab鍵會給出列表
- 路徑補全:把用戶給出的字符串當作路徑開頭,并在其指定的上級目錄下搜索以指定的字符串開頭的文件名
- 如果唯一:則直接補全- 如果不唯一:再次按Tab鍵,給出列表
-
命令行展開
- ~:展開為用戶的主目錄
- ~USERNAME:展開為指定用戶的主目錄
- ~:展開為用戶的主目錄
- 路徑補全:把用戶給出的字符串當作路徑開頭,并在其指定的上級目錄下搜索以指定的字符串開頭的文件名
-
{}可承載一個以逗號分隔的列表,并將其展開為多個路徑
-
命令的執行結果狀態
成功
失敗
bash使用特殊變量$?保存一條命令的執行狀態結果:
0:成功
1-255:失敗
- cd、pwd、ls
- mkdir,rmdir
- mkdir /etc/a/b/c/d;mkdir [OPTIONS] /path/to/somethere
- 對于mkdir 來說目錄和文件是一類東西,是不可以重名的。所以在Linux的同一目錄下目錄名和文件名不能重名
- - p 創建目錄,如果重名不會報錯,同時可以遞歸創建目錄
- -v 可以顯示目錄的創建詳細過程
- - m MORE:創建目錄時直接指定權限
- rmdir 刪除空目錄
- rmdir [OPTION]… [DIRECTORY]
- -p 遞歸刪除空目錄
- tree 顯示樹狀文件結構
- -d 僅顯示目錄
- -L 顯示樹狀結構可達到的層級
cat,tac,more,less,tail,head
- more [OPTION] FILE…
- -d:顯示翻頁及退出提示
- -num 一次顯示的行數
- +num 從第num行開始顯示
-
less
- less [OPTIONS…] FILE…
- head
- head [OPTION]… [FILE]…
- -c #:獲取前#字節
- -n #:指定獲取前#行
- head [OPTION]… [FILE]…
- tail
- tail [OPTION]… [FILE]…
- -c #:指定獲取后#字節
- -n #:指定獲取后#行
- -#:指定獲取后#行
- -f:跟蹤顯示文件新追加的內容
- touch
- 文件:metadata,data
- 查看文件狀態:stat
- 三個時間戳:
- access time:訪問時間,簡寫atime
- modify time:修改時間,mtime
- change time:改變時間,ctime
- touch命令
- touch [OPTION]… FILE…
- -a:only atime(修改了atime也修改了ctime)
- -m:only mtime(修改了mtime也修改了ctime)
- -t STAMP:
- [[CC]YY]MMDDhhmm[.ss]
- -c:如果文件不存在,則不予創建
- touch -r a b 將b的時間戳更新為和a一樣的時間戳
- touch [OPTION]… FILE…
- 練習
- 擴展
執行history命令查看歷史命令時,讓其顯示時間
- 方法一:臨時生效
- 方法二:永久生效
編輯 ~/.bashrc文件
在文件末尾加入 export HISTTIMEFORMAT=’%F %T’
執行 source ~/.bashrc ,即可永久生效
- 取消命令前顯示時間戳的方法
- 寫在最后的話:
- 無論每個知識點的難易程度如何,我都會盡力將它描繪得足夠細致
- 歡迎關注我的CSDN博客,IDYS’BLOG
- 持續更新內容:運維 | 網工 | 軟件技巧
- 對于我文章的不足之處,歡迎您能批評指正!謝謝!
- 如果你有什么疑問,或者是難題。歡迎評論或者私信我。你若留言,我必回復!
- 雖然我現在還很渺小,但我會做好每一篇內容。謝謝關注!
總結
以上是生活随笔為你收集整理的每个程序员都应该知道的Linux基础知识!全文4900字,没有耐心的不建议看 ——( Linux文件系统 + 系统管理类命令 + bash基础特性)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python实验数据处理
- 下一篇: linux 其他常用命令