Linux cetnos/7 常用命令

常用快捷鍵

cd -    進入上次目錄(在目錄中切換)

crtl+r  **在歷史命令中搜索**/再次按搜索下一個匹配的命令

crtl+u  從光標所在位置刪除到行首

ps      查看進程

man ls  查看幫助手冊

Ctrl+z/  切到后臺
jobs     查看
fg   [jobs對應id]   如fg 1 切換到前臺

cat /etc/group | grep -E "shiyanlou"    搜索并打印某個文件

echo "test" >> file1        把test 寫入file1 文件中已追加的形式
echo "test" > file1      已重新寫入的形式

whereis php     包所在路徑

which php       執(zhí)行命令所在目錄

commad ; commad    多條命令之間用 ;  連接

tail -f /data/www/run.log/   不斷刷新日志輸入

[vagrant@localhost src]$ LANG="zh_CN.UTF-8" #臨時切換為中文環(huán)境

設置別名 [alias]

  • 設置臨時別名
alias www='cd /var/www' 
  • 永久別名

更改~/.bashrc或/etc/bashrc,前者是針對單用戶,后者針對全局用戶

vim ~/.bashrc
#內容
alias h='history'

生效
source ~/.bashrc

殺掉進程

[root@localhost www]# ps
  PID TTY          TIME CMD
 2928 pts/0    00:00:00 sudo
 2929 pts/0    00:00:00 su
 2930 pts/0    00:00:00 bash
 3848 pts/0    00:00:00 ps
[root@localhost www]# kill 2929

文件處理

mkdir -p    遞歸創(chuàng)建目錄

cp  -a       復制  
    -r   復制目錄
    -p  連帶文件屬性復制
    -d   若源文件是鏈接文件.則復制鏈接屬性
    -a  相當于  -pdr(前三個相加)
    
ln -s       創(chuàng)建鏈接
    s 創(chuàng)建軟鏈接   相當于windows的快捷方式

歷史命令:history

提示 alias h='history'

history [n]   顯示前n 條的歷史
history [-c]    清空歷史
!n                  執(zhí)行第n條的指令

開關機操作

    shutdown 
            -k : 不要真的關機,只是發(fā)送警告訊息出去!
            -r : 在將系統(tǒng)的服務停掉之后就重新開機(常用)
            -h : 將系統(tǒng)的服務停掉后,立即關機。(常用)
            -c : 取消已經(jīng)在進行的shutdown 指令內容。
shutdown -h now
shutdown -h 20:25
shutdown -h +10
shutdown -r now
reboot 關機

歡迎界面

vim /etc/motd 

歡迎使用本服務器,連接后自動展示此段文字

文件/文件夾權限

chgrp 改變組

-rw-rw-r--. 1 vagrant vagrant 15 Aug 17 08:34 test
[root@localhost vagrant]# chgrp root test.php 
-rw-rw-r--. 1 vagrant root    15 Aug 17 08:34 test

chown 改變檔案擁有者和組

-rw-rw-r--. 1 vagrant vagrant    15 Aug 17 08:34 test
[root@localhost vagrant]#  chown root:sftp test
-rw-rw-r--. 1 root    sftp    15 Aug 17 08:34 test

chmod 改變權限

r可讀 w可寫 w可執(zhí)行( 對目錄而言是能否進入該目錄)

r:4 
w:2 
x:1
owner = rwx = 4+2+1 = 7 
group = rwx = 4+2+1 = 7 
others= --- = 0+0+0 = 0
-rw-r--r--. 1 root    root    26 Aug 16 06:10 test.php
[root@localhost vagrant]# chmod 755 test.php 
-rwxr-xr-x. 1 root    root    26 Aug 16 06:10 test.php
chmod u=rwx,g=rx,o=r test.php       
chmod a+w test.php
        -a all 所有分組
        所有組加上可寫權限

目錄

根目錄

目錄 說明
/bin 可執(zhí)行文件
/boot 放置開機會使用到的檔案
/dev 周邊設備,以文件形式放置在此目錄
/etc 系統(tǒng)設置文件,其他權限可看,root可寫
/lib /lib放置的則是在開機時會用到的函式庫
/media 放置的就是可移除的裝置啦
/mnt 暫時掛載某些額外的裝置
/opt 給第三方軟體放置的目錄
/run 規(guī)定系統(tǒng)開機后所產(chǎn)生的各項信息
/sbin 為開機過程中所需要的,開機、修復、還原系統(tǒng)所需要的指令
/srv 『service』的縮寫,如WWW, FTP
/tmp 程序暫時放置檔案的地方
/usr 看下表
/home 用戶目錄
/lib 用來存放與/lib 不同的格式的二進位函式庫
/root 系統(tǒng)管理員(root)的家目錄

/usr (Unix Software Resource的縮寫)

目錄 說明
/usr/bin/ /bin為此快捷目錄
/usr/lib/ /lib為此快捷目錄
/usr/local/ 自行安裝的軟件
/usr/sbin/ /sbin為此快捷目錄
/usr/games/ 與游戲相關的文檔
/usr/include/ c/c++等程式語言的檔頭(header)與包含檔(include)放置處
/usr/libexec/ 不被一般使用者慣用的執(zhí)行檔或腳本(script)
/usr/lib<qual>/ 與/lib<qual>/功能相同,因此目前/lib<qual> 就是連結到此目錄中
/usr/src/ 一般原始碼建議放置到這里

/var

目錄 說明
/usr/cache/ 程序運行時產(chǎn)生的一些暫存檔
/usr/lib/ 程式本身執(zhí)行的過程中,需要使用到的資料檔案放置的目錄,如MySQL資料庫放置在/var/lib/mysql/
/usr/lock/ 些裝置或者是檔案資源一次只能被一個應用程式所使用,如刻錄機
/usr/mail/ 放置個人電子郵件信箱的目錄
/usr/run/ /run 為此快捷鍵
/usr/spool/ 排隊等待其他程式使用的資料,如系統(tǒng)收到新郵件
/usr/log/ 軟件或系統(tǒng)的日志
/usr/log/ 軟件或系統(tǒng)的日志
/usr/log/ 軟件或系統(tǒng)的日志
LInux目錄樹圖

目錄

cd [空] 進入當前登錄者的home
pwd     顯示當前的目錄 (Print Working Directory)
mkdir   新建目錄
        mkdir -p test1/test2/test3/test4  遞歸建立目錄
        mkdir -m 711 test2   建立權限為711的存檔
rmdir   刪除空目錄
        rmdir -p test1/test2/test3/test4 遞歸刪除目錄

路徑

[root@localhost tmp]# PATH="${PATH}:/root" 添加路徑 /root 路徑
[root@localhost tmp]# echo $PATH 
/sbin:/bin:/usr/sbin:/usr/bin:/root

復制、刪除與移動:cp,rm,mv

復制

cp [option] source1 source2 
    -a 檔案的屬性,權限,時間一起復制(常用于備份)
    -i 若目標已經(jīng)存在,則進行詢問
    -r 可以復制目錄(可能會改變文件屬性,可用-a 代替)
    -u 目標文檔與源文檔有差異復制(常用于備份)

刪除

rm  [-fir]檔案或目錄
    -f 忽略不存在的檔案,不會出現(xiàn)警告訊息
    -i 在刪除前會詢問 (y/n)
    -r 遞歸刪除 

移動(重命名)

 mv [options] source1 source2 source3 .... directory 
    -f 如果目標檔案已經(jīng)存在,不會詢問而直接覆蓋
    -i 如果目標已經(jīng)存在,就會詢問是否覆蓋 (y/n)
    -u  若目標檔案已經(jīng)存在,且source 比較新,才會更新

檔案內容查閱

cat     由第一行開始顯示檔案內容
tac     從最后一行開始顯示,可以看出tac 是cat 的倒著寫!
nl      顯示的時候,順道輸出行號!
more    一頁一頁的顯示檔案內容
less    與more 類似,但是比more 更好的是,他可以往前翻頁!
head    只看頭幾行
tail    只看尾巴幾行
od      以二進位的方式讀取檔案內容!

修改檔案時間或建置新檔

  • modification time (mtime): 文檔內容變更時變化
  • status time (ctime): 文檔權限與屬性改變時變化
  • access time (atime): 讀取該文檔時,變化
touch [-acdmt]檔案
    -a 僅修訂access time
    -c 僅修改檔案的時間,若該檔案不存在則不建立新檔案;
    -d 后面可以接欲修訂的日期而不用目前的日期
    -m 僅修改mtime ;
    -t 后面可以接欲修訂的時間而不用目前的時間,格式為[YYYYMMDDhhmm]
touch -d "2 days ago" test.php  變更ctime 

檔案預設權限:umask

** 查看當前屬性**

[root@study ~]# umask
0022 
[root@study ~]# umask -S
u=rwx,g=rx,o=rx

注1:0222 先只需要考慮后三位022 , 刪掉什么權限就寫什么數(shù),如需要刪掉寫的權限(r=4,w=2,x=1) 則刪除2

注2:若使用者建立為『檔案』則預設『沒有可執(zhí)行( x )權限』,亦即只有rw這兩個項目,也就是最大為666

預設
之后新創(chuàng)建的文件和目錄會按照新設置的權限

//設置權限
[root@study ~]# umask 002 
//新創(chuàng)建的文件為 -rw-rw-r--
//新創(chuàng)建的目錄為 drwxrwxr-x

設定隱藏屬性

chattr [+-=][ASacdistu]檔案或目錄名稱

    + :增加某一個特殊參數(shù),其他原本存在參數(shù)則不動。
    - :移除某一個特殊參數(shù),其他原本存在參數(shù)則不動。
    = :設定一定,且僅有后面接的參數(shù)
參數(shù) 說明
A 當設定了A 這個屬性時,若你有存取此檔案(或目錄)時,他的存取時間atime 將不會被修改,可避免I/O 較慢的機器過度的存取磁碟。(目前建議使用檔案系統(tǒng)掛載參數(shù)處理這個項目)
S 一般檔案是非同步寫入磁碟的(原理請參考前一章sync的說明),如果加上S這個屬性時, 當你進行任何檔案的修改,該更動會『同步』寫入磁碟中。
a 當設定a 之后,這個檔案將只能增加資料,而不能刪除也不能修改資料,只有root 才能設定這屬性
c 這個屬性設定之后,將會自動的將此檔案『壓縮』,在讀取的時候將會自動解壓縮, 但是在儲存的時候,將會先進行壓縮后再儲存(看來對于大檔案似乎蠻有用的!)
d 當dump 程序被執(zhí)行的時候,設定d 屬性將可使該檔案(或目錄)不會被dump 備份
i 這個i 可就很厲害了!他可以讓一個檔案『不能被刪除、改名、設定連結也無法寫入或新增資料!』 對于系統(tǒng)安全性有相當大的助益!只有root 能設定此屬性
s 當檔案設定了s 屬性時,如果這個檔案被刪除,他將會被完全的移除出這個硬碟空間,所以如果誤刪了,完全無法救回來了喔!
u 與s 相反的,當使用u 來設定檔案時,如果該檔案被刪除了,則資料內容其實還存在磁碟中,可以使用來救援該檔案喔!

注1:屬性設定常見的是a* 與 i 的設定值,而且很多設定值必須要身為root 才能設定*
例子:

[root@study tmp]# touch attrtest
[root@study tmp]# chattr +i attrtest 
[root@study tmp] # rm attrtest         
rm: remove regular empty file `attrtest'? y
rm: cannot remove `attrtest': Operation not permitted
//即使root用戶也無法刪除
//取消i屬性
[root@study tmp]# chattr -i attrtest

顯示隱藏屬性

 lsattr [-adR]檔案或目錄
    -a :將隱藏檔的屬性也秀出來;
    -d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的檔名;
    -R :連同子目錄的資料也一并列出來! 
[root@study tmp]# lsattr passwd
----ia---------- passwd

SUID/SGID/SBIT 權限設定

4 為SUID
2 為SGID
1 為SBIT
[root@study tmp]# chmod 6755 test;  //賦值

file 觀察檔案類型

file /usr/bin/passwd

指令檔名的搜尋

which

[vagrant@localhost ~]$ which ifconfig       搜索命令
/usr/sbin/ifconfig

whereis

root@study ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

find

時間相關搜索

find [PATH] [option] [action] 
    -mtime n :n 為數(shù)字,意義為在n 天之前的『一天之內』被更動過內容的檔案;
    -mtime +n :列出在n 天之前(不含n 天本身)被更動過內容的檔案檔名;
    -mtime -n :列出在n 天之內(含n 天本身)被更動過內容的檔案檔名。
    -newer file :file 為一個存在的檔案,列出比file 還要新的檔案檔名
    
例子
find / -mtime 0                 將過去系統(tǒng)上面24小時內有更動過內容(mtime)的檔案列出
find /etc -newer /etc/passwd    尋找/etc底下的檔案,如果檔案日期比/etc/passwd新就列出 
find -name      搜索文件
find 相關的時間參數(shù)意義

使用者或群組名稱有關的參數(shù)

-uid n      :n為數(shù)字,這個數(shù)字是使用者的帳號ID,亦即UID ,這個UID 是記錄在
-gid n      :n 為數(shù)字,這個數(shù)字是群組名稱的ID,亦即GID,這個GID 記錄在
-user name  :name 為使用者帳號名稱喔!例如dmtsai
-group name :name 為群組名稱喔,例如users ;
-nouser     :尋找檔案的擁有者不存在/etc/passwd 的人!
-nogroup    :尋找檔案的擁有群組不存在于/etc/group 的檔案!
              當你自行安裝軟體時,很可能該軟體的屬性當中并沒有檔案擁有者,
              這是可能的!在這個時候,就可以使用-nouser 與-nogroup 搜尋。
例子:
[root@study ~]# find /home -user dmtsai     搜尋/home底下屬于dmtsai的檔案

與檔案權限及名稱有關的參數(shù)

-name filename:搜尋檔案名稱為filename 的檔案;
   -size [+-]SIZE:搜尋比SIZE 還要大(+)或小(-)的檔案。這個SIZE 的規(guī)格有:
                   c: 代表byte, k: 代表1024bytes。所以,要找比50KB
                   還要大的檔案,就是『 -size +50k 』
   -type    TYPE :搜尋檔案的類型為TYPE 的,類型主要有:一般正規(guī)檔案(f), 裝置檔案(b, c),
                   目錄(d), 連結檔(l), socket (s), 及FIFO (p) 等屬性。
 例子:
 [root@study ~]# find /etc -name passwd        找出passwd文檔
 [root@study ~]# find / -name "*passwd*"    找出檔名包含了passwd這個關鍵字的檔案(記得加引號)
 [root@study ~]# find / -size +1M           找出大于1M的

額外可進行的動作

-exec command :command 為其他指令,-exec 后面可再接額外的指令來處理搜尋到的結果。
-print :將結果列印到螢幕上,這個動作是預設動作!

例子;
[root@localhost home]# find / -name passwd -exec ls -l {} \;
total 0
-r--r--r--. 1 root root 0 Aug 29 02:22 index
dr-xr-xr-x. 2 root root 0 Aug 29 02:22 perms
-rw-r--r--. 1 root root 1398 Aug  3 09:04 /etc/passwd
-rw-r--r--. 1 root root 188 Jun 10  2014 /etc/pam.d/passwd

注釋:{}代表的是由find找到的內容
      -exec 一直到\; 中間就是需要插入的命令
       `;` 在bash 環(huán)境下是有特殊意義的,因此利用反斜線來跳脫。

列出系統(tǒng)上的所有磁碟列表

[root@study ~]# lsblk [-dfimpt] [device] 
    選項與參數(shù):
    -d :僅列出磁碟本身,并不會列出該磁碟的分割資料
    -f :同時列出該磁碟內的檔案系統(tǒng)名稱
    -i :使用ASCII 的線段輸出,不要使用復雜的編碼(再某些環(huán)境下很有用)
    -m :同時輸出該裝置在/dev 底下的權限資料(rwx 的資料)
    -p :列出該裝置的完整檔名!而不是僅列出最后的名字而已。
    -t :列出該磁碟裝置的詳細資料,包括磁碟佇列機制、預讀寫的資料量大小等
    
[root@localhost vagrant]# lsblk
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                       8:0    0   40G  0 disk 
├─sda1                    8:1    0    1M  0 part 
├─sda2                    8:2    0    1G  0 part /boot
└─sda3                    8:3    0   39G  0 part 
  ├─VolGroup00-LogVol00 253:0    0 37.5G  0 lvm  /
  └─VolGroup00-LogVol01 253:1    0  1.5G  0 lvm  [SWAP]


注釋:
    NAME:就是裝置的檔名啰!會省略/dev 等前導目錄!
    MAJ:MIN:其實核心認識的裝置都是透過這兩個代碼來熟悉的!分別是主要:次要裝置代碼!
    RM:是否為可卸載裝置(removable device),如光碟、USB 磁碟等等
    SIZE:當然就是容量啰!
    RO:是否為唯讀裝置的意思
    TYPE:是磁碟(disk)、分割槽(partition) 還是唯讀記憶體(rom) 等輸出
    MOUTPOINT:就是前一章談到的掛載點!

列出磁碟的分割表類型與分割資訊

[root@study ~]# parted device_name print

例子:
[root@localhost vagrant]# parted /dev/sda print
Model: ATA VBOX HARDDISK (scsi)     #磁碟的模組名稱(廠商) 
Disk /dev/sda: 42.9GB               #磁碟的總容量
Sector size (logical/physical): 512B/512B   #磁碟的每個邏輯/物理磁區(qū)容量
Partition Table: msdos                      #分割表的格式(MSDOS(MBR)/GPT)
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  2097kB  1049kB  primary
 2      2097kB  1076MB  1074MB  primary  xfs          boot
 3      1076MB  42.9GB  41.9GB  primary               lvm

磁碟分割

MBR分割表請使用fdisk分割, GPT分割表請使用gdisk分割!

gdisk

[root@localhost dev]# fdisk /dev/sda
Command (m for help): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a5130

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048        4095        1024   83  Linux
/dev/sda2   *        4096     2101247     1048576   83  Linux
/dev/sda3         2101248    83886079    40892416   8e  Linux LVM
Command (m for help): q  #離開  不保存操作

用fdisk 新增分割槽

[root@study ~]# gdisk /dev/vda 
Command (? for help): p
Number Start (sector) End (sector) Size Code Name
   1 2048 6143 2.0 MiB EF02
   2 6144 2103295 1024.0 MiB 0700
   3 2103296         65026047    30.0 GiB 8E00
 #找出最后一個sector的號碼是很重要的!

Command (? for help): ?   #查一下增加分割的指令為何 
Command (? for help): n   #就是這個!所以開始新增的行為!
Partition number (4-128, default 4): 4   #預設就是4號,所以也能enter即可!
First sector (34-83886046, default = 65026048 ) or {+-}size{KMGTP}: 65026048   #也能enter 
Last sector (65026048-83886046, default = 83886046 ) or {+-}size{KMGTP}: +1G  #決不要enter 
#這個地方可有趣了!我們不需要自己去計算磁區(qū)號碼,透過+容量的這個方式,
# 就可以讓gdisk 主動去幫你算出最接近你需要的容量的磁區(qū)號碼喔!

Current type is ' Linux filesystem '
Hex code or GUID (L to show codes, Enter = 8300 ): #使用預設值即可~直接enter下去!
#這里在讓你選擇未來這個分割槽預計使用的檔案系統(tǒng)!預設都是Linux檔案系統(tǒng)的8300啰!

Command (? for help): p
Number Start (sector) End (sector) Size Code Name
   1 2048 6143 2.0 MiB EF02
   2 6144 2103295 1024.0 MiB 0700
   3 2103296 65026047 30.0 GiB 8E00
   4 65026048 67123199 1024.0 MiB 8300 Linux filesystem

壓縮

*.Z         compress 程式壓縮的檔案;
*.zip       zip 程式壓縮的檔案;
*.gz        gzip 程式壓縮的檔案;
*.bz2       bzip2 程式壓縮的檔案;
*.xz        xz 程式壓縮的檔案;
*.tar       tar 程式打包的資料,並沒有壓縮過;
*.tar.gz    tar 程式打包的檔案,其中並且經(jīng)過 gzip 的壓縮             解壓 tar -zxvf
*.tar.bz2   tar 程式打包的檔案,其中並且經(jīng)過 bzip2 的壓縮
*.tar.xz    tar 程式打包的檔案,其中並且經(jīng)過 xz 的壓縮

針對單一檔案

gzip

#壓縮
gzip  test2.txt.gz 

#加壓縮
gzip -d test2.txt.gz 

bash,xz

bzip2 ,xz 等命令  壓縮參數(shù)相同

#壓縮效率比
xz>bzip2>gzip

#壓縮時間比
xz<bzip2<gzip

打包指令: tar

-c :建立打包檔案,可搭配-v 來察看過程中被打包的檔名(filename)
-t :察看打包檔案的內容含有哪些檔名,重點在察看『檔名』就是了;
-x :解打包或解壓縮的功能,可以搭配-C (大寫) 在特定目錄解開
      特別留意的是, -c, -t, -x 不可同時出現(xiàn)在一串指令列中。
-z :透過gzip 的支援進行壓縮/解壓縮:此時檔名最好為*.tar.gz
-j :透過bzip2 的支援進行壓縮/解壓縮:此時檔名最好為*.tar.bz2
-J :透過xz 的支援進行壓縮/解壓縮:此時檔名最好為*.tar.xz
      特別留意, -z, -j, -J 不可以同時出現(xiàn)在一串指令列中
-v :在壓縮/解壓縮的過程中,將正在處理的檔名顯示出來!
-f filename:-f 后面要立刻接要被處理的檔名!建議-f 單獨寫一個選項啰!(比較不會忘記)
-C 目錄:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。

其他后續(xù)練習會使用到的選項介紹:
-p(小寫) :保留備份資料的原本權限與屬性,常用于備份(-c)重要的設定檔
-P(大寫) :保留絕對路徑,亦即允許備份資料中含有根目錄存在之意;
--exclude=FILE:在壓縮的過程中,不要將FILE 打包! 

壓縮:tar -jcv -f filename.tar.bz2   要被壓縮的檔案或目錄名稱
查詢:tar -jtv -f filename.tar.bz2
解壓縮:tar -jxv -f filename.tar.bz2  -C欲解壓縮的目錄

#如果使用 -z
tar -zcv -f filename.tar.bz2

#demo
壓縮etc目錄,加time 可以顯示壓縮時間
time tar -zpcv -f /root/etc.tar.gz /etc 
查看壓縮的文件
tar -ztv -f /root/etc.tar.gz 
壓縮到指定目錄
tar -jxv -f /root/etc.tar.bz2 -C /tmp 

注意:文件名得自己取,壓縮查看都得配合
-z對應 tar.gz后綴
-j 對應 bz2后綴
-J 對應 .tar.xz后綴

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容