linux學習筆記
linux是一種操作系統。
學習的目的:
掌握pc機上的Linux操作系統的使用,以及基本的開發環境的配置,和它的使用。
一:unix的歷史和來源
unix是一個大家庭,由它延生出不同版本和不同系統的類unix系統。
二:OS的組成
1)Kernel:OS的核心組成部分
管理硬體。
管理設備,內存,進程。
控制系統程序和系統硬體。管理交換空間,守護進程(精靈),文件系統。
2)Shell:是用戶和kernel之間的介面。起到翻譯或者解釋的功能
3)文件系統:將硬體和軟體都映射成文件。可以進行統一管理。
相對路徑:以當前路徑開頭的路徑。
相對點隨時發生改變
絕對路徑:以根目錄/開頭的路徑。
相對點不會發生改變
/:unix系統的根路徑
opt:第三方軟體
etc:系統配置
dev:計算機設備文件(用一些計算機編程語言打開文件,就可以對外圍設備進行操作)
usr:操作系統中自帶的對所有用戶都用的軟體
kernel(boot):內核程序
var:日誌信息,針對管理員使用的東西等
export(home):用戶專有的東西
二級及二級一下的目錄變化較大
eg:定位到user3的目錄
絕對/相對路徑
unix是多用戶操作系統
第二章:
1:crtl+alt+t
2.遠程退出:exit
3.修改普通用戶的密碼:passwd
修改普通用戶密碼的要求,對超級用戶沒有作用
1)密碼的長度6到8個字元
2)密碼至少包含2個字元和一個數字或者一個特殊字元
3)密碼不能和用戶名相同
4)新密碼和舊密碼至少有3個字元不同
第一次設置超級用戶的密碼:
sudo passwd root
輸入當前用戶的秘密
輸入修改秘密
再次輸入修改秘密
超級用戶的名字就是root
普通用戶切換到超級用戶:su
輸入超級用戶的密碼
超級用戶切換到普通用戶:exit
普通用戶的標識:$
超級用戶的標識:#
4.查看用戶信息
more /etc/passwd
用戶名:密文的佔位符:uid:gid:備註:用戶的家目錄:默認使用shell
sudo more /etc/shadow
密碼:超級用戶密碼
使用最小許可權原則:盡量使用普通用戶完成操作
sudo:使普通用戶臨時提升許可權
第三章
命令格式:Command [option(s)] [argument[s]]
command:命令關鍵字
options:可以有多個選項
arguments:可以有多個參數
注意:中間用空格隔開
單行命令一般不超過256個字元
大小寫敏感
不同的命令提示
1.clear 清屏
2.pwd 顯示當前絕對路徑
3.cd 改變路徑
跳到opt目錄下?
cd /opt
直接cd 回到家目錄
cd .
.是當前路徑
cd ..
..是上一層目錄
家目錄跳到opt目錄,使用相對路徑?
4.ls 顯示當前目錄下文件和目錄
ls / 顯示/目錄下文件和目錄
ls /home/candice 顯示家目錄下文件和目錄
ls -a 顯示隱藏文件
ls -R /etc 循環(子目錄中的信息顯示出來)顯示文件
ls -l /etc 顯示詳細信息
ls -t /etc 按照文件的最後一次的修改時間進行排序
1、有7種文件類型:
-:常規文件
d:目錄文件
l:鏈接文件(soft)(類似windows中的快捷方式)
c:字元設備文件(對應一個外圍設備)
b:(塊設備文件)(網路設備(不對應到文件))
p:(pipe) 管道文件 (一般見不到)
s:(socket)套接字文件
p、s兩種文件是為了解決進程間進行通信的文件
2、文件的許可權 (r w x)
文件的擁有者(許可權):凡是和這個文件的擁有者相同的UID的用戶,都是該文件的擁有者
文件的擁有組
三個許可權的組合: r w x
文件必須有x許可權,才可以進行搜索
chmod
chmod u+rwx,g+r
3、touch 新建文件
如果文件存在,就是修改文件的時間(修改文件的時間為系統的當前時間)
如果文件不存在,就是新建一個文件
4、mkdir 新建目錄
5、cp
cp[選項]文件1文件2
6、mv (剪切)移動 或者重命名
$mv a.txt aa.txt 重命名
$mv c.txt dir4 移動
-i 覆蓋前先進行詢問
源是文件、目錄;
目標是文件、目錄、不存在;
7、rm :刪除文件、目錄
-i或--interactive 刪除既有文件或目錄之前先詢問用戶
-r 刪除目錄
rmdir:刪除空目錄
8、man :專門用來查看命令手冊的
9.打包和壓縮命令
打包:是將多個文件,或目錄變成一個總的文件,文件不會變小,說不定還會變大,
增加一些附加的信息來註明文件的信息比如位置什麼的
歸檔
壓縮:將一個大的文件通過某個壓縮演算法變成小文件。注意壓縮只是對一個文件進行操作,
當要對多個文件進行壓縮時就要藉助於打包了,先打包再壓縮。
打包:
c:創建
x:提取
t:顯示tar包中的文件
v:顯示文件
f:使用文件名,在f後直接使用文件名,不能再跟參數
tar [cvf] all.tar a.txt b.txt c.txt 只是歸檔(打包),不壓縮
解包: (不加-C表示解包到當前目錄下)
tar [xvf] all.tar -C 目錄
tar cvfz a.tar.gz file1 file2 file3 (gzip格式)
tar xvfz a.tar.gz
注意:如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file
tar cvfj a.tar.bz2 file1 flie2 (bzip2格式)
tar xvfj a.tar.bz2 -C 目錄
壓縮:
zip filename.zip filename(s)
解壓縮:
unzip filename (如果要解壓到指定目錄,可以加上 -d 選項 )
鏈接文件(軟連接 硬連接) ln [-s(軟連接 symbopllc) source_file destination_file]
ln b.txt bb.txt
硬鏈接 (目錄不能建硬鏈接 硬鏈接不能跨分區)
ls b.txt bb.txt (查看編號是否一致) ---》 (937655 bb.txt 937655 b.txt 表示硬鏈接就是起了別名)
軟連接
ln -s b.txt bb.txt (所有的軟連接都是以l開頭 文件大小和源文件不一致 是一個獨立的文件類型)
第四章
1、元字元:鍵盤可以輸入的對shell具有特殊含義的字元
可以指代其他字元的字元(具有特殊含義的字元)
*--通配0到多個字元
?--通配單個字元
[]---匹配中括弧中任意一個字元
;--連接多個命令
date--查看當前系統時間
cal--查看當月月曆 cal 3 2012:查看某年某月月曆
command > file
--重定向命令的輸出到文件中(默認輸出到終端)
command < file
--重定向輸入為文件(默認是鍵盤)
command >> file
--重定向追加輸出,保留原有文件的內容
:管道
將一個命令的輸出作為另一個命令的輸入
第五章
cat:連接文件或標準輸入並列印。
這個命令常用來顯示文件內容,
或者將幾個文件連接起來顯示,
或者從標準輸入讀取內容並顯示,
它常與重定向符號配合使用
cat > filename
>(表示輸出重定向)
cal > a.txt
cal >>a.txt(追加性重定向)
cat (巧完成以後等待標準輸入進行輸入)
cat < ./s.txt(表示cat的來源不是標準輸入而是s.txt文件)
Ctrl+D(表示輸入結束)
Ctrl+C(表示終止當前命令)
MODULE 5讀文本操作
---------------------------------------
cat /dev/null
cp a.txt /dev/null --拷貝的任何內容都消失
/dev/null---unix黑洞
cat /dev/null > b.txt --清空b.txt文件內容
清空文件另一方法 : > b.txt
more--分屏顯式
head--顯式文件的前N行
tail--顯式文件的後N行
不加參數默認顯式10行
調用vi
vi filename打開或創建一個文件
vi打開一個新文件, 最後才取名
h(向左),j(向下),k(向上),l(向右)
i在游標當前位置插入
a在游標所在位置後插入
o在游標所在行下插入一空行
退出插入狀態
delete text
x刪除一個字元
dw刪除當前詞(沒辦法識別所有的英文單詞,是連續多個字母,當碰到標點符號時,為一個詞)
3dw刪除三個詞
dd刪除當前行(從游標所在行開始)
5dd刪除五行(從游標所在行開始)
:5,10d (底行模式:5到10行刪除)
change text:
r替換一個字元
cw替換一個單詞
cc替換一行
C替換從游標至行尾
copy text :
yw拷貝詞(游標放在一個單詞的開始位置)(p:在游標的下個位置黏貼;
P:在游標的上個位置)
yy拷貝行(或Y)
p當前行下粘貼
:1,2co3拷貝行1,行2在行3之後
:4,5m6移動行4,行5在行6之後
save quit text:
:w存檔
:w newfile存成新文件
:wq存檔退出Vi(或ZZ,或:x先檢測有沒有改變,如果沒有改變,不存檔)
:q!強行退出不存檔
~改變大小寫
J把當前行和下一行連起來
G直接到行未
u廢除剛才的編輯操作(undo)(存檔退出,不能廢除)
:set nu顯示行代碼 (:set nonu)
:21游標停在指定行
21G游標停在指定行 (G 到文件尾,1G 到文件頭)
/串從當前行往下查找
?串從當前行往上查找
n查找繼續
:r file2在游標所在位置插入另一個文件
:1,$s/舊串/新串/g替換全文(或 :$s/舊串/新串/g)
$:表示最後一行
:split(橫向切割)
:vsplit(縱向切割)
Ctrl+ww(跳轉游標到另一個窗口)
:close(首先將游標跳轉到此窗口然後執行:close 進行關閉)
: open xxxxxx(表示裝載另一文件)
1.打包和壓縮命令
打包:是將多個文件,或目錄變成一個總的文件,文件不會變小,說不定還會變大,
增加一些附加的信息來註明文件的信息比如位置什麼的
壓縮:將一個大的文件通過某個壓縮演算法變成小文件。注意壓縮只是對一個文件進行操作,
當要對多個文件進行壓縮時就要藉助於打包了,先打包再壓縮。
打包:
c:創建
x:提取
t:顯示tar包中的文件
v:顯示文件
f:使用文件名,在f後直接使用文件名,不能再跟參數
tar [cvf] all.tar a.txt b.txt c.txt 只是歸檔(打包),不壓縮
解包: (不加-C表示解包到當前目錄下,加-c表示解包到指定目錄下)
tar [xvf] all.tar -C 目錄
tar cvfz a.tar.gz file1 file2 file3 (gzip格式)
tar xvfz a.tar.gz
注意:如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file
tar cvfj a.tar.bz2 file1 flie2 (bzip2格式)
tar xvfj a.tar.bz2 -C 目錄
壓縮:
zip filename.zip filename(s)
解壓縮:
unzip filename (如果要解壓到指定目錄,可以加上 -d 選項 )
鏈接文件(軟連接 硬連接) ln [-s(軟連接 symbopllc) source_file destination_file]
ln b.txt bb.txt
硬鏈接 (目錄不能建硬鏈接 硬鏈接不能跨分區)
ls b.txt bb.txt (查看編號是否一致) ---》 (937655 bb.txt 937655 b.txt 表示硬鏈接就是起了別名)
軟連接
ln -s b.txt bb.txt (所有的軟連接都是以l開頭 文件大小和源文件不一致 是一個獨立的文件類型)
2.id:查用戶的信息
id root
id -a root
顯示當前已登錄本系統的所有用戶信息
who用來查詢目前有那些人在線上。
w用來查詢目前有那些人在線上,同時顯示出那些人目前的工作。
. 顯示你真實的用戶ID
who am i
. 僅顯示當前登錄用戶名
whoami
3、find:根據指定的條件從文件系統中搜尋指定的文件或目錄,然後做處理
find /export/home/html -name "*.html" -print xargs
-exec command {} ; 將查到的文件執行command操作,{} 和 ;之間有空格
-print:find命令將匹配的文件輸出到標準輸出。
-name filename #查找名為filename的文件
-perm #按執行許可權來查找
-user username #按文件屬主來查找
-mtime -n +n #按文件更改時間來查找文件,-n指n天以內,+n指n天以前
-atime -n +n #按文件訪問時間來查
-type b/d/c/p/l/f #查是塊設備、目錄、字元設備、管道、符號鏈接、普通文件
find / -name 「per*」
find . -mtime 10 -print
find /etc -user 0 -size +400 -print
find ~ -perm 777 > ~/holes
find /export/home -type f -atime +365 -exec rm {} ;
find ~ -name "*.txt" -type f -exec cat {} ;
xargs cat (xargs後邊一定是跟上其他命令不單獨使用)
find ~ -name "*.txt" -type f -print xargs rm
find ~ -name "*.txt" -type f -print xargs cat
perl(根據某一個文件做模式處理)
perl -p -i.bak -e "s/Copyright 2004/Copyright 2005/g;"
對一個文件先備份成i.bak然後執行後邊的替換操作 -e執行
將當前目錄下的java源文件中的小寫的helloworld一律替換成大寫的HELLOWORLD
perl -p -i.txt -e "s/helloworld/HELLOWORLD/g;" "*.java"
eg:sudo find -name "p.bak" xargs perl -p -i.lihong -e "s/":"/"#"/g;"
4、grep:從管道或文件中搜尋所滿足條件的行
5、wc:從文件或管道中統計行數、字元個數、單詞個數
wc[options] filename(s)
-l 行數
-w 單詞個數
-c 字元數
2 3 19 b.txt
6、ps:用來查看系統中正在運行的進程的信息
什麼是進程:一個程序的運行過程
ps -e :查看正在運行的進程(運行過程中、就緒狀態下的)
ps -f:詳細信息
eg:
lihong 2709 2571 0 05:07 pts/2 00:00:00 cat
用戶PID PPID啟動時間 tt 運行時間 哪個程序文件
tt:表示該進程是從哪個控制台啟動的。(可以是 pts/num或者?) ?:不是用戶啟動的,
是系統運行時自動啟動的進程 kill
7、# ping –s host2 看看網路通不通。
8、telnet
- telnet伺服器模擬一個終端允許你連接並工作於一個遠端系統上
- 使用TCP/IP連接於另一個系統
9、ftp
使用 ftp 複製或傳送文件 ftp(File Transfer Protocol)允許用戶對遠地主機複製文件,
用戶毋須考慮操作系統類型,即能向或從任何具有 TCP/IP 的系統複製文件。
ftp命令允許複製目錄中的一個文件或所有文件,但不能複製多層 次目錄。
使用ftp時, 必需在遠地主機上設有帳戶。 當 ftp 註冊到遠地系統時,並未得到 shell ,
而是通過 ftp 命令解釋程序同遠地主機進行通訊。
bye
cd-->改變在伺服器上的目錄
dir--->顯示伺服器上的內容
bye--->退出伺服器
bin,asc---->二進位還是asc
get,put---->下載上傳
get a.txt(!ls查看一下)
put passwd.tar(上傳)
mput-->後面可以根多個文件名(一次上傳多個)
mget(一次下載多個)
hash--->顯示進度條
lcd--->改變本機的當前目錄
10、環境變數
variable=value
eg:
export HELLO=」Hello!」
echo $HELLO
export var=`pwd`,注意:將pwd執行的結果賦給var(在這裡必須要用``引起來,它不是單引號哦)
追加PATH環境變數
eg: PATH=$PATH:/usr/bin
注意:
永久的:需要修改配置文件,變數永久生效。
使用export命令聲明即可,變數在關閉shell時失效
shell腳本
1 .vi /tmp/a.txt
#!/bin/sh
pwd
cal
date
2.PATH=$PATH:/home/lihong
3.chmod +x /tmp/a.txt
4.運行a.txt命令就可以了
11、path:命令的默認搜索路徑
想知道所執行的命令到底在那個目錄下?
which vi 搜索vi所在的路徑(在path下搜索,搜索到就停止)
whereis vi 搜索vi所在的路徑(在path下搜索,搜索到繼續搜索,直到找到所有的vi)
12、History
$ history顯示歷史記錄信息
$ history 5顯示五條歷史記錄信息
$ !n重複執行第n條歷史命令
$ !!重複執行上一條歷史命令
13、別名:針對於系統中已經存在的命令,給它取個別名
bash:alias h(別名)=history(原始命令)
$ alias home=』cd;ls』
alias 顯示所有設置的別名
unalias copy 取消所設置的別名
(有無取消所有設置的別名)
14、初始化文件:包含命令和變數的設置,當shell啟動時就執行
對初始化文件再操作系統中分為兩級:
1、系統級(一旦修改,對所有的用戶都起作用)
/etc
/etc/bash.bashrc文件
2、用戶級(只針對於特定的用戶有效)
/home/lihong/(用戶的家目錄下)
~/.bashrc
export JAVA_HOME=/opt/jdk
export HADOOP_USER_NAME=lihong
export MAVEN_HOME=/opt/maven
export HADOOP_HOME=/opt/hadoop
export PATH=$JAVA_HOME/bin:$PATH:/sbin:/$MAVEN_HOME/bin:/opt/eclipse:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
15.用戶管理
創建賬戶:sudo useradd -m -d /home/test4 -s /bin/bash -u 10002 -g 1003 test4
為用戶生成密碼:sudo passwd test4
刪除用戶:userdel -r test4 [-r表示刪除家目錄]


TAG:全球大搜羅 |