Linux指令学习

Linux命令格式:命令名  选项  参数

  Linux 刚面世时并没有图形界面,所有的操作全靠命令完成,如 磁盘操作、文件存取、目录操作、进程管理、文件权限 设定等,在职场中,大量的服务器维护工作都是在远程通过SSH 客户端来完成的,并没有图形界面,所有的维护工作,都需要通过命令来完成,在职场中,作为后端程序员,必须要或多或少的掌握一些 Linux 常用的终端命令,Linux 发行版本的命令大概有 200 多个,但是常用的命令只有 10 多个而已。

文件及目录操作

linux下,我们是看不到硬件盘符的,我们只能看到文件夹(目录)

目录速查表

 / :根目录,Ubuntu只有一个根目录,所有文件都在它下面

 /home/user :用户工作目录或者家目录。

 /bin、/usr/bin :可执行二进制文件的目录

 /boot :放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz;系统引导管理器:/boot/grub

 /dev :存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt

 /etc :系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有

 /home :系统默认的用户家目录,新增用户账号

  • ~ 表示当前用户的家目录
  • ~edu 表示用户 edu 的家目录

 /root :系统管理员root的家目录

 /tmp :一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下

 /srv :服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内

 /usr :应用程序存放目录

  • /usr/bin:存放应用程序
  • /usr/share:存放共享数据
  • /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
  • /usr/local:存放软件升级包
  • /usr/share/doc:系统说明文件存放目录
  • /usr/share/man:程序说明文件存放目录

 /var :放置系统执行过程中经常变化的文件

  • /var/log:随时更改的日志文件
  • /var/spool/mail:邮件存放的目录
  • /var/run:程序或服务启动后,其 PID 存放在该目录下

小技巧

  • ctrl + shift + = 放大终端窗口的字体显示
  • ctrl + - 缩小终端窗口的字体显示
  • 自动补全:在敲出 文件/目录/命令 的前几个字母之后,按下tab键,如果输入的没有歧义,系统会自动补全
  • 按 上 / 下 光标键可以在曾经使用过的命令之间来回切换
  • 如果想退出,并且不想执行当前选中的命令,可以按 ctrl+ c

目录操作

 pwd :查看目录 路径

 ls :查看当前目录下的 文件和文件夹

  • ls -l 以列表方式显示文件的详细信息
  • ls -a 显示全部(包括隐藏文件)
  • ls -t 按照修改时间排序
  • ls -l -h 以人性化的方式显示文件大小

 cd 目录 :切换路径

  •  cd  和  cd ~ :切换到当前用户的主目录(/home/用户目录)
  •  cd . :当前目录
  •  cd .. :上级目录
  •  cd - :上一次所在目录

 mkdir 目录 :创建目录

  •  mkdir -p :如果父目录不存在,同时创建父目录

文件操作

 touch 文件名 :创建文件

 mkdir 文件夹名 :创建文件夹

 echo 内容 > 文件名 :向文件覆盖写入内容

  •  echo 'abc' > test1.txt (将abc字符串写入test1.txt,会覆盖原来的内容;如果不想覆盖原来的内容,使用两个大于符号>>)

 cat 文件名 :查看文件内容

 grep "搜索内容" 文件名 :搜索某个文件里面是否包含字符串

 tree 目录名 :以树状图的形式查看目录文件结构

 head -n 行数 文件名 :查看文件前几行

 tail -n 行数 文件名 :查看文件最后几行

 find /(查找范围) -name '查找关键字' -type d :查找目录

  •  find / -name 'tomcat7' -type d  :查找tomcat7文件夹所在的位置

 find /(查找范围) -name 查找关键字 -print :查找文件

  •  find / -name 'server.xml' -print :查找server.xml文件的位置
  •  find -name "*1*" 搜索文件名包含1的文件
  •  find -name "*.txt" 搜索所有以.txt为扩展名的文件
  •  find -name "1*" 搜索以数字1开头的文件

 cp 原文件 新文件 :文件复制

  • -r:遍历文件
  • -n:跳过已存在文件

 mv 原文件路径 新文件路径 :文件移动,注意点:移动文件的话就不要再加 / 了,如果是移动文件夹下的所有文件的话就可以文件夹后面跟上 /*

 rm [选项] 文件名|目录名 :文件删除

  • -f 强制删除(慎用!)
  • -i 互动模式,在删除前询问
  • -r 递归删除目录下的内容,删除文件夹时必须的加此参数

比较差异

1、使用 diff 命令来比较两个文件夹。以下是一个示例命令:

diff -r /path/to/directory1 /path/to/directory2

2、使用 rsync 命令来比较两个文件夹。以下是一个示例命令:

rsync -nrcv /path/to/directory1/ /path/to/directory2/

-n选项表示模拟比较,-r表示递归比较,-c表示根据文件内容比较,-v表示详细输出,

--delete 选项表示删除directory2中不在directory1中的文件。

rsync -nrcv --delete /path/to/directory1/ /path/to/directory2/

--size-only,它只会比较文件大小而不比较内容,从而提高比较速度。

rsync -nrcv --size-only /path/to/directory1/ /path/to/directory2/

权限管理

三个权限参数: 读 写 执行 

  • 参数:r可读,w可写,x可执行,-什么都不行

在rwx三个权限中,从右至左依次用值4、2、1来表示,所以拥有某个文件的读、写、执行权限也可以用三个权限值累加的方式来表示,如下表所示:

权限 rwx rw- r-x r-- -wx -w- --x ---
含义

可读4

可写2

可执行1

可读4

可写2

不可执行0

可读4

不可写2

可执行1

可读4

不可写2

不可执行0

不可读0

可写2

可执行1

不可读0

可写2

不可执行0

不可读0

不可写2

可执行1

不可读0

不可写2

不可执行0

对应值 4+2+1=7 4+2+0=6 4+0+1=5 4+0+0=4 0+2+1=3 0+2+0=2 0+0+1=1 0+0+0=0

修改文件权重:chmod {权限值} {文件/目录名}

  • 给文件夹增加权限(-R表示递归):chmod -R 777 文件夹
  • 给文件增加权限:chmod 777 文件
  • 给文件test1.txt添加可执行权限 chmod +x test.txt
  • 设置文件,拥有者有读、写、执行权限,其他用户没有访问权限chmod 700 test1.txt
  • 如果给所有人添加可执行权限:chmod a+x 文件名
  • 如果给文件所有者添加可执行权限:chmod u+x 文件名
  • 如果给所在组添加可执行权限:chmod g+x 文件名
  • 如果给所在组以外的人添加可执行权限:chmod o+x 文件名

查询服务器pid对应用户:ps -f -p PID

通配符

  • *:代表任意个数字符
  • ?:代表任意一个字符,至少1个
  • []:表示可以匹配字符组中的任意一个
  • [abc]:匹配a、b、c中的任意一个
  • [a-f]:匹配从a到f范围内的任意一个字符

linux的通配符和正则表达式有很多相似点,可以参考我写正则表达式的这篇文章

查看磁盘空间

Linux 查看磁盘空间可以使用  df 和  du 命令。

 df :以磁盘分区为单位查看文件系统,可以获取Filesystem(文件系统)、Size(分区大小)、Used(已用百分比)、Avail(还可使用的容量)、Mounted on(挂载点)。

  •  df -hl :查看磁盘剩余空间
  •  df -h :查看每个根路径的分区大小
  •  du -sh [目录名] : du -sh ./ 返回该目录的大小; du -sh ./* 返回该目录所有文件夹的大小
  •  du -sm [文件夹] :返回该文件夹总M数
  •  du -h [目录名] :查看指定文件夹下的所有文件大小(包含子文件夹)

 du -* [目录名] :显示磁盘空间的使用情况(disk usage),用于查看当前目录的总大小

  •  -s :只给出占用的数据总数。
  •  -a :递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
  •  -b :以字节为单位列出磁盘空间使用情况(系统默认以k字节为单位)。
  •  -k :以1024字节为单位列出磁盘空间使用情况。
  •  -c :最后再加上一个总计(系统默认设置)。
  •  -l :计算所有的文件大小,对硬链接文件,则计算多次。
  •  -x :跳过在不同文件系统上的目录不予统计。
  •  -h :以K,M,G为单位,提高信息的可读性。

压缩与解压

  windows常用rar,Mac常用zip;Linux常用tar.gz,tar后缀名表示进行了打包,gz后缀名表示进行了压缩,加后缀名是为了清晰、易于理解,而不是必须的。

tar格式

参数:

  • c 创建打包文件
  • x 解开打包文件
  • v 列出详细过程,显示进度
  • f 执行打包的文件名称,f后面一定是.tar文件,所以必须放在选项后面
  • z 使用gzip方式压缩

压缩

压缩为.tar文件

tar -cvf archive.tar folder_name

压缩为.tar.gz文件(gzip压缩)注重压缩速度

tar -czvf archive.tar.gz folder_name

压缩为.tar.bz2文件(bzip2压缩)注重压缩率

tar -cjvf archive.tar.bz2 folder_name

tar与gzip命令结合可以实现文件 打包和压缩

  • tar只负责打包文件,但不压缩
  • 用gzip压缩tar打包后的文件,其扩展名一般用 xxx.tar.gz

解压

tar -xvf archive.tar
tar -xzvf archive.tar.gz
tar -xjvf archive.tar.bz2

 tar -zxvf xxx.tar.gz -C 解压到指定的文件位置 :解压xxx.tar.gz到指定位置,注意:要解压缩的目录必须存在

 tar -xvf xxx.tar -C 解压到指定的文件位置 :解压xxx.tar到指定位置,注意:要解压缩的目录必须存在

zip格式

压缩

zip -r archive.zip folder_name

 zip -dv test.zip file1 :从压缩文件 test.zip 中删除文件 file1 

解压

 unzip dataset.zip :将 dataset.zip 解压到当前文件夹   

 unzip -o dataset.zip -d dataset/ :将dataset.zip解压到dataset文件夹,如果已有相同的文件存在,要求unzip命令覆盖原先的文件 


 依次把当前文件夹的子文件夹一一压缩成zip

for i in */; do zip -r "${i%/}.zip" "$i"; done

依次把当前文件夹的zip解压

for zip_file in *.zip; do unzip "$zip_file"; done

软件安装与卸载

查看

dpkg -l :列出当前系统中所有的包。可以和参数less一起使用在分屏查看。(类似于rpm -qa)

dpkg -l |grep -i "软件包名"  :查看系统中与"软件包名"相关联的包。

安装

 apt-get update :升级安装包相关的命令,刷新可安装的软件列表(但是不做任何实际的安装动作)

 apt-get upgrade :进行安装包的更新(软件版本的升级)

 apt-get dist-upgrade :进行系统版本的升级(Ubuntu版本的升级)

 do-release-upgrade :Ubuntu官方推荐的系统升级方式,若加参数-d还可以升级到开发版本,但会不稳定

升级

 apt-get update :升级安装包相关的命令,刷新可安装的软件列表(但是不做任何实际的安装动作)

 apt-get upgrade :进行安装包的更新(软件版本的升级)

 apt-get dist-upgrade :进行系统版本的升级(Ubuntu版本的升级)

 do-release-upgrade :Ubuntu官方推荐的系统升级方式,若加参数-d还可以升级到开发版本,但会不稳定

卸载

apt-get的卸载相关的命令有remove/purge/autoremove/clean/autoclean等。具体来说:

 apt-get purge / apt-get --purge remove :删除已安装包和依赖软件包(不保留配置文件)。

 apt-get remove :删除已安装的软件包(保留配置文件),不会删除依赖软件包,且保留配置文件。

 apt-get autoremove :删除为了满足依赖而安装的,但现在不再需要的软件包(包括已安装包),保留配置文件。(高能警告:慎用本命令!!!它会在你不知情的情况下,一股脑删除很多“它认为”你不再使用的软件;)

 apt-get autoclean :删除为了满足某些依赖安装的,但现在不再需要的软件包;apt的底层包是dpkg,而dpkg安装软件包时,会将*.deb文件放在/var/cache/apt/archives/中;因此本命令会删除该目录下已经过期的deb;

 apt-get clean :删除已经安装过的的软件安装包;即自动将/var/cache/apt/archives/下的所有deb删掉,相当于清理下载的软件安装包;

那么如何彻底卸载软件呢?

具体来说可以运行如下命令:

apt-get --purge remove <package>   # 删除软件及其配置文件
apt-get autoremove <package>    # 删除没用的依赖包
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P    # 清理dpkg的列表中有“rc”状态的软件包

当然如果要删除暂存的软件安装包,也可以再使用clean命令。

【CSCD】linux安装软件和卸载的几种方法

其他命令

网络操作

 ifconfig :查看/配置计算机当前的网卡配置信息

 ping ip地址 :检查目标 ip地址 的连接是否正常,数值越大,速度越慢

 ssh 用户名@ip :远程登录

复制文件

1、拷贝本机/home/wtf/test整个目录至远程主机192.168.100.1的/root目录下 

scp -r /home/wtf/test/ root@192.168.100.1:/root/

2、拷贝单个文件至远程主机

scp /home/wtf/test/wtf.txt root@192.168.100.1:/root/

关机

命令格式: shutdown 选项 时间 

 shutdown now :现在就关闭电脑

 shutdown 20:10 :时间20:10分关闭电脑

 shotdown -r +10 :十分钟后重启电脑

 shotdown -c :取消之前指定的关机计划

 shutdown :不设置选项和参数:默认1分钟后 关闭电脑

autoreconf命令

 autoreconf [参数] [目录] :更新已经生成的配置文件

使用autoreconf命令可以重复编译指定目录下的系统文件或configure-ac指定的目录树。默认情况下,它只编译比以前编译文件更新的文件。

常用参数

  • -v:详细报告处理
  • -d:不删除临时文件
  • -f:认为所有的问价都是过期的文件,强制执行
  • -i:复制辅助文件
  • -s:创建符号链接,而不是复制
  • -m:当可用时,重新运行命令./configure 和 make
  • -w:报告语法错误信息

window平台安装ubuntu子系统

1、安装Ubuntu子系统,具体的操作步骤可以参考Win10安装Ubuntu子系统超详细攻略这篇知乎文章,步骤一步一步的进行下去就OK了。

2、在文件夹中,我们可以通过shift + 鼠标右键,快速打开 linux shell,即wsl。

  微软为我们提供了一个默认的变量可以直接指向WSL的目录 wsl$ , 你可以在运行(win+R)或资源管理器的路径里直接输入 \\wsl$ 进入Ubuntu的目录,

知道WSL的网络路径后你可以直接将它添加到资源管理器的网络位置里

参考

Linux命令大全

【菜鸟教程】Linux 查看磁盘空间

【CSDN】将 Windows10 中的 WSL 添加至右键菜单

【博客园】windows10 ubuntu子系统 WSL文件位置

【博客园】linux如何复制文件夹和移动文件夹

【CSDN】ubuntu查看已安装所有软件包

【CSDN】Ubuntu下如何查看已安装软件版本

【CSDN】如何安全的从ubuntu16.04升级到18.04?

【谷歌搜索】apt-get dist-upgrade能将ubuntu16.04升级到18.04吗

【CSDN】如何在Ubuntu中用apt命令删除/卸载软件包(remove/clean/purge)

posted @ 2019-07-14 17:19  凌逆战  阅读(918)  评论(0编辑  收藏  举报