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 :于显示或设置网络设备,主要用于看本机ip
  • netstat :用于显示网络状态
  • 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替换为yyy
  • sed -i 's/^db.host.*/db.host=1.1.1.1/g' testtxt.txt : 正则表达式,把以db.host开头的,进行替换。如果是动态内容,需要'"$XX"'这样写
  • sed -i '1czzz' file : 把文件file中的第一行替换成zzz
  • sed -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

从输出列及筛选列的角度,功能可类简化版excel
net.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
xargs [-options] [command]
  • -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
2
Acquire::http::Proxy "http://user:password@proxy.server:port/";
Acquire::https::Proxy "http://user:password@proxy.server:port/";

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相关的)

参考


Linux 常用命令列表
https://blog.fengcl.com/2018/04/27/linux-common-use-command/
作者
frank
发布于
2018年4月27日
许可协议