文件系統(tǒng)和基本命令
一祖秒、文件系統(tǒng)
1.Linux目錄樹
根目錄:/
當(dāng)前目錄(路徑):.(通惩鸵矗可省略)
父目錄:..
絕對目錄(路徑):以/開頭
相對目錄(路徑):不以/開頭
2.重要的路徑
/bin:可執(zhí)行文件籽懦,即通常所說的“命令”所在的路徑
/sbin:可執(zhí)行文件崩哩,與系統(tǒng)相關(guān)的命令
/etc:系統(tǒng)配置文件
/etc/skel:普通用戶模板文件(如果手殘弄壞了配置文件可從此處拷貝初始文件)
/home:普通用戶的家目錄
/usr/*:一般存放用戶安裝的文件
/var/log:日志文件
#文件和目錄操作
tree -L 1/ #-L level限制目錄或顯示層級
二.基本命令
1.什么是shell?
Shell is an interface between user and kernel.
Shell interprets your input as commands and pass them to kernel.
2.不同shell的語法档悠、變量和函數(shù)
參考 Unix Shells: Bash, Fish, Ksh, Tcsh, Zsh - Hyperpolyglot
真正能夠控制計算機(jī)硬件(CPU思喊、內(nèi)存壁酬、顯式器等)的只有操作系統(tǒng)內(nèi)核,圖形界面和命令行只是架設(shè)在用戶和內(nèi)核之間的?座橋梁恨课。Shell 是?個應(yīng)用程序舆乔,它連接了用戶和Linux 內(nèi)核,讓用戶能夠更加高效剂公、安全希俩、低成本地使用Linux 內(nèi)核,這就是Shell 的本質(zhì)纲辽。Shell 本身并不是內(nèi)核的?部分颜武,它只是站在內(nèi)核的基礎(chǔ)上編寫的?個應(yīng)?程序,它和QQ拖吼、Office鳞上、Firefox 等其它軟件沒有什么區(qū)別。然用Shell 也有著它的特殊性吊档,就是開機(jī)用馬啟動篙议,并呈現(xiàn)在用戶?前;用戶通過Shell 來使用Linux怠硼,不啟動Shell 的話鬼贱,用戶就沒辦法使用Linux趾断。
echo $SHELL
#/bin/bash
cat /etc/shells
#/bin/sh
#/bin/bash
#/usr/bin/sh
#/usr/bin/bash
#/bin/tcsh
#/bin/csh
#/usr/bin/tmux
#/bin/zsh
3.Linux命令
一個命令可能是一個命令別名、環(huán)境變量中的函數(shù)或可執(zhí)行文件吩愧。
當(dāng)輸入一個命令芋酌,Linux系統(tǒng)搜索順序為:
- aliases (e.g. ll)
- exported functions
- built-in shell commands (e.g. export)
- scripts and binaries in your PATH (可執(zhí)行文件)
- 如果搜索完畢均找不到,則報錯(command not found)
#列出所有可用的命令
compgen -c
如何學(xué)習(xí)基本命令雁佳?
- 查看簡單的幫助文檔:cmd -help/-h
- 查看詳細(xì)的手冊文檔:man cmd
- 顯示工具手冊脐帝,比man更詳細(xì):info cmd
- 如果該cmd是一個shell內(nèi)建命令(type cmd查看),可以用通過help cmd查看幫助
4.目錄管理
關(guān)于路徑:
- 絕對路徑
①一定由根目錄/ 寫起糖权,例如: /usr/share/doc
②準(zhǔn)確性高堵腹,建議寫程序(shell scripts) 管理系統(tǒng)時,務(wù)必使用絕對路徑的寫法 - 相對路徑
① 相對於目前工作目錄的路徑星澳,以.或..寫起疚顷,.可以省略
② 方便
對于一個目錄(文件夾),我們一般需要以下操作:
- 打印當(dāng)前目錄(pwd)
pwd
goto=`pwd`
echo $goto
- 顯示內(nèi)容(ls)
主要選項:
-a, --all 列出所有
-l 長格式
-h 人類可閱讀
--sort=WORD 默認(rèn)是按名字排序禁偎,可自定義
-r, --reverse 逆序
#ls后面可為文件腿堤,若加通配符,則顯示匹配關(guān)鍵詞的所有文件
ls -l /bin/*sh
ls -l /usr/bin/*sh
ls -l /usr/bin/*sh*
- 進(jìn)入目錄(cd)
cd ..
cd ~
cd -
cd $HOME
cd -
cd ~stu20230101
- 創(chuàng)建新目錄(mkdir)
#parent 依次創(chuàng)建目錄如暖,即使存在也不會報錯
mkdir -p foo1/foo2/foo3
#創(chuàng)建目錄
touch foo/hello
- 刪除目錄(rm)
#依次刪除目錄
mkdir -p foo1/foo2/foo3
#刪除非空目錄
rm -r foo/
5.文件管理
- 查看文件(cat/more/less/head/tail)
# cat 查看/連接文件
# 主要選項
# -n 所有行前標(biāo)上行號
# -b 所有非空行前標(biāo)上行號
# 合并文件-文件名合并
cat hg19.chrom.sizes hg38.chrom.sizes
# 合并文件-使用通配符
cat hg??.chrom.sizes
# more 查看文件
# 主要選項:
# +num 從第n行開始顯示
# -num 每屏顯示的行數(shù)
# less 查看文件
# 主要選項:
# -N 顯示行號
# -i 忽略搜索時的大小寫
-# f 強(qiáng)制打開特殊文件笆檀,如設(shè)備代號、目錄和二進(jìn)制文件
less -f /home/
more /home/
less -f /bin/bash
more /bin/bash
# ******** /bin/bash: Not a text file ********
# head 查看文件前面部分
# 主要選項:
# -n 設(shè)置顯示行數(shù)[K:顯示頭K行盒至;-K:除了后K行之外]
head -n 3 catn.hg38.chrom.sizes #簡寫為-3
head -n -3 catn.hg38.chrom.sizes
# tail 查看文件后面部分
# 主要選項:
# -n 設(shè)置顯示行數(shù)[K:顯示尾K行酗洒; +K:從第K行開始]
# -f 持續(xù)地讀取文件
tail catn.hg38.chrom.sizes #查看最后10行
tail -n 3 catn.hg38.chrom.sizes #簡寫為-3 查看最后3行
tail -n +3 catn.hg38.chrom.sizes #從第3行開始顯示
# 管道連接
#顯示行號并輸出倒數(shù)20行的前10行
cat -n hg38.chrom.full.sizes | tail -20 | head -10
- 創(chuàng)建新文件(touch)
touch:更改文件的時間標(biāo)記,如果文件不存在枷遂,則創(chuàng)建文件
- 刪除文件(rm)
rm 刪除文件/目錄
主要選項:
-i 交談模式樱衷,詢問是否刪除
-r 遞歸處理,可刪除目錄
-f 強(qiáng)制刪除
- 重命名(mv)
- 移動文件(mv)
# 第二個路徑為已存在的目錄酒唉,表現(xiàn)為移動
mv ../time.log ~/lab1/
# 第二個路徑為不存在的文件矩桂,表現(xiàn)為重命名
mv time.log lastrun.log
- 復(fù)制文件(cp)
cp 復(fù)制文件/目錄
主要選項:
-i 交談模式,詢問是否覆蓋
-p 保留源文件的屬性
-r 遞歸處理黔州,可復(fù)制目錄
-f 強(qiáng)制復(fù)制
- 建立鏈接(ln)
主要選項:
-i 交談模式耍鬓,詢問是否覆蓋
-s 符號鏈接,不復(fù)制文件
-f 強(qiáng)制覆蓋
若不指定destination流妻,則默認(rèn)為鏈接到當(dāng)前目錄的同名文件
- 壓縮&解壓縮
gz命令(*.gz) 單文件
解壓1:gunzip FileName.gz
解壓2:gzip -d FileName.gz
壓縮:gzip FileName
tar命令(*.tar)單文件
解包:tar -xvf FileName.tar
打包:tar -cvf FileName.tar FileName
tar+gz命令(*.tar.gz / *.tgz)多文件或目錄
解壓:tar -zxvf FileName.tar.gz
壓縮:tar -zcvf FileName.tar.gz FileName
壓縮多個文件:tar -zcvf FileName.tar.gz FileName1 FileName2 FileName3 ...
zip命令(*.zip)多文件或目錄
解壓:unzip FileName.zip
壓縮:zip FileName.zip FileName
- 小練習(xí)
# INSTALL文件第51-68行文件內(nèi)容是什么牲蜀?[cat -n; |; head; tail]
cat -n INSTALL | head -68 | tail -18
6.權(quán)限管理
chmod文件權(quán)限
用法:chmod [who] operator [permission] filename
who:u 屬主;g 屬組绅这;o 其他用戶涣达;a 所有用戶
operator:+增加權(quán)限;- 取消權(quán)限;=設(shè)定權(quán)限
permission: r=可讀(4)度苔;w=可寫(2)匆篓;x=可執(zhí)行(1)
示例:
chmod u+x file #rwxrw-r-- 賦予文件屬主執(zhí)行權(quán)限
chmod a=rwx file,chmod 777 file #rwxrwxrwx賦予所有用戶所有權(quán)限
chown改變屬主(一般是root用戶操作)
chown user[:group] file
chown –R user[:group] file
chgrp改變屬組(一般是root用戶操作)
chown group file