6

实用的linux 命令(上)

 2 years ago
source link: https://codeshellme.github.io/2020/04/used-linux-cmd1/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

实用的linux 命令(上)

2020-04-16

4374 字 阅读约需 9 分钟

今天介绍几个我常用的Linux 命令,每个命令这里只介绍其常用参数。

对于每个Linux 命令都可以使用man + 命令名称,查看其完整使用方法。

0,man

man 命令是一个非常有用的命令,当你不会使用某个Linux 命令时,可以使用man 来查看其帮助文档。man 命令查到的手册来源于目录 /usr/share/man/,可以看到该目录下有9 个这样的目录:

>>> ls /usr/share/man/| grep man
______________________________

man 手册分9 种,用数字[1-9] 来区分,分别代表的含义如下(可以用man man 命令来查看): | 数字 | 含义 | |–|–| | 1 | System commands 系统命令 | | 2 | System calls 系统函数 | | 3 | Library calls 库函数 | | 4 | Special files 特殊文件| | 5 | File formats 文件格式| | 6 | Games 游戏和娱乐| | 7 | Miscellaneous 杂项| | 8 | System administration commands 管理员root 命令 | | 9 | 其它 |

可以通过设置不同的数字来查看不同的手册,如下:

man 1 系统命令名
man 2 系统函数名
man 3 库函数名

如果没有带这个数字,则会从1 查到9,直到查到第一个为止。

一,文件管理

1,cat

cat 命令用于查看文件内容,该命令会将文件的所有内容输出到控制台

>>> cat hello.c
______________________________________
// 包含头文件
#include <stdio.h>
// 程序入口,main 函数,返回值类型为int 类型
int main()
// 打印字符串
printf("hello world .\n");
return 0;

cat 命令常用参数: | 参数| 含义 | |–|–| | -n | 对输出的内容加上行号 | |-b|对输出的内容加上行号,空白行不计入行号| |-s|将两个以上的空白行,显示为一个空白行|

cat 命令会将文件内容快速的输出到控制台,它并不能控制浏览文件的进度。如果想控制浏览文件的进度,可以使用moreless 命令。

2,more

more 命令用于查看Linux 文件的内容,用more filename 打开一个文件后,可以控制向上向下翻滚页面。

>>> more log.txt
________________________________
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
--More--(2%) (`注`:这里显示浏览页面的`进度百分比`)

more 命令常用操作:

操作 含义
Enter 键 向下翻滚一行
空格键 向下翻滚一页一页的大小可以使用 -N 参数来设置
Ctrl + B (本操作并不是很方便 ) 向上翻滚一页一页的大小可以使用 -N 参数来设置

使用下面的方式将一页 的大小设置为10 行,这时每次向上或者向下翻页时,每次会滚动10 行:

more -10 log.txt

more 命令可以与cat 命令来配合使用,比如用cat显示行号,然后用more 控制翻页,并且页的大小为10 行:

>>> cat -n log.txt| more -10
——————————————————————————————————————————
56 1111111111111111111111111111111111
57 1111111111111111111111111111111111
58 1111111111111111111111111111111111
59 1111111111111111111111111111111111
60 1111111111111111111111111111111111
61 1111111111111111111111111111111111
62 1111111111111111111111111111111111
--More--
(`注`:第一列为行号,并且这时`进度百分比`消失了,而且`不能向上翻页`)

3,less

less 命令 也是用来浏览文件内容,但与more 命令 有些不同,less 命令有更多的操作。

用命令less filename 打开文件后的常用操作:

操作 含义
b 向上翻一页
d或者空格键 向下翻一页
k或者方向键↑ 向上翻一行
j或者方向键↓或者Enter 键 向下翻一行
/pattern 在页面中搜索字符串pattern,匹配到的字符串会高亮显示,可以用-i 参数来忽略大小写
n 锁定下一个匹配到的字符串pattern
N 锁定上一个匹配到的字符串pattern
q 退出当前文件

less 命令常用参数: | 参数 | 含义 | |–|–| | -i | 忽略搜索/pattern时的大小写 | | -m | 显示类似more 命令的进度百分比 | | -N | 显示行号 | | -s | 连续空白行显示为一行 |

如下命令,即显示行号又显示进度百分比

less -mN README.md

效果如下:

4,head

head 命令用于从一个文件的开头处查看文件。常用参数如下:

参数 含义
-n 查看一个文件的前N行,默认为前10 行
-c 查看一个文件的前N字节

如下命令查看hello.c 文件的前5 行:

>>> head hello.c -n 5
_______________________________________
// 包含头文件
#include <stdio.h>
// 程序入口,main 函数,返回值类型为int 类型
int main()

如下命令查看hello.c 文件的前20 字节:

>>> head hello.c -c 20
_______________________________________
// 包含头文件

5,tail

tail 命令的含义与head 恰好相反,tail 从一个文件的尾部开始查看,常用参数如下:

参数 含义
-n 查看一个文件的最后N行,默认为后10 行
-c 查看一个文件的最后N字节
-f 实时查看文件的内容,并输出到控制台,常用于查看日志 输出

如下命令查看hello.c 文件的最后5 行:

>>> tail hello.c -n 5
_______________________________
// 打印字符串
printf("hello world 1.\n");
return 0;

如下命令查看hello.c 文件的最后20 字节:

>>> tail hello.c -c 20
_______________________________
return 0;

6,find

find 命令用来查找指定目录下符合指定条件的文件,并进行指定操作,其语法如下:

find `目录` `条件` `操作`

6.1 目录(可不写)

目录表示在哪个目录下进行查找。例如./ 代表当前目录,/ 代表根目录。如果没有写目录,默认会在当前目录及其子目录下查找。

6.2 条件(必须写)

查找符合怎样 条件的内容,支持如下常用条件(这里并没有列出所有可用条件):

参数 含义
-name 按照文件名称查找,支持* 通配符
-perm 按照文件权限查找
-user 按照文件属主查找
-group 按照文件所属的组查找
-prune 忽略某个目录
-mtime -n/+n 按照文件更改时间来查找,-n表示n天之内,+n表示n天之前
-atime -n/+n 按照文件访问时间来查找
-ctime -n/+n 按照文件创建时间来查找
-type 按照文件类型查找
-size N[bcwkMG] 按照文件大小查找,bcwkMG 是可选的单位
-depth 使查找在进入子目录前先行查找完本目录
-maxdepth 设置查找目录的最大深度
-mindepth 设置查找目录的最小深度

其中-type 支持的类型如下: | 类型 | 含义 | |–|–| |f|普通文件| | d | 目录 | | l | 符号链接文件 | |s|socket| | b | 块设备文件 | | c | 字符设备文件 | | p | 管道文件 |

6.3 操作(可不写)

对查找出来的文件进行怎样的操作,支持如下操作: | 操作 | 含义 | |–|–| | -print | 输出到控制台,不写的话,默认为此操作| |-exec|对查找到的文件执行shell命令| |-ok|对查找到的文件执行shell命令,在执行命令之前会先提示用户是否执行,比-exec 更安全|

exec-ok 的格式为:

-exec/-ok command {} \;

其中可变的只有command,其它都是固定写法,不用改变,commandLinux 命令,比如lsrm

6.4 例子

find . -name "*.log" `在当前目录及其子目录查找,文件名以".log" 结尾的文件,并输出`
find . -perm 777 `在当前目录及其子目录查找,权限为"777" 的文件,并输出`
find . -type d `在当前目录及其子目录查找,文件类型为目录的文件,并输出`
find . -name "*.c" -exec rm {} \; `在当前目录及其子目录查找,文件名以".c" 结尾的文件,并删除`
find . -size +100c `在当前目录及其子目录查找,文件大小大于100字节的文件,并输出`
find . -size -100c `在当前目录及其子目录查找,文件大小小于100字节的文件,并输出`
find . -size 100c `在当前目录及其子目录查找,文件大小等于100字节的文件,并输出`

7,chmod

在类Unix 系统中,文件的调用权限分三级,分别是:文件拥有者群组其他。文件的操作权限 分三种分别是:可读可写可执行

chmod 命令用于修改文件的调用权限操作权限,该命令的语法格式如下(这里只列出了-R 参数,还有其它):

chmod [-R] `mode` `filename`

7.1 R参数(可选)

-R 参数表示,是否操作当前目录下的所有文件与子目录。

7.2 mode

mode 包含三部分:[ugoa]+-=[rwx],它们的含义如下:

字母 含义
u 该文件的拥有者
g 与该文件所属同一群组者
o 其它用户
a 所有用户,即ugo 三者皆是
+ 增加权限
- 取消权限
= 唯一设定权限,即设置为只有一个权限
r 可读权限
w 可写权限
x 可执行权限

7.3 例子

chmod ugo+r file `将文件file 设为所有人皆可读`
chmod a+w file `将文件file 设为所有人皆可写`
chmod ug+w,o-w file1 file2 `将文件file1 file2设为该文件拥有者,与其所属同一个群组者可写入,但其它用户不可写`
chmod -R a+r dir/* `将dir 目录下的所有文件与子目录设为所有人可读`

8,chown

chown 命令用于将文件的拥有者改为指定的用户或组。

一般来说chown 命令由root 使用,因为普通用户没有权限改变他人文件的拥有者,也没有权限把自己的文件拥有者改设为他人。

chown 命令的语法格式如下:

chown [-R] user[:group] file_list

-R 参数表示,是否操作当前目录下的所有文件与子目录。

其它参数含义:

参数 含义
user 新的文件拥有者
group 新的文件拥有者组
file_list 要修改的文件,可以是一个文件,也可以是一个文件列表
chown runoob:runoobgroup file `将文件file 的拥有者设为runoob,群组设为runoobgroup`
chown -R root:root dir/* `将dir/ 目录下的所有文件与子目录的拥有者设为runoob,群组设为runoobgroup`

9,scp

scp 命令用于远程复制目录或文件,它基于sshscpsecure copy 的缩写。scp 命令是rcp 命令的加强版,scp 是加密传输,rcp 是非加密传输。

scp 的语法格式如下:

scp [可选参数] file_source file_target

有如下常用可选参数: | 参数 | 协议 | |–|–| | -1 | 使用协议ssh1 传输| | -2 | 使用协议ssh2 传输| | -4 | 使用IPv4协议寻址| | -6 | 使用IPv6协议寻址| | -C | 使用压缩 | | -r | 递归复制整个目录 | |-P|指定传输端口|

scp local_file remote_username@remote_ip:remote_folder `指定了用户名,命令执行后需要再输入密码`
scp local_file remote_ip:remote_folder `没有指定用户名,命令执行后需要输入用户名和密码`
scp -r local_folder remote_username@remote_ip:remote_folder `复制目录`
scp -r local_folder remote_ip:remote_folder `复制目录`
scp remote_username@remote_ip:remote_file local_folder `从远程复制到本地`
scp -r remote_username@remote_ip:remote_folder local_folder `从远程复制到本地`

二,文档处理

10,wc

wc 命令用于计算行数字数文件大小(以字节为单位),其语法格式如下:

wc [-lcw] filename

其参数含义如下: |参数| 含义 | |–|–| | -l | 计算文件行数 | | -c | 计算文件大小 | | -w | 计算文件字数 | |不带参数|以上三者都会计算|

11,grep

grep 命令用于查找文件中符合特定条件的字符串,其语法格式如下:

grep `[参数]` `匹配条件` `文件`

常用参数如下:

参数 含义
-c 计算符合条件的行数
-e 使用正则表达式,一个-e 后只能跟一个pattern,可以写多个-e
-E 使用正则表达式,可以使用| 来分割多个pattern ,从而写多个pattern
-i 忽略大小写
-l 只列出符合条件文件名
-L 只列出不符合条件文件名
-n 显示行号
-o 只显示匹配pattern 的部分,这个参数很有用
-v 显示不符合条件的所有行
-r 递归目录查找
--color 使匹配到的字符串高亮显示
-A<行数N> 除了显示符合条件的那一行之外,还显示该行之后N行的内容
-B<行数N> 除了显示符合条件的那一行之外,还显示该行之前N行的内容
-C<行数N> 除了显示符合条件的那一行之外,还显示该行之前和之后N行的内容
grep test *file `在当前目录下,从所有的以"file" 为后缀的文件中,匹配字符串"test"`
grep -r hello ./ `在当前目录下,递归所有的文件和目录,匹配字符串"hello"`
grep -v hello *txt `在当前目录下,从所有的以"txt" 为后缀的文件中,显示所有不匹配字符串"hello" 的行`

下面三个命令sortuniqawk 相对来说较复杂,限于篇幅,所以不在本文中详细介绍,具体可点开相应链接查看。

12,sort

sort 命令用于将文本内容进行排序,其以文本内容的为单位,以ASCII 码的次序进行排列。

详见这里

13,uniq

uniq 命令用于检查及删除文本文件中重复出现的行列。

详见这里

14,awk

awk 命令是一个强大的文本分析工具,它有着复杂的功能。

详见这里


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK