.  表示当前目录;

.. 表示上层目录;

~表示用户主目录;

linux命令敲错了,可以按ctrl +c 退出。

1. cat

cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能。

查看文件内容主要用法:
1、cat f1.txt,查看f1.txt文件的内容。
2、cat -n f1.txt,查看f1.txt文件的内容,并且由1开始对所有输出行进行编号。
3、cat -b f1.txt,查看f1.txt文件的内容,用法与-n相似,只不过对于空白行不编号。
4、cat -s f1.txt,当遇到有连续两行或两行以上的空白行,就代换为一行的空白行。
5、cat -e f1.txt,在输出内容的每一行后面加一个$符号。
6、cat f1.txt f2.txt,同时显示f1.txt和f2.txt文件内容,注意文件名之间以空格分隔,而不是逗号。
7、cat -n f1.txt > f2.txt,对f1.txt文件中每一行加上行号后然后写入到f2.txt中,会覆盖原来的内容,文件不存在则创建它。
8、cat -n f1.txt >> f2.txt,对f1.txt文件中每一行加上行号后然后追加到f2.txt中去,不会覆盖原来的内容,文件不存在则创建它。

2. rm

rm , 是remove的缩写 ,删除文件,不能删除目录。

rm  -r 可以删除一个目录及其下面的内容,有提示信息。

rm  -rf 强力删除一个目录及其下面的内容,没有提示。

3. mv

mv, 是move的缩写,移动文件到另一个地方,mv  [OPTION]... [-T]     SOURCE DEST

将目录A重命名为B

mv A B

mv   -i  a.txt   B/

如果目录B下有与a.txt同名的文件,则提示是否override.

mv -f a.txt    B/

如果目录B下有与a.txt同名的文件,不会提示,直接override.

4. cp

cp ,是copy paste的缩写,

cp [OPTION]... [-T] SOURCE DEST

cp  file1 file2

可以在同一个目录中备份文件,意思是将file1拷备一份同时命名为file

当要大量复制(或移动)文件时,会提示如下错误

$ cp sslib1/*.xml sslib/

拷备整个文件夹

cp -r 文件夹  文件夹

-bash: /bin/cp: 参数列表过长
解决办法:

find upload/ -name "*.jpg" -exec mv {} /home/posadm/apache-tomcat-6.0.37/webapps/posm/upload/  \;

提示:在使用-exec参数时,必须以“\;”结尾,而且之前要有一个空格,否则,系统会提示“find遗漏-exec参数”,命令将无法执行

5. chmod

Change Mode

chmod u+x  hello.txt  ,增加文件的权限,

r ,w,x ,

u-->user;g-->group;o-->others;

6.chown

change owner

chown runoob:runoobgroup file1.txt

将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup

6. mkdir

mkdir  ,新建一个目录。

mkdir -p about/abc/def 可以递级创建新的三个目录

如果想看看mkdir到底做了什么,可以添加选项“-v”,继续上面举例:

mkdir -pv about/abc/def

6. grep

grep -lr  13714001947  *199002.trc

表示在当前目录中,在文件名为*199002.trc的文件中查找字符串13714001947,以文件名显示查找结果。

7. tar

tar -cf all.tar *.jpg 

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

tar -rf all.tar *.gif

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

tar -tf all.tar

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

tar -xf all.tar 

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

tar -czf all.tar.gz *.jpg

这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个 
gzip压缩过的包,包名为all.tar.gz

tar -xzf all.tar.gz

这条命令是将上面产生的包解开

tar -cjf all.tar.bz2 *.jpg

这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个 
bzip2压缩过的包,包名为all.tar.bz2 

tar -xjf all.tar.bz2

这条命令是将上面产生的包解开

部分打包

tar -cvzf tdshome.tar.gz  tdshome/  --exclude=tdshome/app/posm/upload/skbPic --exclude=tdshome/log --exclude=tdshome/trc --exclude=tdshome/app/posm/exportexcel

8 .zip unzip

将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip

zip -q -r html.zip /home/html

unzip -l abc.zip

查看压缩文件中包含的文件

8. xargs

ls *.txt|xargs -n1

-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。

ls *.txt|xargs -n1 -i cp {} /root/tessdata/txt/

-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替

批量删除

find . -name '*.txt' -print0|xargs -0 rm -f

find -print 和 -print0的区别:

-print 在每一个输出后会添加一个回车换行符,而-print0则不会

find 在打印出一个文件名之后接着输出一个 NULL 字符 ('\0') 而不是换行符, 然后再告诉 xargs 也用 NULL 字符来作为记录的分隔符. 

这就是 find 的 -print0 和 xargs 的 -0 的内涵

统计文件的行数

find . -name '*.txt' -print0|xargs -0 wc -l

查询当前log目录下最近两天所有的以log结束的文件,并压缩到aaa.tar.gz

find log -name "*.log" -mtime -1|xargs tar -cvzf aaa.tar.gz

参考:Linux xargs命令详解 - 小a玖拾柒 - 博客园

-n max-args 等价于 --max-args=max-args

表示执行一次 command [ initial-arguments ] ... 读取的每个对象 时所使用的最大参数数量

-d delim 等价于 --delimiter=delim

表示指定 delim 进行输入参数的分隔

[root@centos ~]# head -n2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@centos ~]# head -n2 /etc/passwd | xargs -d ':'
root x 0 0 root /root /bin/bash
bin x 1 1 bin /bin /sbin/nologin

[root@centos ~]# head -n2 /etc/passwd | xargs -d ':' | xargs -n4
root x 0 0
root /root /bin/bash bin
x 1 1 bin
/bin /sbin/nologin

-i replace-str

该选项一般用于将经 xargs 命令过来的标准输入或前一个命令的管道输出同时传递给 xargs 右侧的多个命令

[william@centos ~]$ cat directories.txt
one
two
three
[william@centos ~]$ cat print_all_args.sh
#!/bin/bash
# Print all arguments
echo $*
[william@centos ~]$ cat directories.txt | xargs -i {} sh print_all_args.sh -p {} -l
-p one -l
-p two -l
-p three -l

9. vim

vim hello.c  //如果hello.c文件不存在,将创建,如果存在,将打开

vim 中查找方法: 用vim找开一个文件时,输入 /XXXXX,回车即可查找。

vim 中输入G,可直接定位到文件末尾。

具体用法参考另一篇博客

10. du

du -h logs/*

--max-depth=1 指定深入目录的层数

指令 du 能以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小

ls  -lht   将会一一列出当前目录下所有文件的大小,以及所有文件大小的统计总和

du -sh * 命令也可以列出当前文件以及文件夹的大小

查询具体的文件大小首先你要找到该文件,然后使用du -s ,du -sh,ls -lh,都是可以看到该文件的大小的。不过这些命令后面需要带文件名,比如查找文件名为backup.sh文件的大小,命令为:du -s  backup.sh ,ls -lh backup.sh

查看目录的大小

du  -s dir;dir代表要查看的目录, 文件也行

删除文件后,重启系统磁盘空间才会增加

du -sh *

查看当前目录下各文件的大小

11. true

true >log.txt  清空文件的内容

12 .ps

ps    -e 显示所有进程  -f 全格式

13. rpm

rpm -ivh 软件包名

安装软件包并显示安装进度。这个是用得最多的了

rpm -qa

查询已经安装哪些软件包。

rpm -q 软件包名

查询指定软件包是否已经安装。

rpm -Uvh  软件包名

升级一个软件包。

rpm -e 软件包名

删除指定软件包。

14 netstat

netstat -ntpl 

用于查看系统启动的服务.

netstat -antp|grep 8013|wc -l

统计开启端口为8013服务的连接数

netstat -nr查看主机当前IP转发表详细信息

15 ip

ip addr show查看主机IP地址
ip route show查看主机转发信息

 

16 find

find -name 文件名;

根据名称查找文件。

find -user 属主名;

根据文件的属主查询文件。

17 whereis 与locate

whereis 主要用于查找程序文件

which 也是查找命令文件,比如:which mysqldump

whereis -b find 查找find命令文件的存放位置

locate命令的运用

yum install mlocate

updatedb

locate hello

18 sz rz

在线安装sz ,rz命令

yum isntall -y lrzsz

sz  -e 文件名;

-e选项强制对sz rz 的控制字符进行转义,解决上传下载失败的问题

可以传从linux中传文件到本地电脑。

rz

从本地传文件到linux可直接拖到窗口中.

ping -c 4 www.baidu.com表示发送4次请求。

19 sed

要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做:

sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`

将文件1.txt内的文字“garden”替换成“mirGarden”

sed -i "s/garden/mirGarden/g" 1.txt //sed -i 很简单

将当前目录下的所有文件内的“garden”替换成“mirGarden” 

sed -i "s/garden/mirGarden/g" `ls` //其实也就是ls出多个文件名而已

20 scp

服务器之间文件的复制

yum install openssh-clients

scp root@183.63.52.147:/home/posadm/tdshome/trc/201409/30/jdk1.6.0_45.tar.gz  /home/michale

在线安装at

yum install at

在线安装crontab

yum install -y vixie-cron

查看状态

service crond status

启动服务
service crond start
 

crontab -e 进行文件的编辑,里面的语法同vi命令

默认情况下,crontab中执行的日志写在/var/log下

rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm


rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

第三方软件源

21 ls

s按时间排序
ls -lt 从新到旧
ls -lrt 从旧到新
Linux下如何查看一个目录下的内容?并按照修改时间升序排序
命令:ls -lrt
详细解释:
-l     use a long listing format  以长列表方式显示(详细信息方式)
-t     sort by modification time 按修改时间排序(最新的在最前面)
-r     reverse order while sorting (反序)
-s sort by file size (按文件大小排序)

ls -lrt `grep -lr 183.63.52.147 *701137.trc`

查找包括指定内容的所有文件,并列出文件的详细情况,并排序。

linux中查看内存的使用情况

cat /proc/meminfo

mtime查询的是文件last modified时间,其中最让人迷惑的就是参数 +N 、 N 、 -N 三个参数的意义了。

网上有朋友说不同linux版本这3个参数意义不同,我没有考证,下面的说明都是基于centos5.5 64bit final。

+N

-∞ —— (当前时间-(N+1)*24)

-N

(当前时间-N*24)—— +∞

N

(当前时间-(n+1)*24 —— (当前时间 - n*24)

#一些应用

-mtime 0:24小时内

-daystart -mtime 0:今天00:00:00至现在被修改的文件,注意顺序! -mtime 0 -daystart 将得到错误的结果。

-mtime +0: 24小时前 

jdk内存查看

jstat -gcutil 2083 1000 5

jmap -heap pid

tomcat查看GC信息_jimmy1980的博客-CSDN博客

https://my.oschina.net/feichexia/blog/196575

查看某个进程中最耗费CPU的线程

top -Hp pid

得到13876的十六进制值为3634

printf "%x\n" 13876

查看最耗cpu的类

jstack 13852|grep 3634

22 curl

curl POST 请求

我们可以用 -X POST 来申明我们的请求方法,用 -d 参数,来传送我们的参数。

curl localhost:9999/api/daizhige/article -X POST -d "title=comewords&content=articleContent"

我们的接口都是 json 格式的,这也没有问题。我们可以用 -H 参数来申明请求的 header

curl localhost:9999/api/daizhige/article -X POST -H "Content-Type:application/json" -d '"title":"comewords","content":"articleContent"

可以用 -v 来查看详情

我们用 -F "file=@__FILE_PATH__" 的请示,传输文件即可。命令如下:curl localhost:8000/api/v1/upimg -F "file=@/Users/fungleo/Downloads/401.png" -H "token: 222" -v

curl ip.cn  查看外网ip

curl ifconfig.me 查看出网ip 

23 uniq

uniq命令的用法

cat a.txt b.txt|sort|uniq -d   //输出重复的行

cat a.txt b.txt|sort|uniq -c   //输出重复的数量

如下:

1 afafasf
1 afasf
2 asfasf
1 hujiakuan hu
2 michael

cat a.txt b.txt|sort|uniq -u  // only print unique lines

cat a.txt b.txt|sort|uniq   //With no options, matching lines are merged to the first occurrence.即去重,有多行的只显示一行

24 sort

sort命令的用法

cat d.txt |uniq -c|sort -rnk 1

      3 123
      2 456
      1 3
      1 2
      1 1111
      1 1

r表示逆向排序, n表示按数值排序, k表示按第k列进行排序,列从第1开始

25 awk

awk工作流程是这样的:读入有’\n’换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。

awk常见的内建变量(可直接用)如下所示
FS:列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
NF:当前处理的行的字段个数。
NR:当前处理的行的行号(序数)。
$0:当前处理的行的整行内容。
$n:当前处理行的第n个字段(第n列)。
FILENAME:被处理的文件名。
RS:行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’
按行输出文本
awk '{print}' 1.txt                 #输出所有内容
awk '{print $0}' 1.txt            #输出所有内容

awk 'NR==1,NR==3{print}' 1.txt    #输出第 1~3 行内容
awk '(NR>=1)&&(NR<=3){print}' 1.txt    #输出第 1~3 行内容

默认域分隔符是“空白键”或“[tab]键”,-F 指定域分隔符为’:’只显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割
cat /etc/passwd |awk -F':' '{print $1"\t"$7}'

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/nologin

只显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name, shell,在最后一行添加“blue, /bin/nosh”

cat /etc/passwd |awk -F ':' 'BEGIN{print "name, shell"} {print $1 "," $7} END{print "blue, /bin/nosh"}'

name, shell
root,/bin/bash
daemon,/usr/sbin/nologin
bin,/usr/sbin/nologin
sys,/usr/sbin/nologin
....
blue, /bin/nosh

搜索/etc/passwd有root关键字的所有行

root@yushan-virtual-machine:~# awk -F: '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
  • 26 lsof

    它的意思是 List Open Files,很简单你就记住了它是 “ls + of”的组合

    lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能

    lsof -i //显示所有打开的端口

    lsof -i:80 //显示所有打开80端口的进程

27 nmap

如何查看目标主机192.168.0.1开放那些端口

nmap 192.168.0.1

28 top

查看CPU的内存使用状态

%us:表示用户空间程序的cpu使用率(没有通过nice调度)

%sy:表示系统空间的cpu使用率,主要是内核程序。

%ni:表示用户空间且通过nice调度过的程序的cpu使用率。

%id:空闲cpu

%wa:cpu运行时在等待io的时间

%hi:cpu处理硬中断的数量

%si:cpu处理软中断的数量

%st:被虚拟机偷走的cpu

29 wc

Linux系统中wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

命令参数

  -c  统计字节数

  -l    统计行数

  -m    统计字符数。这个参数不能与 -c 参数一起使用。

  -w    统计字数。一个字被定义为空白、跳格或换行字符分隔的字符串。

  -L    打印最长行的长度

  --help  显示帮助信息

  --version 显示版本信息

30 less

less 是一个Linux命令行实用程序,用于显示文件或命令输出的内容,它一次只显示一个页面。它类似于 more ,但具有更高级的功能,允许您在文件中向前和向后导航。
该 less 命令主要用于打开大文件。less 不会读取整个文件,相比于 vim 或 nano 等文本编辑器,加载时间会更快。
如何使用 less
less 命令的一般语法如下:
less [OPTIONS] filename

31 umask

umask

umask -S 来显示umask的符号值

umask 027

当我们想改变创建文件和目录时的默认访问权限,则可以通过umask命令来实现。

可以看到文件的默认访问权限变为了 -rw-r----- ,目录test的默认访问权限变为了 drwxr-x--- 。这种方式并不能永久改变umask值,只是改变了当前会话的umask值,打开一个新的terminal输入umask命令,可以看到umask值仍是默认的002。要想永久改变umask值,则可以修改文件/etc/bashrc,在文件中添加一行 umask 027 

参考 linux命令--umask详解 - vilenx - 博客园

32.test

test是一个Linux命令

-e 该“文件名”是否存在

-f 该“文件名”是否为文件

-d 该“文件名”是否为目录

-b 该“文件名”是否一个块设备

-c 该“文件名”是否一个字符设备

-S该“文件名”是否一个套接字文件

-p 该“文件名”是否一个FIFO(管道)文件

-L 该“文件名”是否一个连接文件

-r 检测该文件名是否具有“可读”属性

-w 检测该文件名是否具有“可写”属性

-x 检测该文件名是否具有“可执行”属性

-u 检测该文件名是否具有“SUID”属性

-g 检测该文件名是否具有“SGID”属性

-k 检测该文件名是否具有“Sticky bit”属性

-s 检测该文件名是否为“非空白文件”

-nt (newer than)判断file1 是否比file2 新

-ot (older than)判断file1 是否比file2 旧

-ef 判断file1与file2是否为统一文件,可用于判断硬连接,主要判断两个文件是否均指向同一个incode

-eq 两数值相等(equal)

-ne 两数值不等(not equal)

-gt n1大于n2(greater than)

-lt n1小于n2(less than)

-ge n1大于等于n2(greater than or equal)

-le n1小于等于n2(less than or equal)

test -z string 判断字符串是否为0,若string空字符串,则为ture

test -n string 判断字符串是否非未0,若string空字符串,则为false

test str1=str2 判断str1是否等于str2,若相等,则回传true

test str1!=str2 判断str1是否等于str2,若不相等则回传true

-a (and)两个条件同事成立。

-o (or)两个条件任何一个成立。

! 条件反求,如test! -x file,当file不具有x时,回传true。

! 条件反求,如test!-x file,当file不具有x时,回传true

现在一个需求,测试批量文件是否存在,不存在则打印出来(文件名保存在wav.txt)中

cat wav.txt| while read line

do

if !test -e $line

  then

   echo $line

fi

done

如何在Linux中统计一个进程的线程数(转)

1.cat /proc/<pid>/status

2.ls /proc/<pid>/task | wc

3.ps hH p <pid> | wc -l

Logo

更多推荐