每天一条linux命令

时间:2023-12-21 13:53:08

1、ls

ls -hG  //MacOS下输出带颜色文件和目录

ls -a // 显示隐藏文件

ls -l // 显示文件权限和组信息

ls -lR /home //列出 home目录包括其内部子目录中的所有文件

2、cd

cd / 进入系统根目录

cd ..// 进入上一层目录

cd - 返回进入此目录之前所在的目录

3、pwd

查看当前目录

当前目录被删除了,而pwd命令仍然显示那个目录

[root@localhost soft]# mkdir removed

[root@localhost soft]# cd removed/

[root@localhost removed]# pwd

/opt/soft/removed

[root@localhost removed]# rm ../removed -rf

[root@localhost removed]# pwd

/opt/soft/removed

4 、mkdir -m dirname

创建目录

-m 设置权限 mkdir -m 777 name

-p 递归创建多个目录 mkdir -p test2/test22

-v 显示创建目录的信息

[root@localhost test]# mkdir -v test4

mkdir:已创建目录“test4”

5、rm

删除文件或者文件夹

rm filename 删除某个文件

-r 删除目录以及子目录中的所有文件 rm -r test1

-f 删除前不询问 直接删除

-i 进行交互式删除 每次删除都需要确认

6、rmdir

删除空目录

当前目录中如果有子目录,即使子目录也为空,也不能用这个命令删除

-p 递归删除:当子目录都被删除,父目录为空后,直接把父目录也删除。

7、mv 选项 源文件/目录 目标文件/目录

“移动文件到目录” 或者“将源文件重命名为目标文件名” 或者“把源目录添加到目标目录”

mv  text.txt  text1.txt         将文件text.txt重命名为text1.txt      目录下只有text.txt文件,移动完文件夹下只有text1.txt

mv test1.txt test3               将test1.txt移动到test3目录中

将文件log1.txt,log2.txt,log3.txt移动到目录test3中

mv log1.txt log2.txt log3.txt test3

mv -t /opt/soft/test/test4/ log1.txt log2.txt  log3.txt

-t  : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

mv  1.txt   2.txt                  使用1.txt将2.txt覆盖,加上  -i  参数代表询问是否覆盖   -f 直接覆盖,不询问

mv -f 1.txt 2.txt

mv dir1 dir2                       如果dir2不存在,将dir1改名为dir2; 如果dir2存在,将目录dir1移动到dir2

mv * ../                               移动文件夹下所有文件到上一目录

mv test3/*.txt test5             移动test3下以.txt结尾的文件移动到test5下

mv log1.txt -b log2.txt       -b 参数功能,文件被覆盖前做备份

8、cp 源 目标 或者

cp -t 目标 源

拷贝文件或者拷贝文件到目标目录

在没有带-a参数时,两个文件的时间是不一样的。(注意:在带了-a参数时,两个文件的时间是一致的,否则时间不一致 )

拷贝整个目录到目标目录

9、touch 参数 文件名

建立文件或者更改文件时间(可以修改文件存取时间和文件修改时间)

touch -c test                                    -c参数表示,如果文件不存在,那么不创建文件

touch -r log.log log2012.log                更新log2012.log的时间使其与log.log的时间一致

touch -t 201211142234.50 log.log        设定文件的时间戳, 其中时间戳的格式为[[CC]YY]MMDDhhmm[.SS]

10、cat

  1)、一次显示整个文件 cat fileName            显示文件内容

2)、从键盘创建一个文件 cat > fileName        只能创建新文件,也就是如果原来有这个文件,使用这个命令后,原文件会被覆盖。

3)、将多个文件合并到一个文件 或者将一个文件合并到一个文件 cat file1 file2 > file

file1和file2合并到file显示,file如果原来有内容,会被覆盖。如果没有内容,会新建。

cat -n log2012.log log2013.log                          把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里  如果是多个文件,输入到最后一个文件里

cat -b log2012.log log2013.log log.log                把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里

使用 here doc来生成文件

bogon:logX sunhongbo$ cat >log.txt <<EOF
> world
> hello
> EOF
bogon:logX sunhongbo$ cat log.txt
world
hello

here doc可以进行字符串替换。 tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!

tac log.txt

11、nl 选项 文件

给文件内容添加行号

-b  :指定行号指定的方式,主要有两种:

-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);

-b t :如果有空行,空的那一行不要列出行号(默认值);

-n  :列出行号表示的方法,主要有三种:

-n ln :行号在萤幕的最左方显示;

-n rn :行号在自己栏位的最右方显示,且不加 0 ;

-n rz :行号在自己栏位的最右方显示,且加 0 ;

-w  :行号栏位的占用的位数。

[root@localhost test]# nl -b a -n rz -w 3 log2014.log

001     2014-01

002     2014-02

003     2014-03

004     2014-04

005     2014-05

命令行号默认为六位,要调整位数可以加上参数 -w 3 调整为3位。

12、more

功能类似于cat , 不过可以设置分页显示。

而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。

more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]

+n      从笫n行开始显示

-n       定义屏幕大小为n行

+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示

-c       从顶部清屏,然后显示

-d       提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能

-l        忽略Ctrl+l(换页)字符

-p       通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似

-s       把连续的多个空行显示为一行

-u       把文件内容中的下画线去掉

ls -l  | more -5

列一个目录下的文件,由于内容太多,我们应该学会用more来分页显示。这得和管道 | 结合起来

13、less 参数 文件

分页查看文件或者其它输出

less file            查看文件

ps -ef | less      ps查看进程信息并通过less分页显示

history | less     查看命令历史使用记录并通过less分页显示

1.全屏导航

ctrl + F - 向前移动一屏

ctrl + B - 向后移动一屏

ctrl + D - 向前移动半屏

ctrl + U - 向后移动半屏

14、head 参数 文件

head -n 5 file1      显示文件file1的前五行

head -n -6 file1    显示文件file1除了后六行的所有内容

head -c 20 file     显示文件file的前20个字节

head -c -20 file   显示文件file除了后20个字节之外的所有内容

15、tail 参数 文件

tail -n 5 file         显示文件后五行内容

tail -n +5 file       显示文件从第五行开始的余下所有内容

tail -f file            循环查看文件内容,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.

ping 192.168.120.204 > test.log & //在后台ping远程主机。并输出文件到test.log;这种做法也使用于一个以上的档案监视。用Ctrl+c来终止。

16、which 可执行文件名

显示命令的路径, which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。

which ls 查看命令ls所在的目录

17、whereis

查找二进制文件、说明文件和源文件

[root@localhost ~]# whereis svn

svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz

[root@localhost ~]# whereis -b svn

svn: /usr/bin/svn /usr/local/svn

[root@localhost ~]# whereis -m svn

svn: /usr/share/man/man1/svn.1.gz

[root@localhost ~]# whereis -s svn

svn:

[root@localhost ~]#

18、locate

loacte pwd 查找和pwd相关的所有文件

locat /etc/sh 搜索etc目录下所有以sh开头的文件

19、find

find -atime -2         查找指定时间内修改过的文件,查找2 * 24  = 48小时内修改过的文件

find . -name "*.log"  当前目录下查找以.log结尾的文件, .代表当前目录

find 目录 -perm 777 查找指定“目录”下权限为777的所有文件

find . type -f -name “*.log”  查找当前目录下以.log结尾的普通类型的文件

find . -type d | sort   查找当前目录下所有目录!并排序

-type  查找某一类型的文件,诸如:

b - 块设备文件。

d - 目录。

c - 字符设备文件。

p - 管道文件。

l - 符号链接文件。

f - 普通文件。

find . -size +1000c -print 查找当前目录大于1k大小的文件

-print: find命令将匹配的文件输出到标准输出

find命令相关:

find ~ -name “*.log”  ~代表在根目录下查找 .代表当前目录以及子目录   /目录名 在指定目录下查找

find . -name "[A-Z]*" -print   想要的当前目录及子目录中查找文件名以一个大写字母开头的文件

20、find命令之exec

将查找到的文件 执行exec后的命令;命令后以分号结束,考虑到各个系统分号会有特别的意义,分号前加一个\,{}代表find的结果

find . -type f -exec ls -l {} \;   查找当前目录下的普通文件并以列表输出

find . -type f -mtime +14 -exec rm {} \;  查找14天前更改的文件并删除它们

find . -name "*.log" -mtime +5 -ok rm {} \; 在当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 按y键删除文件,按n键不删除。

find /etc -name "passwd*" -exec grep "root" {} \; find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个root用户。

find . -name "*.log" -exec mv {} .. \; 把查找到的文件移动到上一层目录

find . -name "*.log" -exec cp {} test3 \; 把查找到的文件拷贝到指定目录

21、find之xargs命令

exec命令对可接受输入的长度有限制,所以对于长的输入文件,可能会溢出;xargs就是应对这个出现的一个命令,他会将输入文件分批处理

并且有的系统对exec,每一条输入命令都会产生一个进程,这样多个输入文件会导致性能降低,而xargs只有一个进程。

find . -type f -print | xargs file   查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件

find / -name "core" -print | xargs echo "" >/tmp/core.log  查找内存信息转储文件(core dump) 并输出到coer.log文件中

find . -perm -7 -print | xargs chmod o-w        查找用户有读写执行权限的文件,并回收写权限

find . -type f -print | grep xargs “hostname”   用grep命令在所有的普通文件中搜索hostname这个词

find . -name "*.log" | xargs -i mv {} test4 移动文件

22、Linux文件:

普通文件(文本文件 二进制文件 数据接口文件)、目录文件、字符文件和块设备文件、符号链接文件和设备接口文件。

文件扩展名:.sh 脚本文件或者批处理文件

*Z, *.tar, *.tar.gz, *.zip, *.tgz 压缩文件,针对不同的压缩软件( gunzip, tar 等等),有不同的压缩文件

ls -lih 能查看文件详情,包括 文件索引inode(-i控制)等

例如:2095112 -rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

第一列:inode

第二列:文件种类和权限;

第三列: 硬链接个数;

第四列: 属主;

第五列:所归属的组;

第六列:文件或目录的大小;

第七列和第八列:最后访问或修改时间;

第九列:文件名或目录名

23、SecureCTR;

用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的。需要安装SecureCTR到主机上。

ssh是一个协议,是应用层和传输层之间的协议。SecureCRT是一款基于ssh协议的终端传输软件。

24、tar 参数 文件

tar只是打包,打包是把多个文件或目录打包成一个文件;而压缩是通过某种压缩算法把一个大文件压缩成一个小文件。

tar只有打包的功能,但是可以通过参数控制,增加打包功能。

tar cvf fileneme.tar filename 打包

tar xvf filename.tar  解包

压缩 gzip FileName

解压 gunzip filename.zip

gzip -d filename.zip

tar zcvf  filename.tar.gz filename 打包压缩

tar zxvf filename.tar.gz   解包解压

压缩 bzip2 -z filename

解压 bzip -d filename.bz2

bunzip filename.bz2

tar jcvf filename.tar.bz2 filename  打包压缩

tar jxvf filename.tar.bz2  解包解压

uncompress FileName.Z        tar Zxvf FileName.tar.Z

rar x FileName.rar  解压             rar a FileName.rar DirName 压缩

25、gzip

压缩命令

gzip * 压缩  gzip -r test1 递归压缩 压缩目录以及子目录中的文件

gzip -d file.gz 解压

26、chmod

修改文件或者目录的属主 组 和 其他用户权限

u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组

chmod a+x file   file所有用户增加可执行权限

chmod g-w file   file组用户减少写权限

chmod ug+r file   file属主和组用户增加读权限

chmod u=x file    file设置属主可执行权限

chmod -R u+x test4   对一个目录及其子目录所有文件添加权限

27、 chgrp

改变文件或者目录的组用户,使用权限是超级用户

chgrp -v bin file   把file的组用户改成bin -v代表打印详细信息

chgrp --reference==file1 file2  file2的组用户改成file的组用户

chgrp -R bin test1 改变test1目录及其子目录下的所有文件的组用户为bin

chgrp -R 100 test6  改变test1目录及其子目录下的所有文件的组用户为users(100为users群组的识别码,具体群组和群组识别码可以去/etc/group文件中查看)

28、chown

改变文件拥有者和群组

chown mail:mail file   file的属主和群组都改成mail

chowm root: file        file的属主和群组都改成root

chown :mail file        file的群组改成mail

29、df

查看磁盘空间使用情况

df -h 使用更易读的方式显示磁盘空间使用情况

30、du

查看当前目录以及子目录大小

du -h [目录或者文件名]    以更易读的方式查看目录或者文件的大小

31、top

查看各个进程资源占用情况

32、free

查看系统空闲内存、已用物理内存以及swap交换区内存(虚拟内存),以及被内核使用的buffer。

free -s 10 周期性显示内存使用情况,10s刷新一次

33、vmstat

查看系统虚拟内存、进程、CPU活动

34、iostat

查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况

35、lsof

查看当前打开的文件的信息

36、ifconfig

获取网络接口等配置信息或者修改。

ifconfig eth0 up 打开一块网卡名字叫eth0

ifconfig eth0 down 关闭网卡eth0

ifconfig eth0 add 33ffe:3240:800:1005::2/64  为网卡配置IPV6地址

ifconfig eth0 del 33ffe:3240:800:1005::2/64    删除IPV6地址

ifconfig eht0 hw ether 00:aa:bb:cc:dd:ee         修改网卡物理地址

ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255 配置网卡iP地址 子网掩码和广播地址

ifconfig eth0 arp  启用网卡eth0的arp协议    -arp代表关闭网卡的arp协议

ifconfig eth0 mtu 1500  设置最大传输单元为1500bytes

37、route

显示路由表

route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 添加设置网关

route add -net 224.0.0.0 netmask 240.0.0.0 reject 增加一条屏蔽路由 目的地址为 224.x.x.x 将被拒绝

route del -net 224.0.0.0 netmask 240.0.0.0

route del -net 224.0.0.0 netmask 240.0.0.0 reject  删除路由记录

route del default gw 192.168.120.240

route add default gw 192.168.120.240 删除和添加默认网关

38、ping

测试网络连通性

ping -c 5  www.58.com   ping指定次数公网上的站点

ping -i 3 -s 1024 -t 255  www.58.com   3秒发送一次,发送字节数为1024,TTL = 255 代表存活时间,经过一个路由会被减1

39、traceroute

探测发送数据包到目的设备之间经过的设备发送数据到目的设备直到其返回需要的时间,默认一个设备发送三次数据。

traceroute -q 4 www.58.com
traceroute to ngx-out-1.op.58.com (115.159.231.139), 64 hops max, 52 byte packets
1 localhost (172.16.140.1) 5.698 ms 8.428 ms 5.090 ms 7.119 ms     // 发送四次数据

traceroute -r www.baidu.com  绕过正常路由表 直接发送到网络相连的主机

40、date cal

查看当前时间和日期

41、grep

关键字查找

42、wc

统计当前文件的行数,单词数,字节数。

使用管道,ls - al | wc -l  查看当前目录下文件数

43、ps

查看当前进程

44、watch

检测命令的运行结果,周期性的执行,无需手动多次执行

45、at

设置定时任务