天天看点

Linux命令

文件相关:

磁盘与目录:df、ls、cd、pwd、$PWD

文件编辑:vim、sed

文件权限:chmod、chown

文件搜索:find

文件内容:cat、more、less、grep

df:

用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计

# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda6 29G 4.2G 23G 16% /

udev 1.5G 4.0K 1.5G 1% /dev

tmpfs 604M 892K 603M 1% /run

none 5.0M 0 5.0M 0% /run/lock

none 1.5G 156K 1.5G 1% /run/shm

-h选项,通过它可以产生可读的格式df命令的输出:显示的数字形式的'G'(千兆字节),"M"(兆字节)和"K"(千字节)

ls:

ls / ---列出根目录下的所有目录

-a 显示所有文件及目录 (. 开头的隐藏文件不会列出)

-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出

cd:

跳到目前目录的上一层:cd ..

跳到目前目录的上上两层 :cd ../..

cd [dirName]:dirName:要切换的目标目录

跳到自己的 home 目录 :cd ~

pwd:用于显示工作目录

chmod:

r=4,w=2,x=1

chmod 777 file

find:

将目前目录及其子目录下所有延伸档名是 c 的文件列出来

# find . -name "*.c"

将目前目录及其子目录下所有最近 20 天内更新过的文件列出

# find . -ctime -20

cat:用于连接文件并打印到标准输出设备上

把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:

cat -b textfile1 textfile2 >> textfile3

清空 /etc/test.txt 文档内容:

cat /dev/null > /etc/test.txt

more:以一页一页的形式显示.最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示

逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示:more -s testfile

从第 20 行开始显示 testfile 之文档内容:more +20 testfile

less:可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

查看文件:less log2013.log

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

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

浏览多个文件:less log2013.log log2014.log

cat、more、less的区别:

cat是一次性显示整个文件的内容,还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况;

more和less一般用于显示文件内容超过一屏的内容,并且提供翻页的功能。more比cat强大,提供分页显示的功能,less比more更强大,提供翻页,跳转,查找等命令。而且more和less都支持:用空格显示下一页,按键b显示上一页。

进程:top、ps

top:用于实时显示 process 的动态

显示进程信息:top

显示指定的进程信息:top -p 139 //显示进程号为139的进程信息,CPU、内存占用率等

显示完整命令:top -c

以批处理模式显示程序信息:top -b

以累积模式显示程序信息:top -S

设置信息更新次数:top -n 2 //表示更新两次后终止更新显示

设置信息更新时间:top -d 3 //表示更新周期为3秒

ps:用于显示当前进程的状态

显示进程信息:ps -A

显示指定用户信息:ps -u root //显示root进程用户信息

显示所有进程信息,连同命令行:ps -ef //显示所有命令,连带命令行

ps看到的是命令执行瞬间的进程信息,而top可以持续的监视

ps只是查看进程,而top还可以监视系统性能,如平均负载,cpu和内存的消耗

另外top还可以操作进程,如改变优先级(命令r)和关闭进程(命令k)

ps主要是查看进程的,关注点在于查看需要查看的进程

top主要看cpu,内存使用情况,及占用资源最多的进程由高到低排序,关注点在于资源占用情况

netstat:用于显示网络状态

显示详细的网络状况:netstat -a

显示当前户籍UDP连接状况:netstat -nu

显示UDP端口号的使用情况:netstat -apu

显示网卡列表: netstat -i

显示网络统计信息:netstat -s

显示监听的套接口:netstat -l

正则表达式:

一.匹配字母:\b\b

例如:

1.找出所有的hi单词

\bhi\b

2.hi单词后面有lucy单词

\bhi\b.*\blucy\b

二.匹配数字:\d

例如:以0开头然后是2个数字,然后是一个连字号'-',最后是8个数字

0\d{2}-\d{8}

实战:

匹配以字母a开头的单词:\ba\w*\b

匹配刚好6个字符的单词:\b\w{6}\b

匹配1个或更多连续的数字:\d+

5位到12位QQ号:^\d{5,12}$

正则表达式练习地址(在线正则表达式测试): 

linux命令练习工具:Git Bash

grep:用于查找文件里符合条件的字符串

查找文件内容包含root的行

grep -n root test.txt

查找文件内容不包含root的行

grep -nv root test.txt

查找文件内容不包含root的行,不显示行号

grep -v root test.txt

查找以s开头的行

grep ^s -n test.txt

查找以n结尾的行

grep n$ -n test.txt 或者grep -n n$ test.txt (-n放在全面和后面都可以)

运行shell

chmod +x test.sh 给test.sh脚本赋予可执行的权限

执行脚本:

第一种方法:./test.sh

第二种方法:/bin/sh test.sh

vi/vim的用法 

编辑并创建文件:vim 文件名

点击键盘Insert进入插入模式 可以进行编辑

编辑完之后点击Esc

:wq 保存退出

:q! 不保存强制退出

sed

sed是流编译器,一次处理一行内容

常用动作

a:新增 如:实战1、2

c: 取代 如:实战5

d: 删除 如:实战6

i: 插入 如:实战7

s: 取代 如:实战3

1.在第四行后添加新的字符串

sed '4a newline' test.txt

2.在第四行前添加新的字符串

sed '4i newline' test.txt

注意使用以上命令后,并没有对文件进行修改,使用cat test.txt查看文件时,文件的内容没有发生改变

3.替换文件中的内容

替换文件中的root为hello

sed 's/root/hello/' test.txt

当文件中的某一行出现多个root时,如root h root ,则只能替换第一个root,执行结果:hello h root

替换所有的root为hello

sed 's/root/hello/g' test.txt

替换之后再cat test.txt查看文件,文件内容没有变化

4.如果要对文件真正进行修改 (加上-i)

sed -i 's/root/hello/g' test.txt

执行之后 再cat test.txt查看文件,文件内容已经将root全部改为了hello

5.替换2到5行的内容

$ cat test.txt

root h root h root

aa

bb

cc

root

$ sed '2,5c hello' test.txt

hello

6.删除第2到5行的内容

sed '2,5d' test.txt

7.在第2行前插入一行内容

sed '2i newline' test.txt

awk

命令解析:

awk 'pattern + action' [filenames]

-pattern 正则表达式

-action 对匹配到的内容执行的命令

常用参数:

OFS 输出域分隔符

ORS 输出记录分隔符

RS 控制记录分隔符

$0 整行的记录

$1 表示当前行的第一个域。。。以此类推

BEGIN 处理文本之前要执行的操作

END 处理文本之后要执行的操作

FS 设置输入域分隔符,等价于命令行-F选项

NF 浏览记录的域的个数(列数)

NR 已读的记录数(行数)

1.以冒号进行分隔,打印test.txt第二列的内容

$ cat test.txt

root:aa:bb:cc

bb:aa:cc:11

cc:aa:xx

root:cc:aa

$ awk -F: '{print $2}' test.txt

aa

cc

-F: 表示指定分隔符为冒号

2.打印包含root的所有行所有列的内容

$ awk -F: '/root/{print $0}' test.txt

$0 表示整条记录

/root/ 表示正则表达式:包含root的内容

{print $0} 表示动作:打印整体记录

3.打印第二行信息

$ awk -F: 'NR==2{print $0}' test.txt

NR 指定行数

4.使用begin加入标题--在打印第1、2列之前打印begin

$ awk -F: 'BEGIN{print "Begin"}{print $1,$2}' test.txt

Begin

root aa

bb aa

cc aa

root cc

5.自定义分隔符 以|进行分隔,打印出所有的内容

$ echo "111 222|333 444|555 666"|awk 'BEGIN{RS="|"}{print $0}'

111 222

333 444

555 666

bash编程

定义与使用变量

定义变量

a=1

b="abc"

使用变量

打印变量a: echo $a

打印变量b: echo $b

只读变量

a="123"

readonly a

删除变量

unset 变量名

注意:不能删除只读变量,想删除只读变量,直接关闭命令窗口即可,因为变量的有效范围只在当前命令窗口

定义数组:

a=(1 A B 2 "a")

打印数组中的第一个元素

echo ${a[0]}

打印数组中的所有元素

echo ${a[*]}

或者echo ${a[@]}

数组单个定义

b[0]=111

b[2]=333

$ echo ${b[0]}

111

$ echo ${b[2]}

333

echo ${b[1]} 执行结果为空

上一篇: linux 命令
下一篇: Linux命令