目錄
操作系統和使用者之間的一個接口(即終端、命令行)稱之爲一個shell。一般shell指字符界面的命令行,其實操作系統圖形化的界面也是操作系統和使用者之間的一個接口,也可以稱之爲一個shell。
ctrl加shift加+ 放大命令行
ctrl加- 縮小命令行
ctrl+shift +t 打開新標籤 alt+n 切換到第n個標籤
linux中沒有盤符,只有一個根目錄 /,cd / :跳轉到根目錄下
linux 中命令的格式:命令 [-選線] [參數]
ls:相當於windows cmd中用的dir命令,作用是列出當前目錄裏面的內容(包括文件和目錄),shell有很多種類型,kali使用的B shell,B shell的配色方案 會區分顯示文件(白色)和目錄(藍色),壓縮包(紅色),可執行文件(綠色)
ls加上路徑:顯示特定路徑中所有內容,例如 ls /bin 顯示根目錄下的bin文件夾中的內容
ls 2*:只顯示以2開頭的文件和文件夾。*爲通配符,可以表示很多位
ls 2?: 只顯示以2開頭並且只有兩位的文件和文件夾,?爲通配符,只能表示一位。
ls -l:以長格式(long也就是詳細顯示)來顯示當前目錄的內容。這個詳細信息中我們最關心是最開頭的10個字符,這10個字符可以分爲兩個部分:第一個字符和後面9個字符。第一個字符爲:d表示directory,-表示這是一個文件,c表示這是一個字符型的設備,l則表示這是一個link(鏈接),鏈接類似於windows操作系統中的快捷方式(格式:鏈接名稱->實際文件的位置),b表示是一個block(塊設備),例如:硬盤設備。
ls -a:顯示當前目錄下所有內容(包括隱藏的文件和目錄)a 就是all,在linux下凡是以.這個字符起始來命名的文件夾都是隱藏文件夾。
ls -lh:以容易人類閱讀的方式(以k m等爲單位)顯示內容的大小。
ls --sort=size :按照大小排序顯示,一般組合參數寫,ls -alh --sort=size
ls --sort = time:按照時間排序顯示
cd:進入某一個目錄 例如 cd /media/
cd . 表示進入當前目錄
cd ..表示進入上級目錄
cd -:跳轉到上次所在目錄
pwd:查看當前的工作目錄
touch 1.txt創建1.txt文件,touch .123.txt 以.開頭的文件默認爲隱藏文件
ln -s 1.txt 1_softlink.txt :表示給1.txt創建快捷方式1_link.txt文件,1.txt文件被刪除後,1_softlink.txt就不能用了
ln 1.txt 1_hardlink.txt :創建硬連接文件,1.txt被刪除後,1_hardlink.txt 仍然可以用
mv 原文件名 新文件名:重命名
mv 文件名 文件夾名:將文件移動到文件夾
mkdir laowang 創建laowang文件夾。
直接 cd 會進入~目錄,其實就是根目錄下的/root目錄(用戶主目錄),不知道cd到什麼地方的時候可以敲兩次tab 鍵看看能cd到什麼地方
cat:用來顯示一個文本類型文件的內容
例如:cat /var/log/messages (messages文件記錄了系統變化的信息)
cat 會一次性輸出全部內容,當文件信息很多時,這樣很不方便。
所以就有了more命令:more /var/log/messages 首先會顯示滿一個屏幕,然後如果想查看更多內容,按回車鍵就會一行一行的增加內容,左下角的百分比代表着顯示內容佔全部內容的比重。如果不想查看了,可以按q退出
cat 1.txt 2.txt: 先顯示1.txt的內容 再顯示 2.txt的內容
cat 1.txt 2.txt > xxx.txt :可以達到將1.txt 和2.txt的內容組合起來 覆蓋寫到 xxx.txt的效果
與more命令類似,less命令只不過沒有了左下角的百分比。
以上命令都是從頭到尾去顯示一個文件的內容,但是這messages文件,會將系統最新的變動寫在文件的最後,這個時候,我們再用more less cat命令去查看系統最新的變動信息會很不方便。
所以有了tail(尾巴,蹤跡)命令:默認顯示一個文件最下面10行的內容
tail -20 /var/log/messages 加上參數(例如-20)則可以任意指定,顯示的行數
tail命令通常會與watch命令相結合使用,watch 通過-n參數來指定一個時間間隔,每隔多少時間去循環重複watch命令之後的命令:
例如:watch -n 2 tail -20 /var/log/messages 表示每隔兩秒鐘執行一次tail命令
rm:刪除一個文件,若要刪除一個文件夾則需要加上 -r 參數 或者 直接使用 rmdir + 文件夾名 (只能刪除空文件夾)
rm / -rf:最危險的命令,表示從根目錄開始刪除所有文件
cp:拷貝一個文件 例如 cp 1.txt 1cp.txt 將1.txt拷貝一份叫1cp.txt,而拷貝目錄則需要加上-r參數
cp -r 目錄名 拷貝份目錄名
top:監視linux系統的性能和進程,如果你想結束某個進程,直接按k,然後輸入這個進程的PID,按回車,就會kill 這個進程。
按shift +m M 根據駐留內存大小進行排序
然後按C 就會 切換顯示命令名稱和完整命令行
free 查看本機內存有多大,以及內存使用情況 -m單位mb -g單位gb
uname -a 查看系統內核版本號
uptime 查看負載
ps:專門用來查看進程信息的,通常會使用-ef參數 -aux參數 來詳細顯示進程信息
shutdown -h now
shutdown -h +100 100分鐘後關
shutdown -h 20:25
reboot 重啓
df -h 查看硬盤的佔用空間
du -h 查看當前文件夾有多大
ifconfig:查看當前的網絡配置信息
ifconfig eth0 down 將網卡down掉(關閉掉)
有時我們可能需要修改網卡的mac地址,所以需要先把網卡down掉然後修改將網卡啓動
macchanger -m 00:11:11:11:11:11 eth0 將eth0網卡的mac地址修改成00:11:11:11:11:11
ifconfig eth0 up 啓動網卡eth0
netstat:查看網絡連接信息。
netstat -pantu:查看計算機和那些網絡中服務器產生了tcp udp的連接
netstat -pantu | egrep -v '0.0.0.0|:::' (egrep是grep的加強版,-v表示取反,那麼含有0.0.0.0或者:::的行就會被篩選掉)(兩個命令之間用|可以達到在一行執行多個命令的效果)
netstat -pantu | egrep -v '0.0.0.0|:::' | awk '{print $5}' 只顯示每一行中第五列的信息內容
awk:默認以空格來劃分列。
進一步篩選
netstat -pantu | egrep -v '0.0.0.0|:::' | awk '{print $5}' |cut -d ':' (用-d參數指定以冒號對每一行內容進行分塊)-f 1 (表示通過冒號分塊後只顯示第一塊)| uniq(把重複的行只顯示一次) | sort(排序)> ip (表示將之前的命令執行的結果輸出到一個名爲ip的文件中)
如果我們打開一個新的視頻,同樣執行這個命令,那麼新得到的ip就會覆蓋原來ip文件中的內容。如果修改>爲>>則會將新的內容追加到原來的內容後面。
mount:用來掛在遠程或者本地文件夾(目錄)或者 文件。 例如你可以掛載一個iso文件
dmesg :相當於 tail /var/log/messages
find:比如說你安裝了nmap想知道,這個文件被安裝在了什麼地方:
find /(表示從根目錄開始查找) -name nmap
如果想不區分大小寫的去查找的話,可以寫 find / -iname "nmap"
find . -name ‘ip*’ 從當前目錄開始查找凡是以ip開頭的文件
find . -name ‘ip*’ -exec(表示對搜索結果執行之後的操作) cp {} /tmp/{}.bak \;(表示結束這個命令) 將搜索的結果copy到tmp這個目錄下並且以.bak結尾
如果權限不夠,則在開頭加上sudo即可
whereis :同上,只不過查找範圍小於find,但是查找速度快於find。這是因爲凡是通過操作系統的包管理工具,比如appget,安裝到操作系統中的軟件包生成出來的軟件,都會在本地生成一個數據庫,這個數據庫中會收集這些軟件名稱。而whereis就是去這個數據庫中搜索你搜索的字符串,然後返回數據庫中存儲的對應路徑。但是如果我們安裝軟件時使用的是源碼安裝,那麼數據庫中就不會存儲這些信息,當然也就搜索不到了。
whereis -b namp 只查找名稱爲namp的二進制格式的文件。一般在使用whereis之前,我們一般需要先用updatedb來更新下whereis要搜索的數據庫。
echo:用來在當前的終端中輸出某些信息
例如:echo 」hello world「
(1)awk是一門編程語言,可以用來分析日誌
awk是用來按列獲取的(統計列),默認按照空格分割
awk '{print $1}' 文件名 獲取該文件的第一列的內容,
awk -F '分隔符' '{print $1}' 文件名 指定分隔符。
(2)grep 是用來按行獲取的,可以用來篩選內容
例如:
/etc/passwd 這個文件中存的當前操作系統的所有用戶信息,cat出來的內容會很多,如果我只想查看包含特定字符串的內容的話,我們就可以使用grep命令
grep 「ssh」 /etc/passwd: 在/etc/passwd中查找含有ssh字符串的行
grep 「ssh」 /etc/passwd -n: -n選項表示顯示哪一行
grep 「ssh」 /etc/passwd -v:-v選項 表示顯示不包含 ssh字符串的行
grep 「^ssh」 /etc/passwd: 顯示以ssh開頭的行
grep "ssh$" /etc/passwd:顯示以ssh結尾的行
例如:
ifconfig | grep "inet"
netstat -pantu | grep '22'
netstat -pantu | grep '22' |wc -l 統計行數(可以用來統計日誌文件中ip訪問的次數)
例如:
看日誌文件時,有需要被#註釋的內容,如果我們不想看這些內容,可以:
grep -v '^#' 文件名
其中-v表示取反。
如果還想將空行去除掉可以這樣寫
grep -Ev '^#|^$' 文件名
等價於:
egrep -v '^#|^$' 文件名
原理:因爲linux文件中空行默認以$開頭,只是默認隱藏了,通過cat -A可以查看隱藏的$。
(3) sed 批量替換
sed -i 's#替換#替換成#g ' 文件名
記憶方法:sg 中間三個#
ls > xxx.txt 表示將前一個命令的輸出存儲(覆蓋寫)在xxx.txt
ls >> xxx.txt 表示前一個命令的輸出追加到xxx.txt
如果文件不存在,則會先創建文件。
tar -cvf xxx.tar *.txt 將*.txt 打包到xxx.tar,注意打包並沒有壓縮
tar -xvf xxx.tar 解包
tar -zcvf xxx.tar.gz *.txt :壓縮打包 或者用 tar -jcvf yyy.tar.bz2 *.txt
tar -zxvf xxx.tar.gz:解壓 對應用 tar -jxvf yyy.tar.bz2
tar -zxvf xxx.tar.gz -c 路徑 表示解壓到指定路徑
linux 的所有命令其實都對應着 /bin 目錄下的一個文件。用which可以查看某個命令所對應的文件的存儲位置
例如:which ls 查看ls命令對應的文件
cal 查看日曆
cal -y 2008
date 查看當前時間
date "+某格式" 例如:date 」+%Y==%m==%d"
|:前一個命令的輸出作爲後一個命令的輸入。
&:前後兩個命令依次執行,前面的命令即使執行失敗,後面的命令也能執行
&&:只有前面的命令執行成功,後面的命令纔會執行。
||:只有前面的命令執行不成功,纔會執行後面的命令
1.命令 --help
2.man 命令 按F鍵往下翻一屏,按B往回翻一屏
自動補全 按tab鍵,一般輸入過長文件名時使用。
歷史命令:history
!命令編號:執行對應的命令
添加賬戶:
sudo useradd shuaige -m :-m表示在創建完賬戶之後順便在home下創建該賬戶的家目錄
sudo passwd shuaige 設置密碼
注意新創建的用戶,默認不能sudo,需要將其添加到sudo用戶組和adm用戶組中。
su shuaige :切換到shuaige,但是當前所在目錄不會切
su - shuaige:切換用戶到shuaige,並且將當前目錄切換到對應的家目錄
whoami :查看當前賬戶
exit :退出當前賬戶
userdel xxx:刪除用戶,用戶的文件夾不會刪。 加上 -r表示刪除家目錄
#表示超級管理員 $表示普通賬戶
cat /etc/group查看當前所有的用戶組
groupadd xxx:創建用戶組
groupdel xxx:刪除用戶組
groupmod +tab+tab 查看所有組的組名
一個賬戶能不能用sudo命令取決於這個賬戶是不是在sudo這個用戶組裏面
sudo usermod -a -G sudo 用戶名 將一個
賬戶添加到sudo這個用戶組
sudo usermod -a -G adm 用戶名
第一個meinv 是該文件所屬的用戶,其權限對應前三位
第二個meinv 是該文件所屬的用戶組,其權限對應4到6位
2表示該文件的軟連接數量。
chgrp 組名 文件名 :修改文件所在的用戶組,文件在哪個用戶組就有哪個用戶組的權限
chown [-R] user[:group] file:修改文件的擁有者
如果要修改一個文件夾中所有文件的 擁有者 那麼需要加上-R
-R : 處理指定目錄以及其子目錄下的所有文件
r 可讀(4) w可寫(2) x可執行(1)
文件可執行表示 文件中的代碼可以運行
文件夾可以執行表示 可以進入該文件夾,只要是最後一位是x,那麼普通用戶一定可以進入該文件夾。
一共10個位置:
第一個位置表示文件的類型:l for link(軟鏈接,即快捷方式),d for directory
其後9個位置分成爲三組,每一組最多3個位置xrw
字母法:
u表示文件的擁有者(user) g表示同用戶組者(grouper), o表示其他人(other)
chmod u=rwx 2.py
chmod g=rwx 2.py
chmod u=r,g=r,o=r 2.py
chmod u=,g=,r= 2.py 表示沒有任何權限(除了超級管理員)
數字法:
r對應4 w對應2 x對應1
那麼5對應rx,6對應rw,7對應rwx
chmod 137 2.py
相當於 chmod u=x,g=wx,o=rwx 2.py
如果一個文件夾是777,即所有的用戶都可以對其rwx,那麼它的背景色將是綠色;
chmod -x /var/ 將var的x的權限全部去掉
chmod +x /var/ 給var添加x權限(user,group,other都添加)
chmod -R 777 common/ 將該文件以及該文件夾下的所有文件的權限都修改爲777。-R表示遞歸
注意:
普通用戶在根目錄下是沒有w的權限的,例如:不能mkdir創建文件夾。
一般而言,普通用戶在自己的家目錄下是有w的權限。