Linux基本命令。
Linux是嚴格區分大小寫
命令的分類:
內部命令 Shell在內部代碼中實現的命令
man type 查看bash Shell自帶的命令
外部命令 Shell以外的命令
用type命令查看內部命令還是外部命令
type cd 提示cd is a shell builtin則說明是內部命令
type mount 提示mount is /bin/bash 告訴外部命令的位置
-------------------------------------------------------------
幫助命令
man 注重於應用,也是最常用的幫助方法
man 的幫助文檔存放的位置
/usr/share/man
man 的幫助文檔分類
1 普通用戶命令
2 系統核心調用的函數工具
3 常用的一些函數與函數庫
4 設備文件的說明
5 配置文件與一些其它格式的文件
6 游戲相關
7 網絡協議相關
8 管理員可操作的命令
9 系統內核相關的文件
在 man 幫助裡:
/c 搜索c關鍵字
n 下一個關鍵字
N 上一個關鍵字
q 退出
info 注重於介紹,不常用
幫助文檔存放位置
/usr/share/info
進入幫助界面
? info命令幫助
空格鍵 向下翻一頁
tab 在結點之間移動,有結點的地方通常會以*顯示,將光標移動結點位置按回車可進入結點
b 移動光標到該文章的第一個結點處
e 移動光標到該文章的最後一個結點處
n 前往下一個info頁
p 前往上一個info頁
u 向上移動一層
s(/) 在info裡搜索
h 顯示幫助菜單
q 退出
-------------------------------------------------------------
目錄命令
pwd 查看當前所在目錄的路徑
cd 切換當前所在目錄
絕對路徑
cd /root/Desktop 指從根目錄開始的路徑
相對路徑
cd root/ 指以當前目錄開始的路徑
. 代表當前所在目錄
.. 代表當前的父目錄
- 代表上一次所在的目錄
~ 代表當前登錄用戶的家目錄
mkdir 創建一個目錄
mkdir test 在當前目錄下創建test目錄
mkdir /tmp/test 在根目錄下tmp目錄裡創建test目錄
mkdir file{1..100} 在當前目錄下創建file1到file100的目錄,這裡會創建100個目錄
mkdir "file{1..100}" 在當前目錄下創建file{1..100}目錄,這裡只創建一個目錄
mkdir -p a/b/c 在當前目錄下創建a/b/c目錄樹
rmdir 只能刪除空目錄
rmdir test 刪除當前目錄的test目錄,test必須是空目錄
rmdir /tmp/test 刪除/tmp下的test目錄
rmdir file{1..100} 刪除file1到file100的目錄
rmdir "file{1..100}" 刪除file{1..100}目錄
-------------------------------------------------------------
文件命令
ls 列出當前文件夾下的所有文件
ls -a 列出當前目錄下所有文件,包含隱藏文件
ls -l 以詳細列表形式列出當前目錄下的所有文件
ls -R 列出當前目錄所有文件,包含子目錄內所有文件
drwxr-xr-x 1 root root 2062 2011-01-04 file1
文件類型和文件權限 文件的硬鏈接數 文件所屬用戶 文件所屬用戶組 文件大小 文件的最後修改日期 文件名
文件類型:
c 字符設備
b 塊設備
l 符號鏈接
s socket文件
p 管道文件
d 文件夾
- 普通文件
常用搭配:
ls -al 顯示所有文件包括隱藏文件列表
ls -lt 顯示按日期時間排序後的文件列表
ls -lh 顯示計算大小為KB為單位的文件列表
ls -dl 顯示文件夾詳細列表
touch 新建文件
touch file 創建file空文件,如果file存在則更新file的存取和修改時間
touch -c file 如果file不存在,則不創建文件
touch -r file1 file 更新file時間和file1相同
touch -a file 更新file的存取時間
touch -m file 更新file的修改時間
touch file{2,3,4} 同時創建file2,file3,file4三個空文件
touch "file{2,3,4}" 創建file{2,3,4}一個空文件
cp 復制文件
cp file dirs/ 把file文件復制到dirs目錄下
cp -r dir1/ dir2/ 把dir1目錄復制到dir2目錄下
cp -a file dirs/ 把file文件復制到dirs目錄下,保留文件的原來屬性
cp -rf dir1/ dir2/ 強制復制文件夾,不提示
cp -rvf dir1/ dir2/ 把dir1目錄復制到dir2目錄下,並且顯示復制過程
mv 移動和重命名文件
mv file dirs/ 把file文件移動到dirs目錄下
mv file file2 把file文件重命名為file2
mv -u dir1/* dir2/ 把dir1目錄下所有文件移動到dir2目錄下,並且根據文件時間來決定要不要移動
rename 批量文件重命名
rename .conf .html *.conf 把所有後綴以.conf的文件名裡出現.conf就改成.html
rm 刪除文件
rm file* 刪除所有file打頭的文件
rm -i file* 提示是否確定刪除
rm -f file* 不提示,強行刪除
rm -r dir2 刪除目錄
-------------------------------------------------------------
文件閱讀命令
cat 文件查看命令
cat /etc/passwd 查看/etc/passwd內容
cat -n /etc/passwd 查看/etc/passwd內容並且編號
cat -b /etc/passwd 查看/etc/passwd內容並且給非空行編號
more
more /etc/passwd 逐屏查看/etc/passwd文件內容
less
less /etc/passwd 查看/etc/passwd文件內容,和more不同的是可以上下滾動
head
head /etc/passwd 查看/etc/passwd前10行內容
head -n 30 /etc/passwd 查看/etc/passwd前30行內容
tail
tail /etc/passwd 查看/etc/passwd後10行內容
tail -n 30 /etc/passwd 查看/etc/passwd後30行內容
tail -f /etc/passwd 實時查看/etc/passwd文件內容
重定向
標准輸入 代碼 0 默認設備為鍵盤
標准輸出 代碼 1 默認設備為屏幕
錯誤輸入 代碼 2 默認設備為屏幕
ls /etc/passwd > output.txt 標准正確輸出重定向到output.txt
ls /etc/shadow >> output.txt 標准正確輸出追加重定向到output.txt
ls dddddd 2> error.txt 標准錯誤輸出重定向到error.txt
ls dddddd 2> /dev/null 標准錯誤輸出重定向到黑洞
ls ddddd /etc/passwd &> /dev/null 標准正確輸出標准錯誤輸出全都重定向到黑洞
管道
cat /etc/passwd | less |之前的命令執行的結果做|後命令的參數
==========================================
用戶管理
用戶分類
管理員 user id一定為0,務必唯一
系統用戶 偽用戶,user id 1-499,默認是不允許登錄系統,用於給予某些服務運行時候所用的身份
普通用戶 user id 500-60000, 通過手工或都命令建立起來的用戶,默認可以進行登錄系統
用戶管理
用戶相關配置文件
/etc/passwd
/etc/shadow
vim /etc/passwd
第一列:用戶名
第二列:密碼 x代表密碼存放在/etc/shadow裡,如果去掉x就代表此用戶沒有密碼
第三列:uid 用戶ID值操作系統是不認識用戶名,只認uid
第三列:gid,用戶組的ID
第五列:描述項
第六列:指定家目錄
第七列:指定bash
vim /etc/shadow
第一列:用戶名
第二列:真實的密碼,經過加密的,以*或都!號開頭的不能登錄
第三列:上一次修改密碼的時間,linux以1970年1月1日到現在的天數來算的
第四列:修改密碼後幾天內不允許再修改, 0代表不限制
第五列:多少天內必須修改密碼,99999代表不限制
第六列:過期前幾天給你一個警告信息
第七列:密碼過期後的一個寬限時間
第八列:這裡可以寫一個實際的賬號過期天數,也是以1970年1月1日到現在來算的,多用於收費系統
第九列:保留,留著以後功能擴展
用戶命令相關配置文件,保存useradd命令創建用戶使用的默認值
/etc/default/useradd
/etc/login.defs
用戶相關命令
useradd/adduser
userdel/deluser
usermod
passwd
useradd a 創建一a用戶
useradd -g kyo a 新建a用戶並且把a用戶添加進kyo用戶組
userdel a 刪除a用戶
userdel -r a 刪除a用戶並且刪除a的家目錄和郵件目錄
passwd a 修改a用戶密碼
passwd -l a 臨時關閉用戶,或修改/etc/shadow第二個字段加*
passwd -u a 釋放臨時關閉用戶
usermod 修改用戶信息
-u 修改UID
-g 修改GID
-d 指它家目錄
-s 指用bash
usermod -G kyo a 把a用戶添加進kyo用戶組
用戶信息相關的命令
chfn 修改一個用戶相關的信息
finger 查看一個用戶相關的信息
組管理
相關配置文件
/etc/group
/etc/gshadow
vim /etc/group
第一列:組名
第二列:密碼,x代表密碼在/etc/gshadow
第三列:gid
第四列:代表屬於這個組的用戶名
vim /etc/gshadow
第一列:組名
第二列:密碼
第三列:組管理員
第四列:組成員
相關命令
groupadd 添加一新用戶組
groupdel 刪除一用戶組
groupmod 修改用戶組信息
gpasswd 修改用戶組密碼
gpasswd -a a root 把a用戶放進root用戶組
gpasswd -A a root 把a用戶放進root用戶組並當管理員
gpasswd -d a root 把a用戶從root用戶組裡刪除
newgrp root 把當前用戶臨時添加進root用戶組,重新登錄失效
id 顯示用戶的ID和組ID
用戶身份切換
su - a 完全切換,不繼承上一個用戶的環境變量,即sbin目錄下的命令用不了
su a 不完全切換,繼承上一個用戶的環境變量,可以用sbin目錄下的命令
手工創建用戶
第一步:在/etc/passwd添加一行信息
bean:x:534:603::/home/bean:/bin/bash
第二步:在/etc/shadow添加一行信息
grub-md5-crypt 創建md5密碼,把密碼替換下面兩個!!位置
bean:!!:15035:0:99999:7:3::
第三步:在/etc/group添加組的信息
bean:x:603:
第四步:在/etc/gshadow添加組的密碼信息
bean:!::
第五步:創建家目錄
mkdir /home/bean
第六步:把用戶的環境變量文件復制到家目錄
cp /etc/skel/.bash* /home/bean
chown bean:bean /home/bean/ -R
chmod 700 /home/bean/ -R
第七步:創建用戶的郵件文件
touch /var/mail/bean
chown bean:bean /var/mail/bean
chmod 660 /var/mail/bean
================================================================================
Linux權限
ls -l
- rw- r-- r-- 1 root root 4383 2011-03-01 01:37 readme.txt
所屬用戶權限u 所屬用戶組權限g 其它人權限o
r read 讀權限
針對文件夾,具有r權限,就代表具有對這個文件夾進行列表的權限
針對文件,具有r權限,就代表具有讀取這個文件的內容的權限
w write 寫權限
針對文件夾,具有w權限,代表具有他能在此文件夾裡創建修改等操作
針對文件,具有w權限,代表具有修改此文件內容的權限
x execute 執行權限
針對文件夾,具有x權限,代表可以切換到此文件夾
針對文件,具有x權限,代表可以運行它,文件必須是可執行或腳本等
二進制轉八進制:
000 0 ---
001 1 --x
010 2 -w-
011 3 -wx
100 4 r--
101 5 r-x
110 6 rw-
111 7 rwx
rwx, r-x, r-x
7 5 5
-------------------------------------------------------------
chmod 修改權限的命令
chmod u+x,g+r,o-r file 修改file文件用戶權限加上可執行權限,用戶組也加上讀權限,其它用戶減去讀權限
chmod u=rwx,g=rw,o=r file 修改file文件用戶權限為可讀可寫可執行,用戶組為可讀可寫權限,其它用戶為讀權限
chmod 755 file 修改file文件用戶權限為可讀可寫可執行權限,用戶組為可讀可執行權限,其它用戶也為可讀可執行權限
chmod 755 dirs -R 修改dirs目錄裡所有文件的用戶權限為可讀可寫可執行權限,用戶組為可讀寫執行權限,其它用戶也為可讀可執行權限
-------------------------------------------------------------
chown 修改文件用戶所屬
chown tom file 修改file文件所屬用戶為tom
chown tom:jack file 修改file文件的所屬用戶為tom,所屬用戶組為jack
chmod jack.root dirs -R 修改dirs目錄裡所有文件所屬用戶為jack,所屬用戶組為root
-------------------------------------------------------------
umask 默認創建文件或文件夾權限掩碼
管理員默認umask為022
普通用戶默認umask為002
默認創建文件夾權限是777,而掩碼設置為022,則要減去掩碼,默認創建文件夾權限則變成755
默認創建文件權限是666,而掩碼設置為022,則減去掩碼,默認創建文件權限為644
-------------------------------------------------------------
特權位 針對命令文件,設定setuid、setgid
針對命令文件設定setuid、setgid
沒加特權位之前,命令運行的時候所采用的身份是運行者的身份
添加了特權位之後,命令運行的時候采用的身份不再是運行者的身份,而是命令本身的所屬者
例:passwd touch
針對目錄設定setgid
設定了組的特權位後,在該文件夾下創建子文件或子目錄,它們自動繼承文件夾的所屬組的身份,子目錄會繼承目錄的特權位
chmod u+s/g+s file 給file設置特權位
chmod u-s/g-s file 給file取消特權位
-------------------------------------------------------------
粘貼位 防止其它用戶刪除文件,針對其它用戶,管理員和本人可以刪除,針對目錄有效,文件沒有用
chmod o+t dirs 給dirs目錄設置粘貼位
-------------------------------------------------------------
文件特殊屬性
lsattr 查看文件特殊屬性
chattr 添加或修改文件特殊屬性
chattr +i file 添加i屬性,管理員也不得更改
chattr +a file 只能追加內容,不得修改內容,如果有i屬性,先取消才能加a屬性
chattr -i/-a file 取消文件特殊屬性
-------------------------------------------------------------------------------
系統基本命令
file 查看文件類型
uname 查看系統基本信息
-r 內核版本
-s 什麼內核
-o 什麼操作系統
-n 什麼發行版
-m 什麼平台
-a 查看所有信息
cal 打印日歷
cal 2005 打印2005年日歷
bc 支持超大數的文本計算器
quit 退出
date 時間日期命令
+%Y 年
+%m 月
+%d 日
+%H 小時
+%M 分
+%S 秒
......
echo 打印字符串
-n 不換行
-e 支持\t\n等
shutdown -r 重啟
suutdown -c 取消計劃中的關機或重啟
shutdown -p 直接關閉電源
shutdown -h 關機
shutdown -h 30 "30秒後就要關機" 計劃關機並給所有終端提示
init 改變系統運行級別
0 關機
1 單用戶模式,沒有用戶和密碼驗證
2 不帶網絡的文本模式
3 帶網絡的文本模式
4 保留
5 帶圖形界面的模式
6 重啟電腦
runlevel 查看當前運行級別
sync 同步磁盤
cat /etc/issue 查看linux系統發行版本信息
w 更詳細的顯示在線情況
21:55:44 up 1:49, 5 users, load average: 0.38, 0.35, 0.23
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty7 :0 20:06 1:49m 1:52 0.12s gnome-session
root pts/2 :0.0 20:24 33.00s 0.10s 0.10s bash
root pts/3 :0.0 21:37 11:18 0.02s 0.02s bash
用戶名 登錄終端 從哪裡登錄過來 登錄時間
踢掉一個遠程登錄過來的用戶
ps -aux | grep pts/5 pts/5是遠程登錄的終端,查看終端對應的PID
kill -9 3236 3236是上面查到的pts/5的PID
命令類別:
內部命令 集成於SHELL程序的命令
外部命令 獨立可執行文件的命令
區別方法:
which 命令
如果有路徑代表外部命令,找不到則代表內部命令
type 命令
如果結果顯示is a shell builtin代表是內部命令,否則為外部命令
幫助命令:
man 外部命令
獲取外部命令的幫助信息
q 退出 h 獲取man手冊幫助信息
man手冊分1 ~ 8的章節
1 基本命令幫助信息
2 系統調用函數幫助信息
3 標准庫函數幫助信息
5 配置文件幫助信息
8 系統管理員命令幫助信息
help 內部命令
獲取內部命令的幫助信息
文件操作命令: rm mv cp touch vim gedit
目錄相關命令: cd pwd mkdir rm ls
文件閱讀命令: head tail cat more less
head 查看指定文件頭部行數內容
head -n 5 file
列出文件前5行內容
tail 查看指定文件尾部行數內容
cat 查看文件所有內容
more 一行一行查看文件內容
q 結束查看
enter 查看下一行
less 可控性更強的查看文件命令
bash SHELL提供:
重定向
0 標准輸入
1 標准輸出
2 錯誤輸出
輸出重定向: > 1> 2> >> 1>> 2>>
輸入重定向: < <<
管道 |
把|前面的命令的輸出給後面命令進行解析
----------------------------------------------------
用戶管理 (用戶為了權限存在)
超級管理員 root 0
系統用戶 1 - 499 / 999 用於系統服務的用戶
普通用戶 500 / 1000 以上
用戶相關配置(超級管理員才可以修改):
/etc/passwd 用戶信息
/etc/shadow 用戶密碼信息
/etc/group 用戶組信息
/etc/gshadow 用戶組密碼信息
用戶相關命令:
id 獲取當前登錄用戶信息
su 切換用戶
useradd/adduser 添加用戶
userdel 刪除用戶
默認不刪除用戶家目錄,-r會刪除家目錄
userdel -r 用戶名
passwd 修改用戶密碼
權限:
查看文件詳細信息
ls -l 文件
-rw-rw-r--. 1 kyo kyo 4633 2月 16 11:18 env.txt
-rw-rw-r-- 文件類型及權限
1 硬鏈接數
kyo 屬用戶
kyo 所屬用戶組
4633 文件大小(字節)
2月 16 11:18 最後修改時間
env.txt 文件名
-rw-rw-r-- 文件類型及權限
第一個字符代表文件類型
- 普通文件
d 目錄
l 軟鏈接
p 管道文件
s 套接字文件
c 字符設備文件
b 塊設備文件
後九個字符代表權限(三個字符為一段)
rw- (u)所屬用戶對此文件的操作權限
rw- (g)所屬用戶組對此文件的操作權限
r-- (o)其它用戶對此文件的操作權限
r 讀
針對文件, 有r才能對此文件讀取內容
針對目錄, 有r才能列表目錄裡內容
w 寫
針對文件,有w才能對此文件進行編輯
針對目錄, 有w才能才能到此目錄裡創建或刪除文件或子目錄
x 可執行
針對文件,有x才能運行文件
針對目錄,有x才能切換進去(cd切換不進去)
修改權限: chmod
chmod u=rwx,g=r--,o=--- file
chmod u+x,g-w,o+r file
權限的數字表示方式(八進制)
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
chmod 755 目錄/ -R
將目錄及目錄裡所有文件都修改權限為755
修改所屬用戶及組: chown
chown 用戶名:用戶組 file -R
粘貼位(只針對其它用戶對文件夾設置權限 setVTX)
作用: 防止其它用戶刪除
chmod 777 目錄/
chmod o+t 目錄/
用戶只能刪除自己的東西
ls查看粘貼位: 目錄如果有執行權限顯示t, 否則顯示T
特權位(setuid setgid)
只能給所屬用戶與所屬用戶組設置
默認可執行文件運行的權限為當前登錄用戶
有了特權位可執行文件運行的權限為文件的所屬用戶
用戶特權:
chmod u+s 可執行文件
用戶組特權:
chmod g+s 可執行文件
文件特殊屬性:
lsattr 查看文件的特殊屬性
chattr 修改文件的特殊屬性