系统相关命令

  • login 登录
  • logout 注销

  • poweroff 普通关机
  • halt 立刻关机

  • reboot 普通重启
  • shutdown -r now 立刻重启
  • shutdown -r 10 过10分钟自动重启
  • shutdown -r 20:35 在时间为20:35时候重启

  • shutdown -h now 关闭系统(root用户使用)
  • shutdown -h 10 10分钟后关闭系统
  • shutdown -c 取消按预定时间关闭系统
  • init 0 关闭系统
  • telinit 0 关闭系统

CentOS查看系统版本

  1. $ cat /etc/redhat-release
  2. CentOS Linux release 7.6.1810 (Core)
  3. $ uname -a
  4. Linux DESKTOP-VEB85IN 4.4.0-18362-Microsoft #476-Microsoft Fri Nov 01 16:53:00 PST 2019 x86_64 x86_64 x86_64 GNU/Linux
  5. $ cat /etc/issue #这个centos7以上看不了
  6. $ cat /proc/version
  7. Linux version 4.4.0-18362-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) 476-Microsoft Fri Nov 01 16:53:00 PST 2019
#查看版本位数是64位还是32位
getconf LONG_BIT
getconf WORD_BIT

Ubuntu查看系统版本

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:        18.04
Codename:       bionic
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
$ cat /etc/issue
Ubuntu 18.04.4 LTS \n \l

Ubuntu查看系统信息及桌面环境:

$ sudo apt install neofetch
$ neofetch
            .-/+oossssoo+/-.               root@DESKTOP-VEB85IN
        `:+ssssssssssssssssss+:`           --------------------
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 18.04.4 LTS on Windows 10 x86_64
    .ossssssssssssssssssdMMMNysssso.       Kernel: 4.4.0-18362-Microsoft
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Uptime: 19 hours, 59 mins
  +ssssssssshmydMMMMMMMNddddyssssssss+     Packages: 1846
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Shell: zsh 5.4.2
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Terminal: /dev/tty1
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   CPU: Intel i7-8700 (12) @ 3.192GHz
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   Memory: 10405MiB / 16246MiB
ossyNMMMNyMMhsssssssssssssshmmmhssssssso
+sssshhhyNMMNyssssssssssssyNMMMysssssss+
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
  +sssssssssdmydMMMMMMMMddddyssssssss+
   /ssssssssssshdmNNNNmyNMMMMhssssss/
    .ossssssssssssssssssdMMMNysssso.
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

帮助相关命令

  • help [command] 查看某个命令的帮助
  • man [command] 查看某个命令的详细文档
  • man -f [command] 查看某个命令的参考资料,同 whatis
  • man -k man 查看所有命令的参考资料
  • man 1 cd 在第一章节查看cd命令的资料
  • whatis [command] 查看某个命令的参考资料
  • info [command] 查看某个命令的信息
  • [command] --help[command] -h

man命令中常用按键以及用途:

按键 用处
空格键 向下翻一页
PaGe down 向下翻一页
PaGe up 向上翻一页
home 直接前往首页
end 直接前往尾页
/ 从上至下搜索某个关键词,如“/linux”
? 从下至上搜索某个关键词,如“?linux”
n 定位到下一个搜索到的关键词
N 定位到上一个搜索到的关键词
q 退出帮助文档

man命令帮助信息的结构以及意义:

结构名称 代表意义
NAME 命令的名称
SYNOPSIS 参数的大致使用方法
DESCRIPTION 介绍说明
EXAMPLES 演示(附带简单说明)
OVERVIEW 概述
DEFAULTS 默认的功能
OPTIONS 具体的可用选项(带介绍)
ENVIRONMENT 环境变量
FILES 用到的文件
SEE ALSO 相关的资料
HISTORY 维护历史与联系方式

目录及文件操作

目录标识

  • / 代表根目录
  • ~ 表示为 home directory (root用户为 /root,普通用户为 /home/username)
  • . 则是表示目前所在的目录
  • .. 则表示目前目录位置的上一层目录

切换目录

  • cd dir 改变目录

列出目录/文件

  • ls 列出当前目录文件及子目录
  • ls -l 显示文件和目录的详细资料,简写 ll
  • ls -a 显示当前目录下包括影藏文件在内的所有文件列表
  • ls -lSr 以尺寸大小排列文件和目录
  • ls -ltr 按修改时间列出文件和文件夹详细信息
  • ls -li 显示文件的 inode 信息

创建目录

  • mkdir dir1 dir2 同时创建两个目录
  • mkdir -p path/to/dir 递归创建一个目录树
  • mkdir -m 700 dir 创建目录并指定目录权限
  • mkdir -p -m 750 path/to/dir 递归创建目录并指定目录权限
  • rmdir -p path/to/dir 递归删除空目录

创建文件

  • touch file 创建文件
  • touch -t 0712250000 file 修改一个文件或目录的时间戳 - (YYMMDDhhmm)

删除目录/文件

  • rm file1 file2 删除一个文件
  • rm -rf dir 删除一个目录并同时删除其内容,不经确认

拷贝/移动/重命名

  • cp origin path/to/target 复制一个文件
  • cp dir/* . 复制一个目录下的所有文件到当前工作目录
  • cp -r origin target 复制一个目录及其所有文件
  • mv origin target 移动/重命名文件

:::info 所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。 :::

在 Linux 下使用 cp 命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:

# 没有提示按Y、传递了目录属性、没有略过目录。
\cp -r -a aaa/* /bbb

# 另一种解决方案
echo y | cp ./a/*  ./b

:::danger 如果把一个文件复制到一个目标文件中,而目标文件已经存在,覆盖文件的时候会有提示,如果选择 Y,那么,该目标文件的内容将被破坏。 :::

文件查看及编辑

cat

:::warning 当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。
因此,一般用more等命令分屏显示。
为了控制滚屏,可以按 Ctrl+S 键,停止滚屏;按 Ctrl+Q 键可以恢复滚屏。按 Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。 :::

  • cat file1 file2 在屏幕上显示文件的内容
  • cat file1 file2 > file 将文件 file1 和 file2 合并后放入文件 file 中
  • cat file | more 分屏显示 file 文件的内容
  • cat -n file 显示 file 内容并显示行号
  • nl file 类似于 cat -n ,显示时输出行号

tac: 文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写

nl

nl 可以输出行号

more 和 less

  • more命令 是一个基于 vi 编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。
  • less命令 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 命令允许用户向前或向后浏览文件,而 more 命令只能向前浏览。用 less 命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页。要退出 less 程序,应按 Q 键。
more file         # 类似于 `cat file | more`,分屏显示文件的内容
more -dc file     # 显示文件 file 的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比
more -c -10 file  # 显示文件file的内容,每10行显示一次,而且在显示之前先清屏

head 和 tail

  • head命令 用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
  • tail命令 用于输入文件中的尾部内容。tail 命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。

:::info 如果表示字节或行数的N值之前有一个 “+” 号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。
N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。 :::

head file         # 只显示头10行
head -1 file      # 显示头一行

tail file         # 只显示最后10行
tail -1 file      # 显示最后一行
tail +20 file     # 显示文件file的内容,从第20行至文件末尾
tail -c 10 file   # 显示文件file的最后10个字符

输出目录树/文件树

# 输出目录树
find . -type d -print 2>/dev/null | awk '!/\.$/ {for (i=1; i<NF; i++){printf("%4s","|")} print("--"$NF)}' FS='/';

# 输出文件树
find . -print 2>/dev/null | awk '!/\.$/ {for (i=1; i<NF; i++){printf("%4s","|")} print("--"$NF)}' FS='/';

日期时间

  • date 显示系统日期
  • date 041217002007.00 设置日期和时间 - 月日时分年.秒
  • date -s "20170901 8:30:00" 设置时间 - 年月日 时分秒
  • date "+%Y-%m-%d %H:%M:%S" 以特定格式输出系统时间

date命令中的参数以及作用

参数 作用
%t 跳格[Tab键]
%Y
%m 月(01~12)
%d 日(01~31)
%H 时(00~23)
%I 时(00~12)
%M 分(00~59)
%S 秒(00~59)
%j 今年中的第几天

  • cal 显示本月日历
  • cal 2008 显示2008年的日历表
  • clock -w 将时间修改保存到 BIOS

其他命令

  • clear 清屏
  • echo 在终端输出
  • whoami 显示当前登录的用户名

  • pwd 显示工作路径
  • tree 显示文件和目录由根目录开始的树形结构

  • stat file 用于显示文件的状态信息。stat命令的输出信息比 ls 命令的输出信息要更详细。
  • file file 用来探测给定文件的 mime type 类型

  • du -sh dir1 估算目录 ‘dir1’ 已经使用的磁盘空间’
  • du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小