Linux环境发布之基础命令学习
1.dirname命令可以取给定路径的目录部分(strip non-directory suffix from file name)
# 跳转到脚本所在目录
cd $(dirname "$0")
另一个写法是:cd `dirname $0` 其中反引号··等同于$()。
2.输出到屏幕同时到文件
tree . | tee test.log
3.备份压缩
tar -czvf gzip格式压缩 tar -xzvf gzip格式解压 tar tvf 查看归档文件里包含哪些文件
c -> 创建 x->还原 z->gzip v->显示文件信息 f->指定文件 C->解压到指定目录 X->排除
使用zip命令的P选项来加密zip文件
zip -P mysecurepwd var-log-protected.zip /var/log/*
不会想让密码在History中可见
zip -e var-log-protected.zip /var/log/*
检查zip文件的完整性
unzip -t var-log.zip
4.时间格式
TIME=`date +%Y-%m-%d\ %H:%M:%S`
5.复制 CP
-a :相当于 -pdr 的意思;
-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
-f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
-i :若目的n(destination)已经存在时,在覆盖时会先询问是否真的动作!
-l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
-p :连同档案的属性一起复制过去,而非使用预设属性;
-r :递归持续复制,用于目录的复制行为;
-s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
-u :若 destination 比 source 旧才更新 destination !
\cp: 不询问,直接覆盖
6.删除 RM
-d : 删除可能仍有数据的目录 (只限超级用户)
-f : 略过不存在的文件,不显示任何信息
-i : 进行任何删除操作前必须先确认
-r : 同时删除该目录下的所有目录层
-v : 详细显示进行的步骤
#删除除**之外的
rm -rf !(a|b)
7.查找
find
-ipath p, -path p : 路径名称符合 p 的档案,ipath 会忽略大小写
-name name, -iname name : 档案名称符合 name 的档案。iname 会忽略大小写
-size n : 档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 档案类型是 c 的档案。 d: 目录 c: 字型装置档案 b: 区块装置档案 p: 具名贮列 f: 一般档案 l: 符号连结 s: socket
-pid n : process id 是 n 的档案
#查找并执行删除
find $DIR -name ".svn" -exec rm -rf {} \;
# 为你想要找的字符串
find . -name "*" -exec grep xxx {} ; -print |more xxx
8.纠错
shopt 例子:shopt -s extglob
http://world77.blog.51cto.com/414605/336147
9.改变字符大小写
tr a-z A-Z < filepath
10.cut
显示一个以冒号分隔的文件中的第一列和第三列 $ cut -d: -f 1,3 names.txt
显示文件中每行的前八个字符$ cut -c 1-8 names.txt
11.随机数
$RANDOM可以产生0-32767之间随机数
12.脚本调试
bash -xv filename.sh
13.将数据文件的指定域读取到shell脚本中
$ vi read-employees.sh
#!/bin/bash IFS=:
while read name empid dept do
echo "$name is part of $dept department"
done < ~/employees.txt
14.安装
rpm -ivh file.rpm
apt-get install samba
15.mount#
mount -t nfs -o hard 192.168.1.4:/home/cao /home/nfs/cao
fat32:
mount -t vfat -o iocharset=gb2312,codepage=936 /dev/hda? /mnt/win
ISO:
mount -o loop /any.iso /mnt/iso
NTFS:
mount /dev/hda? /mnt/win 这个还需要编译内核
USB:
mount /dev/sda? /mnt/usb
不编译内核mount NTFS分区的办法:
下载 kernel-ntfs-2.4.18-14.i686.rpm 安装
mount -t ntfs /dev/hda? /mnt/win
要开机自动挂接可以修改/etc/fstab
比如添加一个 /dev/hda? /mnt/win vfat umask=0,iocharset=gb2312,codepage=936 0 0
cat /proc/loadavg 查看运行队列情况
16.grep
grep -? pattern filename 查询匹配行的上下?行
grep -n pattern filename 显示匹配行的行号
grep -v pattern filename 反检索
grep -E pattern filename 扩展模式,不需要转义
17.sed
sed [option] 'command' file
sed '?,$d' filename 删除第?行至行尾
sed 's/a/b/g' 整行a替换为b
sed 's/a/&b/g' 替换a为自己加b
sed -e 多点编辑
xcopy /ekirydh path path2 >> log