Linux:一些重要的命令用法总结

#Linux基础命令
##################测试文本#####################
[root@m01 ~]# vim /data/test.txt 


I like Linux
12345
1 2 3
@##$%%
hello world
HELLO WORLD










####################测试文本######################
1、文件管理


***cat***:concatenate files and print on the standard output
连接文件并打印到标准输出


5种用法:


-b  显示行号
-n  显示行号(包含空白行)
-E  显示结束符(默认$)
创建文件:
例子:
[root@m01 data]# cat >test3.txt<<EOF
> this is test3.txt created by cat command
> EOF
[root@m01 data]# 
[root@m01 data]# ls
bbs  test2.txt  test3.txt  test.txt
[root@m01 data]# cat test3.txt 
this is test3.txt created by cat command
修改文件:比如将test.txt,test2.txt覆盖test3.txt
[root@m01 data]# cat test.txt test2.txt >test3.txt


3大文件操作命令:
***cp***:copy 复制文件或目录


5种用法:
-a  复制目录时,保留链接,文件属性,并复制目录下的所有文件
[root@m01 data]# cp -a ../data/ /tmp/data2
[root@m01 data]# 
[root@m01 data]# ls -l . /tmp/data2/
.:
total 16
drwxr-xr-x. 2 root root 24 Jun 29 09:53 bbs
-rw-r--r--. 1 root root  0 Jul  2 17:53 test1.txt
-rw-r--r--. 1 root root  5 Jul  2 17:45 test2.txt
-rw-r--r--. 1 root root 10 Jul  2 17:47 test3.txt
-rw-r--r--. 1 root root 10 Jul  2 17:53 test4.txt
-rw-r--r--. 1 root root  5 Jul  2 17:45 test.txt


/tmp/data2/:
total 16
drwxr-xr-x. 2 root root 24 Jun 29 09:53 bbs
-rw-r--r--. 1 root root  0 Jul  2 17:53 test1.txt
-rw-r--r--. 1 root root  5 Jul  2 17:45 test2.txt
-rw-r--r--. 1 root root 10 Jul  2 17:47 test3.txt
-rw-r--r--. 1 root root 10 Jul  2 17:53 test4.txt
-rw-r--r--. 1 root root  5 Jul  2 17:45 test.txt


-i  复制文件时显现提示信息,系统重要命令保护机制(已被设置别名)
-f  与-i相反
\   不使用别名,表示命令本身执行:[root@m01 data]# \cp test.txt test1.txt 
-d  复制时保持链接
-r  若给出的源文件是一个目录文件,此时将复制该目录下的所有子目录和子文件(可以看出和-a还是有区别的:文件的时间都被修改)
[root@m01 data]# cp -r /data/ /tmp/data/
[root@m01 data]# ls -l /tmp/data/ /data/
/data/:
total 20
drwxr-xr-x. 2 root root 24 Jun 29 09:53 bbs
-rw-r--r--. 1 root root  5 Jul  2 18:10 test1.txt
-rw-r--r--. 1 root root  5 Jul  2 17:45 test2.txt
-rw-r--r--. 1 root root 10 Jul  2 17:47 test3.txt
-rw-r--r--. 1 root root 10 Jul  2 18:03 test4.txt
-rw-r--r--. 1 root root  5 Jul  2 17:45 test.txt


/tmp/data/:
total 20
drwxr-xr-x. 2 root root 24 Jul  3 13:42 bbs
-rw-r--r--. 1 root root  5 Jul  3 13:42 test1.txt
-rw-r--r--. 1 root root  5 Jul  3 13:42 test2.txt
-rw-r--r--. 1 root root 10 Jul  3 13:42 test3.txt
-rw-r--r--. 1 root root 10 Jul  3 13:42 test4.txt
-rw-r--r--. 1 root root  5 Jul  3 13:42 test.txt
[root@m01 data]# 
***mv***:Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY
  可以将文件或者目录重命名,或者移动文件到目录下
5种用法:
-重命名文件或目录
[root@m01 data]# mkdir linux
[root@m01 data]# ls
bbs  linux  test1.txt  test2.txt  test3.txt  test4.txt  test.txt
[root@m01 data]# 
[root@m01 data]# mv linux/ unix
[root@m01 data]# ls
bbs  test1.txt  test2.txt  test3.txt  test4.txt  test.txt  unix


-f 强制执行,没有interactive(-i,表示交互式的)
-b  覆盖文件前将源文件进行备份


***rm***:remove  删除命令
-i  交互式
-f  强制的
-v  -v, --verbose         explain what is being done  详细过程的展示
-r, -R, --recursive   remove directories and their contents recursively递归删除
[root@m01 data]# rm -irvf unix/
removed directory: ‘unix/test/test1/test2’
removed directory: ‘unix/test/test1’
removed directory: ‘unix/test’
removed directory: ‘unix/’
可以看出是从底层往上层删除的!


最基本创建文件命令:
touch: - change file timestamps 修改文件时间戳(文件不存在时则创建文件)
-t STAMP 修改文件时间戳
              use [[CC]YY]MMDDhhmm[.ss] instead of current time
    例子:[root@m01 data]# touch -t 197101011212.12 test.txt 
[root@m01 data]# 
[root@m01 data]# 
[root@m01 data]# ls -l test.txt 
-rw-r--r--. 1 root root 0 Jan  1  1971 test.txt


***find***  在指定目录下查找文件
find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
-print  将匹配发送到标准输出
-exec  将匹配的结果执行后面的shell指令,并输出
-ok  和exec一样 但是多了交互操作


常见用法示例:
查找到文件并显示最后三行
[root@db01 data]# find . -type f -name test.txt -exec tail -3 {} \;
I like Linux
123456
$ 2 dfg
-mtime:   -n +n                #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-ctime    -n +n               #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 
示例:今天创建了/data /data/test.txt /data/test1.txt /data/test2.txt /data/test3.txt
find / -ctime -1 


***ln*** 为文件创建链接


-s  软连接
[root@db01 ~]# ln -s /data/test.txt test
[root@db01 ~]# ll
total 4
-rw-------. 1 root root 1233 Jun 19 16:55 anaconda-ks.cfg
lrwxrwxrwx. 1 root root   14 Jul  4 14:05 test -> /data/test.txt


***sed***:NAME
       sed - stream editor for filtering and transforming text  流编辑器用来过滤和处理文档。
Linux sed命令是利用script来处理文本文件。
sed可依照script的指令,来处理、编辑文本文件。
sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。


语法:sed [-hnV][-e<script>][-f<script文件>][文本文件]
常见用法:
1,按行修改内容:
a:新增;c:取代;d:删除;p:打印;-i:插入
[root@db01 data]# sed -e '2a'\hello test.txt 
which one is the best OS?
A.linux
hello
B.windows
C.mac
[root@db01 data]# 


2,以行为单位新增或者删除
示例:我删除了第2行
[root@db01 data]# sed '2d' test.txt 
which one is the best OS?
B.windows
C.mac
3,在第二行前插入:nihao
[root@db01 data]# sed '2i nihao' test.txt 
which one is the best OS?
nihao
A.linux
B.windows
C.mac
4,过滤出匹配的内容,打印输出
如果不使用-n:则会输出文件所有内容,并将匹配的行重复输出一次
[root@db01 data]# nl /etc/passwd |sed -n '/root/p'
     1 root:x:0:0:root:/root:/bin/bash
    10 operator:x:11:0:operator:/root:/sbin/nologin
5,使用s替换匹配的内容并输出({}中的一组命令依次执行)
[root@db01 data]# nl /etc/passwd |sed -n '/bash/{s/bash/csh/;p;q}'
    1 root:x:0:0:root:/root:/bin/csh
6,搜寻并替换
[root@db01 data]# sed 's/123/456/'
123
456
456
456
678
678
这一组交互式,123被替换成了456
7,多点编辑:1:删除第三行后的所有行(包括第3行) 2:bash替换为blueshell
[root@db01 data]# nl /etc/passwd |sed -e '3,$d' -e 's/bash/blueshell/'
     1 root:x:0:0:root:/root:/bin/blueshell
     2 bin:x:1:1:bin:/bin:/sbin/nologin
***grep***:NAME
       grep, egrep, fgrep - print lines matching a pattern
例子:
1,查找与递归查找与反向查找
[root@db01 data]# grep A test.txt 
A.linux
-r  递归
[root@db01 data]# grep -r 'A' /data
/data/test.txt:A.linux
/data/sed:A.linux$
-v  反向
[root@db01 data]# grep -v A test.txt 
which one is the best OS?
B.windows
C.mac
2,正则匹配:-E
-o:只显示匹配的内容
[root@db01 data]# cat /etc/passwd|grep -o -E "apache" 
apache
[root@db01 data]# cat /etc/passwd|grep  -E "apache" 
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
3,统计匹配次数与忽略大小写:-c -i
[root@db01 data]# grep -ci 'sbiN' /etc/passwd
19


4,-e:可以同时执行多个匹配
[root@db01 data]# echo 'this is a test'|grep -e "this" -e "is"
this is a test
5,-l:列表(默认按1列输出);-lZ:不换行输出(一般一起用);xargs -0:以null为分隔符将管道送来的内容,交给后面的rm命令。
[root@db01 data]# grep -l aaa test*  
test1.txt
test.txt
[root@db01 data]# grep -lZ aaa test*  
test1.txttest.txt[root@db01 data]# 
[root@db01 data]# grep -lZ aaa test*|xargs -0
test1.txt test.txt
[root@db01 data]# grep -lZ aaa test*|xargs -0 rm
[root@db01 data]# ls
bbs  file2  sed  test2.txt  test3.txt
[root@db01 data]# 


***awk***:AWK是一种处理文本文件的语言,是一个强大的文本分析工具
NAME
       gawk - pattern scanning and processing language


几种用法:
###############这是测试文本#########
[root@db01 data]# cat log.txt 
I like Linux very much
what is your name ?
how old are you ?
i am 12 years old


1 2 3 4 5 6 7 8 9 10




###############这是测试文本#########
1,awk善于处理列。可以按照列的方式提取文本内容
awk '{print $2,$5}' log.txt
[root@db01 data]# awk '{print $2,$5}' log.txt 
like much
is ?
old ?
am old
 
2 5
 
[root@db01 data]# 
awk '{printf '%-4s %-6s\n',$2,$5}' log.txt
[root@db01 data]# awk '{printf "%-4s %-6s\n", $2,$5}' log.txt    #注意的是“”与‘’的配合使用,内外层不同即可!
like much  
is   ?     
old  ?     
am   old   
           
2    5     
           
[root@db01 data]# 


2,-F 指定分隔符  如指定字母‘o’为分隔符
[root@db01 data]# awk -F"o" '{print $1}' log.txt 
I like Linux very much
what is y
h
i am 12 years 


1 2 3 4 


[root@db01 data]# 


3,支持加入变量运算
变量是数字需要加+;变量时字符串直接加在$0面
[root@db01 data]# echo 'i like linux'|awk -va=' very much' '{print $0a}'
i like linux very much
[root@db01 data]# 
4,使用正则表达式匹配
BEGIN{IGNORECASE=1}:表示忽略大小写;$4:表示取出第4列;~表示开始模式;/Y/:正则匹配;{print $1,$3}打印1,3列
[root@db01 data]# awk 'BEGIN{IGNORECASE=1}$4 ~ /Y/ {print $1,$3}' log.txt 
I Linux
how are
i 12
5,!~:表示模式取反
[root@db01 data]# awk 'BEGIN{IGNORECASE=1}$4 !~ /Y/ {print $1,$3}' log.txt 
what your
 
1 3
 
[root@db01 data]# 





猜你喜欢

转载自blog.csdn.net/Administrator4/article/details/80928751
今日推荐