linux常用命令
1.在线帮助
mkdir --help
2.文件和目录操作命令
ls 查看当前目录下的文件 ls -l tree 查看当前目录下的文件,以树形结构输出
pwd 显示当前路径
mkdir/rmdir 创建/删除文件夹
mkdir -p /home/test/test1/test2/test3 创建多层目录
cp a.txt /home/test/a.txt 拷贝文件
mv a.txt /home/test/a.txt 移动文件
mv a.txt b.txt c.txt -t /home/test 批量移动文件
rm a.txt 删除文件
vi a.txt 创建文件 (I进入编辑模式,Esc+:wq保存并推出)
ln ??
scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest #复制本地/opt/soft/
目录下的文件nginx-0.5.38.tar.gz到远程机器10.10.10.10的opt/soft/scptest
目录
scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/ #从10.10.10.10机器上的/opt/soft/
中下载mongodb目录到本地的/opt/soft/
目录来
3.文件内容操作命令
cat a.txt b.txt>file.txt 合并两个文件的内容到file.txt,如果没有file文件则新生成一个
cat a.txt b.txt 在屏幕上显示文件内容
more +3 test.log 从第三行显示文件内容,more会以一页一页的显示方便使用者逐页阅读
more +/liu test.log 文件中查找第一个出现,"liu"字符串的行,并从该处前两行开始显示输出
head -5 /etc/passwd 查看文件的前五行
tail -10 /etc/passwd 查看文件的后十行
sed -n '5,10p' /etc/passwd 查看文件的第五到十行
cat /etc/passwd | cut -b1-3 #取每行的第1-3字字节
cat /etc/passwd | cut -d : -f 3 #以:分割,取第三段
split -b 10k date.file #将date.file文件分割成大小为10KB的小文件
split -b 10k date.file -d -a 3 #-d表示文件名使用数字后缀,-a length来为文件名指定后缀的长度
split -b 10k date.file -d -a 3 split_file #split_file来指定文件名的前缀
split -l 10 date.file #-l选项根据文件的行数来分割文件,本例表示按照每10行分割
paste file1 file2 > result #两个文件按列拼接
paste -d':' file1 file2 #拼接时使用指定符号(本例为冒号)隔开各个文件的内容
paste file1 -s #删除所有换行,拼接成为一行
paste file1 -s -d: #删除所有换行,拼接成为一行,并用特殊符号分割
paste file1 file2 -s #两个文件删除所有换行,拼接成为一行
sort -u seq.txt #在输出行中去除重复行
sort seq.txt #以每行为单位,按照ASCII码进行排序
sort -n number.txt #以每行为单位,按照数字大小进行升序排列
sort -n -r number.tx #以每行为单位,按照数字大小进行降序排列
sort file.txt | uniq -c #统计各行在文件中出现的次数
sort file.txt | uniq -d #在文件中找出重复的行
wc -c a.txt #统计文件的字节数
wc -l a.txt #统计文件的行数
diff /usr/li test.txt #显示出两个文件的差异
grep match_pattern file_name #在文件中搜索字符串
grep match_pattern file1 file2 #在多个文件中搜索字符串
grep -E "[1-9]+" #正则表达式匹配搜索
grep -c "text" file_name #统计文本中包含匹配字符串的行数
4.文件压缩解压缩
tar -zcvf log.tar.gz log2012.log #打包后,以 gzip 压缩
tar -zxvf /opt/soft/test/log.tar.gz #解压缩
tar -zxvf /opt/soft/test/log30.tar.gz log2013.log #解压部分文件
zip -q -r html.zip /home/Blinux/html #将/home/Blinux/html/
这个目录下所有文件和文件夹打包成zip格式
unzip test.zip #在当前目录下解压
unzip -o test.zip -d tmp/ #将压缩文件test.zip在指定目录/tmp
下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件
5.信息显示命令
uptime #现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
du scf #查看指定目录(scf目录)所占用的空间
du log2012.log #查看指定文件所占用的空间
free -m #当前系统未使用的和已使用的内存数目
date +"%Y-%m-%d" #按某种格式显示现在的日期
date -d "1 day ago" +"%Y-%m-%d" #按某种格式显示昨天的日期
date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S" #按某种格式转换时间
date -d "+1 day" +%Y%m%d //显示前一天的日期
date -d "-1 day" +%Y%m%d //显示后一天的日期
date -d "-1 month" +%Y%m%d //显示上一月的日期
date -d "+1 month" +%Y%m%d //显示下一月的日期
date -d "-1 year" +%Y%m%d //显示前一年的日期
date -d "+1 year" +%Y%m%d //显示下一年的日期
cal #显示出日历
cal -j #显示出日历,第几天
6.搜索文件命令
find /home -name "*.txt" #在/home目录及子目录下查找以.txt结尾的文件名
find . -type f -size +10k #搜索大于10KB的文件
find /home ! -name "*.txt" #找出/home下不是以.txt结尾的文件
echo回显
sh脚本:
#!/bin/sh
#对变量赋值:
a=”hello world” COUNT=5
# 现在打印变量a的内容:
echo “A is:”
echo $a echo
${COUNT}911
shell脚本第一行必须以 #!开头,它表示该脚本使用后面的解释器解释执行。
vi run.sh 进入编辑模式
esc+:+w+q 保存并且退出
chmod 777 run.sh echo COUNT时加{}以免歧义,输出5911
通配符
* : 匹配0个或多个任意字符
? : 匹配一个任意字符
[若干字符] : 匹配方括号中任意一个字符的一次出现
单引号和双引号
单引号:用于保持引号内所有字符的字面值,而双引号:如果字符串中有特殊字符需要处理时就用双引号
#!/bin/bash
echo '\\'
echo "\\"
echo '`date`'
echo "`date`"
注意:echo '`date`'中内层单引号为esc下面的按键
输出分别为\\ \ date和当前日期
for循环
sh脚本
echo "for循环例子1";
for((i=1;i<=10;i++)); do
echo $i;
done;
if/else判断语句
sh脚本 #!/bin/sh
a=2
b=2
if [ $a==$b ]
then
echo "a and b is equal"
else
echo "a and b is not equal"
fi
注意:if后面有空格,中括号前后有空格
移动/拷贝/删除文件夹
sh脚本
#!/bin/sh
>a.txt
echo This is a.txt > a.txt
cp /home/test/a.txt /home/version/a.txt
echo /home/version/a.txt
>b.txt
echo This is b.txt > b.txt
mv /home/test/b.txt /home/version/b.txt
echo /home/version/b.txt
>c.txt
echo This is c.txt > c.txt
rm c.txt
函数调用
sh脚本
function hello() {
echo "Hello!";
}
function hello_param() {
echo "Hello $1 !";
}
echo "无参函数调用";
hello;
echo "函数传参调用";
hello_param ben;