常用Linux命令

目錄

什麼是shell?

0x00 瀏覽操作:

0x01文件文件夾操作

0x03 查看本機信息操作:

0x04 Net-Tools:

0x05 Linux三劍客:

0x06重定向:

0x07歸檔管理:tar

0x08 小工具:

0x09管道符號:

0x0A查看幫助文檔:

0x0B用戶和用戶組:

0x0CLinux文件權限以及組

文件權限:

修改文件的權限:

 

 


什麼是shell?

操作系統和使用者之間的一個接口(即終端、命令行)稱之爲一個shell。一般shell指字符界面的命令行,其實操作系統圖形化的界面也是操作系統和使用者之間的一個接口,也可以稱之爲一個shell。

ctrl加shift加+ 放大命令行

ctrl加- 縮小命令行

ctrl+shift +t 打開新標籤 alt+n 切換到第n個標籤

linux中沒有盤符,只有一個根目錄 /,cd / :跳轉到根目錄下

linux 中命令的格式:命令 [-選線] [參數]

0x00 瀏覽操作:

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:查看當前的工作目錄

0x01文件文件夾操作

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 目錄名  拷貝份目錄名

0x03 查看本機信息操作:

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 查看當前文件夾有多大

0x04 Net-Tools:

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「

0x05 Linux三劍客:

(1)awk是一門編程語言,可以用來分析日誌

awk是用來按列獲取的(統計列),默認按照空格分割

awk '{print $1}'  文件名 獲取該文件的第一列的內容,

awk -F  '分隔符' '{print $1}' 文件名  指定分隔符。

(2)grep 是用來按行獲取的,可以用來篩選內容

  1. grep "關鍵字" 文件名 獲取文件中含有該關鍵字的
  2. 命令 | grep "關鍵字"  將命令獲取的內容交給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 中間三個#

0x06重定向:

ls > xxx.txt  表示將前一個命令的輸出存儲(覆蓋寫)在xxx.txt

ls >> xxx.txt  表示前一個命令的輸出追加到xxx.txt

如果文件不存在,則會先創建文件。

0x07歸檔管理:tar

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命令對應的文件

0x08 小工具:

cal 查看日曆

cal -y 2008

date 查看當前時間

date "+某格式"  例如:date 」+%Y==%m==%d"

0x09管道符號:

|:前一個命令的輸出作爲後一個命令的輸入。

&:前後兩個命令依次執行,前面的命令即使執行失敗,後面的命令也能執行

&&:只有前面的命令執行成功,後面的命令纔會執行。

||:只有前面的命令執行不成功,纔會執行後面的命令

0x0A查看幫助文檔:

1.命令 --help

2.man 命令 按F鍵往下翻一屏,按B往回翻一屏

自動補全 按tab鍵,一般輸入過長文件名時使用。

歷史命令:history

!命令編號:執行對應的命令

0x0B用戶和用戶組:

添加賬戶:

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  用戶名

0x0CLinux文件權限以及組

第一個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的權限。