Ubuntu 系统常用命令行

Ubuntu 系统常用命令行

本教程教学内容参考于https://www.youtube.com/watch?v=oxuRxtrO2Ag&t=1564s

z

官方地址:https://github.com/rupa/z

安装参考:https://linuxtoy.org/archives/z.html

  • z 是一个相当实用的 cd 命令增强脚本,目前支持 bash 和 zsh。使用 z,我们能够在 Linux 命令行实现更加快速的导航。

  • 如塔米狗项目:我们常会启动 api,sso 项目,那么我们都会通过cd /projects/tamigos/apicd /projects/tamigos/sso往复的执行进入目录,用了 z 之后,只需要z apiz sso即可

开发人员屏保

安装如下:

  1. sudo apt-get install cmatrix
  2. cmatrix # 执行命令

添加用户

sudo adduser tanmer
-> 第一次提示输入当前用户密码
-> 一路回车确认即可
-> 最后提示输入创建用户的密码

ls 查看目录下面的文件或文件夹

描述:查看目录下面的文件和文件夹

参数:

  • -a 查看隐藏文件(以'.'开头)
  • -l 查看每个文件详细信息
  • -la 拥有上述两个作用
  • -h 查看每个文件详细信息(包含文件或目录大小的"单位")

命令:

ubuntu@10-8-163-116:~$ ls -l
total 4
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 10 00:03 Course

drwxrwxr-x 分为三部分d rwx rwx rwx

  • 第一部分:类型
  • 第二部分:拥有者的访问权限
  • 第三部分:用户组的访问权限
  • 第四部分:其他成员的访问权限

一组权限有3个字母,代表3位二进制数所在对应位的标识,分别表示:

  • r: 可读, 对应值等于4
  • w: 可写, 对应值等于2
  • x: 可执, 对应值等于1

rwx 对应3位二进制位 111 = 7

drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 10 00:03 Course 每一列的含义为:

  • 第一列-->权限
  • 第二列-->incode
  • 第三列-->所属用户
  • 第三列-->所属用户组
  • 第三列-->文件大小
  • 第三列-->修改时间
  • 第三列-->文件或文件名

备注:

  • 文件名前加 . 表示它是隐藏文件,ls -l 是不会显示的。
  • 通常情况下,Linux 程序中的单字母参数可以合并到一起使用。如ls -l -a可以简写为ls -la

cd 切换目录

描述:用于切换当前工作目录至目标目录

cd / # 切换到更目录
cd ~ # 切换到当前用户目录,ubuntu 用户通常是 /home/ubuntu 目录
cd ~usename # 切换到 /home/username 目录
cd . # 切换到当前目录,无实际效果
cd .. # 切换到上个目录
cd - # 切换到上次进入的目录

备注:

  • 用于目录切换效率
    • pushd 压栈
    • popd 出栈

file 查看文件的信息

描述:查看文件编码类型及相关属性

命令:

file 2、Ubuntu\ 系统常用命令行.md
-> 2、Ubuntu 系统常用命令行.md: UTF-8 Unicode text

locate 模糊查找文件

描述:查找含有相关字符的文件,存到缓存中,每天更新只做一次更新

命令:

locate cal

备注:

  • sudo updatedb 强制更新数据库,以便显示最新创建的文件内容。

which 查看程序的绝对路径

描述:准确查找程序安装的位置(绝对路径)

$ which cal

/usr/bin/cal

history 查看历史命令

描述:查看在终端输入的历史记录

history

备注:

  • !1000 打印历史记录中该行数的命令语句

grep 过滤内容

描述:过滤内容

history | grep ls

whatis 查看命令的描述信息

描述:显示某个命令的描述信息

$ whatis cal
cal (1)              - displays a calendar and the date of Easter

whereis 查看指定命令的相关位置想信息

描述:当你不知道某个命令的位置时可以使用 whereis 命令

命令:

$ whereis cal
cal: /usr/bin/cal /usr/share/man/man1/cal.1.gz

apropos

  • 在一些特定的包含系统命令的简短描述的数据库文件里查找关键字,然后把结果送到标准输出
$ apropos time
__ppc_get_timebase (3) - get the current value of the Time Base Register on Power architecture and its frequency.
__ppc_get_timebase_freq (3) - get the current value of the Time Base Register on Power architecture and its frequency.
...
...
vtimes (3)           - get resource usage
xfs_rtcp (8)         - XFS realtime copy command
zdump (8)            - timezone dumper
zic (8)              - timezone compiler

man 查看使用手册

  • manual,查看程序的帮助手册,可以查看 Linux 中的指令帮助、配置文件帮助和编程帮助等信息
man curl

cal 显示日历

描述:用于显示当前日历,或者指定日期的日历

$ cal
   February 2019
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28

wget

描述:非交互式网络下载器

wget https://avatars1.githubusercontent.com/u/24770072?s=40&v=4 -O avter.png
  • 参数-O avter.png表示下载文件另存为 avter.png

mkdir

描述:目录创建

参数:

  • -p 创建深目录

命令:

mkdir file1 file2  # 创建多个目录
mkdir -p path/path1/path2  #创建深目录

touch

描述:先访问文件 如果不存在就创建

  • -f 强制创建

命令:

touch file1 file2  # 创建多个目录

cp

描述: 拷贝文件

参数:

  • -a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于 dpR 选项的组合。
  • -d 拷贝时保留链接。
  • -f 删除已经存在的目标文件而不提示。
  • -i 和 f 选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答 y 时目标文件将被覆盖,是交互式拷贝。
  • -p 此时 cp 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
  • -r 若给出的源文件是一目录文件,此时 cp 将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
  • -l 不作拷贝,只是链接文件。

命令:

cp file1 file2 #拷贝文件
cp -r path1 path2 #将path1目录中的所有文件及其子目录拷贝到目录path2中。
cp file1 file2 path1 #把file1 file2 拷贝到path1中

mv

描述: 移动或重命名文件

命令:

mv file1 file2 #重命名文件
mv Junk1/file* . #把Junk1下的 与file匹配的文件 移动到当前目录
mv file1 file2 path1 #把file1 file2 移动到path1中

rm

描述: 删除文件

参数:

  • -r 删除目录
  • -f 强制删除文件

命令:

  rm file1 #删除文件
  rm -r path1 #删除目录

rmdir

描述: 删除空删除空文件夹文件

命令:

rmdir file #在有文件(隐藏文件和空文件)时不会删除

cat

描述: 组合文件并输出到屏幕

命令:

cat a b > c #合并a,b文件到c文件中
cat file1 #打印文件
cat >> file2 #向file2中追加空内容 一个大于符号时 覆盖file2 的内容

more(用于读取小的文件)

描述:可以用翻页的形式展示一个文件,读出文件全部内容

键盘操作:

  • 回车 --> 向下走一行
  • 空格 --> 翻页

备注:

  • /keywords 支持搜索

less(用于读取大的文件)

描述:可以用翻页的形式展示一个文件,不会把文件读完,根据键盘操作依次加载内容

备注:

  • /keywords 支持搜索

tail

描述:查看文件

参数:

  • -n 后接显示行数

命令:

tail -n 1 file1 #打印文件最后一行 -f(跟踪) -n x (最后 x 行) 默认 10 行

head

描述:查看文件

head -n 1 file1 打印文件开始一行 -n x(开始 x 行) 默认 10 行

tee

描述:读取标准输入的数据,并将其内容输出成文件

命令:

ping www.baidu.com | tee baidu.log

vi

描述:文件编辑

命令: vi file_name

  • vi 编辑器操作:
    • o 插入光标所在的下一行
    • O 插入光标所在的上一行
    • yy复制当前行内容
    • p粘贴复制的内容
    • dd删除当前行内容
    • shift+g移动到文件末尾
    • i开始输入内容
    • /输入内容回车搜索

备注:使用 nano file_name 打开文件,不熟悉 vim 者使用,其中,^代表的是ctrl

sudo

描述: 获得管理员权限

命令:

sudo -s #进入root权限
sudo -u tanmer - #选择tanmer角色并进入/home/tanmer/
sudo -E #当前的环境变量赋给管理员

su

描述: 切换到某某用户模式

命令:

su - tanmer #进入tanmer的home目录

查看服务器用户信息

  • users查看所有用户
  • who当前登录系统中的用户
  • whoami查看当前用户
  • env在环境信息中查看用户SSH_TTY=/dev/pts/11 指的是当前用户的编号
  • w当前登录系统中的用户
  • id 查看账号信息(用户组)

whois

描述:因特网域名和网络号码目录服务

命令:

whois tanmer.com

ps

描述:进程查看

  • ps -aux 可以看到所有运行的程序 与 grep 连用筛选
  • ps -a 显示现行终端机下的所有程序(包括其他用户的程序)
  • ps -u 以用户为主的排序显示(username)
  • ps -x 显示所有程序(包括所有终端机下的)

chmod

描述:修改文件或目录权限

命令:

chmod 755 file # 修改file的权限为 rwx-wx-wx (r=4 w=2 x=1)
chmod [u | g | o][- | + ][r | w | x] file1.txt # 每某个组添加(或删除)权限

watch

描述:实时监测

参数:

  • -n watch 缺省每 2 秒运行一下程序,可以指定间隔的时间。
  • -d 会高亮显示变化的区域。
  • -t 会关闭 watch 命令在顶部的时间间隔,命令,当前时间的输出。

free

描述:系统内存的使用量

参数:

  • -k or -m or -g Mem 行中数值的单位

screen

描述:使命令在退出终端时继续执行

命令:

screen -list #查看已开窗口
screen -dr xxx # 先退出再进入xxx窗口

kill

描述:终止程序

参数:

  • -9 强制终止
  • -u 指定用户

killall

描述:批量终止,所有进行

命令:

  • killall -9 -u <ubuntu> 终止所有 ubuntu 用户进程

netstat

描述: 显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接

参数:

  • -ntlp每个字母函数如下:
    • n 端口号用数字显示
    • t 协议类型
    • l 正在监听的端口
    • p 端口是由哪一个程序运行的

命令:

netstat -ntlp

lynx

描述:在 bash 中查看网页内容,服务器调试网页,

命令:

sudo apt-get install lynx #下载lynx
wget "http://www.baidu.com" -O 'baidu.html' - lynx baidu.com

ctrl + l 与 clear

描述:清屏

ln

描述:建立链接(软链接和硬链接)

硬链接:

参数:

  • 第一个参数 --> 原路径
  • 第二个参数 -->目标路径

备注:

  • 实际中不采用硬链接做法

命令:

ln file1 file2

软链接:

参数:

  • -s 软链接

备注:

  • 软链接两种链接不同目录下的文件:
    • ln -s 绝对路径 目标路径 先对目标路径找到绝对路径下的文件
    • ln -s ../qq.log tanmer.log qq.log 相对 tanmer.log 的路径

apt-cache

apt-cache search <安装包>

描述:查找安装包信息

apt-cache policy <安装包>

描述:查看安装包版本信息

lsb_release -a

描述:查看系统版本

备注:Codename: 不同版本的代号

sed

描述:文件内容修改

命令:

sed -i 's/xx/yy/' filename #xx 被替换的内容 yy 被替换为 ///分隔符可替换(!之类的字符)

env

描述: 查看当前用户的环境信息

临时设置环境变量:

export LC_ALL="en_US.UTF-8" #解决乱码问题
export EDITOR=vi #改变 Git 默认用 vi 编辑器

curl ifconfig.me

描述: 服务器所在的 IP 地址

sshfs

描述:挂载远程文件

  1. ubuntu 安装

    sudo apt-get install sshfs
    mkdir ~/droplet
    sshfs -o allow_other,defer_permissions ubuntu@xxxx:/home/ubuntu ~/droplet
    
  2. Mac 中进入 https://osxfuse.github.io/ 中下载:

    • FUSE for macOS 3.8.3
    • SSHFS 2.5.0
  3. 取消挂载

    umount file_name # 需要关闭占用文件夹的程序
    

tree

描述: 以树形的形式列出当前目录的文件和文件夹

参数:

  • -L N :查看当前第 N 级的目录结构

命令:

tree -L 1 # 显示第一级的目录结构

.
├── css
├── images
├── index.html
├── js
└── scss

4 directories, 1 file
2022-02-21
0