ubuntu小技巧16--常见命令使用方法

昕光xg 昕光xg     2022-12-02     382

关键词:


Ubuntu小技巧16--常见命令使用方法

 

不知觉间Linux系统已用了好多年,各种命令和小工具也接触了若干个,各类笔记分布到各个系统上,可一直没来得及整理归档,最近决定开始慢慢整理linux相关的小工具和命令,把以前、现在和以后的笔记都陆续按类别整理在此,一来可以记录自己的点点滴滴,其次也可以分享给有需要的人学习!

 

1 系统命令

1.1 Linux man中的man就是manual的缩写,用来查看系统中自带的各种参考手册,但是手册页分为好几个部分,如下所示:
1)  Executable programs or shell commands
2)  System calls (functions provided by the kernel)
3)  Library calls (functions within program libraries)
4)  Special files (usually found in /dev)
5)  File formats and conventions eg /etc/passwd
6)  Games
7)  Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8)  System administration commands (usually only for root)
9)  Kernel routines [Non standard

1.2 ln 链接命令
ln -s DirA/FileA  DirB/FileB
将A目录或者文件链接到B目录或文件,使用场景:vim默认安装在用户目录的时候会出现root权限时候无法使用普通用户的vim配置,此时可以:ln -s /home/usrname/.vim  /root/.vim 解决该问题

1.3  用户管理相关
(1)su 实例名称  即可切换到对应的用户下;
su 切换到root目录下面;
(2)adduser u1 添加一个u1的用户,此时该用户只有读的权限,此时需要编辑etc/sudoers
添加u1 ALL=(ALL:ALL) ALL ,保存即可让u1拥有读写执行权限;
userdel -lf 删除用户已经用户目录等所有文件
(3)如何分配用户可用磁盘空间?
待完善??
(4)root用户可以修改任何用户的j权限,可以增加删除任意用户
124对应xwr
ls -ld /home/usr1 查看用户usr1的权限,
新建用户时默认权限为0755(见/etc/adduser.config),对应生成的为drwxr-xr-x,即:本用户读写执行权限-组内其它成员读执行权限-其它用户读执行权限,
需求1:修改本用户,使除本用户之外的为不可读写执行,chmod /home/usr1 0700
需求2:使其它用户有读权限,chmod /home/usr1 0755
0711是只有执行的权限,由于可以执行,所以可以cd到该用户目录,但是无法查看文件,更无法写文件;
0744是只有读权限,但是由于没有执行权限,所以无法cd到该目录;
综上:像操作该目录就要加执行权限,只读权限为0755(可执行),修改方式为使用该用户或者root执行chmod  0755 usr1

linux的每个文件和文件夹都有它的所有者和所属的组,这样是为了控制文件或文件夹的权限(读写和操作三个权限)。
1、用ll 命令展示一个文件或文件夹的时候,你可以看到前面有是一个十位的字符串,第一个判断是文件还是文件夹,2-4这三个是所有者的读写执行权限,5-7是组内其他成员的读写执行权限,8-10是其他用户的读写执行权限。
2、以上2-4/5-7/8-10,可以用二进制表示,如755 ,表示rwxr-xr-x,即所有者有读写执行权限(7),组内其他用户有读执行权限(5),其他用户有读执行权限(5)。
2、改变文件或文件夹的权限,方法如下:
chmod  755 文件  (755可以根据所需权限改成其他数字)
如果不是root用户创建的文件,其他非root用户只有读权限r;1x-2w-4r

(4) 用户登录相关命令
who #查看当前登录用户信息
who /var/log/wtmp #查看自从wtmp创建以来每次登录
user #查看当前登录用户
last #查看用户登录历史
lastlog #查看所有用户最近一次等登录历史

1.4 进程-程序相关
ps -ef可以查看隐藏的进程
ps -a查看当前所有的进程
pstree -pl 查看所有进程,以tree形式显示
ps -aux 查看所有进程相关信息

1.5 Linux查看磁盘文件使用情况
df -h 查看各个分区磁盘使用情况;
du --max-depth=1 -h 查看当前文件夹下磁盘使用情况(即各个文件夹大小),最后一行显示当前目录文件总大小(无-h默认单位为字节);
du -sh 形式当前文件夹总大小,等价于
du --max-depth=0 -h;
du -sh /opt 查看opt目录大小;
df -lh 查看磁盘使用情况,同df-h;

1.6 Linux常见压缩命令
01-.tar格式
解包:$ tar xvf FileName.tar
打包:$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)
02-.gz格式
解压1:$ gunzip FileName.gz
解压2:$ gzip -d FileName.gz
压 缩:$ gzip FileName
03-.tar.gz格式
解压:$ tar zxvf FileName.tar.gz
压缩:$ tar zcvf FileName.tar.gz DirName
04-.bz2格式
解压1:$ bzip2 -d FileName.bz2
解压2:$ bunzip2 FileName.bz2
压 缩: $ bzip2 -z FileName
05-.tar.bz2格式
解压:$ tar jxvf FileName.tar.bz2
压缩:$ tar jcvf FileName.tar.bz2 DirName
06-.bz格式
解压1:$ bzip2 -d FileName.bz
解压2:$ bunzip2 FileName.bz
07-.tar.bz格式
解压:$ tar jxvf FileName.tar.bz
08-.Z格式
解压:$ uncompress FileName.Z
压缩:$ compress FileName
09-.tar.Z格式
解压:$ tar Zxvf FileName.tar.Z
压缩:$ tar Zcvf FileName.tar.Z DirName
10-.tgz格式
解压:$ tar zxvf FileName.tgz
11-.tar.tgz格式
解压:$ tar zxvf FileName.tar.tgz
压缩:$ tar zcvf FileName.tar.tgz FileName
12-.zip格式
解压:$ unzip FileName.zip
压缩:$ zip FileName.zip DirName
13-.lha格式
解压:$ lha -e FileName.lha
压缩:$ lha -a FileName.lha FileName
14-.rar格式
解压:$ unrar x FileName.rar 其中x表示解压到文件夹,若用e则解药到但前路径下
压缩:$ rar e FileName.rar
15-.tar.xz
解压:
方法一:需要用到两步命令,首先利用 xz-utils 的 xz 命令将 FileName.tar.xz 解压为 FileName.tar,其次用 tar 命令将 FileName.tar 完全解压。
xz -d FileName.tar.xz
tar -xf FileName.tar
方法二(推荐):tar -Jxf FileName.tar.xz
压缩:
方法一:也是用到两步命令,首先利用 tar 命令将 FileName 文件夹打包成 FileName.tar,其次用 xz-utils 的 xz 命令将 FileName.tar 压缩成 FileName.tar.xz。
tar -cf FileName.tar FileName/
xz -z FileName.tar
方法二(推荐):tar -Jcf FileName.tar.xz FileName/

1.7 linux下常见的关机重启操作
poweroff 关机
reboot 重启
shutdown -r now  关机后重启
shutdown -h now  关机后不重启
shutdown -r +10 10分钟后重启
shutdown -r 10:00 10点钟重启
shutdown -h +10 10分钟后关机
shutdown -h 10:00 10点钟关机

1.8  bash profile介绍
.bash_profile 类似于编程中的构造函数,当登录shell时,shell会寻找该文件做环境初始化。
.bashrc 是在bash环境时.bash_profile的替补。
.bash_logout 类似于编程中的析构函数,当登录shell退出时,shell会寻找该文件,并按其指示办事。 
/etc/profile是系统文件,对系统下全体用户起作用

1.9 常用输出
tail -10 fname
head -10 fname
sed -n 5,10p fname 输出5-10行内容
tac逆序输出文本内容
rev逆序输出字符串

1.10 系统属性查看
(a)lsb_release -a 查看系统版本
(b)cat /etc/issue 系统版本
(c)cat /proc/version 系统相关信息
(d)uname -a

1.11 文件大小数量相关操作
ls -l filename | awk print $5
du -b filename | awk print $1
wc -c filename | awk print $1
wc -c < filename
stat -c "%s" filename
以上方法都可以查看filename的大小,单位为bit
ls -Rl|grep ^-|wc -l 统计当前目录下文件数量
ls -Rl|grep ^d|wc -l 统计当前目录下文件夹数量

1.12 查看硬件信息
lspci  | grep -i vga(或者nvidia) 查看当前显卡信息
dmidecode 查看所有硬件信息
cat /proc/cpuinfo 查看cpu信息

1.13 Ubuntu下载常用命令源码方法
步骤:whereis 命令 -> dkpk -S 命令绝对路径 -> apt-get source 上一步中命令的包
下载ls命令源码流程如下:

root@xg:/home/xg/Desktop/test_file# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
root@xg:/home/xg/Desktop/test_file# dpkg -S /bin/ls
coreutils: /bin/ls
root@xg:/home/xg/Desktop/test_file# apt-get source coreutils
Reading package lists... Done
Need to get 5,294 kB of source archives.
Get:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic/main coreutils 8.28-1ubuntu1 (dsc) [2,302 B]
......
dpkg-source: info: applying 99_float_endian_detection.patch
W: Download is performed unsandboxed as root as file coreutils_8.28-1ubuntu1.dsc couldnt be accessed by user _apt. - pkgAcquire::Run (13: Permission denied)
root@xg:/home/xg/Desktop/test_file# ls
coreutils-8.28 coreutils_8.28.orig.tar.xz
coreutils_8.28-1ubuntu1.debian.tar.xz coreutils_8.28.orig.tar.xz.asc
coreutils_8.28-1ubuntu1.dsc

1.14 内存相关命令

1) 清除buffer和cache中内容
free -m
echo 1 > /proc/sys/vm/drop_caches表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的缓存对象。

1.15 磁盘相关命令

1) fdisk -l 查看磁盘信息
2) fdisk /dev/sdb (n参数可以用于创建新的分区)
1) pvcreate /dev/sdb 创建物理卷
2) vgcreate test /dev/sdb 创建卷组test
3) lvcreate -L 1G -n lv01 test 在卷组test上创建1个1G的逻辑卷lv01,此时 df -h会产生一个 /dev/mapper/test-lv01
4) mkfs.ext4 /dev/test/lv01  格式化磁盘为ext4格式
5) mount /dev/test/lv01 /home/xg/lv01/ 挂载逻辑卷到/home/xg/lv01目录
6) lvextend -L +100M /dev/test/lv01 对卷添加100M空间
对于已经挂载的目录,最好执行 resize2fs /dev/test/lv01 使其立即生效; 
7) lvreduce -L -1G /dev/test/lv02  对卷减少1G空间
8) lvcreate -L 500M -n lv02 test 创建了逻辑卷lv02
9) lvremove /dev/test/lv02 删除逻辑卷lv02
10) vgremove /dev/test 删除卷组test
11) wipefs -f -a /dev/sdb 清除磁盘
相关常用命令包括:vgdisplay,lvdisplay,blkid,lsblk

1.16 分区相关命令
cat /proc/mounts | grep -i ro 可以查看磁盘挂载的格式;
mount -o remount,rw /usr 以读写的格式重新挂载/usr目录;

1.17 网络相关命令
1)查看ip 链接数 netstat -tun|awk print $5|cut -d : -f1|sort|uniq -c|sort -n;
      netstat -nltp 查看所有网络占用情况,-nlep可查看使用的进程
2)查看网卡流量 iftop -i net-interface
3)查看路由表 route -n
4)跟踪到目的地址的路由链路 traceroute www.baidu.com
5)启动或者关闭网卡 ifup | ifdown net-card-name

1.x 其它命令1)kill -l #查看linux系统下的所有信号类型
2)查看目的大小:进入目录 du -sh;df -h 查看各个硬盘分区大小和使用情况;
3)init 0(关机) 6(重启) 1(单用户) 2(多用户) 5(X11,xwindow);
4)>>为追加; > 为覆盖;
5)history可以查看历史命令;history -c可以删除历史命令;
6)find /path -iname filename 可以查找文件名,并且不区分大小写,去掉i后就区分大小写了;
7)journalctl --disk-usage #查看/run/log下journal占用量

 

2 专业软件命令

2.1 scp和ssh命令
scp cmd:
scp local_file remote_username@remote_ip:remote_folder
scp -r local_folder remote_username@remote_ip:remote_folder
scp remote_username@remote_ip:remote_file local_folder
scp -r remote_username@remote_ip:remote_folder local_folder
ssh cmd:
ssh remote_username@remote_ip
input pwd,then we can visit remote PC

2.2 vim相关命令
vi打开时候经常出现有xxx.swp文件存在,此时将其删除即可,ll -a 就可以发现对应的swp文件,将其删除就可以正常打开文件,且不会出现提示;
vi移动到行末End(不是数字键盘上面的),或者$
vi移动到行首Home,或者0(不是数字键盘的0,是)对应的那个0)2.3 grep sed awk 三大文本处理工具
grep 文本搜索工具,仅仅过滤文本的话效率搞,可结合正则表达式;
sed 流编辑器,默认只处理模式空间,不处理原数据,若处理的数据是针对行进行处理,可用sed;
awk 报告生成器,格式化以后显示,若处理的数据需要生成报告之类的信息,或处理数据是按列进行处理的,最好用awk
以查询IP为例:
hostname -I
ifconfig eno4|grep -Po (?<=addr:)\\S+
ifconfig eno4|sed -n 2s#^.*dr:##gp | sed s# B.*$##g
ifconfig eno4|awk -F "[ :]+" NR==2print $4
eno4需要更换为实际的网卡,如eth0
ps -ef|grep docker #找到所有与docker相关的进程

 

3 常见错误处理

3.1 从其它文件夹拷贝文件到另外电脑,会出现无权限访问情况,此时可以sudo chmod- R 777 file/*  ,然后就有读写删除权限了
chmod u+xrw file等价于chmod 777 file ,其中x-1,w-2,r-4

3.2 终端后台启动程序通常启动程序后,终端会被占用,需要新开终端才能执行其它任务,此时可以通过后缀
&的方式标注为后台程序;
如redis-server &就可以将server设置为后台,然后再打开redis-cli进行操作了;
ctrl  z 就是挂起一个进程,暂停的意思
fg是将进程放到前台并唤醒
bg是将进程放到后台并唤醒
ctrl+h,在shell就是向左删除的作用
screen cmds #通过screen方式执行命令,执行之后ctr+A,再ctrl+d就可以将命令放到后台执行,其对应的文件在/run/screen目录
screen -ls #查看所用在运行的screen session
screen -r pid #恢复-ls中pid对应的终端session

 

4 说明

本文中的虚拟机为VM12.X版本,其它Linux配置若为桌面软件则为Ubuntu Desktop 1604 版本,若为非桌面版则为Ubuntu Server 1601版本,大部分命令主要用于Ubuntu,工具命令会是基于Centos系统的!

ubuntu小技巧24--快速入门ffmpeg

ubuntu小技巧24--快速入门ffmpeg​​1介绍​​​​2使用方法​​​​2.1ffmpeg命令剪辑音视频文件​​​​2.2python脚本剪辑音视频文件​​​​3注意事项​​​​4说明​​1介绍FFmpeg是一套可以用来记录、转换数字音频、视频,并能... 查看详情

ubuntu小技巧8——linux(ubuntu)下mysql安装问题

ubuntu小技巧8——linux(ubuntu)下mysql安装问题ubuntu下安装mysql:1、直接在ubuntu softwarecenter中搜索mysql下载安装即可2、在terminal中使用命令apt-getinstallmysql-server使用mysql安装好之后进入mysql,在终端输入mysql-uroot-p可以省略-p,enter... 查看详情

maven常见操作命令(代码片段)

...是如虎添翼。特为大家整理了一套Maven常见命令及使用小技巧。建议收藏,甚至打印出来放在办公桌以备快速使用。废话不多说,直接上干货。Maven常见命令使用项目目录结构:--P(父工程pom 查看详情

megengine使用小技巧:量化

常见神经网络模型所用的Tensor数据类型一般是float32类型,而工业界出于对特定场景的需求(极少的计算资源,极致的推理速度),需要把模型的权重和或激活值转换为位数更少的数值类型(比int8,float16)——整个过程被称为量... 查看详情

gomod代理和小技巧(代码片段)

...变量这样google下的包可以顺利下载了,速度还挺快的。小技巧逃离GOPATH毕竟有时候一个项目的代码可能使用多种语言,按照以前的方式,就非得把项目的代码都放在gopath下了,让我这种强迫症的人,很不爽。现在发现使用gomod时,... 查看详情

yum软件查询使用小技巧

在很多时间,看到Linux的一些命令无法使用,可以通过yum安装对应的软件包才可以使用1.有时候命令与软件包的名字是不一样的,这个时候我们要想办法查询到使用命令对应的软件包:2.知道软件包的情况,可以直接系统镜像包中... 查看详情

linuxtouch命令的8种使用技巧(代码片段)

...介绍了8种可以通过Linux终端使用touch命令的方案。我们在Ubuntu18.04LTS/Ubuntu18.10系统上运行了本文中提到的命令和过程。由于touch命令是命令行实用程序,因此我们将在本文中使用Ubuntu终端。您可以通过系统Dash或Ctrl+Alt+T 查看详情

kali小技巧(代码片段)

说明:此方法适用于Debian、Ubuntu等带apt工具的操作系统。sudoapt-getautoremove--purge软件名#命令&参数解释:# sudo——获取root权限# apt-get——执行安装卸载功能的软件# autoremove——告诉apt-get我们所要做的操作是移除软件# –purge—... 查看详情

linux命令使用小技巧系列之切换用户为什么加-

linux使用小技巧系列之切换用户为什么加-一背景介绍在切换用户时候,一般情况下,最好加上-这个短横线。也不知道为什么,今天就来复现一下,恰巧使用时候遇到了这个场景。二实战演练首先进入root用户然后... 查看详情

flutter开发常见问题,解决小技巧(代码片段)

1.AndroidStudio4.0以上打包编译报错;Executionfailedfortask':app:lintVitalRelease'.>Couldnotresolveallartifactsforconfiguration':app:debugRuntimeClasspath'.>Failedtotransformlibs.ja 查看详情

vim命令使用技巧

...行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率。#############################################################################1.多行注释:首先按esc进入命令行模式下,按下Ctrl+v,进入列(也叫区块)模式;... 查看详情

css高级技巧,包括精灵图字体图标及常见布局技巧

今天主要学习了CSS高级技巧,重点掌握精灵图、字体图标的使用,单行溢出显示省略号和一些常用的布局技巧!今日框架:今日重点:一、精灵图:为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度1)精灵图... 查看详情

[小技巧]windows命令行显示英文

在Windows里"运行"使用cmd进行命令行,如果是Windows中文版的话,里面的命令输出是中文。如果要显示英文的话,可以使用如下的命令:chcp437该命令用于显示或设置活动代码页编号。437是美国英语的字符集。如要切换回中文,可使... 查看详情

idea小技巧

IDEA小技巧常用快捷键Alt+Insert可以自动生成get、set、toString方法Alt+Enter可以帮助解决各种报错,抛个异常啊、导个包啊之类的常见行操作:Shift+Enter添加空行,相比普通换行,不管光标在哪里该快捷键均可生效Ctrl+D复制本 查看详情

分享16个matplotlib绘图实用小技巧!

今天给大家介绍16个Matplotlib绘图实用的小技巧。1.添加标题-titlematplotlib.pyplot对象中有个title()可以设置表格的标题。importnumpyasnpimportmatplotlib.pyplotasplt#显示中文plt.rcParams['font.sans-serif']=[u'SimHei']plt.rcPar 查看详情

linux系统history命令小技巧(代码片段)

背景Linux系统中的history命令可以查看在系统中执行过哪些命令,在系统被***后,可以查看系统中执行过哪命令,有助于分析相关问题。知识点在Linux系统执行history#history命令711alias712history713ls~/.bash_history714history系统中使用过的命... 查看详情

16个实用的matplotlib绘图小技巧

来源:网络今天给大家介绍16个Matplotlib绘图实用的小技巧:1.添加标题-titlematplotlib.pyplot对象中有个title()可以设置表格的标题。importnumpyasnpimportmatplotlib.pyplotasplt#显示中文plt.rcParams['font.sans-serif']=[u'Si 查看详情

16个实用的matplotlib绘图小技巧

来源:网络今天给大家介绍16个Matplotlib绘图实用的小技巧:1.添加标题-titlematplotlib.pyplot对象中有个title()可以设置表格的标题。importnumpyasnpimportmatplotlib.pyplotasplt#显示中文plt.rcParams['font.sans-serif']=[u'Si 查看详情