linux常用命令練習
ls命令
ls命令列出目錄下的內容
[root@orcl2 ~]# ls
anaconda-ks.cfg install.log test
加上-s引數列出內容的同時列出該檔案或目錄的大小
[root@orcl2 ~]# ls -s
8 anaconda-ks.cfg 36 install.log 32 test
加上-h引數將會顯示出檔案大小的單位
[root@orcl2 ~]# ls -sh
8.0K anaconda-ks.cfg 36K install.log 32K test
-l引數顯示該目錄下的詳細資訊
[root@orcl2 ~]# ls -lh //該命令可簡寫為ll -h
-rw------- 1 root root 1.5K Nov 5 16:28 anaconda-ks.cfg
-rw-r--r-- 1 root root 32K Nov 5 16:27 install.log
-rw-r--r-- 1 root root 32K Nov 6 17:37 test
注:根據上面的兩個命令可以看到,install.log用ls -s檢視時大小是36K,而用ll -h檢視時大小是32K,這是因為ll -h命令檢視的是實際檔案所佔有的大小,而ls -h檢視的是磁碟非配的大小
使用stat 命令列出目錄或檔案的詳細資訊
[root@orcl2 ~]# stat install.log
File: `install.log'
Size: 32062 Blocks: 72 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 5898242 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2013-11-06 17:37:03.000000000 +0800
Modify: 2013-11-05 16:27:52.000000000 +0800
Change: 2013-11-05 16:28:19.000000000 +0800
ls排序的問題
ls預設狀態下是按照檔案目錄的首字母排序
-t : 按照檔案最後的修改時間排序
-u : 按照檔案的最後訪問時間排序
-c : 按照檔案的最後inode改變時間排序
比如要檢視當前目錄下最新改變的檔案或目錄:
[root@orcl2 ~]# ls -u | head -1
Desktop
列出最近改變時間排序的檔案的詳細資訊
[root@orcl2 etc]# ls -l `ls -u | head -1`
-rw-r--r-- 1 root root 889 Dec 12 19:37 group
列出目錄資訊:
[root@orcl2 /]# ls -ld u01
drwxr-xr-x 6 oracle oinstall 4096 Dec 4 19:44 u01
檔案型別識別符號:
* 可執行檔案
/ 目錄檔案
= Socket檔案
@ 符號連結檔案
| 管道檔案
使用-F引數可以列出檔案的識別符號
[root@orcl2 db_1]# ls -F
assistants/ install.platform oc4j/ rdbms/
bin/ inventory/ odbc/ relnotes/
cdata/ javavm/ olap/ root.sh*
cfgtoollogs/ jdbc/ OPatch/ root.sh.old*
sort命令
sort命令可以完成多類別排序
將當前目錄下的檔案按照大小排序:
[root@orcl2 ~]# du -k *
8 anaconda-ks.cfg
4 Desktop
36 install.log
8 install.log.syslog
32 test
[root@orcl2 ~]# du -k * | sort -n
4 Desktop
8 anaconda-ks.cfg
8 install.log.syslog
32 test
36 install.log
按照指定的列排序
檢視當前目下下的檔案資訊並按照第六列的資訊以數字排序
[root@orcl2 ~]# ll -s | sort -n -k 6
8 -rw------- 1 root root 1482 Nov 5 16:28 anaconda-ks.cfg
8 -rw-r--r-- 1 root root 3995 Nov 5 16:26 install.log.syslog
4 drwxr-xr-x 2 root root 4096 Nov 6 00:03 Desktop
36 -rw-r--r-- 1 root root 32062 Nov 5 16:27 install.log
32 -rw-r--r-- 1 root root 32063 Nov 6 17:37 test
注:RedHat4以後再沒有sort +4這樣的格式,取而代之的是sort -k 4
也可加入-r引數來實現逆向排序
[root@orcl2 ~]# ll -s | sort -n -k 6 -r
32 -rw-r--r-- 1 root root 32063 Nov 6 17:37 test
36 -rw-r--r-- 1 root root 32062 Nov 5 16:27 install.log
4 drwxr-xr-x 2 root root 4096 Nov 6 00:03 Desktop
8 -rw-r--r-- 1 root root 3995 Nov 5 16:26 install.log.syslog
8 -rw------- 1 root root 1482 Nov 5 16:28 anaconda-ks.cfg
加入tail來選擇輸出最後的幾行
[root@orcl2 ~]# ll -s | sort -n -k 6 -r | tail -3
8 -rw-r--r-- 1 root root 3995 Nov 5 16:26 install.log.syslog
8 -rw------- 1 root root 1482 Nov 5 16:28 anaconda-ks.cfg
total 88
head和tail命令
head -n和tail -n分別檢視檔案的前幾行和後幾行記錄,不加引數預設的是10行
[root@orcl2 ~]# cat number
1
2
3
4
5
[root@orcl2 ~]# tail -2 number
4
5
[root@orcl2 ~]# head -2 number
1
2
-n 引數後面跟 +n(數字) 用來顯示第n行前(head)或第n行後(tail)的所有資料結合兩者可以實現顯示第n-m行的資料
如顯示第2-5行資料的顯示
[root@orcl2 ~]# head -n +5 number | tail -n +2
2
3
4
5
tail -f 動態重新整理木檔案的後十行資料
[root@orcl2 ~]# tail -f number
1
2
3
4
5
Find查詢命令
查詢當前目錄下名為number的檔案
[root@orcl2 ~]# find . -name number
./number
查詢當前目錄下num開頭的檔案
[root@orcl2 ~]# find . -name 'num*'
./number
查詢當前目錄下test001,test002檔案
[root@orcl2 ~]# find . -name 'test00[1-2]'
./test001
./test002
不區分大小寫來查詢Test001[1-2]或test00[1-2]'
[root@orcl2 ~]# find . -iname 'test00[1-2]'
./test001
./Test002
./Test001
./test002
查詢最近連天修改過的檔案
[root@orcl2 linux]# find . -mtime -2
.
./test001
./Test003
./Test002
./Test001
./test003
./test002
查詢兩天之前修改過的檔案
[root@orcl2 ~]# find . -mtime +2
./.gnome
./.gnome/gnome-vfs
./.dmrc
./.gnome2_private
./.Trash
./.bashrc
./install.log.syslog
把mtime改成ctime:按照改變時間查詢 atime按照訪問時間查詢
也可以把mtime,ctime,atime改成mmin,cmin,amin來按照分鐘改變查詢
[root@orcl2 linux]# find . -mmin -10
.
./test001
./Test003
./Test002
./Test001
-maxdepth定義遞迴查詢的級數
[root@orcl2 ~]# find . -maxdepth 1 -iname 'test00[1-2]'
./test001
./Test002
./Test001
./test002
[root@orcl2 ~]# find . -iname 'test00[1-2]'
./linux/test001
./linux/Test002
./linux/Test001
./linux/test002
./test001
./Test002
./Test001
./test002
查詢當前目錄下大於10k的檔案
[root@orcl2 ~]# find . -size +10k
./.bash_history
./test
./install.log
./.gconfd/saved_state
./.gnome2/yelp.d/omfindex.xml
./.gnome2/yelp.d/manindex.xml
./.gnome2/yelp.d/sk-content-list.last
./.gstreamer-0.10/registry.i686.bin
查詢當前目錄下oracle使用者的檔案,遞迴深度為2
[root@orcl2 home]# find . -maxdepth 2 -user oracle
./oracle
./oracle/.sqlplus_history
./oracle/hot_backup.sh
./oracle/.gnome2_private
./oracle/rman_full_backup.sh.bak
./oracle/.bashrc
./oracle/log
顯示當前目錄下檔案所屬組是oinstall的檔案,深度為二,只顯示出前兩個檔案的詳細資訊
[root@orcl2 home]# ls -l `find . -maxdepth 2 -group oinstall`|head -2
-rw------- 1 oracle oinstall 8502 Dec 7 14:37 ./oracle/.bash_history
-rw-r--r-- 1 oracle oinstall 33 Nov 6 16:09 ./oracle/.bash_logout
查詢當前目錄下的所有目錄:
[root@orcl2 ~]# find . -maxdepth 1 -type d
.
./linux
./.gnome
./.gnome2_private
grep命令用來過濾資訊
測試檔案如下:
[root@orcl2 ~]# cat number
1 number1
2 number2
3 number3
4 number3
5 number5
顯示number中含有2的行:
[root@orcl2 ~]# grep 2 number
2 number2
檢視/home/oracle/.bash_profile中的註釋資訊
[root@orcl2 oracle]# grep "#" .bash_profile
# .bash_profile
# Get the aliases and functions
# User specific environment and startup programs
查詢.bash_profile中含有export或alias的行
[root@orcl2 oracle]# grep "export\|alias" .bash_profile
# Get the aliases and functions
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/10.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lin:/lin:/usr/lib
alias sqlplus=' rlwrap sqlplus'
alias rman=' rlwrap rman'
使用egrep完成上面的題目
[root@orcl2 oracle]# egrep "export|alias" .bash_profile
# Get the aliases and functions
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/10.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lin:/lin:/usr/lib
alias sqlplus=' rlwrap sqlplus'
alias rman=' rlwrap rman'
-i引數用來忽略大小寫
[root@orcl2 ~]# grep NUMBER number
[root@orcl2 ~]# grep -i NUMBER number
1 number1
2 number2
3 number3
4 number3
5 number5
-v 引數查詢不包括某個字元的行
[root@orcl2 ~]# grep -i NUMBER number | grep -v 5
1 number1
2 number2
3 number3
4 number3
-n 引數用來標記行號
[root@orcl2 ~]# grep -i NUMBER number | grep -v 5 -n
1:1 number1
2:2 number2
3:3 number3
4:4 number3
過濾掉空行和過濾行:
[root@orcl2 ~]# cat number -n
1 1 number1
2 2 number2
3
4 3 number3
5
6 4 number3
7 5 number5
8 # This is a test file
[root@orcl2 ~]# grep -n -v '^$' number | grep -v '#'
1:1 number1
2:2 number2
4:3 number3
6:4 number3
7:5 number5
cut命令用來選取指定列
[root@orcl2 ~]# cat number
1 :number1
2 :number2
3 :number3
4 :number3
5 :number5
# This is a test file
[root@orcl2 ~]# cat number | grep -v "#" | grep -v "^$" | cut -d ":" -f2
number1
number2
number3
number3
number5
上面的命令等於是在grep的基礎上,去除註釋和空行,以:為分隔符,顯示第二列
只顯示當前目錄下檔名和建立時間
[root@orcl2 ~]# ll | cut -c 37-
16:28 anaconda-ks.cfg
00:03 Desktop
16:27 install.log
16:26 install.log.syslog
10:53 linux
11:33 number
17:37 test
10:49 test001
10:51 Test001
10:49 test002
10:51 Test002
10:49 test003
10:51 Test003
10:49 test004
-d引數用來刪除指定的字元
[root@orcl2 ~]# df |grep -v Filesystem | awk '{ print $5 }'
/
13%
0%
[root@orcl2 ~]# df |grep -v Filesystem | awk '{ print $5 }'|cut -d '%' -f1
/
13
0
sed流編譯器
列印1-3行
[root@orcl2 ~]# sed '1,3p' number
1 :number1
1 :number1
2 :number2
2 :number2
3 :number3
4 :number3
5 :number5
取消列印1-3行
[root@orcl2 ~]# sed -n '1,3p' number
1 :number1
2 :number2
刪除第3行記錄
[root@orcl2 ~]# cat number
1 number1
2 number2
3 number3
4 number4
5 number5
[root@orcl2 ~]# sed '3d' number
1 number1
2 number2
3 number3
4 number4
5 number5
刪除最後一行
[root@orcl2 ~]# sed '$d' number
1 number1
2 number2
3 number3
4 number4
5 number5
刪除第三行到最後一行
[root@orcl2 ~]# sed '3,$d' number
1 number1
2 number2
刪除包含number2的行
[root@orcl2 ~]# sed '/number2/d' number
1 number1
3 number3
4 number4
5 number5
Hello
awk生成資料
[root@orcl2 ~]# cat number
1 number1
2 number2
3 number3
4 number4
5 number5
Hello
查詢包含number2的行
[root@orcl2 ~]# awk '/number2/' number
2 number2
匹配第二列中資料包含number2的資料
[root@orcl2 ~]# awk '$2 ~ /number2/' number
2 number2
$2匹配表示第二列資料,~為匹配符
列印number中第一列的內容
[root@orcl2 ~]# awk '{print $1}' number
1
2
3
4
5
Hello
-F引數指定分隔符
列印passwd中的第一列的最後十名使用者名稱資訊
[root@orcl2 ~]# awk -F: '{print $1}' /etc/passwd | tail -10
sabayon
test2
ldap
ais
test1
oracle
admin
user01
user02
xtt
使用cut也能達到此效果
[root@orcl2 ~]# cut -d: -f1 /etc/passwd|tail -10
sabayon
test2
ldap
ais
test1
oracle
admin
user01
user02
xtt
簡單的郵件:
[root@orcl2 ~]# service sendmail status
sendmail (pid 3845) is running...
[root@orcl2 ~]# hostname xue.com
[root@orcl2 ~]# hostname
xue.com
[root@xue ~]# mail root
Subject: Hello
[root@xue ~]# mail root
Subject: Hello
Hello,Admin
Bye
Cc:
自動化作業:
使用corn命令完成自動化作業
檢視服務是否正常啟動
[root@xue ~]# service crond status
crond (pid 3871) is running...
使用corntab命令下的三個引數:-l,-e,-r分別為產看,編譯和刪除自動化任務
自動化任務的語法很簡單:
* * * * 0 df -h >> /var/log/system.log
其中:前面的五個列分別表示:分,時,日,月,星期;若為*表示不適用該時間格式進行計劃任務,若需要多個時間段,可用,分開
比如上面的命令表示每週日的時候檢視一下系統資訊,並追加入system.log
每週的工作日,每個十五分鐘執行一個備份指令碼:
0,15,30,45 * * * 0 /home/backuo/cold_bak.sh
執行計劃在/var/spool/cron下可以找到
[root@xue cron]# pwd
/var/spool/cron
[root@xue cron]# ls
root
[root@xue cron]# cat root
0,15,30,45 * * * 0 /home/backup/cold_bak.sh
或者直接用corntab -l命令檢視
[root@orcl2 ~]# crontab -l
0,15,30,45 * * * 0 /home/backup/cold_bak.sh
實驗at命令完成自動作業
[root@xue cron]# at *:15
syntax error. Last token seen: *
Garbled time
[root@xue cron]# at 0:15
at> find / -name "passwd"
at>
job 1 at 2013-12-17 00:15
改命令意思是在次日凌晨15分執行查詢passwd檔案路徑的命令
at -l檢視執行計劃
[root@xue cron]# at -l
1 2013-12-17 00:15 a root
atrm 計劃編號 刪除指定計劃
[root@xue cron]# at -l
1 2013-12-17 00:15 a root
[root@xue cron]# atrm 1
[root@xue cron]# at -l
磁碟分割槽:
[root@redhat6-3 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xce359e4e.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1): (回車,預設將所有空間分配給第一個主分割槽)
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):
Using default value 261
Command (m for help): t(修改磁碟格式為LVM)
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
再次檢視磁碟情況
[root@redhat6-3 ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00085274
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 2611 20458496 8e Linux LVM
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xce359e4e
Device Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 8e Linux LVM
tar命令解壓壓縮:
tar zcvf 建立壓縮檔案
tar [-cxtzjvfpPN] 檔案與目錄 ....
引數:
-c :建立一個壓縮檔案的引數指令(create 的意思);
-x :解開一個壓縮檔案的引數指令
-t :檢視 tarfile 裡面的檔案
特別注意,在引數的下達中, c/x/t 僅能存在一個!不可同時存在
因為不可能同時壓縮與解壓縮。
-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮
-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮
-v :壓縮的過程中顯示檔案!這個常用,但不建議用在背景執行過程
-f :使用檔名,請留意,在 f 之後要立即接檔名
-p :使用原檔案的原來屬性(屬性不會依據使用者而變)
-P :可以使用絕對路徑來壓縮!
-N :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的檔案中!
如果加 z 引數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file
如果加 j 引數,則以 .tar.bz2 來作為附檔名啊
如把root目錄下的內容全部壓縮成root.tar.gz
[root@xue ~]# tar zcvf ./root.tar.gz ./*
解壓[root@xue ~]# tar zcvf ./root.tar.gz ./*
解壓root.tar.gz檔案
[root@xue ~]# mkdir root
[root@xue ~]# tar zxvf root.tar.gz root/
root@xue ~]# cd /root/
[root@xue ~]# ls
anaconda-ks.cfg install.log number test test002 Test003
dead.letter install.log.syslog root test001 Test002 test004
Desktop linux root.tar.gz Test001 test003
I/O重定向:
輸出重定向>(建立)或>>(追加)
[root@xue ~]# echo "Hello" > Hello
[root@xue ~]# cat Hello
Hello
[root@xue ~]# echo "Hello" >> Hello
[root@xue ~]# echo "Hello" >> Hello
[root@xue ~]# cat Hello
Hello
Hello
Hello
使用>&1命令。將stderr和stdout也匯入到stdin指定的檔案中,及若命令錯誤,也將重定向到指定檔案
如:將TEST命令的錯誤資訊重定向至Hello
[root@xue ~]# TEST
-bash: TEST: command not found
[root@xue ~]# TEST > Hello 2>&1
[root@xue ~]# cat Hello
-bash: TEST: command not found
輸入重定向:
輸入重定向指的是將輸入的內容重後面的檔案中獲取
如:
[root@xue ~]# cat
-bash: TEST: command not found
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29320885/viewspace-1063361/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux 常用命令學習Linux
- Linux | 常用命令學習Linux
- linux練習題(二)Linux
- Linux的常用命令學習Linux
- linux基礎練習題Linux
- Linux 常用命令 學習筆記Linux筆記
- linux下sed的使用+練習Linux
- Linux常用命令cp學習筆記Linux筆記
- 自學linux第一關練習題Linux
- Linux運維常用命令有哪些?Linux學習教程(三)Linux運維
- Linux常用精簡命令實訓練習Linux
- linux基礎練習題、面試題(二)Linux面試題
- Linux常用命令快捷鍵有哪些?linux運維技能學習Linux運維
- 新手練習:Python練習題目Python
- MYSQL練習1: DQL查詢練習MySql
- 大資料學習7-Linux常用命令列大資料Linux命令列
- 常用命令[Linux]Linux
- Linux 常用命令Linux
- linux常用命令Linux
- 【Linux】Linux基本常用命令Linux
- Linux-Linux常用命令Linux
- sql 練習SQL
- MySQL練習MySql
- latex練習
- ddl練習
- MySQ練習
- Linux常用命令使用Linux
- Linux裡常用命令Linux
- Linux常用命令整理Linux
- Linux 的常用命令Linux
- Linux常用命令大全Linux
- Linux的常用命令Linux
- Linux常用命令分享Linux
- linux常用命令速查Linux
- Linux——常用命令整理Linux
- Linux-常用命令Linux
- Linux常用命令全名Linux
- Linux 常用命令2Linux