命令
命令列表 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 查看外邊命令本身路徑和幫助文檔路徑
執行命令的順序
-
內部
-
hash path
-
外部
別名
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