2017年11月27日 星期一

linux 用戶指令快速入門

※一般命令

echo xxx && ooo
ls  -l    --all = -a    --human-readable = -h  --inode = -i,看多檔用空隔隔開
pwd
whoami
cd
tree
date '+%Y/%m/%d %H:%M:%S',%a %b %Z
cal
mkdir
rmdir:刪除空目錄
cp --recursive = -r   --interactive = -i:windows為 xcopy /E /H 
mv --interactive = -i:windows為 move
rm --recursive = -r   --interactive = -i:
      windows 分兩步,為 [del|erase] /S /Q bbb && [rmdir|rd] /S /Q bbb 
touch xxx.txt,windows 為 type nul > xxx.txt
man: see also -> man [number] command
cat --number = -n
tac
tty
history    !!:上一個命令     !c:最接近c開頭命令    !號碼
file 查看是什麼檔案
more
less

grep,過濾結果,windows 有類似的,如 netstat -ano |find ":80"
-A -B -C 還蠻好用的
cat xxx.txt |grep abc -A 5:表示找xxx.txt裡有abc這行和之後的5行,找到多個會用「--」隔開
-B:之後
-C:前後,可以不打-C,直接打數字即可

|
head -行數,預設 10 行
tail -行數 --follow = -f:f 不能和 -行數一起使用,功能是畫面停住,等待新的訊息進來,然後顯示,Ctrl + c 可離開
ln


※vim

visual(視覺的) improved(改進過的),因為原本是 vi,改進過後是 vim
man vi 可查參數,再按 h 可查文檔

命令模式

剪下:[number]D
複製:[number]yy,yank 為使勁拉的意思
貼上:[number]p
刪除:[number]dd
上一次修改:u
下一次修改:Ctrl + r
上一頁:Ctrl + b (before)
下一頁:Ctrl + f (after)
到某一行:ngg 或打「:」加行數

切換成編輯模式:a、i、o、A、I、O
切換成搜尋取代模式::、/、?


編輯模式

回命令模式:Esc


搜尋取代模式

:

數字:跳到某一行
set nu:顯示行號,如果想一進去就有行號,可用臨時的 vi -c "set nu" 檔名,或用永遠的方法,在 ~裡,創建 .vimrc 或 .virc 檔案,將 set nu 打進去存檔,這樣以後開所有檔都有行號了,是針對當前使用者的設定,vi 開頭的用 vi; vim 開頭的 用 vim,當然也可以兩個檔案都打
set nonu
set ignorecase:預設搜尋、取代時,是有分大小寫的,可打上這個命令來忽略大小寫
set noignorecase
set nohl:no high light,搜尋完後,下次進去,預設會高亮,可用這個指令
w
q
q!

取代,如「1,$s/xxx/ooo/gci」,第一行到最後一行,將 xxx 取代成 ooo
    「.,$s/xxx/ooo/gci」:目前行到最後一行
    「%s/xxx/ooo/gci」:第一行到最後一行,和 1,$s 一樣
g 為全部取代,沒加只取代一個
c 為檢查,會有 y/n/a/q/l/^E/^Y 的提示,yn就不說了
    a 表示目前到之後都取代
    q 表示不取代,並且直接離開
    l 表示取代目前這一個,並且直接離開
    ^E 表示跳上一頁
    ^Y 表示跳下一頁
    但 ^E 和 ^Y 我不知道要怎麼按
i 為不區分大小寫,也可用 上面的 set ignorecase

:2,10y:複製 2~10 行
:2,10d:剪下 2~10 行
:2,10y co 15:複製 2~10 行並貼到 15 行
:2,10y m 15:剪下 2~10 行並貼到 15 行

/

尋找,如「/xxx」,搜尋 xxx,然後使用 n|N可往下往上搜尋
搜尋完整單字,如 do、doc、dock,使用 /do 時,三個都會找到
可用 /\<do\>,使用「<」「>」包起來,但要用跳脫字元「\」就可以找完整的單字
又如果下/\<[dD]o\>,那會找 do 和 Do

?

同 / 的尋找,但一開始是下往上尋找,一樣用n|N找


回命令模式:Esc

多檔編輯

vim -o,水平,使用 Ctrl + w 後,按左或右切換
vim -O,垂直,使用 Ctrl + w 後,按上或下切換
vim -p 檔一 檔二,命令模式使用 :tabn 或 :tabp 切換
vim 檔一 檔二,命令模式使用「:sp 檔名」,然後使用 Ctrl + w ,上或下切換


※alias

alias vim='vim --cmd "set nu"',但登出後就沒了
將上一行打在 ~/.bashrc 裡,然後使用 source ~/.bashrc 或者下次登入就會生效了
unalias 為相反的命令

/etc/profile 全域環境變數     ~/.bash_profile 使用者環境變數
/etc/bashrc 全域 bash shell    ~/.bashrc 使用者 bash shell


※標準輸出入、標準錯誤輸出

< 檔案
<< 文字結束
>、1>
>>、1>>
2>、>&
2>>、>>&
&>

wc < /etc/passwd 行、單字、容量
wc < test1 >> test2


※搜尋

which:查尋環境變數的可執行程序,結果只有路徑
whereis:自訂的資料庫,結果有可執行命令 設定檔 手冊
locate:自訂的資料庫(var/lib/mlocate),比 whereis 更詳細,模糊查尋
find:最後的絕招, find /home -name xxx
find 後面接要搜尋的路徑,不打就是當前的路徑
-atime
-mtime 3 前三天的那一天,檔案內容有被修改過的
  +3 3天之外
  -3 3天之內
-ctime

-user 帳號名
-group 用戶組
-nouser 不屬於任何用戶
-nogroup 不屬於任何用戶組

-name 檔名或目錄名,可用通配符,但要用「'」包起來,如 '*bru*'
-iname 檔名或目錄名(不分大小寫)

-type f,查找檔案,l、d為連結和目錄
-size +100k:大於等於100K的文件
-perm +7000:找特殊權限
-exec 找到後執行命令,一直找到「;」之前
{}:會被替換當前的檔名
\:每個系統的「;」有可能有不同的意義,所以加上這個跳脫字元
例:
find -name 'test[34]' -exec sed -i 's/aaa/zzz/g' {} \;
sed 指令說明
find 指令說明

搜檔案內容
find /etc -name "*.text" -exec grep -H "xxx" {} \; 在 /etc 下搜尋 .text 結尾的檔案,內容含有 xxx的,--with-filename = -H 為列出路徑


※ls -l  的訊息

drwx-w--wx 2 bruce root 4096

d、-、l 目錄 檔案 連結

rw-r-x-wx
三個一組,分別表示權限,擁有者 群組 其他

目錄
r:查看目錄內容
w:增刪改
x:進入目錄

檔案
r:查看檔案內容
w:增刪改
x:執行

2 為檔案數量,目錄至少有.和..,不包括子目錄;檔案一定是 1
擁有者是誰
群組名
檔案大小(Byte)
Mtime
檔名

除了 root 外,擁有者、群組、其他人只能有一個角色
例如有一個使用者,是 A 檔的擁有者也是群組,此時若擁有者的權限不足,並不會抓群組的權限

※mtime、ctime、atime 區別

mtime:檔案內容最後被修改的時間,ls -l
ctime:檔案的內容、屬性最後被修改的時間,如修改權限、修改擁有者、改檔名,ls -cl
atime:最後被讀取的時間,vi 開啟就會讀到了,但 echo 不會讀到,ls -ul,但在安裝作業系統時可以選擇不要更新 atime,可以增進效能


※su、su -、sudo

su:切換成 root,shell 不切換
su -:切換成 root,shell 也切換
以上兩個後面如果接使用者,就會切換到那個使用者,輸入的密碼為切換帳號的密碼

sudo:臨時切換成 root,必需先設定 /etc/sudoers,可用 vi /etc/sudoers 或者 visudo 編輯,
輸入的密碼為自己的密碼

帳號     來源主機名稱=(可切換的身份)     能下什麼指令(絕對路徑)
root ALL=(ALL) NOPASSWD: ALL
root 這個帳號從任何主機連進來都可用現在的設定,可切換任何身份執行任何命令
其中(ALL) 和 NOPASSWD: 可以不寫
(ALL) 表示切換哪個帳號的身份,不寫就是 root,ALL 表示任何帳號
NOPASSWD: 注意最後有個冒號,不寫預設是要打密碼的,打登入時的密碼,不是切換誰的密碼

xxx 192.168.0.1=(ooo) /aaa/bbb,/aaa/ccc
xxx 這個帳號從 192.168.0.1 這台主機連進來可用現在的設定,可切換成 ooo 
這個帳號,執行 /aaa/bbb 和 /aaa/ccc 這兩支程式

%zzz ALL=(ALL) ALL
加上「%」就變成群組了
zzz這個群組從任何主機連進來都可用現在的設定,可切換任何身份執行任何命令

sudo 指令說明



※背起來

rsync -avzhpr

a --archive
v --verbose
z --compress
h --human-readable
p --perms:preserve permissions
r --recursive


tar -zxvf -cvf

c --create
z --gunzip
x --extract
v --verbose
f --file

.tar.gz -> zxvf
.tar -> xvf
cvf -> 打包

rpm -ivh -Uvh -qa -e

i --info
h --hash
U --upgrade
q --query
a --all
e:erase,御載

rpm -Uvh
rpm -qa |grep httpd

rpm 必須自己解決依賴關係


yum [-y] [install | remove | update | search | list | list installed]

search:列出伺服器上可貨下載的
list:列出伺服器上可供下載和已安裝的
list installed:列出已安裝的
update:更新某個套件,如果後面不加套件,會整個系統更新

yum 底層還是 rpm,但會幫我們解決依賴關係



編譯

下載源碼後,如 nginx,然後 wget xxx 並解壓後進目錄
./configure --prefix=/xxx/ooo
make && make install
以上三步搞定,但有時候第一步有依賴問題會報錯,根據報錯的訊息下載,然後再重做一次,只要有錯就得重做
※「./」開頭是一定要加的,通常環境變數不會有設定你下載的路徑,在 linux 裡,只要是執行檔就是綠色的,執行時環境變數沒有時,就要加「./」,表示當前層
但有六個目錄例外:
bin
usr/bin
usr/local/bin

sbin
usr/sbin
usr/local/sbin

有錯時,如沒有 pcre,那就在下載時,後面加上 -devel,是 develop 的簡寫,通常開發會比較多東西
yum -y install pcre-devel

搞定後,去 --prefix 的目錄查看



沒有留言:

張貼留言