筆記

命令

命令列表 alias 別名

bc 計算器

basename文件基本名

cp 復制

cd 進入文件夾

cat /proc/partition 查看硬盤的使用情況

cat /proc/meminfo 查看內存的使用情況

chvt 切換終端

chown改變文件的所屬組 edj:chown -R www /etc/host

clock 查詢或設置硬件時間

chattr +A time.log給訪問時間加鎖不會變 chattr -A time.log給訪問時間解鎖不會變

clear ctrl+l 清屏

cal 月日歷

df 查看硬盤

dirname 查看目錄

dd 復制并格式化處理文件

date 查看并設置時間

echo 回顯

enable 臨時關閉或激活shell命令

exit logout ctrl+d

free顯示當前內存使用的數目

file 查看文件類型

hwclock 跟clock一樣

hostname主機名

hexdump 用來查看二進制的十六進制的編碼

history 查看歷史輸入指令

hash 哈希表

nano 編輯文檔

ifconfig 查看網絡詳情

lscpu查看內核

lsblk查看硬盤

ln 創建鏈接

ls 查看文件目錄詳情

pwd顯示當前用戶

mv移動或者重命名文件

mkdir創建新的文件或者目錄

mknod創建字符或塊設備

mandb創建或者更新索引

makewhatis 在6版本時更新man說明

mesg 當前終端的寫權限(是否顯示在屏幕上)

ntpdate從服務器上下載時間

nc設置路由

rmdir刪除空目錄

rm刪除 reboot重啟

rename批量替換文件名

rz windows向linux傳送文件

ssh遠程登錄

source . 保存激活

shred 覆蓋

stat顯示文件詳細內容

strace 描述系統的調用和信號

startx 用來啟動Linux windows

screen新建會話

scriptreplay

shutdown關機

tty查看當前任務窗口(pts)

time查看時間

tree數狀列出目錄內容

touch 更改時間標簽或創建空文件

type查看是外部命令還是內部命令

xargs參數過長一個一個傳

xxd 與hexdump相反

write 發消息給另一個用戶

wall 廣播

watch周期性的給指令

write命令用于向指定登錄用戶終端上發送信息

w who whoami who am i

which查找顯示命令的絕對路徑

whereis定位指令的二進制程序,源文件,man路徑

whatis查命令的功能

uname 查系統的當前信息

init 3 | 5 | 0 |6

前論

認證機制:Authentication 授權: orization 審記:Audtion(日志)

startx 字符界面切換到圖形界面 但是不改變init模式

命令

pwd 顯示在哪個目錄下

Lsb_release-a 操作系統的版本(7以上版本的不自帶yum,無法解析該命令)

Uname-r 內核版本號

Init {0關機 3字符 5圖形 6重啟}

Whoami或who查看當前用戶

cat 查看文本文件 cat /etc/enctos-release

ypm管理ypm包

free 查看內存 tty查看終端(terminal)

su 用戶名 切換用戶 #passwd 更改密碼

mv 文件移動runlevel 查看工作模式

type 查看內嵌命令還是外部命令

echo $SHELL 查看系統用的是哪種shell

cat /etc/shells 查看系統支持哪種shell

basname 文件路徑 可以去一個路徑的基名

馮諾依曼五大體系: 輸入輸出儲存運算控制

2^10=1024=1K
2^20=1024K=1M
2^30=1024M=1G
2^40=1024G=1T
2^50=1024T=1P
2^60=1024P=1E
2^70=1024E=1Z
2^80=1024Z=1Y
2^90=1024Y=1B
2^100=1024B=1N
2^200=1024N=1D

機箱單位: 機架服務器的寬度為19英寸(48.26cm),高度以U為單位,如42U 1U=1.75英寸=44.45毫米

RAM 主存儲器(內存)

ROM 輔助存儲器

硬盤等ROM屬于外設

去IOE IBM ORCALE EMC (dell收購了)

數據庫服務mariadb sybase oracle sql sever mysql

郵件服務 sendmail postfix exchange

家用電腦硬盤SATA 服務器電腦硬盤SAS SSD磁盤 接口不同STSA和SSD接口相同

SPOF : single 單一的 point 要點 of failure 故障

inustruction指令 data數據

nginx可以當緩存服務器 cache king

RPM 每分鐘的旋轉速度

測試硬盤速度

dd if=/dev/zero of=file bs=1M count=1024

測試內存速度

dd if=/dev/zero of=/dev/null  bs=1M count=1024

MTBF:平均無故障時間

固態硬盤(ssd)solid state disk

DAS直連存儲 NAS網絡連接存儲 SAN存儲區域網絡W

單通道內存節制器一般都是64-bit的,8個二進制位相當于1個字節,換算成字節是64/8=8,再乘以內存的運行頻率,如果是DDR內存就要再乘以2-+ 內存帶寬=內存總線頻率×數據總線位數/8 示例:DDR內存帶寬計算 DDR2667,運行頻率為333MHz,帶寬為333×2×64/8=5400MB/s=5.4GB/s

windows下的可執行文件:.COM; .EXE;.BAT;.CMD;. VBS;.VBE;.JS;.JSE; .WSF;.WSH;.MSC

posix :庫標準

ABI :app與os之間的接口

API:源代碼與庫之間的接口

看二進制代碼 windows的

動態庫 .dll 靜態庫 .lib Linux的

動態庫.so 靜態庫.a

ldd查看是否用到動態庫

Library function 函數庫

system call open,read,write,iocti

strace 跟蹤系統調用 ltrace

context exchange 交互

系統調用時用戶空間與內核空間交互 示例: str= “www.magedu.com” // 用戶空間
x = x + 100 // 用戶空間
file.write(str) // 切換到內核空間
y = x + 200 // 切換回用戶空間

time 命令
表示命令中花了多長時間

www.kernel.org linux內核官網

novell natware IPX/SPX

redhat 9.0 分為rhel febora

Linux分支參考網站:http://futurist.se/gldt/

如何獲得發行版 CentOS https://wiki.centos.org/Download http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.com

網卡啟動 圖片描述

sha1sum  /dev/sr0 計算哈希值

Shell 是Linux系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。

它接收用戶輸入的命令并把它送入內核去執行

顯示當前使用的shell
#echo ${SHELL}
顯示當前系統使用的所有shell
#cat /etc/shells


顯示提示符格式
    [root@localhost~]:echo $PS1


修改提示符格式
    PS1="\[\e[31m\][\u@\h \W]\\$\[\e[0m\]"
    \e \033         \u 當前用戶
    \h 主機名簡稱    \H 主機名
    \w 當前工作目錄    \W 當前工作目錄基名
    \t 24小時時間格式   \T 12小時時間格式
    \! 命令歷史數      \# 開機后命令歷史數

修改顏色 圖片描述

在shell中可執行的命令有兩類:

內部命令:由shell自帶的,而且通過某命令形式提供

help 內部命令列表

enable cmd可以啟用

enable –n cmd禁用內部命令

enable –n 查看所有禁用的內部命令

外部命令:在文件系統路徑下有對應的可執行程序文件

查看路徑:which -a |--skip-alias; whereis

區別指定的命令是內部或外部命令:
# type COMMAND

Hash常見用法:

hash 顯示hash緩存
     –l 顯示hash緩存,可作為輸入使用
    hash –p path name 將命令全路徑path起別名為name
    hash –t name 打印緩存中name的路徑
    hash –d name 清除name緩存
    hash –r 清除緩存

.nano文本編輯

date

-d<字符串>:顯示字符串所指的日期與時間。字符串前后必須加上雙引號; -s<字符串>:根據字符串來設置日期與時間。字符串前后必須加上雙引號; -u:顯示GMT;

date +<時間格式>

%H 小時,24小時制(00~23) 
 %I 小時,12小時制(01~12) 
 %k 小時,24小時制(0~23)
 %l 小時,12小時制(1~12)
 %M 分鐘(00~59) 
 %p 顯示出AM或PM %r 顯示時間,12小時制(hh:mm:ss %p) 
 %s 從1970年1月1日00:00:00到目前經歷的秒數 %S 顯示秒(00~59) 
 %T 顯示時間,24小時制(hh:mm:ss)
 %X 顯示時間的格式(%H:%M:%S)
 %Z 顯示時區,日期域(CST) 
 %a 星期的簡稱(Sun~Sat)
 %A 星期的全稱(Sunday~Saturday)
 %h,%b 月的簡稱(Jan~Dec) 
 %B 月的全稱(January~December)
 %c 日期和時間(Tue Nov 20 14:12:58 2012) 
 %d 一個月的第幾天(01~31) 
 %x,%D 日期(mm/dd/yy)
 %j 一年的第幾天(001~366) 
 %m 月份(01~12)
 %w 一個星期的第幾天(0代表星期天) 
 %W 一年的第幾個星期(00~53,星期一為第一天)                      
 %Y 年的最兩個數字(1999年就是99)



加減操作

例如:

修改時間

hwclock,clock: 顯示硬件時鐘
   -s     hctosys  以硬件時間為準來修改系統時間
   -w      systohc  以系統時間為準修改硬件時間

MM 月 DD號 hh小時 mm分鐘 CC年份后兩位 CCYY年份 例如;

cal 顯示當前日歷(默認為月)

cal 年份 顯示年日歷

時區:/etc/localtime ?

/dev 磁盤

分區類型: 主分區 1-4 一個硬盤最多四個。最少沒有,前提是有別的硬盤。 只有主分區才能做引導,不可再分,只有活動的計算機才有啟動系統的資格。一塊硬盤只能有一個活動分區。 功能 啟動操作系統,存數據。

擴展分區 1-4 一個硬盤最多一個,不能直接存數據,必須劃分小的邏輯分區才能存數據。

邏輯分區 5- 存數據,不能啟動計算機

lsblk 硬盤分區顯示:

掛載mount:將本地分區或者網絡共享分配一個目錄名 mount point :目標目錄即為掛載點

/dev   /etc文件不能獨立

硬盤轉換系統格式 windows 輸入Convert X:/fs:ntfs(“X”為你的磁盤代號)

anaconda 安裝向導的名稱

cter+alt+f2 安裝過程中可執行命令 cter+alt+f6 退出界面

cat  /proc/meminfo       查看內存信息
cat  /proc/partitions    看分區
chvt  1  =  cter+alt+f1      切換虛擬終端

hostname 主機名

dd  命令用于復制文件并對原文件的內容
    進行轉換和格式化處理

例如:

dd if=/dev/zero of=sun.txt bs=1M count=1
   if 代表文件
   of代表輸出文件
  bs代表字節單文的塊大小
  count 代表被復制的塊-數
  
df  顯示磁盤分區上的可使用的磁盤空間
du   查看對文件和目錄磁盤使用空間大小
who     看到登陸信息
    本機登陸是tty  遠程連接是pts (虛擬端口的)
runlevel    查看當前模式
gidit   打開記事本(圖形界面的)
startx  切換到圖形界面相當于打開一個圖形軟件 不切換模式
id -u   確定身份
id -u   用戶名   (管理員是0或500 普通用戶1000以上)
w   可以看見用戶都在干什么
bc   計算器
rm                  刪除      
          -r 將木哭下的文件遞歸處理
     -f   強制刪除
     -I   詢問刪除

     -v   顯示指令的操作過程
rm -rf *  刪除除隱藏文件外的所有文件
madir   創建一個文件  
   -m 選擇文件的權限
       權限分類:
           r(1) 執行
           w(2)寫入
           x(4)讀取
       文件格式      
          d          rwxr-             xr-                  x
      文件目錄         所有者    所有者所在的組            其他人
   -p   如果上層目錄沒有建,將上層目錄一起建立
su   切換用戶

alt+f2(5/6版本有)

二進制打開

物理終端 /dev/console

圖形下用戶的自動登陸

**nano /etc/gdm/custom.conf

[daemon]

AutomaticLoginEnable=true

AutomaticLogin=wang**

在同一臺機器上,多個終端通訊 tty賬號的通訊(root用戶)

wall     廣播發送
write   用戶名  正規發送

實驗  退出當前的shell
ctel+c   強行退出
ctrl+d    正常退出
logout      exit 退出

ctrl+l  / clar  清屏
reset   清除亂碼
rz  與windows傳文件   



rpm -qi bash    查看內核版本
echo $shells    使用的shell
cat   /etc/shells       支持的shell

實驗:更改提示符顏色

export PS1="\[\e[32m\][\u@\h \W]\\$\[\e[0m\]"




更改登陸提示
    nano  /etc/motd

文件

/bin:二進制可執行命令,系統所需的配置命令;

/boot:開始啟動過程所需的文件;

/dev:即設備驅動;

/etc:系統管理和配置文件;

/home:普通用戶存儲其個人數據和配置文件的主目錄;

/root:系統管理員的主目錄;

/run:自上一次系統啟動以來啟動的進程的運行時數據。包括進程ID文件和鎖定文件,此目錄中 的內容在重啟時重新創建;

/sbin:類似/bin目錄,系統管理命令,這里存放的是系統管理員使用的管理程序,一般不給普通用戶使用;

/tmp:供臨時文件使用的全局可寫空間,目錄存放程序在運行時產生的信息和數據;

/usr:最龐大的目錄,安裝的軟件、共享的庫,包括文件和靜態制度程序數據;

/var:特定于此系統的可變數據,在系統啟動之間保持永久性;

/lib:根文件系統上的程序所需的共享庫,存放了根文件系統程序運行所需的共享文件;

/mnt:系統管理員臨時安裝文件系統的安裝點;

/proc:文件系統是一個偽的文件系統,就是說它是一個實際上不存在的目錄,因而這是一個非常 特殊的目錄;

2017/5/19 9:01:54

Linux入門

計算進制 圖片描述

strace 查看系統調用itrace查看內存調用?

命令的類型

外部命令:不在bash里,是一個獨立文件。

內部命令:在bash里,自身都在的。依賴于shall類型的。

內部命令優先級更高,優先于外部命令

命令前帶*號是禁用的意思

執行命令

type 區別指定的命令是內部或外部命令
跟文件名可以查看命令所在的文件   
-a 所有
-p 路徑

enable 開啟命令
enable -n (命令)  禁用命令,可以一次禁用多個
enable -n 查看所有禁用命令

mesg  (n,y)關閉打開接收廣播

yes (內容) 死循環的打印東西

echo $ PATH 查看命令所在的所有文件?

啟動后執行過的命令都會存在內存里(存的是路徑) 緩存下來的命令會存在哈希表

hash 顯示哈希表
  -l 顯示詳細的命令本身
  –p path name 將命令全路徑path起別名為name
  –t name 打印緩存中name的路徑
  –d name 清除name緩存
  –r 清除緩存

緩存有一個重要指標 命中率

計算機只會按照目錄去尋找命令,要是不告訴它命令,
默認是找不到的,用type也查不到,要想能識別,
就要把這個命令放到/bin目錄里,
所以只要把命令放到bin目錄下,系統就會識別為外部命令。

witch 查看外部命令的路徑
-a 查找所有該命令的路徑
witch和type有可能查看的是別名
  --skip-alias可以讓命令不顯示別名 只顯示路徑 例如:查看ls
 
whereis 查看外邊命令本身路徑和幫助文檔路徑

執行命令的順序

  1. 內部

  2. hash path

  3. 外部


別名

alias 定義別名 

示例:alias ac="/etc/sysconfig/network-scripts/"

unalias 別名 刪除別名

.相當于source

source . bashrc

. bashrc 保存

 halt 斷電
 poweof 斷電

 
 如果想永久有效,要定義在配置文件中
 
 僅對當前用戶:~/.bashrc
 
 對所有用戶有效:/etc/bashrc
 
 
 定義別名NAME,其相當于執行命令VALUE
 #alias NAME='VALUE'
   
   不想用別名,想用原始命令的話,在別名后加\或者‘’號
   
   例如:
   “\COMMAND”
   ’COMMAND’
   /PATH/COMMAND:外部命令

優先級: 別名 內部命令 哈希表 外部命令

別名內部命令外部命令 那個優先級高?

常見執行命令格式總結

選項:用于啟用或關閉命令的某個或某些功能;

短選項:-c, 例如:-l, -h

長選項:–word,例如:–all, –human-readable

參數:命令的作用對象,比如文件名,用戶名等

命令必須要在第一個,大多數情況下都是選項在參數前面
 

多選項,以及多參數和命令之間使用空白字符分隔    
取消和結束命令執行:Ctrl+c,Ctrl+d    
多個命令可以用;符號分開    
一個命令可以用\分成多行 

前面的命令錯了,后面還會繼續執行。

date

顯示時間和日期

更改時間 date MMDDHHmCCYY.SS      
  MM月份DD幾號hh小時CCYY年份ss秒
  
  系統時鐘:由Linux內核通過CPU的工作頻率進行的      
  硬件時鐘:主板時間
  
  hwclock,clock: 顯示硬件時鐘
    -s, --hctosys以硬件時鐘為準,校正系統時鐘       
    -w, --systohc以系統時鐘為準,校正硬件時鐘
  ntpdate 172.17.0.1 時間同步協議
  
  時區: /etc/localtime
  timedatectl set-timezone 地點  更改時區(7版本支持)
  cal 顯示日歷
  cay -y 顯示年日歷
  
  改為中文 LANG="zh_CN.UTF-8"
  英文"en_US.UTF-8"
  
  ln 參考前一個路徑創建另一個 跟cp比較像


nano 文本編輯器

更改時區 圖片描述


簡單命令

關機:halt, poweroff    
 重啟:reboot       
 -f: 強制,不調用shutdown
 -p: 切斷電源
 關機或重啟:shutdown
  shutdown [OPTION]... TIME [MESSAGE]
   -r: reboot 重啟
   -h: halt 可以選擇幾分鐘后或者寫一個具體時間   (now馬上)
    -c:cancel 取消
     TIME:now: 立刻
      +m: 相對時間表示法,多久之后;例如+3
      hh:mm: 絕對時間表示,指明具體時間

前臺執行:不能再用終端應用了,被該命令全部霸占 。

后臺執行:不占用前臺,調入后臺執行。

screen命令

創建新screen會話
  screen –S [SESSION]
加入screen會話
  screen –x [SESSION]
退出并關閉screen會話
  exit
剝離當前screen會話
  Ctrl+a,d
顯示所有已經打開的screen會話
  screen -ls
恢復某screen會話
  screen -r [SESSION]

ps aux|grep yes 可以查看yes的進程

錄屏

script -t 2> t.lop -a waa.log錄制
scriptreplay time.log waa.log回放

echo命令

圖片描述 圖片描述 回顯 :顯示字符

-E (默認)不支持\解釋功能
 -n 不自動換行
 -e 啟用\字符的解釋功能
    \a 發出警告聲
    \b 退格鍵
    \c 最后不加上換行符號
    \n 換行且光標移至行首
    \r 回車,即光標移至行首,但不換行
    \t 插入tab
    \\插入\字符
    \0nnn 插入nnn(八進制)所代表的ASCII字符
       echo -e '\033'二進制轉換成ASCII字     
                 \x1a插入1a(十六進制)所代表的ASCII字
     echo -e '\033[43;31;5mmagedu\033[0m'
     顯示變量
       echo "$VAR_NAME“ 變量會替換,弱引用
       echo '$VAR_NAME‘ 變量不會替換,強引用
       echo `$VAR_NAME`反向單引號時 可以識別出命令跟參數=echo $(VAR_NAME)

符號的應用

用反向單引號可以嵌套使用命令,把第二個命令放到引號里

括號擴展:{ } 
.打印重復字符串的簡化形式
  $echofile{1,3,5}  組合
     file1file3file5
  $rm-f file{1,3,5}  分別創建
  $echo {1..10}   代表范圍
  $echo {a..z}    字母范圍
  $echo {000..20..2}  定義4位 20位最大 一次加2

touch 創建新文件或者
  把已有文件的時間標簽改為當前系統的,其他數據不變。

hwxdump -c 文件 二進制打開文件

ibase=16在計算機中說明輸入的16進制
obase=2 說明2進制輸出

sz 把linux文件傳到windows里

裝程序 rpm -ivh 文件路徑

dos2unix  文件名 win文件轉換成linux    
 unix2dos 文件名 Linux轉換成win的
 
 gb2312 國標    
 
 把gb2312格式的轉換為abc.txt格式的
   inconv -f gb2312 abc.txt  -o abc2.txt

teb

teb補全安裝 圖片描述

命令補全

內部命令:
 外部命令:bash根據PATH環境變量定義的路徑,
 自左而右在每個路徑搜尋以給定命令名命名的文件,
 第一次找到的命令即為要執行的命令

用戶給定的字符串只有一條惟一對應的命令,直接補全 否則,再次Tab會給出列表

路徑補全

把用戶給出的字符串當做路徑開頭,并在其指定上級目錄下搜索以指定的字符串開頭的文件名如果惟一:則直接補全 否則:再次Tab給出列表

雙teb

command 2Tab 所有命令行補全
string2Tab 以string開頭命令
/2Tab 顯示所有根目錄下一級目錄,包括隱藏目錄
./2Tab 當前目錄下子目錄,包括隱藏目錄
*2Tab 當前目錄下子目錄,不包括隱藏目錄
~2Tab 所有用戶列表
$2Tab 所有變量
@2Tab /etc/hosts記錄(centos7不支持)
=2Tab 相當于ls –A

幫助

whatis  告訴你指令的描述
command--help
manandinfo
本地幫助文檔/usr/share/doc/
官網在線文檔
其它網站和搜索
whatiscal 或man –f cal

mandb 7.3創建數據庫 makewhats 6.9創建數據庫

內部命令:#help COMMAND
   #man bash
 外部命令:(1) # COMMAND --help
    # COMMAND -h
   (2) 使用手冊(manual)
    # man COMMAND
   (3) 信息頁
    # info COMMAND
   (4) 程序自身的幫助文檔
    README
    INSTALL
    ChangeLog
    (5) 程序官方文檔
    官方站點:Documentation
    (6) 發行版的官方文檔
    (7) Google

help查內部命令 man查外部命令

man 章節

提供命令幫助的文件

手冊頁存放在/usr/share/man

幾乎每個命令都有man的“頁面” man頁面分組為不同的“章節” 統稱為Linux手冊 man命令的配置文件:/etc/man.config | man_db.conf MANPATH /PATH/TO/SOMEWHERE: 指明新手冊文件搜索位置 # man -M/PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手冊頁并顯示

幫助手冊中的段落說明:

.NAME 名稱及簡要說明

.SYNOPSIS 用法格式說明

.[]可選內容

.<> 必選內容

.a|b二選一

.{ }分組

….同一內容可出現多次

.DESCRIPTION 詳細說明

.OPTIONS 選項說明

.EXAMPLES 示例

.FILES 相關文件

.AUTHOR 作者

.COPYRIGHT版本信息

.REPORTING BUGS bug信息

.SEE ALSO 其它幫助參考

查看man手冊頁
   man [章節] keyword
 列出所有幫助
   man –a keyword
 搜索man手冊
   man -kkeyword列出所有匹配的頁面
   使用whatis數據庫
 相當于whatis
   man –f keyword
 打印man幫助文件的路徑
   man –w [章節] keyword

語法

man命令的操作方法:使用less命令實現
    space, ^v, ^f, ^F: 向文件尾翻屏
    b, ^b: 向文件首部翻屏
    d, ^d: 向文件尾部翻半屏
    u, ^u: 向文件首部翻半屏
    RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行y or ^Y or ^P or k or ^K:向文件首部翻一行
    q: 退出
    #:跳轉至第#行
    1G: 回到文件首部
     G:翻至文件尾部
     
    man  
      /string 默認向下 n同向,N反向
      ?string 默認向上 n同向,N反向

info

man常用于命令參考,GNU工具info適合通用文檔參考。沒有參數,列出所有的頁面info 頁面的結構就像一個網站,每一頁分為“節點” 鏈接節點之前* info 命令

方向鍵,PgUp,PgDn 導航
  Tab鍵移動到下一個鏈接
  d 顯示主題目錄
  Home 顯示主題首部
  Enter進入選定鏈接
  n/p/u/l進入下/前/上一層/最后一個鏈接
  s文字文本搜索
  q退出info

/etc/issue 登錄前顯示

hexdump 看二進制文件 tab 時區

作業:

實現screen 實驗大括號的功能

命令選項的補全

顯示昨天的星期幾

在本機字符終端登錄時,除顯示原有信息外,再顯示當前登錄終端號,主機名和當前時間

2017/5/22 8:54:20

文件管理

文件系統分層結構:LSB Linux Standard Base 圖片描述

圖片描述 /dev 硬件或軟件的設備文件

主設備號;次設備編號。
 c字符文件 ,b塊

/etc 配置文件

/home 家目錄

/usr 次級跟

/bin 二進制程序

var/log/ 日志文件

大小寫敏感跟文件系統類型有關

文件和目錄被組織成一個單根倒置樹結構

文件系統從根目錄下開始,用“/”表示

根文件系統(rootfs):root filesystem

以.開頭的文件為隱藏文件

路徑分隔的/

文件有兩類數據:

元數據:metadata

數據:data

文件顏色代表的類型 藍色–>目錄綠色–>可執行文件紅色–>壓縮文件淺藍色–>鏈接文件灰色–>其他文件 粉色的sock 套接字文件 黃色的管道文件

命令歷史 登錄shell時,會讀取命令歷史文件中記錄下的命令~/.bash_history

重復前一個命令,有4種方法:
   ?重復前一個命令使用上方向鍵,并回車執行
   ?按!! 并回車執行
   ?輸入!-1 并回車執行
   ?按Ctrl+p并回車執行
   ?!:0 執行前一條命令(去除參數)
Ctrl + n 顯示當前歷史中的下一條命令,但不執行
Ctrl + j 執行當前命令
!n 執行history命令輸出對應序號n的命令
!-n 執行history歷史中倒數第n個命令


!string 重復前一個以“string”開頭的命令
!?string 重復前一個包含string的命令
!string:p僅打印命令歷史,而不執行
!$:p 打印輸出!$ (上一條命令的最后一個參數)的內容
!*:p打印輸出!*(上一條命令的所有參數)的內容
^string刪除上一條命令中的第一個string
^string1^string2將上一條命令中的第一個string1替換為string2
!:gs/string1/string2將上一條命令中所有的string1都替換為string2
 
 
 使用up(向上)和down(向下)鍵來上下瀏覽從前輸入的命令
 .ctrl-r來在命令歷史中搜索命令
 .(reverse-i-search)`’:
 Ctrl+g:從歷史搜索模式退出
 要重新調用前一個命令中最后一個參數:
   !$ 表示
   Esc, .(點擊Esc鍵后松開,然后點擊. 鍵)
   Alt+ .(按住Alt鍵的同時點擊. 鍵)
   
   
   command !^ : 利用上一個命令的第一個參數做cmd的參數
   command !$ : 利用上一個命令的最后一個參數做cmd的參數
   command !* : 利用上一個命令的全部參數做cmd的參數
   command !:n : 利用上一個命令的第n個參數做cmd的參數
   command !n:^ 調用第n條命令的第一個參數
   command !n:$ 調用第n條命令的最后一個參數
   command !n:m 調用第n條命令的第m個參數
   command !n:* 調用第n條命令的所有參數
   command !string:^ 從命令歷史中搜索以string 開頭的命令,并獲取它的第一個參數
   command !string:$ 從命令歷史中搜索以string 開頭的命令,并獲取它的最后一個參數
   command !string:n 從命令歷史中搜索以string 開頭的命令,并獲取它的第n個參數
   command !string:* 從命令歷史中搜索以string 開頭的命令,并獲取它的所有參數

history

history [-c] [-d offset] [n] history -anrw[filename] history -psarg[arg…]

-c: 清空命令歷史
  -d offset: 刪除歷史中指定的第offset個命令
  n: 顯示最近的n條歷史
  -a: 追加本次會話新執行的命令歷史列表至歷史文件
  -n: 讀歷史文件中未讀過的行到歷史列表
  -r: 讀歷史文件附加到歷史列表
  -w: 保存歷史列表到指定的歷史文件
  -p: 展開歷史參數成多行,但不存在歷史列表中
  -s: 展開歷史參數成一行,附加在歷史列表后

HISTSIZE:命令歷史記錄的條數

HISTFILE:指定歷史文件,默認為~/.bash_history

HISTFILESIZE:命令歷史文件記錄歷史的條數

HISTTIMEFORMAT=“%F %T “ 顯示時間

HISTIGNORE=“str1:str2:… “ 忽略string1,string2歷史 精確匹配

HISTCMD下一條命令編號

控制命令歷史的記錄方式:

環境變量:HISTCONTROL
  ignoredups默認,忽略重復的命令,連續且相同為“重復”
  ignorespace忽略所有以空白開頭的命令
  ignoreboth相當于ignoredups, ignorespace的組合
  
  erasedups刪除重復命令

export 變量名=”值“ 存放在/etc/profile 或~/.bash_profile

快捷鍵

Ctrl + l清屏,相當于clear命令

Ctrl + o執行當前命令,并重新顯示本命令

Ctrl + s阻止屏幕輸出,鎖定

Ctrl + q允許屏幕輸出

Ctrl + c終止命令

Ctrl + z掛起命令

Ctrl + a光標移到命令行首,相當于Home

Ctrl + e光標移到命令行尾,相當于End

Ctrl + f光標向右移動一個字符

Ctrl + b光標向左移動一個字符

Alt + f光標向右移動一個單詞尾

Alt + b光標向左移動一個單詞首

Ctrl + xx光標在命令行首和光標之間移動

Ctrl + u從光標處刪除至命令行首

Ctrl + k從光標處刪除至命令行尾

Alt + r 刪除當前整行

Ctrl + w從光標處向左刪除至單詞首

Alt + d從光標處向右刪除至單詞尾

Ctrl + d刪除光標處的一個字符

Ctrl + h刪除光標前的一個字符

Ctrl + y將刪除的字符粘貼至光標后

Alt + c從光標處開始向右更改為首字母大寫的單詞

Alt + u從光標處開始,將右邊一個單詞更改為大寫

Alt + l從光標處開始,將右邊一個單詞更改為小寫

Ctrl + t交換光標處和之前的字符位置

Alt + t交換光標處和之前的單詞位置

Alt + N提示輸入指定字符后,重復顯示該字符N次

注意:Alt組合快捷鍵經常和其它軟件沖突

gnome-terminal 應用程序->附件->終端 支持多個“標簽”shell的圖形化終端模擬器

Ctrl-Shift-n 創建新窗口

Ctrl-Shift-q關閉當前窗口

Ctrl-Shift-t 創建一個標簽頁

Ctrl-Shift-w 關閉一個標簽頁

Ctrl-PaUp/PgUn切換到下一個/前一個標簽頁

Ctrl-Shift-c 復制選中的文本

Ctrl-Shift-v 把文本粘帖到當前光標處

有些目錄文件創建時跟命令或者其他有沖突,可以添加一個完整的路徑,這樣就可以成功創建,刪除也一樣。

文件詳情

/usr: universal shared, read-only data

bin: 保證系統擁有完整功能而提供的應用程序
sbin:
lib:32位使用
lib64:只存在64位系統
include: C程序的頭文件(header files)
share:結構化獨立的數據,例如doc, man等
local:第三方應用程序的安裝位置
bin, sbin, lib, lib64, etc, share

7默認沒有 net

/var: variable data files

cache: 應用程序緩存數據目錄
 lib: 應用程序狀態信息數據
 local:專用于為/usr/local下的應用程序存儲可變數據;
 lock: 鎖文件
 log: 日志目錄及文件
 opt: 專用于為/opt下的應用程序存儲可變數據;
  run: 運行中的進程相關數據,通常用于存儲進程pid文件
  spool: 應用程序數據池
  tmp: 保存系統兩次重啟之間產生的臨時數據

/proc:

用于輸出內核與進程信息相關的虛擬文件系統

/sys:

用于輸出當前系統上硬件設備相關信息虛擬文件系統

/selinux:

security enhanced Linux,selinux相關的安全策略等信息的存儲位置

二進制程序:

/bin, /sbin, /usr/bin, /usr/sbin,
/usr/local/bin, /usr/local/sbin

庫文件:

/lib, /lib64, /usr/lib, /usr/lib64, 
/usr/local/lib, /usr/local/lib64

配置文件:

/etc, /etc/DIRECTORY, /usr/local/etc

幫助文件:

/usr/share/man, /usr/share/doc, 
/usr/local/share/man, /usr/local/share/doc

文件類型

-:普通文件
d: 目錄文件
b: 塊設備
c: 字符設備
l: 符號鏈接文件
p: 管道文件pipe
s: 套接字文件socket IP+端口號

netstat -ntu查看有誰遠程鏈接主機

顯示當前目錄: #pwd: printing working directory -P 顯示真實物理路徑 -L 顯示鏈接路徑(默認)

絕對路徑

以正斜杠開始 完整的文件的位置路徑 可用于任何想指定一個文件名的時候

相對路徑名

不以斜線開始 指定相對于當前工作目錄或某目錄的位置 可以作為一個簡短的形式指定一個文件名

取基名:basename
取目錄名:dirname

PWD:當前目錄路徑
OLDPWD:上一次目錄路徑  (cd - 的記錄)

加硬盤 加硬盤

裝 dos2unix 圖片描述

ls

顯示目標列表,彩色加亮來區分不同類型的文件 參數可以指定要顯示的列表的目錄,?可以是具體的文件

ls默認顯示的是非隱藏文件

-a 顯示所有檔案及目錄(ls內定將檔案名或目錄名稱為“.”的視為影藏,不會列出);

-A 顯示除影藏文件“.”和“..”以外的所有文件列表;

-C 多列顯示輸出結果。這是默認選項; -l:與“-C”選項功能相反,所有輸出信息用單列格式輸出,不輸出為多列;

-F 在每個輸出項后追加文件的類型標識符,具體含義:“*”表示具有可執行權限的普通文件,“/”表示目錄,“@”表示符號鏈接,“|”表示命令管道FIFO,“=”表示sockets套接字。當文件為普通文件時,不輸出任何標識符;

-b 將文件中的不可輸出的字符以反斜線“”加字符編碼的方式輸出;

-c 與“-lt”選項連用時,按照文件狀態時間排序輸出目錄內容,排序的依據是文件的索引節點中的ctime字段。與“-l”選項連用時,則排序的一句是文件的狀態改變時間;

-d 僅顯示目錄名,而不顯示目錄下的內容列表。顯示符號鏈接文件本身,而不顯示其所指向的目錄列表;

-f 此參數的效果和同時指定“aU”參數相同,并關閉“lst”參數的效果;

-I 顯示文件索引節點號(inode)。一個索引節點代表一個文件; –file-type:與“-F”選項的功能相同,但是不顯示“*” –ignore;

-k 以KB(千字節)為單位顯示文件大?。?/p>

-l 以長格式顯示目錄下的內容列表。輸出的信息從左到右依次包括文件名,文件類型、權限模式、硬連接數、所有者、組、文件大小和文件的最后修改時間等;

-m 用“,”號區隔每個文件和目錄的名稱;

-n 以用戶識別碼和群組識別碼替代其名稱;

-r 以文件名反序排列并輸出目錄內容列表;

-s 顯示文件和目錄的大小,以區塊為單位,由大到?。?/p>

-t 用文件和目錄的更改時間排序;

-L 如果遇到性質為符號鏈接的文件或目錄,直接列出該鏈接所指向的原始文件或目錄;

-R 遞歸處理,將指定目錄下的所有文件及子目錄一并處理;

-1(數字一) 顯示時一行一個

ls –u 配合-t選項,顯示并按atime從新到舊排序

ls –U 按目錄存放順序顯示

–full-time 列出完整的日期與時間;

–color[=WHEN] 使用不同的顏色高亮顯示不同類型的。

元數據metadate 文件的屬性
數據   文件的內容

modify time 修改時間

access time 訪問時間

chang time 文件屬性時間

chattr +A time.log給訪問時間加鎖不會變 chattr -A time.log給訪問時間解鎖不會變

touch如果文件再,強行刷新三個時間,如果沒有文件就創建一個。

stat 文件名 查看inode內容

modify比access新 或者超過一天了 那就會觸發時間更新

通配符

* 匹配一個或多個字符
? 匹配一個字符
~ 當前用戶家目錄
~mage 用戶mage家目錄
~+ 當前工作目錄
~-前一個工作目錄
[0-9]匹配數字范圍
[a-z]:字母
[A-Z]:字母
[wang]匹配列表中的任何的一個字符
[^wang]匹配列表中的所有字符以外的字符

只顯示隱藏文件

ls -d /app/. ls -aI “[^.]” ls -aI –ignore=[^.]*

練習

1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄

2、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾文件或目錄

3、顯示/etc/目錄下以非字母開頭,后面跟了一個字母及其它任意長度任意字符的文件或目錄

4、顯示/etc/目錄下所有以rc開頭,并后面是0-6之間的數字,其它為任意字符的文件或目錄

5、顯示/etc目錄下,所有以.d結尾的文件或目錄

6、顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文件或目錄

7、只顯示/root下的隱藏文件和目錄

8、只顯示/etc下的非隱藏目錄

1 ls -d /var/l*[0-9]*[[:lower:]]
 2 ls -d /etc/[0-9]*[^0-9]
   ls -d /etc/[[:digit:]]*[^[:digit:]]
 3 ls -d /etc/[^[:alpha:]][[:alpha:]]*
 4 ls -d  /etc/rc[0-6]*
 5 ls -d /etc/*.d 
 6 ls -d /etc/[mnrp]*.conf
 7 ls -d /root/.*
 8 ls -d /etc [^.]*/

預定義的字符類:

man 7 glob

[:digit:]:任意數字,相當于0-9

[:lower:]:任意小寫字母

[:alnum:]:任意數字或字母

[:blank:]:水平空白字符

[:space:]:水平或垂直空白字符

[:punct:]:標點符號

[:print:]:可打印字符

[:cntrl:]:控制(非打印)字符

[:graph:]:圖形字符

[:xdigit:]:十六進制字符

通配符匹配的是文件名稱的字符串 ##touch命令:

touch [OPTION]… FILE…

-a僅改變atime和ctime

-m 僅改變mtime和ctime

-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的時間戳

-c如果文件不存在,則不予創建

>覆蓋原來的文件 >>什么都不改變

語法錯誤 后面的命令還可以執行,命令錯誤,后面的命令還可以執行。

刪除大文件:

> 文件;df-h;rm 文件

暴力破解字典 圖片描述

環境變量 環境變量 環境變量


ls /misc/cd 進入等于把光盤掛載上,按需掛載。

LINUX上的應用程序的組成部分

1,二進制文件:/bin;/sbin;/uer/bin;usr/sbin;
     /usr/local/bin;/usr/local/sbin.
 
 2,庫文件:/lib;/lib64;/usr/lib;/usr/bin64;
      /usr/local/lib;/usr/local/bin64.
  
 3,配置文件:/etc;/etc/DIRECTORY;/usr/local/etc
 
 4,幫助文件:/usr/share/man;/usr/shar/doc;/usr/local/share/man;
             /usr/local/shar/doc

cp復制

cp[OPTION]… [-T] SOURCE DEST cp[OPTION]… SOURCE… DIRECTORY cp[OPTION]… -t DIRECTORY SOURCE… cpSRC DEST

-i:覆蓋前提示
 –n:不覆蓋,注意兩者順序
 -r, -R: 遞歸復制目錄及內部的所有內容
 -a: 歸檔,相當于-dR--preserv=all
 -d:--no-dereference --preserv=links 不復制原文件,只復制鏈接名
 --preserv[=ATTR_LIST]
    mode: 權限
    ownership: 屬主屬組
    timestamp:
    links
    xattr
    context
    all
 -p: 等同--preserv=mode,ownership,timestamp
 -v: --verbose
 -f: --force  如果原來的不能打開就刪了原來的重      新復制

移動和改名

mv [OPTION]… [-T] SOURCE DEST

mv [OPTION]… SOURCE… DIRECTORY

mv [OPTION]… -t DIRECTORY SOURCE…

常用選項:
 -i: 交互式
 -f: 強制

rename改名

直接指向數據塊位置的指針叫直接指針 指向地址的指針是間接指針 在一個分區中 每個文件節點編號是唯一的

which -n1  命令   這個命令1S執行一次

文件粉碎工具

shred 重復覆蓋  
    -u覆蓋最后刪除   
    -z最后一次覆蓋清零  
    -v 顯示過程  
    -n覆蓋幾次

xargs解決參數過長的問題,會把參數一個一個傳

符號鏈接

軟連接創建后那個鏈接數不會增長

嚴重依賴與原始文件的

軟連接的大小就是路徑指向的大小

軟連接的相對路徑是相對于軟鏈接的路徑

一個符號鏈接指向另一個文件

ls -l的顯示鏈接的名稱和引用的文件

一個符號鏈接的內容是它引用文件的名稱

可以對目錄進行

可以跨分區

指向的是另一個文件的路徑;其大小為指向的路徑字符串的長度;不增加或減少目標文件inode的引用計數;

語法:

ln -s filename [linkname]

硬鏈接

路徑相對于當前工作路徑

鏈接是一個文件多個名

硬鏈接不能跨分區和設備

硬鏈接不會對文件夾鏈接

硬鏈接擁有完全相同的屬性

不占節點號

增加連接數

創建硬鏈接會增加額外的記錄項以引用文件

對應于同一文件系統上一個物理文件

每個目錄引用相同的inode號

創建時鏈接數遞增

刪除文件時: rm命令遞減計數的鏈接 文件要存在,至少有一個鏈接數 當鏈接數為零時,該文件被刪除

不能跨越驅動器或分區

語法:

ln filename [linkname]

文件可以包含多種類型的數據

檢查文件的類型,然后確定適當的打開命令或應用程序使用

file [options]… 常用選項:

-b 列出文件辨識結果時,不顯示文件名稱
   -f 列出文件中文件名的文件類型
   -F 使用指定分隔符號替換輸出文件名后默認的”:”分隔符
   -L 查看對應軟鏈接對應文件的文件類型
   --help 顯示命令在線幫助

mknod 創建設備文件 hexdump或者xxd 查看二進制文件

liunx 看文件格式只看頭部的魔數(magic namber) 跟后綴名無關

標準I/O與管道

程序:指令+數據

讀入數據:Input 輸出數據:Output

file descriptor 文件描述

Linux默認給出三總i/o

標準輸入(stdin) 0 默認接受來自鍵盤的輸入 標準輸出 (stdout) 1 默認輸出到終端窗口 標準錯誤 (stderr) 2 默認輸出到終端窗口

I/O重定向:改變默認位置

> 把stdout重定向到文件    >>追加
2>  把stderr重定向到文件
&> 把所有輸出重定向到文件

>文件內容會被覆蓋

#set -c:進制將內容覆蓋已有文件,但可追加

強制覆蓋: >|

#set +c 允許覆蓋

>>原有內容基礎上,追加內容
  2>:覆蓋重定向錯誤輸出數據流
  2>>:追加重定向錯誤輸出數據流

標準輸出和錯誤輸出各自定向到不同位置:

COMMAND > /path/to/file.ou  t2> /path/to/error.out

合并標準輸出和錯誤輸出為同一個數據流進行重定向:

&>:覆蓋重定向
 &>>:追加重定向
 COMMAND > /path/to/file.out 2>&1 (順序很重要)
 COMMAND >> /path/to/file.out 2>&1
 find/etc-namepasswd2>/dev/null

():合并多個程序的STDOUT

(cal2007;cal2008)> all.txt

單行重定向 cat >z.log

輸入重定向 cdt < /etc/issue
 
 輸入重定向加輸出重定向 相當于cp

tr 轉換刪除字符

前后不能用同一個文件名 要不然會被破壞 > 可以前后相同 標準輸入比標準輸出的優先級高

選項:

-c–C --complement:取字符集的補集
 -d--delete:刪除所有屬于第一字符集的字符
 -s--squeeze-repeats:把連續重復的字符以單獨一個字符表示
 -t--truncate-set1:將第一個字符集對應字符轉化為第二字符集對應的字符

[:alnum:]:字母和數字 :alpha::字母 [:cntrl:]:控制(非打印)字符 [:digit:]:數字 [:graph:]:圖形字符 [:lower:]:小寫字母 [:print:]:可打印字符 [:punct:]:標點符號 [:space:]:空白字符 :upper::大寫字母 [:xdigit:]:十六進制字符

作業: 1 cmd linkfile 2 硬,軟鏈接的區別 3、將/etc/issue文件中的內容轉換為大寫后保存至/tmp/issue.out文件中 cat /etc/issue | tr ‘a-z’ ‘A-Z’ >> /app/issue.o

4、將當前系統登錄用戶的信息轉換為大寫后保存至/tmp/who.out文件中 id | tr ‘a-z’ ‘A-Z’ >> /app/who.out

5、一個linux用戶給root發郵件,要求郵件標題為”help”,郵件正文如下: Hello, I am 用戶名,The system version is here,pleasehelp me to check it ,thanks! 操作系統版本信息

echo Hello, I amwhoami,The system version is here,pleasehelp me to check it ,thanks!uname -a|mail -s haha www

echo Hello, I amwhoami,The system version is here,pleasehelp me to check it ,thanks!uname -a|write www

6、將/root/下文件列表,顯示成一行,并文件名之間用空格隔開 ls|tr [[:space:]] ‘ ‘

7、計算1+2+3+..+99+100的總和 echo {1..100} |tr ‘ ‘ ‘+’ |bc

8、刪除Windows文本文件中的‘^M’字符 cta 111.txt |tr -d ”

9、處理字符串“xt.,l 1 jr#!$mn2 c/fe3 uz4”,只保留其中的數字和空格 echo xt.,l 1 jr#111.txtmn2 c/fe3 uz4|tr [:punct:] ‘ ‘|tr :alpha: ‘ ‘

10、將PATH變量每個目錄顯示在獨立的一行 echo $PATH |tr / ”

11、將指定文件中0-9分別替代成a-j cat 1.log |tr ‘0-9’ ‘a-j’

12、將文件中每個單詞(由字母組成)顯示在獨立的一行,并無空行

cat 1.log |tr ‘ ‘ ” |tr [:punct:] ”|tr -s ‘ ‘ ”

原創文章,作者:phosphor,如若轉載,請注明出處:http://www.www58058.com/76844

(0)
phosphorphosphor
上一篇 2017-05-25
下一篇 2017-05-25

相關推薦

  • 第三周作業

    1、列出當前系統上所有已登陸的用戶名:          [root@yangjifeng~]# who | cut -d ‘ ‘ -f 1 | sort -u     root 2、取出最后登陸到當前系統的用戶信息; &nb…

    Linux干貨 2017-08-28
  • N26 第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 思路:    首先使用 who 查看當前系統上所有已經登錄的用戶,然后用 cut 或 awk 截取用戶名,最后使用 sort 或 unqi 去除重復信息。命令:    who | cut -d’ ‘ -f1 …

    Linux干貨 2017-02-25
  • 初識Linux

    一,計算機的組成和功能 計算機主要由四個部分組成,內存、緩存、CPU和寄存器。其中緩存及其重要,為CPU和內存之間的緩存,寄存器存放指令,CPU負責執行指令。內存是與CPU進行溝通的橋梁。計算機中所有程序的運行都是在內存中進行的,因此內存的性能對計算機的影響非常大。 二,Linux的主流發行版本 Linux的發行版有數百種之多,其中主流的三種為: Debia…

    Linux干貨 2017-12-04
  • 第七周

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; fdisk /dev/sdb歡迎使用 fdisk (util-li…

    Linux干貨 2016-09-19
  • shell腳本1

    shell腳本基礎 shell腳本: 包含一些命令或聲明,并符合一定格式的文本文件 格式要求:首行shebang機制 #!/bin/bash #!/usr/bin/python #!/usr/bin/perl shell腳本的用途有: 自動化常用命令 執行系統管理和故障排除 創建簡單的應用程序 處理文本或文件 創建shell腳本 第一步:使用文本編輯器來創建…

    2017-08-05
  • Linux系統重定向和管道

    1、標準輸入和標準輸出              程序:指令+數據               &n…

    Linux干貨 2016-08-04
欧美性久久久久