1. 程式人生 > >linux基本命令操作-目錄與文件的配置和管理

linux基本命令操作-目錄與文件的配置和管理

linux 達內 計算機

Linux命令

用戶輸入的指令----->解釋器----->內核------->硬件

-用來實現某一功能的指令或程序

-輸入命令然後執行相應的程序來實現功能,不是簡單的命令字符實現的

程序在bin下:#ls /bin/xxx

-命令的執行依賴於解析器(shell):(默認的解析器:/bin/bash)

內核(只識別二進制的文件)根據命令來調配硬件,不能識別命令所需執行的功能,需要一個翻譯官,就是解析器來實現



命令行的一般格式:

基本用法

– 命令字 [選項]... [參數1] [參數2]... #中括號表示可有可無


[root@server0 ~]# ls -l /root/


[root@A ~]# ls /root


[root@A ~]# ls -l /root #顯示目錄下詳細信息


[root@A ~]# ls -l /boot #顯示目錄下詳細信息



[root@A ~]# ls -l -h /boot #顯示目錄下詳細信息,加上單位(K,M,G)


[root@A ~]# ls -lh /boot #顯示目錄下詳細信息,加上單位


[root@A ~]# man ls #查看ls命令的幫助手冊信息

按"q" 退出


###################################################


網卡配置文件:


# ls -l /etc/sysconfig/network-scripts/ifcfg-eth0 #顯示網卡基本屬性


# cat /etc/sysconfig/network-scripts/ifcfg-eth0 #查看網卡配置信息

# ls /e(tab)

# ls /etc/sysco(tab)

# ls /etc/sysconfig/netw(tab)

# ls /etc/sysconfig/network-(tab)

# ls /etc/sysconfig/network-scripts/ifc(tab)

# ls /etc/sysconfig/network-scripts/ifcfg-e(tab)


# ls -lh /etc/sysconfig/network-scripts/ifcfg-eth0


字符記不住的可以按"tab"補全



快捷鍵

– Ctrl + l : 清空整個屏幕,不是真正清除,而是直接調到空白

– Ctrl + c : 廢棄當前編輯的命令行

– Esc + . : 粘貼上一個命令的參數


– Ctrl + u : 清空至行首,將光標前的字符清除

– Ctrl + w : 往回刪除一個單詞(以空格界定)

– Ctrl + k :將光標後面的字符清除



[root@A ~]# ls /etc/sysconfig/network-scripts/ifcfg-eth0


[root@A ~]# ls -l Esc + .


[root@A ~]# ls -lh Esc + .


[root@A ~]# cat Esc + .


[root@A ~]# cat -n Esc + .




###################################################

linux系統下載安裝包,沒網的情況下在光盤裏下,光盤裏有數千個包,訪問光盤的內容用到掛載


掛載

Windows

光盤文件------->光驅設備------->CD驅動器



Linux

光盤文件------->光驅設備------------>訪問點(掛載點) win可以雙擊的地方

/dev/sr0//以SCSI接口的光驅設備

/dev/hdc//以IDE接口的光驅設備

查看光驅設備是什麽接口的:#ls /dev/hdc

#ls /dev/sr0

linux為了解決有些人不會判斷光驅設備是什麽接口,不管光驅設備叫什麽,它都會為自動光驅設備提供一個快捷方式自動判斷是什麽接口 這個快捷方式就是: /dev/cdrom


#ls -l /dev/cdrom #查看源光驅設備是sr0還是hdc

通常光驅設備接口是sr0模式

cat不能直接查看設備文件內容,會彈出滿屏亂碼,按ctrl+c退出來


1.虛擬機,圖形鼠標操作,將光盤鏡像放入虛擬光驅設備

如果找不到光盤文件,可以在真機上查找路徑 #ls /ISO/rhel-server-7.2-x86_64-dvd.iso 復制過去


[root@A ~]# ls /dev/cdrom

/dev/cdrom

[root@A ~]# ls -l /dev/cdrom

lrwxrwxrwx. 1 root root 3 10月 28 15:57 /dev/cdrom -> sr0


2.Linux中掛載點就是一個目錄


3.使用mount命令,提供設備訪問點(掛載點)

mount掛載是個臨時掛載


– 格式: mount 設備路徑 掛載點目錄


[root@A ~]# mkdir /abc #創建目錄

[root@A ~]# ls /


[root@A ~]# ls /abc #查看目錄內容為空

[root@A ~]# mount /dev/cdrom /abc #掛載設備命令

[root@A ~]# ls /abc #查看目錄內容為光盤內容


[root@A ~]# ls /abc/P(tab) #查看光盤裏包的內容


4.卸載

– 格式: umount 掛載點目錄

[root@A ~]# umount /abc

[root@A ~]# ls /abc/


註意:掛載點不要放在根/下,卸載不了,因為永遠在根/下

最好自己創建掛載點


常見提示:

1.當前在掛載點內

[root@A abc]# umount /abc/

umount: /abc:目標忙。


或者別的終端也掛載了,再開個終端也會掛載不了



2.掛載速度很慢,沒有把光盤文件放入到光驅中

[root@A /]# mount /dev/cdrom /abc/

mount: 在 /dev/sr0 上找不到媒體


掛載點不要掛載在/root下,因為root原來會有很多文件,如果將光盤內容掛載進去,會把裏面原有的隱藏掉


###############################################

重定向命令的輸出

覆蓋重定向 >

追加重定向 >>

把前面命令的輸出結果,寫入到文本文件中,再顯示出來

重定向有個功能,當需要寫入的文件不存在時,會給你創建一個


[root@A /]# ifconfig > /opt/test.txt #首先必須保證根下有opt/text.txt這個文件,直接這樣創建

[root@A /]# cat /opt/test.txt//顯示ifconfig內容


[root@A /]# hostname > /opt/test.txt

[root@A /]# cat /opt/test.txt//將上面的ifconfig內容覆蓋掉,顯示hostname內容


[root@A /]# hostname >> /opt/test.txt

[root@A /]# cat /opt/test.txt//在上面的hostname重新添加一個相同hostname內容


[root@A /]# ifconfig >> /opt/test.txt

[root@A /]# cat /opt/test.txt



[root@A /]# hostname > /opt/test.txt

[root@A /]# cat /opt/test.txt


[root@A /]# echo 12345678


[root@A /]# echo 12345678 >> /opt/test.txt

[root@A /]# cat /opt/test.txt


[root@A /]# echo hello >> /opt/test.txt

[root@A /]# cat /opt/test.txt


[root@A /]# echo hahaxixi > /opt/test.txt

[root@A /]# cat /opt/test.txt


[root@A /]# > /opt/test.txt #清空 文本文件 全部內容

[root@A /]# cat /opt/test.txt


####################################################

目錄文件的管理


cd — Change Directory

– 用途:切換工作目錄

– 格式:cd [目標文件夾位置]


相對路徑: 不從根目錄開始的路徑

絕對路徑: 從根目錄開始的路徑


.. 表示父目錄,返回上一目錄

. 表示當前目錄


[root@A /]# cd /etc/pki/

[root@A pki]# cd ..

[root@A etc]# cd ..

[root@A /]# pwd


[root@A /]# cd /etc/pki/

[root@A pki]# cd ../..

[root@A /]# pwd


[root@A /]# cd /etc/pki/

[root@A pki]# ls


[root@A pki]# cd CA #相對路徑

[root@A CA]# pwd


[root@A CA]# cd /

[root@A /]# cd /etc/pki/CA #絕對路徑

[root@A CA]# pwd



家目錄:用來存放用戶個性化設置的目錄

~: 代表家目錄

~user 表示 用戶user的家目錄


#useradd xxx//添加普通用戶

#cd ~xxx//去往該用戶的家目錄


/root: 管理員的家目錄

/home : 存放所有普通用戶的家目錄//home不是普通用戶的家目錄,而是存放其用戶家目錄的地方


[root@A /]# useradd nsd01 #創建nsd01用戶

[root@A /]# cd ~nsd01 #去往用戶nsd01的家目錄

[root@A nsd01]# pwd

/home/nsd01 #普通用戶nsd01的家目錄nsd01在home下


[root@A nsd01]# cd ~lisi #去往用戶lisi的家目錄

[root@A lisi]# pwd

/home/lisi #普通用戶lisi的家目錄lisi在home下


[root@A lisi]# useradd dc

[root@A lisi]# cd ~dc #去往用戶dc的家目錄

[root@A dc]# pwd

######################################################

ls — List

– 格式:ls [選項]... [目錄或文件名]


常用命令選項

– -l:以長格式顯示

– -A:包括名稱以 . 開頭的隱藏文檔

– -d:顯示目錄本身(而不是內容)的屬性,一般不單獨使用,和-l連用

– -h:提供易讀的容量單位(K、M等),只看空目錄的容量,不包括目錄下內容的容量,所以沒什麽意義,所以一般很少用到 -lhd


d和h一般和l連用


[root@A /]# ls -l /root #顯示/root目錄下詳細內容


[root@A /]# ls -ld /root #顯示root此目錄本身的詳細屬性


[root@A /]# ls -lh /root #顯示/root目錄下詳細內容帶單位


[root@A /]# ls /root


[root@A /]# ls -A /root

[root@A /]# du -sh /boot #統計目錄及包含的內容的大小


###################################################

使用通配符

– * : 任意多個任意字符

– ? : 單個字符


[root@A /]# ls /etc/*.conf//表示該目錄下以.conf結尾的所有文檔

[root@A /]# ls /etc/*tab//

[root@A /]# ls /dev/tty*//表示該目錄下所有以tty開頭的文檔



[root@A /]# ls /dev/tty?//表示tty開頭的後面所有一位的文檔

[root@A /]# ls /dev/tty??

[root@A /]# ls /dev/tty???




針對不確定的文檔名稱,以特殊字符表示

– [a-z]:多個字符或連續範圍中的一個,若無則忽略

– {a,min,xy}:多組不同的字符串,全匹配


[root@A /]# ls /dev/tty[3-8]

[root@A /]# ls /dev/tty[7-9]


[root@A /]# ls /dev/tty{1,3,5,7,9}


[root@A /]# ls /dev/tty{1,3,5,7,9,S0}


[root@A /]# ls /dev/tty{1,3,5,7,9,S0,haha}


請列出/dev/tty20 至 /dev/tty30 ?


[root@A /]# ls /dev/tty{2[0-9],30}

or

/dev/tty{2?,30}

註意:[]裏只能表示0-9單個字符

比如:tty[20-30]只顯示tty2,tty0,tty3,tty0

#################################################

命令的別名,簡化復雜命令的輸入

格式:alias 別名=‘定義的指令‘

alias別名只是臨時的,下次開機會失效


[root@A /]# ls -ld /root/

[root@A /]# myls

bash: myls: 未找到命令...


[root@A /]# alias myls=‘ls -ld‘ #定義指令ls -ld別名為myls,指令要用‘‘括起來

[root@A /]# myls /root/ #實際就是ls -ld /root/,因為之前就講ls -ls定義為myls別名


[root@A /]# myls /


[root@A /]# myls /home/


[root@A /]# alias #顯示當前定義的有效別名


[root@A /]# unalias myls #刪除別名

[root@A /]# myls /root/ #執行失敗

bash: myls: 未找到命令...


註意:定義別名最好不要用關鍵字,比如pwd,cd,poweroff等

e.g:

將pwd定義為‘hostname’的別名,則再輸入pwd會執行這個別名的功能,即alias的權限遠高基本命令和基本程序的,linux只會聽從管理員root的權限


##################################################


創建目錄: mkdir


[root@A /]# mkdir /root/haha /mnt/xixi /opt/hehe /tmp/lele

創建多個目錄,中間用空格隔開

[root@A /]# ls /root


[root@A /]# ls /mnt


[root@A /]# ls /opt


[root@A /]# ls /tmp


[root@A /]# mkdir -p /opt/aa/bb/cc/dd

創建子目錄在前面加 -p(表示連父目錄一起創建)

[root@A /]# ls /opt/


[root@A /]# ls /opt/aa


[root@A /]# ls /opt/aa/bb/


[root@A /]# ls /opt/aa/bb/cc/




創建文本文件: touch(文本文件)


[root@A /]# touch /opt/1.txt


[root@A /]# echo 123 > /opt/2.txt #文件2.txt裏還有123內容




###############################################

rm — Remove

– 格式:rm [選項]... 文件或目錄...


常用命令選項

– -r遞歸刪除(目錄連同底下的子目錄一起刪除)、-f:強制刪除


單獨rm會有提示你是否刪除 y是,不敲默認否


rm其實是rm -i的別名


[root@A opt]# touch /opt/1.txt

[root@A opt]# touch /opt/2.txt

[root@A opt]# mkdir /opt/test


[root@A opt]# rm -rf /opt/1.txt


[root@A opt]# ls /opt


[root@A opt]# rm -rf /opt/*

[root@A opt]# ls /opt



###################################################

mv 移動/改名

mv — Move

– 格式: mv 原文件 目標路徑


[root@A /]# echo 123 > /opt/1.txt

[root@A /]# mkdir /opt/nsd01

[root@A /]# ls /opt/


[root@A /]# ls /opt/nsd01

[root@A /]# mv /opt/1.txt /opt/nsd01

[root@A /]# ls /opt/

[root@A /]# ls /opt/nsd01/


重命名: 路徑不變的移動

[root@A /]# ls /opt/


[root@A /]# mv /opt/nsd01/ /opt/test #將opt下的nsd01移動到opt下,重命名為test,nsd01沒有了

[root@A /]# ls /opt/


[root@A /]# mv /opt/test/ /opt/haha

[root@A /]# ls /opt/

[root@A /]# mkdir /opt/test #創建test目錄

[root@A /]# mv /opt/1.txt /opt/2.txt /root/3.txt /opt/test/ #不管前面有多少個文件,只會將最後一個當作目標目錄,將前面的移動到最後一個目錄裏


#############################################

cp — Copy

– 格式:cp [選項]... 原文件... 目標路徑

cp命令,對象不同,選項也不同,如果對象是文件,就不需加任何選項,加 -r也沒關系


常用命令選項

– -r:對象是目錄,遞歸,復制目錄時必須有此選項

– -p:保持原文件的權 限、修改時間等屬性不變


cp 也支持多參數拷貝


點 .:經常和cp連用,將文件拷貝到當前目錄下



[root@A /]# rm -rf /opt/*

[root@A /]# ls /opt/

[root@A /]# cp /etc/passwd /opt/

[root@A /]# cp /etc/fstab /opt/

[root@A /]# ls /opt/


[root@A /]# cp -r /boot/ /opt/

[root@A /]# ls /opt/


[root@A /]# cd /opt #進入/opt

[root@A opt]# cp /etc/inittab . #復制/etc/inittab到/opt本身目錄下 後面加 .

[root@A opt]# ls





[root@A /]# rm -rf /opt/*

[root@A /]# ls /opt

[root@A /]# cp -r /boot/ /opt/

[root@A /]# ls /opt


[root@A /]# cp -r /boot/ /opt/ #重新復制相同目錄會提示是否覆蓋,

按Ctrl+c結束 是由 -i決定的,因為cp是cp -i的別名,系統默認設置好的, “cp -if”強制覆蓋也沒用,因為alias裏的-i的優先級高於 -f(只有cp命令才高於-f,其他的優先級-f高於其他)


可以取消別名 unalias=‘cp‘,但是為了安全起見,最好不要取消,萬一有些東西重要,不能覆蓋,這時可以用 \\ 來臨時取消別名定義,強制覆蓋


[root@A /]# \\cp -r /boot/ /opt/ # \\:在本次操作臨時取消別名的定義,強制覆蓋




創建的文件都有所有者的,不會憑空而來,

Linux中查看所有者 ls -l

舉例:

# ls -l /root/

總用量 4

drwxr-xr-x. 2 root root 6 10月 28 15:42 abc

-rw-------. 1 root root 1822 10月 24 19:10 anaconda-ks.cfg

drwxr-xr-x. 2 root root 6 10月 28 16:20 haha

drwxr-xr-x. 2 root root 6 10月 24 19:26 公共

drwxr-xr-x. 2 root root 6 10月 24 19:26 模板

drwxr-xr-x. 2 root root 6 10月 24 19:26 視頻

drwxr-xr-x. 2 root root 6 10月 24 19:26 圖片

drwxr-xr-x. 2 root root 6 10月 24 19:26 文檔

drwxr-xr-x. 2 root root 6 10月 24 19:26 下載

drwxr-xr-x. 2 root root 6 10月 24 19:26 音樂

drwxr-xr-x. 2 root root 6 10月 24 19:26 桌面


root用戶的所有者都是root


而普通用戶的家只屬於本身普通用戶

舉例:

ls -l /home/

總用量 0

drwx------. 3 22 22 74 10月 25 19:58 22

drwx------. 3 a1 a1 74 10月 28 16:10 a1

drwx------. 3 a2 a2 74 10月 28 16:11 a2

drwx------. 3 b1 b1 74 10月 28 16:11 b1

drwx------. 3 hdq hdq 74 10月 25 19:05 hdq

drwx------. 3 hdq24 hdq24 74 10月 24 18:36 hdq24

drwx------. 3 kb2 kb2 74 10月 25 20:00 kb2



如果將普通用戶的目錄復制到root用戶下,root會將其當作自己目錄下,而不是普通用戶下

舉例:

[root@hdq /]# cp -r /home/hdq /opt/

[root@hdq /]# ls /opt/

boot hdq

[root@hdq /]# ls -ld /opt/hdq

drwx------. 3 root root 74 10月 28 17:45 /opt/hdq

此時復制過來的home的hdq的所有者就是root


要將所有者的屬性不變,則需要命令cp -rp進行拷貝




[root@A /]# ls -ld /home/lisi/


[root@A /]# cp -rp /home/lisi/ /mnt/ #保持屬性不變進行拷貝


[root@A /]# ls -ld /mnt/lisi/





[root@hdq /]# cp etc/passwd /opt/

[root@hdq /]# ls opt/

hdq passwd

[root@hdq /]# cp etc/passwd /opt/123 #重新拷貝一份再重命名

[root@hdq /]# ls /opt/

123 hdq passwd




######################################################


使用vim創建/修改文件


vim文本編輯器 :可以修改文本文件的內容

-若目標文件不存在,則新建空文件夾並編輯

-若目標文件已存在,則打開此文件夾並編輯


命令模式(只能看) 輸入模式(輸入) 末行模式(保存退出)



[root@A /]# vim /opt/haxi.txt(新建此文件) #命令模式


i 鍵

命--------------------->輸入模式(Esc 鍵)

式--------------------->末行模式(Esc 鍵)

:鍵



在末行模式下 輸入 :wq 保存退出

在末行模式下 輸入 :q! 不保存退出


舉例:

[root@hdq /]# vim /opt/xixi.txt #進入vim編輯界面(命令模式)

kobe bryant

huangdaoqi

....

~

~

~

~

[root@hdq /]# cat /opt/xixi.txt #退出查看

kobe bryant

huangdaoqi


##################################################

linux基本命令操作-目錄與文件的配置和管理