歡迎您光臨本站 註冊首頁

第二課

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0
前節內容回顧

硬體架構平台:
x86
x64
power
安騰
Alpha
PowerPC
ARM
MIPS
UltraSparc
m68000


System Call : 把底層機器的各種功能模塊抽象成調用介面
庫文件:具有某些特定功能的功能模塊,沒有程序入口,不能單獨執行,只能被調用.
程序:編程
機器語言
彙編語言
高級語言

今日記錄
Linux: 全稱GUN/Linux
linus:kernel & GUN: app組成

商業公司:redhat,suse
社區組織:debian,centos
RedHat
Fedora
CentOS
SUSE
OpenSUSE
Debian
Ubuntu
Mint
BackTrace

LFS

GNU:開源界的工產主義運動.

Cross Compile:交叉編譯,宿主主機和目標主機架構不一樣,比如宿主主機的架構是power,目標主
機為X64,這時候就要用到交叉編譯.編譯完成後,優化的時候是以目標主機的架構進行編譯的.


硬體平台-->內核-->庫文件-->系統軟體-->用戶介面


控制台:
物理控制台,
虛擬控制台,6tty,Ctrl Alt F1-6 /dev/tty1-n
圖形控制台,F7 Gnome:start x KDE:start kde
模擬終端 在圖形界面打開的終端或者遠程連接上的終端. /dev/pts/1-n

今日所學Linux命令
tty:顯示當前所使用的終端類型.
screen:打開多個屏幕(桌面)
pwd:print working directory 列印當前目錄
cd:Change Directory 切換目錄
cd:直接切換到自己的家目錄
cd ~ 同上
cd ~username 回到指定用戶目錄
cd - 在當前所在目錄和上次所在目錄之間進行切換
which:查找命令所在的位置.
type:查看命令是內部命令還是外部命令.
whatis:查看命令的簡要說明,及查找命令所在的man章節.
ls:列目錄,相當於WIN里的dir


-l 以長列表的形式顯示當前目錄里的文件及子目錄
-h 高可讀的方式,以k為單位顯示
-a 顯示所有文件及文件夾,包括當前目錄及上層目錄的硬連接
-A 顯示所有文件及文件夾,不包括當前目錄及上層目錄的硬連接
-d 顯示指定目錄的相關信息(不顯示該目錄中的文件及目錄)
-R(Recursive遞歸) 顯示指定目錄及指定目錄裡子目錄的所有內容
-r(reverse逆向) 排序的時候逆序排列
-i(--inode節點號) 顯示指定文件或目錄的節點號
file:判斷文件的類型
Linux哲學思想:
1、一切皆文件;
2、體積小,目的單一的小程序組成;組合小程序,完成複雜任務.
3、盡量避免捕獲用戶介面-->命令在執行的時候,不再跟用戶進行交互,有利用完成自動化任務.
4、通過配置文件保存程序的配置信息,而配置文件通常是純文本文件.


嚴格區分大小寫-->包括文件名
不以文件名後綴判斷文件類型

提示符,prompt
兩類用戶:
管理員:#
普通用戶:$
處於某個shell中

Linux中命令
Command [options] [arguments]
選項:定義命令的執行方式
使用-引導:
短選項:通常只有一個字元,使用一個橫線引導 ls -lh
長選項:通常是一個完整意義的單詞或單片語合,通常用兩個橫線引導 ls --help
多個短選項可以組合,組合之後,只使用一個選項引導.而長選項不能組合
命令和選項之間,選項和參數之間,必須用空格格開

參數:
命令的作用對象;

控制命令的執行方式:
Ctrl C:取消執行
在一個命令行中執行多條命令,使用分號分隔多條命令.

命令的分類:
內部命令:隸屬於某個已經打開的Shell的命令,就是內部命令.


外部命令:每一個可執行程序所對應的可執行文件,都是外部命令.也即是不隸屬於當前Shell的命令.



如何獲得命令幫助
1,大多數外部命令,都可以用--help來獲取幫助(有些可以通過-h獲取幫助)
2,內部命令可以使用help COMMAND_NAME來獲取幫助信息.
3,查看命令的手冊: man(manual) COMMAND_NAME
4,查看命令的信息頁:info COMMAND_NAME
5,一般軟體安裝完成後,會在/usr/share/doc/里生成一個跟文件名同名的目錄,是命令自身所帶的幫助文檔.
6,紅帽官方文檔.
7,Google
如何使用man查看命令的手冊:
# man [chapter] <command>
/etc/man.config

man -M /usr/local/apache/man httpd 指定手冊文件的搜索路徑
man -k 顯示結果類似於whatis,只不過是顯示所有包含ls的命令

章節:8個常用章節,按命令類型歸類,不同類別的命令幫助手冊可能位於不同的章節中.同一個命令可以歸類為多個章節
則可能在多個章節中都有手冊頁.
1,用戶命令
2,系統調用
3,庫調用
4,特殊文件說明
5,文件格式(通常指配置文件)
6,遊戲
7,雜項
8,管理命令

FILES 用來說明此命令的配置文件

翻屏:空格(向上翻一屏) <--> b 向下翻一屏
Enter:向上翻一行 <--> k 向下翻一行
跳到文件尾部:G
跳到文件首部:1G

字元串搜索:
/keyword:從當前游標所在處,向尾部搜索.出現多次的話,可以按n向下看,N向上看.
?keyword:與上相反.繼續與上相反.

命令使用格式中字元的意義:
[]:可選
<>:必須提供的參數
... :表示可以有多個參數.
a|b|c:多選一

man使用示例:
查看date命令幫助

NAME
date - print or set the system date and time


SYNOPSIS
date [OPTION]... [ FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
date MMDDHHmmYY 月日小時分鐘年
date -s "2012-02-02 `date ' %T'`"



紅帽的官方文檔
kbase.redhat.com
docs.redhat.com


Linux文件許可權組成:
有10個位進行表示,第一位顯示的是文件的類型.後面9個每三位一組,分別表示當前文件的所有者,所屬的組,其它用戶的許可權
-表示是文件,d表示的是目錄.往後面的1還有2表示的是文件被硬連接的次數.
root root 第一個root表示文件的屬主是root,後面的root表示的是文件的屬組是root組
79,191等,表示文件的大小,單位為位元組.
Jan 17 13:19,文件最後一次被修改的時間戳.
[root@localhost ~]# ls -l
total 288
-rwxr-xr-x 1 root root 79 Jan 17 13:19 1.sh
-rwxr-xr-x 1 root root 191 Jan 28 16:54 9x9.sh
drwxr-xr-x 2 root root 4096 Jul 21 2010 Desktop
-rw------- 1 root root 1610 Jul 21 2010 anaconda-ks.cfg
-rwxr-xr-x 1 root root 3263 Jul 15 2009 httpd.bak
-rw-r--r-- 1 root root 38328 Jul 21 2010 install.log
-rw-r--r-- 1 root root 4780 Jul 21 2010 install.log.syslog
linux的文件類型
-:表示文件為普通文件
d:表示文件的類型為目錄
l:表示文件的類型為連接文件(軟連接)
c:字元設備文件(線性設備,執行是有順序之分的)
b:塊設備文件(訪問是按照某種大小的數據塊進行的,並且是隨機進行的,沒有先後順序的)
p:管道文件
s:套接字文件

[root@localhost ~]# which ls
alias ls='ls --color=tty'
/bin/ls
ls命令有別名,當我們直接執行ls的時候,其實執行的是其所對應的別名,如果不想使用別名,就想使用命令本身,可以在命令
前加\
[root@localhost ~]# \ls
1.sh anaconda-ks.cfg install.log.syslog sum100.sh vsftpd-2.1.2.zip


9x9.sh httpd.bak lamp test.sh
Desktop install.log mkscript.sh vsftpd-2.1.2


linux目錄結構:
倒置的樹狀結構,所有目錄的位置都是以/開始的.
文件名稱嚴格區分大小寫,點開頭的是隱藏文件.路徑有相對路徑和絕對路徑之分,絕對路徑是指從/開始的路徑
相對路徑是從當前目錄所開始的路徑.
FHS:文件層次標準.
[root@localhost ~]# ls /
bin dev home lost found misc net proc sbin srv tftpboot usr
boot etc lib media mnt opt root selinux sys tmp var
/bin:二進位文件,binary,可執行的二命令,非管理類的命令
/sbin:二進位文件,只有管理員可執行.
/lib:庫文件
/etc:配置文件
/etc/sysconfig 系統相關的配置文件:如網卡等
/etc/init.d 服務管理腳本
/usr:系統資源
/usr/bin
/usr/sbin
/usr/etc/
/usr/lib
/usr/local (第三方軟體)
/usr/local/bin
/usr/local/sbin
/usr/local/etc
/usr/local/lib
/usr/include 頭文件
/usr/share 幫助文件
/boot 啟動引導文件,kernel,bootloader(grub)
/dev 設備文件所在的目錄
/home 普通用戶的家目錄
/root root用戶的家目錄
/lost found 所有分區里都會有的目錄.
/media 系統默認使用的掛載點,光碟默認的掛載位置
/mnt 系統默認的掛載點
/misc(miscellaneous) 雜項
/opt 可選的,有些第三方軟體,把此目錄當做默認位置.
/proc 偽目錄,內存中的內核相關信息的映像
/sys 偽目錄,比如像磁碟這樣的存儲設備或某些匯流排設備的驅動程序相關屬性信息.
/srv 服務運行中中間文件的存放位置.
/tmp 臨時文件存放的目錄
/var 日誌文件,進程運行的PID文件,用戶的郵件等經常發生變化的文件所存放的位置.


/var/log 系統日誌
/var/run 每一個服務進程所存放的PID文件
/var/mail 用戶的郵件隊列,用戶尚末收取的郵件.

文件及目錄管理的相關命令:
# touch - change file timestamps 改變文件的時間戳.
touch [OPTION]... FILE...
-a change only the access time
-m change only the modification time
-t STAMP
use [[CC]YY]MMDDhhmm[.ss] instead of current time
CC,完整時間的年份.年可省略 [年] 月日時分.秒
-c, --no-create
do not create any files(如果文件不存在,就不創建文件)

[root@localhost ~]# touch -a -t 01010101.01 9x9.sh
[root@localhost ~]# stat 9x9.sh
File: `9x9.sh'
Size: 191 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 2741873 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-01-01 01:01:01.000000000 0800
Modify: 2012-02-02 16:18:48.000000000 0800
Change: 2012-02-02 16:22:14.000000000 0800


# stat - display file or file system status

[root@localhost ~]# stat 9x9.sh
File: `9x9.sh'
Size: 191 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 2741873 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-02-02 15:07:57.000000000 0800
Modify: 2012-01-28 16:54:06.000000000 0800
Change: 2012-01-28 16:54:06.000000000 0800

Access:文件的最後一次訪問時間.
Modify:文件最後一次修改的時間.(內容發生改變)
Change:文件最後一次改變的時間.(屬性發生改變)


複製文件

# cp SRC_FILE DEST 拷貝單個文件
# cp SRCFILE... DEST 拷貝多個文件(DEST必須是目錄)
常用參數
-f, --force
if an existing destination file cannot be opened, remove it and try


again

-p same as --preserve=mode,ownership,timestamps 保留文件原有的屬性和時間戳.
-R, -r, --recursive(遞歸)
copy directories recursively 拷貝目錄及目錄里的所有文件.
-a, --archive 相當於 -rp
same as -dR --preserve=all


su:Switch User 切換用戶
# su - USERNAME 完全切換到該用戶,並且切換到該用戶的家目錄.
# su -l USERNAME 意義同上
# su USERNAME 半切換,保留了原來用戶的環境設置.

創建目錄:
# mkdir
mkdir - make directories
mkdir [OPTION] DIRECTORY...
-p, --parents
no error if existing, make parent directories as needed 如果前級目錄不存在,則創建之.


tree:顯示目錄中的目錄結構
tree - list contents of directories in a tree-like format.
-d List directories only.

[root@localhost ~]# tree /tmp/
/tmp/
|-- mapping-root
|-- mapping-root.old
|-- mysql.sock
|-- mysql.sock.old
|-- scim-panel-socket:0-root
`-- scim-panel-socket:0-root.old

0 directories, 6 files


Shell的命令行展開:
/tmp/{a,b} <=======> /tmp/a & /tmp/b
/tmp/{a/c,b} <=======> /tmp/a/c & /tmp/b
touch {a,d}_{b,c} <=======> touch a_b a_c d_b d_c

mkdir -p /tmp/iso/{bin,sbin,var/{log,run},etc/{rc.d/init.d,yum.repos.d}}


刪除目錄
# rmdir 只能刪除空目錄
# rm
-f, --force 強制刪除.
ignore nonexistent files, never prompt
-r, -R, --recursive 遞歸刪除.
remove directories and their contents recursively
-v, --verbose 顯示詳細信息.
explain what is being done


移動文件或目錄
mv - move (rename) files
# mv SRC_FILE DEST
# MV SRC_FILE... DEST


-f, --force
do not prompt before overwriting
-i, --interactive
prompt before overwrite
-u, --update
move only when the SOURCE file is newer than the destination file
or when the destination file is missing
-v, --verbose
explain what is being done



命令替換`` <========> $()
作業:
1,創建一個以當前日期為文件名後綴的文件,形如myfile-2012-02-02.txt
touch myfile-`date %F`.txt
touch myfile-`date %T`.txt
touch myfile-$(date %T).txt


globbing:文件名通配
/root
myfile 開頭的文件
* 任意長度的任意字元
? 任意單個字元
[] 給定範圍內的單個字元
[^] 取給定範圍內以外的任意單個字元
[[:lower:]] 所有的小寫字母
[[:upper:]] 所有的大寫字母
[[:digit:]] 所有的數字
[[:alnum:]] 所有數字和字母
[[:space:]] 所有空白字元
[[:punct:]] 所有標點符號

命令歷史:上下鍵可以翻看歷史.
history:所有歷史命令,默認可以查看1000個.
HISTSIZE變數:定義保存命令的命令歷史條數.
-c[n] 清空歷史命令,如果有數字n,則清除n條命令
-d n 清除從第n條往後的命令.
-w 把本次登錄所執行過的命令寫入文件(默認只有關機后,才能被寫入文件/HOMEDIR/.bash_history)


bash環境定製
bash腳本編程
用戶和組管理
管道和重定向
文件查看命令
VIM編輯器
正則表達式
grep & sed

本文出自 「吖吖個呸」 博客,謝絕轉載!


[火星人 ] 第二課已經有782次圍觀

http://coctec.com/docs/linux/show-post-46938.html