Bash 常用基本命令
ls
# 文件大小易讀
ls -lh
# 排序
ls -lh --sort=size
ls -lh --sort=time
# 只看本級目錄有沒有 Java 目錄,不看 Java 目錄里的東西
ls -d java
cd
# 當前路徑
pwd
# 查看文件內容
cat
more
less
# 顯示文件最后 10 行
tail
# 顯示文件最后 20 行
tail -20 /var/log/messages
watch
# 每隔兩秒鍾 顯示文件最后 20 行
watch -n 2 tail -20 /var/log/messages
# 拷貝
cp
# 拷貝文件夾
cp -r
# 刪除
rm
# 刪除文件夾
rm -r
# 強制刪除文件夾不提示
rm -rf
# 任務管理器
top
# 根據 pid 殺進程
k
# 退出
q
# 查看詳細的進程信息
ps aux
# 篩選輸出內容
grep
# 只顯示文件中包含 ssh 字符串的行
grep ssh /etc/passwd
cat /etc/passwd | grep ssh
# 顯示不包含 127 字符串的行
grep -v "127"
# grep 升級版
egrep
# 不顯示包含 0.0.0.0 或 ::: 的行
egrep -v '0.0.0.0|:::'
# 網卡設置
ifconfig
# 關閉網卡
ifconfig eth0 down
# 開啟網卡
ifconfig eth0 up
# 修改網卡 MAC 地址。要先使用 ifconfig 命令關閉網卡。
macchanger -m 00:11:11:11:11:11 eth0
# 查看 ip 地址信息
ip address
# 當前的 tcp udp 聯接
netstat -pantu
# 以空格分列
awk
# 不顯示 '0.0.0.0' 或 ':::' ,且只顯示第5列
netstat -pantu | egrep -v '0.0.0.0|:::' | awk '{print $5}'
# 以:分列,打印第一列
awk -F: '{print $1}'
# 指定字符分列
cut
# 按:分列,顯示第一列
cut -d ":" -f 1
# 排序
sort
# 去重
uniq
# 路由信息
route
# 掛載目錄。查看已經掛載了哪些目錄。
mount
# 掛載 kali.iso 到 /media/cdrom
mount -o loop kali.iso /media/cdrom
# 日志。查看:/var/log/messages
dmesg
# 查找文件
find
# 從根目錄查找nmap文件
find / -name nmap
# 大小寫不敏感
find / -iname nmap
# 當前目錄及子目錄下所有以ps開頭的文件
find . -name "ps*"
# 將查詢出來的文件復制到tmp下(加bak后綴) 不操作隱藏目錄下的文件
find . -name "ps*" -exec cp {} /tem/{}.bak \;
# 查找包管理器里的軟件位置
whereis
# 查找二進制文件
whereis -b nmap
# 更新查找的數據庫
updatedb
echo
# 光標不換行
echo -n "name: "
vi
# 寫入
:w
# 退出
:q
# 強制寫入並退出
:wq!
# 顯示行號
:set nu
# 復制一行
y
# 粘貼
p
# 刪除一行
dd
# 下一行插入
o
# 刪除前一個字符
x
# 替換
r
# 插入
i
# 追加
a
# 修改權限
chmod
# 給shell文件添加執行權限
chmod a+x shell
# 修改所屬用戶和組
chown
chown -R root:root xxx
# 等待並獲取用戶輸入
read
# 從1到9的序列
seq 9
# 計算
expr
a=2
b=4
c=`expr $a \* $b`
echo $c
ping
# 只 ping 一次
ping 192.168.1.1 -c 1
# 計算字數
wc
# 計算長度
wc -L
# 查看系統信息
uname
# 內核信息
uname -a
# 內核版本號
uname -r
# 限制當前shell內進程的資源使用,窗口關閉限制就消失了,可以在 .bashrc 文件中添加限制命令
# 全局配置文件 /etc/security/limits
ulimit
# 查看默認值
ulimit -a
# 限制每個堆棧大小 100kb
ulimit -s 100
# 當前 shell 最大內存大小 5000kb,虛擬內存大小 5000kb
ulimit -m 5000 -v 5000
# 可以同時打開 900000 個文件,比如進行拒絕服務攻擊的時候同時打開900000個鏈接
# 沒有直接對socket數量的限制參數,Linux系統中一切都是文件,運行中的文件叫做進程
ulimit -n 900000
# Kali Linux 默認不啟動所有網絡服務,如果要默認啟動的話需要使用 update-rc.d 命令
# 運行級別任務 0關機 1單用戶 2 3 4 5多用戶 6重啟
update-rc.d
# 關機
init 0
# 重啟
init 6
# 開啟自啟 ssh 服務(默認運行級)
# defaults 等同於:start運行級別2 3 4 5 stop運行級別0 1 6
update-rc.d ssh defaults
# start優先級20 stop優先級20
update-rc.d ssh start 20 2 3 4 5 stop 20 0 1 6
# 數值越大,優先級越低
# A 的 start優先級80 stop優先級20
update-rc.d A defaults 80 20
update-rc.d B defaults 90 10
# /etc/init.d 文件夾中有大量的服務啟動腳本
# 啟動 ssh 服務,重啟后不會自動啟動
/etc/init.d/ssh start
# 管道
|
# 前面命令執行不成功,再執行后面的命令
||
# 依次執行命令
&
# 前面的命令報錯了,后面的命令不執行了
&&
# 輸出到文件
>
# 追加到文件
>>
常用操作
# 修改mac地址(先down掉eth0,改完再up)
macchanger -m 00:11:11:11:11:11 eth0
# 塊復制
dd if=os.iso of=/dev/sdb bs=1M
# 每5秒顯示一次dd的進度
watch -n 5 killall -USR1 dd
# 修改密碼
sudo passwd root
# 磁盤分區工具
parted
# 所有硬盤
print devices
# 選中設備
select /dev/sdb
# 查看當前設備分區信息
print
# 根據 起始位置 - 結束位置 創建主分區
mkpart primary 3063 7063
# luks 分區加密
cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3
# 打開 luks 加密分區
cryptsetup luksOpen /dev/sdb3 掛載名稱
# 關閉 luks 加密分區
cryptsetup luksClose /dev/mapper/掛載名稱
# 進入 luks 加密分區
cd /dev/mapper/掛載名稱
# 格式化
mkfs ext4 /dev/mapper/掛載名稱
# 指定分區卷標
# 如果是 Kali 持久加密的 USB 設備。卷標必須是 persistence。且要在 USB 根目錄創建 persistence.conf 文件,里面加入 / union
# 比如 echo "/ union" > /mnt/usb/persistence.conf
e2label /dev/mapper/掛載名稱 卷標
# 掛載設備到目錄
mkdir -p /mnt/目錄名稱
mount /dev/mapper/掛載名稱 /mnt/目錄名稱
# 卸載設備
umount /dev/mapper/掛載名稱
常用文件 & 文件夾
# bash 初始化
.bashrc
# init服務
/etc/init.d/
# DNS 配置文件
/etc/resolv.conf
nameserver 192.168.1.1
# 日志文件
/var/log/messages
# 用戶
/etc/passwd
# 資源限制的配置文件
/etc/security/limits