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}$
正则表达式练习地址(在线正则表达式测试):https://tool.oschina.net/regex

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的用法:https://www.cnblogs.com/itech/archive/2009/04/17/1438439.html
编辑并创建文件: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
root h root h root
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
aa
aa
cc

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

2.打印包含root的所有行所有列的内容
$ awk -F: '/root/{print $0}' test.txt
root:aa:bb:cc
root:cc:aa

$0 表示整条记录
/root/ 表示正则表达式:包含root的内容
{print $0} 表示动作:打印整体记录

3.打印第二行信息
$ awk -F: 'NR==2{print $0}' test.txt
bb:aa:cc:11
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]} 执行结果为空

posted @ 2021-08-05 15:00  zhanchenglan  阅读(37)  评论(0编辑  收藏  举报