{6.shell腳本命令}
[1.diff]
diff file file1 **比較兩個文件的不同
-c **顯示周圍的行
-u **按照一格式統一輸出生成補丁
-r **比較兩個目錄中文件的不同
patch file file.patch **打補丁
-b **備份原文件
[2.grep]
grep 關鍵字符 文件|目錄 **在文件或目錄中查找含有關鍵字的行
grep -i **忽略大小寫
-n **顯示關鍵字所在的行
-c **顯示過濾結果的個數
-v **反向過濾
-E "關鍵字1|關鍵字2" **過濾多個關鍵字
-r **在目錄中查找含有關鍵字的文件
注意: ^關鍵字 **以關鍵字開頭
關鍵字$ **以關鍵字結尾
grep -E "^root|root$" -v passwd -n | grep root **反向過濾passwd中以root開頭和root結尾的行並顯示含有root的行
[root@localhost mnt]# ifconfig eth0 | grep inet | grep inet6 -v |cut -d " " -f 10
172.25.254.17
[root@localhost mnt]# ifconfig eth0 | grep inet | grep inet6 -v | awk -F " " '{print $2}'
172.25.254.17
[3.cut]
cut **截取字符
cut -d 分隔符 **指定分隔符
cut -f 1,7 **顯示指定的列(此處顯示1和7列)
[root@localhost mnt]# cut -d ":" -f 1,7 passwd **顯示passwd中以":"爲分隔符第一列和第七列
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
halt:/sbin/halt
mail:/sbin/nologin
operator:/sbin/nologin
games:/sbin/nologina
cut -c 1-4 **顯示指定的字符(此處顯示第二個字符到第四個字符)
[4.sort]
sort file **排序
-n **純數字排序
-u **去冗餘
-u|uniq -c **去冗餘並統計冗餘次數
-t **指定分隔符
-k **指定列
[5.uniq]
sort file |uniq -c **去除冗餘並統計冗餘次數
-d **顯示冗餘行
-u **顯示唯一行
附加:tr 'a-z' 'A-Z' < file **將file中的小寫換成大寫
tr 'A-Z' 'a-z' < file **將file中的大寫換成小寫
[6.]
sed 's/原字符/替換字符/g' file
sed -e '策略1' -e '策略2' file
sed -i file **把轉換後的內容輸入到指定文件
sed '3,5s/原字符/替換字符/g' **3-5行替換
sed xd **屏蔽指定行
sed xp **複製指定行
sed -n xp **只顯示指定行
[root@localhost mnt]# sed -ne 3p -ne 5p passwd **顯示passwd的第三和第五行
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
for i in {1..5};do echo $i;done
將每個用戶對應配密碼,做法如下:
[root@localhost mnt]# ls
[root@localhost mnt]# vim userfile
[root@localhost mnt]# cat userfile
user1
user2
user3
[root@localhost mnt]# vim passwdfile
[root@localhost mnt]# cat passwdfile
westos1
westos2
westos3
[root@localhost mnt]# wc -l userfile
3 userfile
[root@localhost mnt]# wc -l userfile | cut -d " " -f 1
3
[root@localhost mnt]# ls
passwdfile userfile
[root@localhost mnt]# vim create_user.sh **編寫腳本
[root@localhost mnt]# cat create_user.sh
#!/bin/bash
MAX=$( wc -l $1 | cut -d " " -f 1)
for NUM in $( seq $MAX)
do
USERNAME=$(sed -n ${NUM}p $1)
PASSWD=$( sed -n ${NUM}p $2)
useradd $USERNAME
echo $PASSWD |passwd --stdin $USERNAME
done
[root@localhost mnt]# chmod +x create_user.sh **給執行權限
[root@localhost mnt]# ./create_user.sh /mnt/userfile /mnt/passwdfile
Changing password for user user1.
passwd: all authentication tokens updated successfully.
Changing password for user user2.
passwd: all authentication tokens updated successfully.
Changing password for user user3.
passwd: all authentication tokens updated successfully.
Command (m for help): m **幫助
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition **刪除分區
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types **列出系統可用的分區類型
m print this menu
n add a new partition **新建分區
o create a new empty DOS partition table
p print the partition table **顯示分區
q quit without saving changes **退出
s create a new empty Sun disklabel
t change a partition's system id **修改分區功能id
u change display/entry units
v verify the partition table
w write table to disk and exit **保存更改到分區表中
x extra functionality (experts only)
Command (m for help): n **新建分區
Partition type:
p primary (0 primary, 0 extended, 4 free) **分區類型爲主分區
e extended **分區類型爲擴展分區
Select (default p): **默認爲主分區
Using default response p
Partition number (1-4, default 1): **主分區id
First sector (2048-20971519, default 2048): **此分區起始位置(一般默認)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +100M **分區大小
Partition 1 of type Linux and of size 100 MiB is set
Command (m for help): p
Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xdce4867b
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 83 Linux
Command (m for help): wq **保存退出,如果按q表示放棄更改退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partprobe **同步分區表
[root@localhost ~]# cat /proc/partitions **查看已生成分區
major minor #blocks name
253 0 10485760 vda
253 1 10484142 vda1
253 16 10485760 vdb
253 17 102400 vdb1
mkfs.xfs /dev/vdb1 **格式化
mount /dev/vdb1 /mnt **掛載
df **查看是否掛載
blkid **查看系統可使用的分區
[2.swap]
mkswap /dev/vdb6 **格式化爲swap分區
swapon -a /dev/vdb6 **激活
swapon -s **查看系統中的swap分區
swapoff /dev/vdb6 **關閉激活的swap分區
上述激活爲臨時激活,重啓後消失,如需永久激活,操作如下:
vim /etc/fstab **修改配置文件
#
# /etc/fstab
# Created by anaconda on Wed May 7 01:22:57 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
/dev/vdb6 swap swap defaults 0 0
設備 掛載點 文件系統類型
舉例:
[root@localhost ~]# mkswap /dev/vdb6 **格式化爲swap分區
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=ebbd4a4a-910b-4d2e-b5f8-87832a3fc63a
[root@localhost ~]# blkid
/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"
/dev/vdb6: UUID="ebbd4a4a-910b-4d2e-b5f8-87832a3fc63a" TYPE="swap"
[root@localhost ~]# swapon -a /dev/vdb6 **激活
[root@localhost ~]# swapon -s **查看系統中的swap分區
FilenameTypeSizeUsedPriority
/dev/vdb6 partition10485720-1
[root@localhost ~]# swapoff /dev/vdb6 **關閉激活的swap分區
[root@localhost ~]# swapon -s
[root@localhost ~]# vim /etc/fstab
[root@localhost mnt]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 7 01:22:57 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
/dev/vdb6 swap swap defaults 0 0
/dev/vdb5 /mnt xfs defaults 0 0
[root@localhost ~]# mount -a
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3128524 7345376 30% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 80 942580 1% /dev/shm
tmpfs 942660 17028 925632 2% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
/dev/vdb5 98988 5280 93708 6% /mnt
添加臨時swap分區
dd if=/dev/zero of=/mnt/swapfile bs=1M count=1000 **在/mnt下劃分一塊名爲swapfile的分區,塊大小爲1M,數量爲1000
mkswap /dev/vdb1 **格式化爲swap分區
swapon -a /dev/vdb6 **激活
注意:主分區+邏輯分區總數不超過15
分區時,分三個主分區,第四個爲擴展分區(剩下空間都給它)