1. 程式人生 > 實用技巧 >linux基本命令

linux基本命令

1.linux目錄結構

'''
/          根目錄
/bin       存放著最常使用的指令
/sbin      存放著系統管理員使用的系統管理程式
/home      存放著普通使用者的主目錄
/root      系統管理員的主目錄
/lib       系統開機所需的最基本的動態連線共享庫
/etc       系統管理所需的配置檔案
/usr       存放使用者的應用程式和檔案
/boot      啟動linux的核心檔案
/srv       服務啟動之後所需的資料
/sys     
/tmp       臨時檔案
/dev       把所有硬體用檔案形式儲存
/media     掛載裝置
/mnt       臨時掛載別的檔案系統
/opt       額外安裝軟體所擺放的目錄
/usr/local 給主機額外安裝軟體所安裝的目錄
/var      
'''

2.檢視命令的用法

'''
man command
help 
info command
which command    檢視命令的路徑
whereis command 
'''

3.與使用者和組相關

'''
建立子賬戶  adduser [-d] [指定目錄] username 
/*注意這個命令沒有home目錄*/  useradd [-g] [groupname] username 
完全刪除子賬戶  userdel -r username  
更換賬戶密碼    passwd username 

檢視使用者   cat /etc/passwd     id username
檢視組資訊 cat /etc/group 
增加使用者組 groupadd group_name
刪除使用者組 groupdel group_name
移動使用者到另一個組 groupmod -g newgroup username
檢視檔案的所屬者    ls -ahl 

(下面命令受限,要用root賬戶)
chown [-R] 使用者名稱 檔名       (改變檔案\目錄的所屬者)
chgrp [-R] 組名 檔名           (改變檔案\目錄的所屬組)
chown newowner:newgroup file
usermod -g 組名 使用者名稱         (改變使用者的所屬組)

sudo su 進入root
su username 進入使用者
sudo 允許普通使用者執行root命令
給使用者新增sudo許可權(xxx is not in the sudoers file)
1.新增寫許可權 chmod u+w /etc/sudoers
2.開啟檔案 vim /etc/sudoers 在root ALL=(ALL) ALL 下面為使用者新增一行
3.撤銷寫許可權 chmod u-w /etc/sudoers

'''

4.與檔案目錄相關

'''
建立一級目錄 mkdir xx
建立多級目錄 mkdir -p  /xx/xx
刪除空目錄    rmdir

建立檔案   touch file 
移動檔案   mv [檔名] [目標資料夾路徑]
重新命名      mv  oldname newname
複製檔案\資料夾  cp [-r、-f、-rf] source dest   (cp前加\強制覆蓋)
檢視檔案            cat [-n] file | more  分頁顯示  空格鍵
分頁檢視檔案      more filename
檢視大檔案         less filename 
刪除檔案            rm -rf file
全部顯示            ls -a 

編輯單個檔案   gedit file 
編輯/檢視檔案
vi(vim) filename, 按 i 修改,然後按esc   
:w 儲存檔案但不退出
:wq 儲存檔案退出 
:w file 將修改儲存到file檔案中
:q不儲存檔案退出    :q! 不儲存,強制退出
:e! 放棄所有的修改從上次儲存檔案開始再編輯
快捷鍵(正常模式下)
yy 複製當前行 按p貼上 5yy就是複製下面5行
dd 刪除當前行 5dd刪除游標下的5行
/查詢內容 按回車就可找到要查詢的內容 再按n就會向下尋找
:set nu 設定行號,:set nonu 取消行號
輸入G到達文件底部 gg到達文件頂部
撤銷編輯的內容輸入 u
到達指定行 1.先設定行號 2.輸入要到達的行號 3.按shift+g

返回主目錄  cd cd~ 
返回上一級 cd- cd .. 
~ 表示 /home/user
/  表示根目錄
~表示當前使用者的home目錄,cd ~/.config/ 也就是切換到home下的隱藏目錄
檢視當前的絕對路徑  pwd
絕對路徑  /
相對路徑 ../   (..返回上一層)   hul@hul-virtual-machine ~$cd ../../home (../返回上一級)

head -n filename (顯示檔案前n行)
tail -n filename (顯示檔案後n行)
tail -f filename (實時追蹤該文件的所有更新)

> 和 >>
ls -l  > a.txt   將顯示的內容覆蓋寫入a.txt
ls -l >> a.txt  將顯示的內容追加進a.txt    (ls -l /home/hul >> ~/桌面/a.txt)
cat file > a.txt 
echo "寫入內容" > a.txt   (將引號裡的寫入a.txt)
echo $PATH                   (輸出環境變數路徑)

檔案及目錄許可權
drwxrwxr-x. 3(內部檔案個數) hul hul 45 Jul 31 09:13 test
(第一組rwx表示檔案所有者的許可權,第二個rwx表示檔案所在組的使用者許可權,第三個r_x表示不同組的使用者的許可權)
-rw-rw-r--. 1 hul hul 15(檔案大小位元組) Jul 31 09:57 test.py
(第一個rw表示檔案所有者的許可權,第二個表示檔案所在組的使用者的許可權,第三個表示不同組的使用者的許可權)
(檔案的rwx w表示可修改但不可刪 x表示可執行)
(目錄的rwx w表示可修改可刪除內部檔案 x表示可執行)
更改檔案許可權
chmod u=rwx,g=rx,o=x 檔案目錄名
(u表示所有者   g表示所有組   o表示其他人   a表示所有人)
chmod o+w 檔名 (給其他人都增加寫的許可權)
chmod g=rx user    (向和user同組的使用者開放user使用者的許可權,同組使用者可以訪問user)

建立軟連結 (還有硬連結沒寫)
ln -s [原檔案或目錄] [軟連結名] (給原檔案建立一個軟連結,類似於快捷方式)
rm -rf 軟連結名                      (刪除軟連結)

'''

5.壓縮解壓縮

'''

gzip 壓縮成 .gz 檔案
gunzip
zip  [-r] xxx.zip 目錄/檔案 (zip -r mydesktop.zip ~/桌面/)
unzip [-d] 目錄 xxx.zip        (unzip -d ~/桌面/test/ mydesktop.zip )
tar 打包成 .tar.gz
(tar -zcvf [test.tar.gz] [a.txt bbb.txt] )
(tar -zxvf [壓縮包檔名.tar.gz] -C  [目錄]   解壓到指定目錄,目錄要存在)

'''

6.查詢

'''

find [搜尋的目錄] [-name -user -size] *   (find ~/桌面 -name test2.py)
|  管道符號 將前面的結果傳遞給後面的命令
grep 過濾查詢 (cat test2.py | grep -ni xx 查詢檔案中的xx,n表示顯示行號,i表示不區分大小寫)

'''

7.防火牆

'''
ubuntu 關閉防火牆才能遠端操作
檢視防火牆 sudo ufw status 
關閉防火牆 ufw disable 
開啟防火牆ufw enable
調整介面 alt+f2 gnome-tweaks
centos7
檢視防火牆 systemctl status firewalld

'''

8.任務排程

'''

任務排程(/etc/crontab)
1.crontab -e
2.*/1  * * * * [ls -l /etc >> /tmp/to.txt (第一個*表示分鐘 後面的依次表示小時 日 月 星期,有,-的用法)
3.每分鐘會自動呼叫 ls -l /etc >> /tmp/to.txt
或者
1.將任務寫入 xx.sh 檔案(date >> /tmp/mydate),給檔案一個可執行許可權
2.crontab -e 
3.寫入排程指令 */1 * * * *  [.sh檔案的路徑]
檢視排程任務crontab -l
結束排程任務crontab -r

'''

9.檢視分割槽和統計檔案

'''

lsblk -f  或者 lsblk
增加硬碟(硬碟分為IDE(hdx~)硬碟和SCSI(sdx~)硬碟)
1.虛擬機器新增硬碟   2.分割槽   3.格式化   4.掛載   5.設定自動掛載
磁碟情況查詢        df -lh
目錄佔用磁碟情況查詢 du -ach /目錄  (du -ach --max-depth=1 /home)
統計某個目錄下檔案或者資料夾的個數 ls -l [/home] | grep "^-[^d]" | wc -l (-開頭表示檔案 d開頭表示資料夾) ls -lR [/home] | grep "^-" | wc -l (遞迴統計)
樹狀結構顯示目錄 tree
'''

10.掛載

'''

centos7掛載cdrom
mount -t auto /dev/cdrom /mnt/cdrom (這種掛載重啟失效)
取消掛載
umount /mnt/cdrom
虛擬網絡卡 真實網絡卡
想要永久掛載要修改/etc/fstab檔案實現 

'''

11.程序和服務的管理與查詢

'''

檢視程序 ps [-aux]  父程序  ps -ef
殺死程序,要知道程序的服務名(例如連線服務程序  ps -aux | grep sshd)
kill -9 <process id>
killall 程序名稱
樹狀顯示 pstree -pu 

服務管理
systemctl 服務名 [start | stop | restart | reload | status]
檢視服務名
setup
服務的執行級別-

動態監控程序
top [-d -i -p]  
top互動指令 P(以CPU使用率排序) M(以記憶體使用率排序) N(以pid排序) q(退出top)
檢視網路服務和埠
netstat -anp

'''

12.安裝指令

'''

centos的rpm和yum
查詢已安裝的rpm列表 rpm [-qa-qi -ql -qf]  filename   [| grep xxx]
(-qa全部軟體包 -qi軟體資訊 -ql軟體包的檔案 -qf檔案全路徑名)
解除安裝  rpm -e [--nodeps] RPM包名稱  (--nodeps強制刪除)
安裝  rpm -ivh RPM包安裝路徑
檢視安裝的軟體  yum list | grep xxx
安裝軟體             yum install xxx  (連網使用)
解除安裝軟體             yum remove xxx

ubuntu的apt
映象原始檔 /etc/apt/sources.list   sudo apt-get update
sudo apt-get install package
sudo apt-get upgrade          更新已安裝的包
sudo apt-get remove package
sudo apt-cache show package   獲取包的相關資訊
sudo apt-get source package   下載該包的原始碼
sudo apt-get update           更換源
wget [-c] url 直接下載檔案或網頁
'''

13.ssh

'''

遠端登入要安裝ssh (ssh可以控制另一個伺服器 ssh [email protected])
檢視ssh服務 dpkg -l | grep ssh
安裝ssh
sudo apt-get install openssh-server
service sshd start

'''

14.程式構建

'''

1.配置 ./configure
2.編譯 make
3.安裝 make install
(
wget xxx
tar zxvf xxx
cd xxx
./configure
make
make install
)

'''

15.c/c++

'''

1.編譯
g++ -g hello.cpp -o xx
2.除錯(要輸入命令,例如 run list quit等)
gdb xx
3.執行
./xx


'''

16.自定義命令列顏色

'''

vim ~/.bashrc  修改後更新 source ~/.bashrc   修改PS1可以修改命令列顏色

'''

17.時間

date '+%Y-%m-%d %H:%M:%S'
cal