linux命令和shell

来源:互联网 发布:sql server inner join 编辑:程序博客网 时间:2024/06/05 17:50

mv命令既可以重命名,又可以移动文件或文件夹。

例子:将目录A重命名为B

mv A B

例子:将/a目录移动到/b下,并重命名为c

mv /a /b/c

其实在文本模式中要重命名文件或目录,只需要使用mv命令就可以了,比如说要将一个名为abc的文件重命名为1234:

mv abc 1234

注意,如果当前目录下也有个1234的文件的话,这个文件是会将它覆盖的。


4 touch:创建文件或修改文件时间
[root@linuxidc ~]# touch a.txt        #创建文件,如果文件存在,则更新文件修改时间为当前时间
[root@linuxidc ~]# touch -t 201501012330 a.txt    #改变文件的时间戳

5 mkdir:创建目录
选项:-p    创建多级目录
      -v    显示创建过程
[root@linuxidc ~]# mkdir -pv /abc/cd{e,f}        #创建多级目录,-v显示过程
mkdir: created directory `/abc'
mkdir: created directory `/abc/cde'
mkdir: created directory `/abc/cdf'

6 cp:复制文件与目录
用法:cp [选项] 源 目标
选项:-r    递归复制,复制子文件和子目录,用于复制目录时使用

      -a    复制时保留文档所有属性(包括权限、时间等)

[root@linuxidc /]# cp /root/a.txt /b.txt        #复制文件并修改名称
[root@linuxidc /]# cp -a /etc/passwd /var/tmp  #复制并保留文档属性

7 rm:删除文件或目录
选项:-f    强行删除(慎用)
      -i    删除前提示

      -r    递归删除,删除目录及目录下所有内容
[root@linuxidc ~]# rm -f a.txt
[root@linuxidc ~]# rm -fr directory

8 mv:移动或重命名文件
[root@linuxidc ~]# mv a.txt b.txt

9 find:搜索文件或目录
用法:find [路径] [匹配标准] [表达式选项]
选项:-empty    搜索空白文件或目录
      -group    按组查找

      -name    按文档名称查找
      -iname    按文档名称查找并且不区分大小写

      -mtime    按修改时间查找

      -size    按容量大小查找

      -type    按文档类型查找,文件(f)、目录(d)、设备(b,c)等

      -user    按用户查找

      -a        并且

      -o        或

[root@linuxidc ~]# find b.txt                    #查找当前目录下的文件
[root@linuxidc ~]# find /root -name "*.cnf"      #查找root目录下以cnf结尾的文件
[root@linuxidc ~]# find -iname "b.txt"          #不区分大小写查找b.txt
[root@master ~]# find / -group zwj            #查找所属组为zwj的文档
[root@master ~]# find / -mtime +3              #查找3天前被修改过的文档
[root@linuxidc ~]# find / -mtime -1              #查找当天被修改过的文档
[root@linuxidc ~]# find / -size +100M            #查找要目录下大于100M的文档
[root@linuxidc ~]# find ./ -type f              #查找当前目录下所有普通文件
[root@linuxidc ~]# find / -iname "b.txt" -type f -exec rm -fr {} \;
                #查找根目录下所有的b.txt文件(不区分大小写)并且删除它们

[root@linuxidc ~]# find ./ -type f -a -size +1k  #查找当前目录下大于1k的普通文件

10 du:计算文件或目录的容量
选项:-h    人性化显示容量信息
      -a    查看所有目录以及文件的容量信息

      -s    仅显示总容量

[root@linuxidc ~]# du -h /root                    #人性化显示/root目录的容量信息
[root@linuxidc ~]# du -sh /root                    #显示/root所占磁盘空间之和
[root@linuxidc ~]# du -a /root                    #查看/root目录下所有文件和目录的容量信息



#tar zxvf /bbs.tar.zip -C /zzz/bbs    
//把根目录下的bbs.tar.zip解压到/zzz/bbs下,前提要保证存在/zzz/bbs这个目录 
这个和cp命令有点不同,cp命令如果不存在这个目录就会自动创建这个目录!

附:用tar命令打包
例:将当前目录下的zzz文件打包到根目录下并命名为zzz.tar.gz
#tar zcvf /zzz.tar.gz ./zzz

tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

# tar -cf all.tar *.jpg 
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。 

# tar -rf all.tar *.gif 
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 

# tar -uf all.tar logo.gif 
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 

# tar -tf all.tar 
这条命令是列出all.tar包中所有文件,-t是列出文件的意思 

# tar -xf all.tar 
这条命令是解出all.tar包中所有文件,-x是解开的意思 

压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2   //解压 tar.bz2
tar –xZvf file.tar.Z   //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip

总结
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压



(一)通过vi编辑器来替换。
vi/vim 中可以使用 :s 命令来替换字符串。
:s/well/good/ 替换当前行第一个 well 为 good
:s/well/good/g 替换当前行所有 well 为 good
:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good
:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good
:%s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#well/#good/# 替换当前行第一个 well/ 为 good/
:%s#/usr/bin#/bin#g 可以把文件中所有路径/usr/bin换成/bin

 

(二)直接替换文件中的字符串。(此法不用打开文件即可替换字符串,而且可以批量替换多个文件。)
1.perl命令替换,参数含义如下:
-a    自动分隔模式,用空格分隔$_并保存到@F中。相当于@F = split ”。分隔符可以使用-F参数指定
-F    指定-a的分隔符,可以使用正则表达式
-e    执行指定的脚本。
-i<扩展名>   原地替换文件,并将旧文件用指定的扩展名备份。不指定扩展名则不备份。
-l    对输入内容自动chomp,对输出内容自动添加换行
-n    自动循环,相当于 while(<>) { 脚本; }
-p    自动循环+自动输出,相当于 while(<>) { 脚本; print; }
用法示例:
perl -p -i.bak -e 's/\bfoo\b/bar/g' *.c
将所有C程序中的foo替换成bar,旧文件备份成.bak

perl -p -i -e "s/shan/hua/g" ./lishan.txt ./lishan.txt.bak 
将当前文件夹下lishan.txt和lishan.txt.bak中的“shan”都替换为“hua”

perl -i.bak -pe 's/(\d+)/ 1 + $1 /ge' file1 file2 
将每个文件中出现的数值都加一

 

 

2.sed命令下批量替换文件内容   

格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名

-i 表示inplace edit,就地修改文件

 -r 表示搜索子目录

 -l 表示输出匹配的文件名
s表示替换,d表示删除

示例:sed -i "s/shan/hua/g"  lishan.txt

          把当前目录下lishan.txt里的shan都替换为hua

 

sed的其他用法如下:

1、删除行首空格
   sed 's/^[ ]*//g' filename
   sed 's/^ *//g' filename
   sed 's/^[[:space:]]*//g' filename

2、行后和行前添加新行
   行后:sed 's/pattern/&\n/g' filename
   行前:sed 's/pattern/\n&/g' filename
   &代表pattern

3、使用变量替换(使用双引号)
    sed -e "s/$var1/$var2/g" filename

4、在第一行前插入文本
    sed -i '1 i\插入字符串' filename

5、在最后一行插入
    sed -i '$ a\插入字符串' filename

6、在匹配行前插入
    sed -i '/pattern/ i "插入字符串"' filename

7、在匹配行后插入
   sed -i '/pattern/ a "插入字符串"' filename

8、删除文本中空行和空格组成的行以及#号注释的行
   grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d


启动svn

svnserve -d -r puyu/

查看maven版本

mvn -v



遍历目录:cd
绝对文件路径:/
显示当前路径:pwd
当前目录:./
父级目录:../
列表:ll和ls
轻松区分文件夹和文件:ls -F
显示隐藏的文件夹:ls -a
目录递归显示:ls -R
显示长列表:ls -l
显示文件夹下的内容:ls 文件夹名称
?代表一个字符*代表多个字符:ls pro*
创建文件:touch
touch命令还可以改变文件夹修改时间:touch test
修改访问时间:touch -a test
复制文件:cp source destination
覆盖前会询问用户是否覆盖:cp -i source destination
可以看到cp命令的所有可用参数:man cp
重命名或移动文件:mv
删除文件:rm
强制删除:rm -f
创建目录:mkdir
同时创建多个目录:mkdir -p a/b/c
删除空目录:rmdir
查看文件类型:type name
查看整个文件内容:cat
查看的内容加上行号:cat -n
查看的内容文本加上行号:cat -b
更方便的查看文件内容:more和less
查看部分文件内容:tail
查看1000行文件内容:tail -n 1000
查看文件开始的1000行内容:head -n 1000
查看进程:ps
实时监测进程:top
杀进程:kill 
查看磁盘空间:df
用户易读的方式:df -h
查看某个特定的目录空间使用情况:du
显示文件总数:du -s
显示已列出的文件总数:du -c
用户易读的方式:du -h
搜索数据:grep
输出不匹配的数据:grep -v t file
有多少行匹配:grep -c t file
显示行号:grep -n t file
压缩文件:gzip
查看压缩过的文件内容:gzcat
解压文件:gunzip
归档数据:tar
显示最近用过的命令:history
列出已安装的软件包:yum list installed
yum安装软件:yum install packagename
yum更新软件:yum update packagename
yum卸载软件:yum remove packagename(只删除软件包,保留配置文件和数据)
yum卸载软件:yum erase packagename(删除软件包和所有配置文件)
yum从哪个仓库获取文件:yum repolist
以下是shell
执行数学表达式:expr
多个shell脚本命令用;隔开:date;who
显示消息:echo
设置变量用:set
命令替换:反引号(`)或者$()
执行数学运算也可以用:[]
if then fi
if then elee fi
if then elif then fi
if test then fi
数值比较:eq ge gt le lt ne
字符串比较:> < =
检查长度是否非零:-n str
检查长度是否为零:-z str
file是否存在并且是一个目录:-d file
file是否存在:-e file
file是否存在并且是一个文件:-f file
file是否存在并且可读:-r file
file是否存在并非空:-s file
file是否存在并可写:-w file
file是否存在并可执行:-x file
file是否存在并属当前用户所有:-O file
file是否存在并默认组与当前用户相同:-G file
file1是否比file2新:file1 -nt file2
file1是否比file2旧:file1 -ot file2
检查是否是目录:-d folder
检查对象是否存在:-d folder
(( expression )) expression可以是任意的数学赋值或比较表达式
[[ expression ]] expression是字符串比较
if then else 可转换为csse命令
for var in list   //for命令
do
  commonds
done
while test command
do
  other command
done


until test command
do
other command
done
break;
continue;


 












原创粉丝点击