Ubuntu常用命令和文件笔记(附 管道操作)

常用命令

tar系列 压缩-解压

.tar.gz压缩tar -zcvf 目的包名.tar.gz 文件a 文件b ...
.tar.gz解压tar -zxvf 包名.tar.gz -C 目的文件名
.tar.bz2压缩tar -jcvf 目的包名.tar.bz2 文件a 文件b ...
.tar.bz2解压tar -jxvf 包名.tar.bz2 -C 目的文件名
.tar.xz压缩tar -cvf 目的包名.tar 文件a 文件b ...
xz -z 目的包名.tar
.tar.xz解压xz -d 包名.tar.xz
tar -xvf 包名.tar -C 目的文件名


kill 系列

kill -9 pid号强制杀死进程
killall 程序名杀死程序下的一系列进程
pkill 程序名同killall
xkill 程序名杀死图形界面程序


后台运行进程

nohup 命令 &忽略挂断信号,且标准输入输出重定向到nohup.outnohup python3 Untitled-1.py &
(命令 &)运行一个新的session,且ppid为1,因此不属于当前终端(python3 Untitled-1.py &)


查看文件大小

du -sh 文件


查找

  • 简单查找

    • 按文件名
      • locate 文件名
    • 按文件内容
      • grep -r 文件名 查找目录
  • 高级查找

    • find 查找目录 -参数类型 参数 [-ls][-exec 执行命令 参数 {} \;]
按名称-name 文件名文件名开头用通配符需要 来转义
按类型-type 类型:f, d等f表示文件,d表示文件夹
按大小-size +/-文件大小+512k表示512kB以上,-1M表示1MB以下
按修改时间-mtime +/-天数+3表示三天前,-3表示三天内
按创建时间-ctime +/-天数
按访问时间-atime +/-天数
按用户-user 用户名
按权限-perm 3位八进制权限每一位8进制数的二进制位表示rwxr的组合,而3位8进制数分别表示所有者,所属组和其他用户,比如755表示文件所有者可读可写可执行,所属组和其他用户可读可执行


dpkg

安装dpkg -i 软件包名
删除dpkg -r 软件包名
显示信息dpkg -l 软件包名
列出关联文件dpkg -L 软件包名
查找deb包dpkg --list | grep 包名


网络相关

域名解析

  • 简单查询:
    • host 域名
  • 高级查询:

    • dig 域名 [*@域名解析服务器*][*记录类型:A,CNAME等*] [**+trace** *+nostat +nocomment*]
  • 清除dns缓存:

    • /etc/init.d/dns-clean start

netstat

  • 查看服务[tcp/udp]:netstat -anp[t/u] | grep 服务名
  • 查看端口[tcp/udp]:netstat -anp[t/u] | grep 端口号
  • 内核路由表:netstat -rn


ssh 连接

登录ssh 用户@主机 [-p 端口号]默认22号端口
获得主机分配的终端ssh -T 用户@主机可用来测试连接
生成rsa公钥私钥ssh-keygen -t rsa
发送公钥ssh-copy-id 用户@主机
查找ssh-keygen -F 主机
删除ssh-keygen -R 主机


查看内核和系统版本

内核信息lsb_release -a
系统版本uname -sr


修改主机名

临时修改

hostname 新主机名

永久修改

  1. 修改 /etc/hostname

  2. 修改 /etc/hosts 对应的字段


硬盘设备

查看硬盘fdisk -lu [设备]
显示分区文件系统df -h [设备]
挂载设备mount /dev/设备 /media/用户/挂载点



管道操作

  • 命令1 | 命令2 | …

  前一个命令的结果输出当做后一个命令的输入。命令需要支持标准输入和输出。

例:

ls -al ~ | less # 用less命令显示ls -al的结果
ps -aux | grep chrome | sort # 过滤谷歌浏览器相关进程并排序
echo '2^10000' | bc # bc为计算器命令, 计算2^10000

常见的管道操作命令有:

过滤排序去重计数输出屏幕参数
grepsortuniqwcteexargs


由 2>&1 引入

  • 0 表示stdin标准输入
  • 1 表示stdout标准输出
  • 2 表示stderr标准错误

标准输出重定向等价写法

echo "Hello" > greet
echo "Hello" 1> greet

2>&1含义

  • 2&>1将标准错误输出重定向到标准输出,放在命令后面。
  • &> file:标准输出和标准错误输出都重定向到文件file中
java Untitled-1.java > log 2>&1
java Untitled-1.java &> log

这里两种写法都表示将Untitled-1.java的标准输出和标准错误输出都重定向都 log 文件中


xargs

  把前一个命令的输出作为做后一个命令的参数。

例1: cat输出文本

touch hello.txt
echo "Hello World" >> hello.txt

echo "hello.txt" | cat  # 输出 hello.txt
echo "hello.txt" | xargs cat # 输出 Hello World

  可以看出若不用xargs, 文本并没有传入到cat参数中

例2: find命令中代替 -exec

find ~/Downloads/ -name \*.png | xargs tar -cvf img.tar  # 查找Downloads文件下所有png格式的文件并打包为img.tar


  • 使用 -i 选项, 并在命令中添加 {} 来确定传递的参数的位置

例3: 将查找到的所有tar文件解包到指定文件夹

find ~/Downloads/ -name \*.tar | xargs -i tar -xvf {} -C ~/Downloads/test/


tee 命令

  将用户输入的数据同时保存到文件,一般和管道操作一起使用

例: 将字符串Hello World打印在屏幕上,并同时输出到 greet 文件中

echo "Hello World" | tee greet


sed 命令

  作用是编辑文本,可以对来自文件、以及标准输入的文本进行编辑

插入/删除/替换/查询行

例1: 在第二行后插入一行

echo '1\n2\n3\n4\n5' | sed '2 a 2.5'    # 第2行后追加
echo '1\n2\n3\n4\n5' | sed '3 i 2.5'    # 第3行插入

例2: 删除第三行

echo '1\n2\n3\n4\n5' | sed '3 d'

例3: 把2到4行都替换为3

echo '1\n2\n3\n4\n5' | sed '2,4 c 3'

例4: 查找打印第2到4行

echo '1\n2\n3\n4\n5' | sed -n '2,4 p'

其中 -n 选项表示静默即只显示处理后的结果;字符串中2,4p的p标记表示打印行

例5: 查找打印passwd文件中带有‘root’关键字的行

cat /etc/passwd | sed -n '/root/p'

与vim的查询操作有点像,通过 '/<key>/<action>' 可以进行对关键字所在行的操作。在这里/p就成了打印动作,也可以类似地换成上述的其他动作

以上的命令形式为'locate action'来进行基本行操作,若为关键词查找形式需要用界定符 / 注明,而且查找时可以结合正则表达式

关键词替换

例6: 将passwd文件的显示中root关键词全部替换为admin

cat /etc/passwd | sed 's/root/admin/g'

这里的动作s表示替换,和上面格式不同,是写在最前面的;g 作为标识符表示全局范围

例7: 把第二次字符串‘ab’出现的位置替换为字符串‘c’

echo 'abababa' | sed -n 's/ab/c/2p'

这里的 p 作用是标识符,表示第一个匹配;数字2表示从第二处匹配查找

  因此关键词替换命令形式则为 's/<src>/<tgt>/<flag>'

例8: 使用正则表达式将文件 demo.txt 中所有大写字母修改为字符串 ‘#’ ,并将小写字母改为字符串‘$’

sed -e 's/[A-Z]/#/g' -e 's/[a-z]/$/g' -i demo.txt

其中 -e 选项表示多步处理,-i 选项表示将结果直接作用到文件



常用文件

源文件列表/etc/apt/sources.list
第三方软件安装处/opt/
第三方软件安装处/usr/local/
快捷方式图标/usr/share/applications/存放 desktop 文件
开机调用/etc/rc.local存放开机调用脚本
服务脚本/etc/init.d
用户变量/etc/profile
host文件/etc/hosts修改域名指向
用户/etc/passwd存放所有用户信息, 对应shadow文件
用户组/etc/group同上
系统字体/usr/share/font
用户shell配置~/.bashrcshell列表记录在 /etc/shell 中
用户vim配置~/.vimrc
用户公钥~/.ssh/id_rsa.pub
黑洞/dev/null
-------------本文结束-------------