linux命令的理解
. 表示当前目录;.. 表示上层目录;~表示用户主目录;rm , 是remove的缩写 ,删除文件,不能删除目录。rm -r 可以删除一个目录及其下面的内容,有提示信息。rm -rf 强力删除一个目录及其下面的内容,没有提示。mv, 是move的缩写,移动文件到另一个地方,mv [OPTION]... [-T]SOURCE DEST将目录A重命名为Bmv A Bmv-i ......
. 表示当前目录;
.. 表示上层目录;
~表示用户主目录;
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 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
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
更多推荐
所有评论(0)