Linux 常用命令列表
常用命令列表
基本文件操作类
cd
:进入目录,cd -
上一个目录ls
:目录列表,-rt
安时间倒序,-l
详情cp
:复制文件,-r
复制文件夹,-u
以更新的方式复制mv
:移动文件/文件夹rm
:删除文件,-r
删除文件夹,-f
强制方式mkdir
:创建文件夹-p
,连父目录一起创建pwd
:输出当前目录位置
权限操作类
su
:chmod
:修改文件/目录权限chown
:修改文件/目录拥有者chgrp
:修改文件/目录所归属组usermod
:修改用户帐号的各项设定
用户与组
groups
: 查看组
查看文件与编辑文件类
cat
:用于连接文件并打印到标准输出设备上。合并多个文件cat *.sql >xxx.sql
tail
:命令可用于查看文件的内容history
:显示历史执行命令grep
:用于查找文件里符合条件的字符串。也可以提取指字符,如按正则表达式提取mac地址grep -E -o '(\w{2}:){5}\w{2}'
tar
:-cvf/xvf
建立,还原备份文件的工具gzip
:文件经它压缩过后,其名称后面会多出”.gz”的扩展名,-d
解压find
:指定目录下查找文件vim
:编辑器sed
:自动编辑一个或多个文件;简化对文件的反复操作awk
:文本分析工具,详情wc
:统计字数sort
: 排序,-u
去重,-n
以数值方式比较,-t
指定分隔符,-k
指定第几列uniq
: 去重,连续重复行去重,可以先 sort再uniq,实现去重xargs
: 给其他命令传递参数的一个过滤器。拷贝文件ls *.jpg | xargs -n1 -I cp {} /data/images
,删除文件sudo xargs rm -rf <filelist.txt
tee
: 把一个标准输入,变成标准输出及一个或者多个文件输出。tr
: 将字符进行替换压缩和删除。如删除数字echo "hello 123 world 456" | tr -d '0-9'
,大小转化echo "HELLO WORLD" | tr 'A-Z' 'a-z'
查看系统状态和系统操作
ps
:显示当前进程的状态,-aux
显示所有包含其他使用者的行程kill
:于删除执行中的程序或工作,kill -0 xxx
彻底杀死进程top
:实时显示进程和线程的动态df
:显示目前在Linux系统上的文件系统的磁盘使用情况统计uname
:显示电脑以及操作系统的相关信息,-a,-m,-n,-s,-v
ifconfig
:于显示或设置网络设备,主要用于看本机ipnetstat
:用于显示网络状态service
:服务管理,--status-all
列出所有服务crontab
:定时任务nohup
:后台命令tmux
: 新开命令行窗口w
: 列当前用户last
: 当前用户最近的登录记录lastlog
: 所有用户的最近一次登录记录lsof
: 查看当前系统文件的工具,lsof -i:22
查看端口占用gpasswd
sudo gpasswd -a ${USER} docker
把当前用户添加到docker组中
多台之间机器
scp
:scp root@192.168.2.3:/home/root/others/music /home/space/music/1.mp3
复杂的重点描述
sed
sed 功能强大,这里只写几个常用
sed -i 's/xxx/yyy/g' file
: 把文件file内容中的所有xxx替换为yyysed -i 's/^db.host.*/db.host=1.1.1.1/g' testtxt.txt
: 正则表达式,把以db.host开头的,进行替换。如果是动态内容,需要'"$XX"'
这样写sed -i '1czzz' file
: 把文件file中的第一行替换成zzzsed -i '$a end of file' file
: 在文件file最后一行新增end of file
sed -i ""s/\r//"" test.file
: 去掉文件中的\r
动作说明
a
:新增,a 的后面可以接字串,而这些字串会在新建在下一行c
:取代,c 的后面可以接字串,这些字串可以取代指定位置的行d
:删除i
:插入,i 的后面可以接字串,而这些字串会在上一行出现p
:打印,亦即将某个选择的数据印出s
:搜寻并替换
awk
从输出列及筛选列的角度,功能可类简化版excelnet.txt
为处理样例,由netstat
产生
- 输出对应列:
awk '{print $x}'
,$1..$n表示第几列。$0表示整个行。 - 格式化输出:
awk '{printf "%s %s\n",$4,$5}'
- 过滤记录:
awk '$3==0 && $6=="LISTEN" ' net.txt
。其他比较运算符:!=
,>
,<
,>=
,<=
- 内建变量:
awk '$3==0 && $6=="LISTEN" || NR==1 ' net.txt
输出表头 - 指定分格符:
awk 'BEGIN{FS=":"} {print $1,$3,$6}' /etc/passwd
- 字符串匹配:
awk '$6 ~ /FIN|TIME/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" net.txt
- 折分文件:
awk 'NR!=1{print > $6}' net.txt
这里>
是重定向的符号,按第6列的类型分类生成多个文件 - 统计:
ls -l *.cpp *.c *.h | awk '{sum+=$5} END {print sum}'
,计算所有的C文件,CPP文件和H文件的文件大小总和. -F
: 定界符length
: 文本长度
内建变量 列表
|–|–|
|$0|当前记录(这个变量中存放着整个行的内容)|
|$1~$n|当前记录的第n个字段,字段间由FS分隔|
|FS|输入字段分隔符 默认是空格或Tab|
|NF|当前记录中的字段个数,就是有多少列|
|NR|已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。|
|FNR|当前记录数,与NR不同的是,这个值会是各个文件自己的行号|
|RS|输入的记录分隔符, 默认为换行符|
|OFS|输出字段分隔符, 默认也是空格|
|ORS|输出的记录分隔符,默认为换行符|
|FILENAME|当前输入文件的名字|
grep
常见选项:
-v
: 反转查找,选那些没匹配上的。-A
,-B
,-C
,-NUM
: 上下文打印多少行-E
:用正则表达式去匹配-i
: 忽略字符大小写的差别-c
: 计算匹配的列数-n
: 显示行号-r
: 递归搜索-o
: 显示匹配上的
find
常见选项:
-perm
: 按权限查找,有mode
精确匹配,/mode
存在性匹配,-mode
完整性匹配,三种方式-size
: 按大小查找,-group
: 按文件归属组-user
: 按文件归属者
xargs
xargs命令的作用,是将标准输入转为命令行参数。
1 |
|
-d
: 分隔符 默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。可用-d
指定分隔符。-l
,-L
,-n
: 指定转化为命令行的方式。-L
按行执行,-n
按个数指定。-p
,-t
: 打印出具体的命令。-p需要确认,-t 不需要。-I
:-I
指定每一项命令行参数的替代字符串。如cat test.txt | xargs -t -I str sh -c 'echo str; echo str'
-P
: 指定进程数。默认是1。
netstat
主要选项列表
-n
,--numeric
直接使用IP地址,而不通过域名服务器,端口上也显示数字。-i
,--interfaces
显示网络接口信息-l
,--listening
显示所有在监听状态的相端口信息-p
,--programs
显示正在使用Socket的程序识别码和程序名称-A<网络类型>
或--<网络类型>
列出该网络类型连线中的相关地址。网络类型有--inet|-4
,--inet6|-6
,--unix|-x
,--ipx
,--ax25
,--netrom
,--ddp
,--bluetooth
,大多数关注是inet-4下的网络情况-t
或--tcp
显示TCP传输协议的连线状况。-u
或--udp
显示UDP传输协议的连线状况。-s
显示网络统计信息
socat
socat [options] <address> <address>
address就类似于一个文件描述符,socat所做的工作就是在2个address指定的描述符间建立一个pipe用于发送和接收数据。
- -,STDIN,STDOUT :表示标准输入输出,可以就用一个横杠代替
- /var/log/log.txt : 也可以是任意路径
- TCP:: : 建立一个TCP连接作为数据流
- TCP-LISTEN: : 建立TCP监听端口
- EXEC: : 执行一个程序作为数据流
在这些描述后可以附加一些选项,用逗号隔开,如fork,reuseaddr,stdin,stdout,ctty等。
可以将一个使用标准输入输出的单进程程序变为一个使用fork方法的多进程服务,非常方便。socat TCP-LISTEN:1234,reuseaddr,fork EXEC:./helloworld
nohup socat tcp-l:8888,fork exec:"python3 /root/server.py",reuseaddr &
crontab
crontab -e
来编辑定时任务列表* * * * * cmd
这样的格式- 命令要写绝对路径
- 重启时要执行的命令用
@reboot
后面写。(reboot后面挂载samba,失败了)
默认Ubuntu是没有打开crontab的日志的。
要去打开,才方便排错。
打开方法:
修改rsyslog文件,将/etc/rsyslog.d/50-default.conf 文件中的
#cron.*
前的#删掉;
重启rsyslog服务service rsyslog restart;
重启cron服务service cron restart;
tail -f /var/log/cron.log;
vim
- 如何在VIM中保存编辑的只读文件
:w !sudo tee %
nohup
nohup cmd >xx.log 2>&1 &
以这样的方式运行后台程序。
nohup -> 不挂起的含义
systemctl
systemctl -t service
列出服务systemctl start httpd
打开服务systemctl stop httpd
停止服务systemctl status httpd
查看服务状态systemctl show httpd
查看服务配置systemctl list-unit-files --type=service
查看各服务开机自启情况systemctl list-dependencies httpd.service
获取服务的依赖项列表
update-rc.d
update-rc.d ssh enable
开机启动
没归类的
编辑
.bashrc
,定义好快捷键别名,source .bashrc
生效编辑
/etc/sudoers
文件,在后面加上xxx ALL=NOPASSWD: ALL
,xxx为用户,可以sudo时不用输入密码(仅偷懒使用)。date "+%Y_%m_%d_%H_%M_%S"
日期格式化timedatectl list-timezones
列出时区,sudo timedatectl set-timezone Asia/Shanghai
设置时区生成随机密码命令:
strings /dev/urandom |tr -dc A-Za-z0-9 | head -c20; echo
How to Set the Proxy for APT on Ubuntu 18.04
sudo vim /etc/apt/apt.conf.d/proxy.conf
1 |
|
bash 快捷键
ctrl + l
清屏ctrl + r
查之前的命令ctrl + a
到最前ctrl + e
到最后ctrl + u
清一行ctrl + b
前移一个字符(backward)ctrl + f
后移一个字符(forwar)ctrl + w
当前光标到临近左边单词结束ctrl + u
删除光标左边所有ctrl + k
删除光标右边所有ctrl + n
下一条命令ctrl + p
上一条命令
(因为alt被我绑定做别的快捷键,这里就没写与alt相关的)