Kopite Kopite的博客

Linux入门

2017-06-25
Kopite

Linux分为内核版本、发行版本。

Linux内核版本并不提供各种工具和应用软件,用户无法仅通过使用Linux内核进行工作,目前最新的Linux内核版本为4.11.7,4指主版本,11指次版本,7指末版本。

以Linux内核为核心,再集成各种各样的系统管理软件或应用工具软件而组成一套完整的操作系统,如此的组合便称为Linux发行版,常见的Linux发行版有UbuntuCentOS、Redhat、Debian等。

与Windows的不同

  • Linux严格区分大小写
  • Linux中所有内容以文件形式保存,包括硬件
  • Linux不靠扩展名区分文件类型,而是依靠权限来区分文件类型,一些约定俗成的扩展名如下:
    • 压缩包:*.gz*.bz2*.tar.bz2*.tgz
    • 二进制软件包:.rpm
    • 网页文件:*.html*.php
    • 脚本文件:*.sh
    • 配置文件:*.conf
  • Windows下的程序不能直接在Linux中安装和运行

shell基础

概述

shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。

shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的脚本语言,在shell中可以直接调用Linux系统命令。

shell的分类:

  • Bourne shelll,主文件名为sh
  • C shell,主要在BSD版的Unix系统中使用

shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、bash、psh、zsh,C家族主要包括:csh、tcsh。bash与sh兼容,现在使用的Linux使用bash作为用户基本的shell,查看使用的shell类型:

[songyu@localhost ~]$ echo $SHELL
/bin/bash

脚本执行方式

第一个脚本

[songyu@localhost worktest]$ vi hello.sh
#!/bin/bash
# explain
#The first program.

echo "hello world"

脚本执行:

  • 赋予执行权限,直接运行:输入chmod 755 文件名赋予执行权限 -> 输入文件名运行
  • 通过bash调用执行脚本:bash 文件名
[songyu@localhost worktest]$ chmod 755 /home/songyu/worktest/hello.sh 
[songyu@localhost worktest]$ /home/songyu/worktest/hello.sh 
hello world
[songyu@localhost worktest]$ bash /home/songyu/worktest/hello.sh 
hello world

bash的基本功能

命令别名与快捷键

命令别名
  • 查看系统中所有的命令别名,alias
[songyu@localhost ~]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
快捷键
  • 字符界面和桌面切换
    • VMware中的CentOS由桌面切换至字符界面:Ctrl + Alt + 空格键 -> 释放空格键并且不要释放Ctrl + Alt,然后按F2键
    • VMware中的CentOS由字符界面切换至桌面:Ctrl + Alt + 空格键 -> 释放空格键并且不要释放Ctrl + Alt,然后按F1键
    • 调整VMware中的热键:编辑 -> 首选项 -> 热键
  • 清屏:Ctrl + l
  • 强制终止当前命令:Ctrl + c
  • 光标移动到命令行首:Ctrl + a
  • 光标移动到命令行尾:Ctrl + e
  • 从光标所在位置删除到行首:Ctrl + u
  • 把命令放入后台:Ctrl + z
  • 在历史命令中搜索:Ctrl + r

历史命令

history [选项] [历史命令保存文件],选项

  • -c,清空历史命令
  • -w,把缓存中的历史命令写入历史命令保存文件/root/.bash_history
[songyu@localhost ~]$ history
    1  s
    2  su root
    3  exit
    4  su
    5  su
    6  setup
    7  ipconfig
    8  ifconfig
    9  exit
   10  su
   11  pwd
   12  cd /root
   13  pwd

历史命令的调用:

  • 使用上、下箭头调用以前的历史命令
  • 使用!n重复执行第 n 条历史命令
  • 使用!!重复执行上一条历史命令
  • 使用!字串重复执行最后一条以该字串开头的命令
[songyu@localhost ~]$ history
  1  s
  2  su root
  3  exit
  4  su

  ...

  366  clear
  367  ls
  368  history
  369  ls /root/
  370  ls -a /root/
  371  history
[songyu@localhost ~]$ !367
ls
core.3528  worktest  公共  模板  视频  图片  文档  下载  音乐  桌面

在bash中,命令与文件补全是非常方便与常用的功能,只要在输入命令或文件时,按Tab键就会自动进行补全。

输出重定向

输出重定向

把本该显示在屏幕上的内容保存在文件中,标准输出重定向:

  • 命令 > 文件,以覆盖的方式,把命令的正确输出输出到指定的文件或设备中
  • 命令 >> 文件,以追加的方式,把命令的正确输出输出到指定的文件或设备中

标准错误输出重定向:

  • 错误命令 2> 文件,以覆盖的方式,把命令的错误输出输出到指定的文件或设备中
  • 错误命令 2>> 文件,以追加的方式,把命令的错误输出输出到指定的文件或设备中

正确输出和错误输出同时保存:

  • 命令 &> 文件,以覆盖的方式,把正确输出和错误输出都保存到同一个文件中
  • 命令 &>> 文件,以追加的方式,把正确输出和错误输出都保存到同一个文件中
[songyu@localhost worktest]$ ifconfig > test.log
[songyu@localhost worktest]$ cat test.log 
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.80.128  netmask 255.255.255.0  broadcast 192.168.80.255
        inet6 fe80::20c:29ff:fe09:2fe1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:09:2f:e1  txqueuelen 1000  (Ethernet)
        RX packets 363  bytes 40324 (39.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 221  bytes 23033 (22.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0	    
        ...
输入重定向

wc [选项] [文件名] -> 按Ctrl + d,选项:

  • -c,统计字节数
  • -w,统计单词数
  • -l,统计行数

管道符

命令1的正确输出作为命令2的操作对象,命令1 | 命令2

[songyu@localhost worktest]$ netstat -an | grep ESTABLISHED
udp        0      0 192.168.80.128:33891    203.135.184.123:123     ESTABLISHED
udp        0      0 192.168.80.128:47381    61.216.153.106:123      ESTABLISHED
udp        0      0 192.168.80.128:37356    51.15.41.135:123        ESTABLISHED
udp        0      0 192.168.80.128:42518    173.255.246.13:123      ESTABLISHED

常用命令

命令基本格式

  • 命令提示符[songyu@localhost ~]$ [root@localhost songyu]# 的含义:
    • songyu,当前登录用户
    • localhost,主机名
    • ~,当前所在目录(家目录,初始登录位置)
    • #,超级用户的提示符
    • $,普通用户的提示符
  • 命令格式:命令 [选项 可选] [参数 可选]。注意:个别命令使用不遵循此格式;当有多个选项时,可以写在一起;选项有简化选项和完整选项,例如-a等于-all

目录处理命令

  • 常见目录的作用
    • /,根目录
    • /bin,命令保存目录(普通用户就可以读取的命令)
    • /boot,启动目录,启动相关文件
    • /dev,设备文件保存目录
    • /etc,配置文件保存目录
    • /home,普通用户的家目录
    • /lib,系统库保存目录
    • /mnt,系统挂载目录
    • /media,挂载目录
  • 查看当前所在目录,pwd
[songyu@localhost ~]$ pwd
/home/songyu
  • 切换目录,cd [目录]
    • cd,进入当前用户的家目录
    • cd -,进入上次目录
    • cd ..,进入上一级目录
    • cd .,进入当前目录
[songyu@localhost worktest]$ cd ..
[songyu@localhost ~]$ ls
core.3528  worktest  公共  模板  视频  图片  文档  下载  音乐  桌面
[songyu@localhost ~]$ cd -
/home/songyu/worktest
[songyu@localhost worktest]$ pwd
/home/songyu/worktest
[songyu@localhost worktest]$ cd .
[songyu@localhost worktest]$ pwd
/home/songyu/worktest
[songyu@localhost worktest]$ cd ~
[songyu@localhost ~]$ pwd
/home/songyu
[songyu@localhost ~]$ cd /etc/
[songyu@localhost etc]$ pwd
/etc
  • 建立目录,mkdir [-p 递归创建] [目录名]
[songyu@localhost ~]$ mkdir worktest
[songyu@localhost ~]$ ls -lh
总用量 5.1M
-rw-------. 1 songyu songyu 5.1M 6月  26 21:44 core.3528
drwxrwxr-x. 2 songyu songyu    6 6月  27 14:08 worktest
drwxr-xr-x. 2 songyu songyu    6 6月  20 12:12 公共
drwxr-xr-x. 2 songyu songyu    6 6月  20 12:12 模板
drwxr-xr-x. 2 songyu songyu    6 6月  20 12:12 视频
drwxr-xr-x. 2 songyu songyu    6 6月  20 12:12 图片
drwxr-xr-x. 2 songyu songyu    6 6月  20 12:12 文档
drwxr-xr-x. 2 songyu songyu    6 6月  20 12:12 下载
drwxr-xr-x. 2 songyu songyu    6 6月  20 12:12 音乐
drwxr-xr-x. 2 songyu songyu    6 6月  20 12:12 桌面
[songyu@localhost ~]$ cd worktest/
[songyu@localhost worktest]$ ls
[songyu@localhost worktest]$ mkdir -p japan/cangls
[songyu@localhost worktest]$ ls
japan
  • 复制命令,cp [选项] [原文件或目录] [目标目录],选项:
    • -r,复制目录
    • -p,连带文件属性复制
    • -d,若源文件是链接文件,则复制链接属性
    • -a,相当于-pdr
[songyu@localhost worktest]$ cp core.3528 /home/songyu
[songyu@localhost worktest]$ rm -rf core.3528 
  • 剪切或改名命令,mv [原文件或目录] [目标目录],若原文件和目标文件在同一目录,改名;若原文件和目标文件不在同一目录,剪切
[songyu@localhost worktest]$ mv core.3528 japan/
[songyu@localhost worktest]$ ls
japan
[songyu@localhost worktest]$ cd japan/
[songyu@localhost japan]$ ls
core.3528
[songyu@localhost japan]$ mv core.3528 core.35
[songyu@localhost japan]$ ls
core.35
  • 删除空目录,rmdir [目录名]
[songyu@localhost worktest]$ ls
bols  japan
[songyu@localhost worktest]$ rmdir bols/
[songyu@localhost worktest]$ ls
japan
[songyu@localhost worktest]$ rmdir japan/
rmdir: 删除 "japan/" 失败: 目录非空
  • 删除文件或目录,rm [选项] [目录名],选项:
    • -r,删除目录
    • -f,强制
[songyu@localhost worktest]$ rm -rf japan/
[songyu@localhost worktest]$ ls
  • 查看目录中内容:ls [选项] [文件或目录],选项:
    • -a 显示所有文件,包括隐藏文件
    • -l 显示详细信息
    • -d 查看目录属性
    • -h 人性化显示文件大小
    • -i 显示inode
[songyu@localhost /]$ pwd
/
[songyu@localhost /]$ ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
[songyu@localhost /]$ ls -a
.   bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
..  boot  etc  lib   media  opt  root  sbin  sys  usr
[songyu@localhost /]$ ls -l
总用量 32
lrwxrwxrwx.   1 root root    7 6月  20 19:37 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 6月  26 20:17 boot
drwxr-xr-x.  20 root root 3360 6月  27 11:58 dev
drwxr-xr-x. 137 root root 8192 6月  27 11:56 etc
drwxr-xr-x.   3 root root   19 6月  20 19:59 home
lrwxrwxrwx.   1 root root    7 6月  20 19:37 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 6月  20 19:37 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 8月  12 2015 media
drwxr-xr-x.   2 root root    6 8月  12 2015 mnt
drwxr-xr-x.   3 root root   15 6月  20 19:54 opt
dr-xr-xr-x. 342 root root    0 6月  27 11:55 proc
drwxrwxrwx.   4 root root 4096 6月  27 12:58 root
drwxr-xr-x.  38 root root 1160 6月  27 11:58 run
lrwxrwxrwx.   1 root root    8 6月  20 19:37 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 8月  12 2015 srv
dr-xr-xr-x.  13 root root    0 6月  27 11:55 sys
drwxrwxrwt.  17 root root 4096 6月  27 13:06 tmp
drwxr-xr-x.  13 root root 4096 6月  20 19:37 usr
drwxr-xr-x.  21 root root 4096 6月  27 11:55 var
[songyu@localhost /]$ ls -d
.
[songyu@localhost /]$ ls -h
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
[songyu@localhost /]$ ls -i
    8039 bin        128 home        141 mnt       8201 run   16777346 tmp
     128 boot       138 lib    16777868 opt       8043 sbin  33595522 usr
    1025 dev        140 lib64         1 proc  33596089 srv        128 var
50331777 etc   50332369 media       133 root         1 sys

读、写、执行权限

  • 文件的读、写、执行权限,例如,-rw-r--r--的含义:
    • 第一位的- 文件类型,具体有- 文件d 目录l 软链接文件三种
    • 除了第一位的文件类型,后面还有九位,每三位为一组,rw- u所有者r-- g所属组r-- o其他人,其中,r代表读、w代表写、x代表执行
[songyu@localhost etc]$ ls -l
总用量 1484
drwxr-xr-x.  3 root root       97 6月  20 19:42 abrt
-rw-r--r--.  1 root root       16 6月  20 19:59 adjtime
-rw-r--r--.  1 root root     1518 6月   7 2013 aliases
-rw-r--r--.  1 root root    12288 6月  20 12:09 aliases.db
drwxr-xr-x.  2 root root       49 6月  20 19:43 alsa
drwxr-xr-x.  2 root root     4096 6月  20 19:54 alternatives
-rw-------.  1 root root      541 7月  27 2015 anacrontab
-rw-r--r--.  1 root root       55 3月   6 2015 asound.conf
-rw-r--r--.  1 root root        1 11月 20 2015 at.deny
drwxr-xr-x.  2 root root       31 6月  20 19:47 at-spi2
drwxr-x---.  3 root root       41 6月  20 19:43 audisp
drwxr-x---.  3 root root       79 6月  20 20:01 audit
-rw-r--r--.  1 root root    12706 11月 20 2015 autofs.conf
-rw-------.  1 root root      232 11月 20 2015 autofs_ldap_auth.conf
-rw-r--r--.  1 root root      795 11月 20 2015 auto.master
drwxr-xr-x.  2 root root        6 11月 20 2015 auto.master.d
-rw-r--r--.  1 root root      524 11月 20 2015 auto.misc
-rwxr-xr-x.  1 root root     1260 11月 20 2015 auto.net
-rwxr-xr-x.  1 root root      687 11月 20 2015 auto.smb
drwxr-xr-x.  4 root root       94 6月  20 19:51 avahi
drwxr-xr-x.  2 root root     4096 6月  20 19:54 bash_completion.d
-rw-r--r--.  1 root root     2835 8月  12 2015 bashrc
drwxr-xr-x.  2 root root        6 11月 20 2015 binfmt.d
drwxr-xr-x.  2 root root    12288 6月  20 19:45 brltty
-rw-r--r--.  1 root root    21929 3月   6 2015 brltty.conf
-rw-r--r--.  1 root root       38 12月  9 2015 centos-release
-rw-r--r--.  1 root root       51 12月  9 2015 centos-release-upstream
drwxr-xr-x.  2 root root       28 6月  20 19:43 certmonger
-rw-r--r--.  1 root root      676 3月   6 2015 cgconfig.conf
drwxr-xr-x.  2 root root        6 3月   6 2015 cgconfig.d
-rw-r--r--.  1 root root      265 6月  20 19:51 cgrules.conf
-rw-r--r--.  1 root root      131 3月   6 2015 cgsnapshot_blacklist.conf
drwxr-xr-x.  2 root root        6 11月 20 2015 chkconfig.d
-rw-r--r--.  1 root root     1165 11月 24 2015 chrony.conf
-rw-r-----.  1 root chrony     62 6月  20 20:01 chrony.keys
drwxr-xr-x.  2 root root       25 6月  20 19:51 cifs-utils
drwxr-xr-x.  2 root root       51 6月  20 19:51 cron.d
drwxr-xr-x.  2 root root       76 6月  20 19:51 cron.daily
-rw-------.  1 root root        0 7月  27 2015 cron.deny
drwxr-xr-x.  2 root root       44 6月  20 19:42 cron.hourly
drwxr-xr-x.  2 root root        6 6月  10 2014 cron.monthly
-rw-r--r--.  1 root root      451 6月  10 2014 crontab
drwxr-xr-x.  2 root root        6 6月  10 2014 cron.weekly
-rw-------.  1 root root        0 6月  20 19:37 crypttab
-rw-r--r--.  1 root root     1602 6月   7 2013 csh.cshrc
-rw-r--r--.  1 root root      841 6月   7 2013 csh.login
drwxr-xr-x.  5 root lp       4096 6月  27 12:57 cups
drwxr-xr-x.  2 root root       33 6月  20 19:47 cupshelpers
drwxr-xr-x.  4 root root       74 6月  20 19:42 dbus-1
drwxr-xr-x.  4 root root       29 6月  20 19:42 dconf
drwxr-xr-x.  2 root root       41 6月  20 19:59 default
drwxr-xr-x.  2 root root       22 6月  20 19:42 depmod.d
drwxr-x---.  3 root root       23 6月  20 19:42 dhcp
-rw-r--r--.  1 root root     5090 9月  12 2015 DIR_COLORS
-rw-r--r--.  1 root root     5725 9月  12 2015 DIR_COLORS.256color
-rw-r--r--.  1 root root     4669 9月  12 2015 DIR_COLORS.lightbgcolor
-rw-r--r--.  1 root root     1131 11月 21 2015 dleyna-server-service.conf
-rw-r--r--.  1 root root    25213 8月   6 2015 dnsmasq.conf
drwxr-xr-x.  2 root root        6 8月   6 2015 dnsmasq.d
-rw-r--r--.  1 root root     1285 11月 20 2015 dracut.conf
drwxr-xr-x.  2 root root        6 11月 20 2015 dracut.conf.d
-rw-r--r--.  1 root root     4113 11月 21 2015 drirc
-rw-r--r--.  1 root root      112 3月   6 2015 e2fsck.conf
-rw-r--r--.  1 root root     4760 6月  10 2014 enscript.cfg
-rw-r--r--.  1 root root        0 8月  12 2015 environment
-rw-r--r--.  1 root root     1317 6月  10 2014 ethertypes
-rw-r--r--.  1 root root        0 6月   7 2013 exports
drwxr-xr-x.  2 root root        6 11月 20 2015 exports.d
lrwxrwxrwx.  1 root root       56 6月  20 19:39 favicon.png -> /usr/share/icons/hicolor/16x16/apps/fedora-logo-icon.png
drwxr-xr-x.  2 root root       21 6月  20 19:45 fcoe
drwxr-xr-x.  2 root root       44 6月  20 19:45 festival
-rw-r--r--.  1 root root       70 8月  12 2015 filesystems
drwxr-x---.  5 root root     4096 6月  20 19:42 firewalld
drwxr-xr-x.  3 root root       36 6月  20 19:39 fonts
-rw-r--r--.  1 root root       20 6月  24 2014 fprintd.conf
-rw-r--r--.  1 root root      617 6月  20 19:37 fstab
-rw-r--r--.  1 root root       38 7月  22 2014 fuse.conf
drwxr-xr-x.  7 root root      102 6月  20 19:42 gconf
drwxr-xr-x.  2 root root        6 5月  12 2015 gcrypt
-rw-r--r--.  1 root root      265 9月  11 2015 gdbinit
drwxr-xr-x.  2 root root        6 9月  11 2015 gdbinit.d
drwxr-xr-x.  6 root root      101 6月  20 19:48 gdm
drwxr-xr-x.  2 root root       25 6月  20 19:43 geoclue
drwxr-xr-x.  3 root root       17 6月  20 19:45 ghostscript
drwxr-xr-x.  2 root root        6 6月  10 2014 gnupg
-rw-r--r--.  1 root root       94 4月  29 2015 GREP_COLORS
drwxr-xr-x.  4 root root       38 6月  20 19:39 groff
-rw-r--r--.  1 root root      987 6月  20 19:59 group
-rw-r--r--.  1 root root      981 6月  20 19:59 group-
lrwxrwxrwx.  1 root root       22 6月  20 19:51 grub2.cfg -> ../boot/grub2/grub.cfg
drwx------.  2 root root     4096 6月  20 19:58 grub.d
----------.  1 root root      799 6月  20 19:59 gshadow
----------.  1 root root      793 6月  20 19:59 gshadow-
drwxr-xr-x.  3 root root       19 6月  20 19:39 gss
drwxr-xr-x.  2 root root       26 6月  20 19:43 gssproxy
-rw-r--r--.  1 root root      871 6月  20 19:43 hba.conf

按照顺序,代表的含义如下:

  • 基本权限,前十位,例如-rw-r–r–
  • .,ACL权限
  • 引用计数,代表这个文件被调用过几次,例如1
  • 所有者,例如root
  • 所属组,例如root
  • 文件的大小(单位:字节),例如871
  • 文件的最后一次修改时间,例如6月 20 19:43
  • 文件名

搜索命令

文件搜索命令

  • locate 文件名,在后台数据库中仅按文件名进行搜索,搜索速度很快
[songyu@localhost ~]$ locate core.3528
/home/songyu/core.3528

locate命令所搜索的后台数据库:/var/lib/mlocate,该数据库默认一天更新一次,强制更新数据库命令:

[root@localhost songyu]# updatedb
  • find [搜索范围] [搜索条件],搜索文件,当搜索范围比较大时,会占用较大系统资源

命令搜索命令

  • whereis [选项] 文件名,搜索命令所在路径及帮助文档所在位置,选项:
    • -b,只查找可执行文件
    • -m,只查找帮助文件
[songyu@localhost ~]$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
  • which 文件名,搜索命令行所在路径及别名
[songyu@localhost ~]$ which ls
alias ls='ls --color=auto'
	/usr/bin/ls

字符串搜索命令

grep [选项] 字符串 文件名,在文件当中匹配符合条件的字符串,选项:

  • -i,忽略大小写
  • -v,排除指定字符串

帮助命令

  • man 命令,获取指定命令的帮助
[songyu@localhost ~]$ man man
[songyu@localhost ~]$ man ls
[songyu@localhost ~]$ man cd
  • 命令 --help,获取命令选项的帮助
[songyu@localhost ~]$ ls --help
  • help shell内部命令,获取shell内部命令的帮助。shell起Linux系统命令解释器的作用
[songyu@localhost ~]$ help help
help: help [-dms] [模式 ...]
    显示内嵌命令的相关信息。
    
    显示内嵌命令的简略信息。如果指定了 PATTERN 模式,
    给出所有匹配 PATTERN 模式的命令的详细帮助,否则打
    印一个帮助主题列表
    
    选项:
      -d	输出每个主题的简短描述
      -m	以伪 man 手册的格式显示使用方法
      -s	为每一个匹配 PATTERN 模式的主题仅显示一个用法
    	简介
    
    参数:
      PATTERN	Pattern 模式指定一个帮助主题
    
    退出状态:
    返回成功,除非 PATTERN 模式没有找到或者使用了无效选项。

压缩与解压缩命令

常用压缩格式:.zip.gz.bz2.tar.gz.tar.bz2

.zip

  • .zip格式压缩
    • 压缩文件,zip 压缩文件名 源文件
    • 压缩目录,zip -r 压缩文件名 源目录
[songyu@localhost japan]$ zip core.zip core.3528 
  adding: core.3528 (deflated 83%)
[songyu@localhost japan]$ mkdir china
[songyu@localhost japan]$ touch china/cangls
[songyu@localhost japan]$ touch china/bols
[songyu@localhost japan]$ zip -r china.zip china/
  adding: china/ (stored 0%)
  adding: china/cangls (stored 0%)
  adding: china/bols (stored 0%)
  • .zip格式解压缩,unzip 压缩文件
[songyu@localhost japan]$ unzip china.zip
Archive:  china.zip
   creating: china/
 extracting: china/cangls            
 extracting: china/bols 

.gz

  • .gz格式压缩
    • 压缩为.gz格式,源文件消失,gzip 源文件
    • 压缩为.gz格式,源文件保留,gzip -c 源文件 > 压缩文件
    • 压缩目录下所有的子文件,但是不压缩目录,gzip -r 目录
  • .gz格式解压缩
    • 解压缩文件,gzip -d 压缩文件
    • 解压缩文件,gunzip 压缩文件

.bz2

  • .bz2格式压缩,不能用于压缩目录
    • 压缩为.bz2格式,不保留源文件,bzip2 源文件
    • 压缩为.bz2格式,源文件保留,bzip -k 源文件
  • .bz2格式解压缩
    • 解压缩为,bzip2 -d 压缩文件-k保留压缩文件
    • 解压缩,bunzip2 压缩文件-k保留压缩文件

.tar

  • .tar格式打包,tar -cvf 打包文件名 源文件,选项:
    • -c,打包
    • -v,显示过程
    • -f,指定打包后的文件名
[songyu@localhost japan]$ tar -cvf china.tar china/
china/
china/cangls
china/bols
  • .tar格式解打包,tar -xvf 打包文件名,选项:
    • -x解打包
[songyu@localhost japan]$ tar -xvf china.tar 
china/
china/cangls
china/bols
.tar.gz
  • .tar.gz格式压缩,tar -zcvf 压缩包名.tar.gz 源文件,选项:
    • -z,压缩为.tar.gz格式
[songyu@localhost japan]$ tar -zcvf china.tar.gz china/
china/
china/cangls
china/bols
  • .tar.gz格式解压缩,tar -zxvf 压缩包名.tar.gz,选项:
    • -x,解压缩.tar.gz格式
[songyu@localhost japan]$ tar -zxvf china.tar.gz 
china/
china/cangls
china/bols
.tar.bz2
  • .tar.bz2格式压缩,tar -jcvf 压缩包名.tar.bz2 源文件,选项:
    • -z,压缩为.tar.bz2格式
[songyu@localhost japan]$ tar -jcvf china.tar.bz2 china/
china/
china/cangls
china/bols
  • .tar.bz2格式解压缩,tar -jxvf 压缩包名.tar.bz2,选项:
    • -x,解压缩.tar.bz2格式
[songyu@localhost japan]$ tar -jxvf china.tar.bz2 
china/
china/cangls
china/bols

关机和重启命令

  • shutdown [选项] 时间,选项:
    • -c,取消前一个关机命令
    • -h,关机
    • -r,重启
[songyu@localhost ~]$ date
2017年 06月 28日 星期三 17:05:03 CST
[songyu@localhost ~]$ shutdown -r 05:00
Must be root.
[songyu@localhost ~]$ su
密码:
[root@localhost songyu]# shutdown -r 05:00
Shutdown scheduled for 四 2017-06-29 05:00:00 CST, use 'shutdown -c' to cancel.
[root@localhost songyu]# shutdown -c

Broadcast message from root@localhost.localdomain (Wed 2017-06-28 17:06:21 CST):

The system shutdown has been cancelled at Wed 2017-06-28 17:07:21 CST!

其它命令

切换至root用户

由普通用户切换至root用户:打开终端,输入$ su命令 -> 按回车键 -> 输入root密码,即可切换至root用户,此时的提示符变为#,如下所示:

[songyu@localhost ~]$ su
密码:
[root@localhost songyu]# 

切换回普通用户:只需要输入# su 用户名,此时的提示符变为$,如下所示:

[root@localhost songyu]# su songyu
[songyu@localhost ~]$ 

chmod

Linux系统中的文件(目录)有执行等操作权限,如下图所示:

操作文件(目录)的用户有三种类型:文件所有者群组用户其它用户。例如,chmod 754 文件(目录)中最高位7表示文件所有者的权限,中间位5表示群组用户的权限,最低位4表示其它用户的权限。

当用户查看root挂载点的内容提示“您没有查看…的内容所需的权限”时,输入# chmod 777 /root即可访问,示例如下:

[root@localhost songyu]# chmod 777 /root

挂载命令

  • 查询系统中已经挂载的设备,mount
[songyu@localhost ~]$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=922772k,nr_inodes=230693,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=28,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/mapper/centos-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/centos-var on /var type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=187664k,mode=700,uid=1000,gid=1000)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sr0 on /run/media/songyu/CentOS 7 x86_64 type iso9660 (ro,nosuid,nodev,relatime,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks2)
  • 依据文件/etc/fstab的内容自动进行挂载,mount -a,光盘和U盘不要做成开机自动挂载
[songyu@localhost Packages]$ cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Jun 20 19:37:25 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=c7645e45-3683-49e5-a1e1-df247312cfe1 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-var  /var                    xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
  • 挂载命令格式,mount [-t 文件系统] [-o 特殊设备] 设备文件名 挂载点,选项:
    • -t 文件系统,加入文件系统类型来指定挂载的类型,可以是ext3、ext4、iso9660等文件系统
    • -o 特殊选项,可以指定挂载的额外选项
  • Linux中使用完光盘或U盘后必须卸载,umount 设备文件名或挂载点

Linux中光盘的挂载和卸载过程,示例如下:

  1. 如果是真实机,需要把光盘放到光驱中,此处以虚拟机中挂载光盘为例,首先给光盘创建一个挂载点
    [songyu@localhost /]$ mkdir /mnt/cdrom
    
  2. 光盘的设备文件名固定为/dev/sr0或者/dev/cdrom,二者是软链接关系,即同一个文件,挂载光盘
    [root@localhost /]# mount /dev/sr0 /mnt/cdrom/
    mount: /dev/sr0 写保护,将以只读方式挂载
    
  3. 查看光盘中的内容,验证是否挂载成功
    [root@localhost /]# cd /mnt/cdrom/
    [root@localhost cdrom]# ls
    CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
    EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
    EULA             isolinux  repodata  TRANS.TBL
    
  4. 用完光盘后必须卸载
    [root@localhost songyu]# umount /mnt/cdrom/
    
  5. 查看是否卸载成功
    [root@localhost songyu]# cd /mnt/cdrom/
    [root@localhost cdrom]# ls
    

用户登录查看命令

  • 查看登录的用户信息,w,命令输出:
    • USER:登录的用户名
    • TTY:登录终端
    • FROM:从哪个IP登录
    • LOGIN@:登录时间
    • IDLE:用户闲置时间
    • JCPU:和该终端连接的所有进程占用的时间
    • PCPU:当前进程所占用的时间
    • WHAT:当前正在运行的命令
[songyu@localhost ~]$ w
 22:50:06 up  1:49,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
songyu   :0       :0               21:01   ?xdm?   3:11   0.21s gdm-session-wor
songyu   pts/0    :0               22:50    5.00s  0.08s  0.03s w
  • who,命令输出:
    • 用户名
    • 登录终端
    • 登陆时间(登录IP)
[songyu@localhost ~]$ who
songyu   :0           2017-06-28 21:01 (:0)
songyu   pts/0        2017-06-28 22:50 (:0)
  • 查看当前登录和过去登录的用户信息,last,该命令默认读取/var/log/wtmp文件数据,命令输出:
    • 用户名
    • 登录终端
    • 登录IP
    • 登录时间
    • 退出时间(在线时间)
[songyu@localhost ~]$ last
songyu   pts/0        :0               Wed Jun 28 22:50   still logged in   
songyu   pts/0        :0               Wed Jun 28 21:01 - 22:49  (01:47)    
songyu   :0           :0               Wed Jun 28 21:01   still logged in   
(unknown :0           :0               Wed Jun 28 21:01 - 21:01  (00:00)    
reboot   system boot  3.10.0-327.el7.x Wed Jun 28 21:00 - 23:03  (02:03)    
songyu   pts/0        :0               Wed Jun 28 18:41 - 19:33  (00:51)    
songyu   pts/0        :0               Wed Jun 28 18:36 - 18:41  (00:05)    
songyu   pts/0        :0               Wed Jun 28 18:34 - 18:36  (00:01)    
songyu   pts/0        :0               Wed Jun 28 18:00 - 18:34  (00:34)    
songyu   pts/0        :0               Wed Jun 28 17:52 - 18:00  (00:08)    
songyu   pts/0        :0               Wed Jun 28 17:51 - 17:51  (00:00)    
songyu   pts/1        192.168.80.1     Wed Jun 28 17:47 - 17:47  (00:00)    
songyu   pts/0        :0               Wed Jun 28 17:04 - 17:48  (00:43)    
songyu   pts/0        :0               Wed Jun 28 17:04 - 17:04  (00:00)    
songyu   :0           :0               Wed Jun 28 17:01 - 19:33  (02:32)    
(unknown :0           :0               Wed Jun 28 17:00 - 17:01  (00:00)    
reboot   system boot  3.10.0-327.el7.x Wed Jun 28 16:59 - 19:33  (02:34)    
songyu   pts/0        :0               Wed Jun 28 10:58 - 12:46  (01:48)    
songyu   pts/0        :0               Wed Jun 28 10:51 - 10:58  (00:06)    
songyu   pts/0        :0               Wed Jun 28 10:17 - 10:51  (00:33)    
songyu   :0           :0               Wed Jun 28 10:12 - 12:47  (02:34)    
(unknown :0           :0               Wed Jun 28 10:11 - 10:12  (00:00)    
reboot   system boot  3.10.0-327.el7.x Wed Jun 28 10:10 - 19:33  (09:22)    
songyu   pts/1        :0               Tue Jun 27 17:39 - 18:53  (01:14)    
songyu   pts/1        :0               Tue Jun 27 12:58 - 17:36  (04:37)    
songyu   pts/1        :0               Tue Jun 27 12:35 - 12:58  (00:23)    
songyu   pts/2        192.168.80.1     Tue Jun 27 12:25 - 12:26  (00:01)    
songyu   pts/1        :0               Tue Jun 27 12:23 - 12:35  (00:11)    
songyu   pts/1        :0               Tue Jun 27 12:05 - 12:10  (00:05)    
songyu   pts/1        :0               Tue Jun 27 12:05 - 12:05  (00:00)    
songyu   pts/1        :0               Tue Jun 27 12:02 - 12:05  (00:02)    
songyu   pts/0        :0               Tue Jun 27 11:58 - 12:01  (00:03)    
songyu   :0           :0               Tue Jun 27 11:58 - 18:53  (06:55)    
(unknown :0           :0               Tue Jun 27 11:56 - 11:58  (00:02)    
reboot   system boot  3.10.0-327.el7.x Tue Jun 27 11:55 - 18:53  (06:58)    
songyu   pts/1        :0               Tue Jun 27 11:40 - 11:53  (00:13)    
(unknown :1           :1               Tue Jun 27 11:32 - 11:54  (00:22)    
songyu   pts/0        :0               Tue Jun 27 11:23 - 11:53  (00:30)    
songyu   pts/0        :0               Tue Jun 27 11:15 - 11:15  (00:00)    
songyu   :0           :0               Tue Jun 27 11:14 - 11:54  (00:39)    
(unknown :0           :0               Tue Jun 27 11:13 - 11:14  (00:00)    
reboot   system boot  3.10.0-327.el7.x Tue Jun 27 11:13 - 11:54  (00:41)    
songyu   pts/0        :0               Tue Jun 27 11:12 - 11:12  (00:00)    
songyu   pts/0        :0               Tue Jun 27 11:05 - 11:11  (00:06)    
songyu   :0           :0               Tue Jun 27 10:59 - 11:12  (00:13)    
(unknown :0           :0               Tue Jun 27 10:58 - 10:59  (00:00)    
reboot   system boot  3.10.0-327.el7.x Tue Jun 27 10:58 - 11:54  (00:55)    
songyu   :0           :0               Mon Jun 26 22:53 - 22:53  (00:00)    
(unknown :0           :0               Mon Jun 26 22:52 - 22:53  (00:00)    
reboot   system boot  3.10.0-327.el7.x Mon Jun 26 22:51 - 22:54  (00:02)    
songyu   tty6                          Mon Jun 26 21:44 - 22:37  (00:53)    
songyu   tty3                          Mon Jun 26 21:44 - 22:37  (00:53)    
songyu   tty2                          Mon Jun 26 21:43 - 22:37  (00:54)    
songyu   :0           :0               Mon Jun 26 21:41 - 22:37  (00:55)    
(unknown :0           :0               Mon Jun 26 21:41 - 21:41  (00:00)    
reboot   system boot  3.10.0-327.el7.x Mon Jun 26 21:40 - 22:54  (01:13)    
songyu   :0           :0               Mon Jun 26 21:38 - 21:39  (00:01)    
(unknown :0           :0               Mon Jun 26 21:38 - 21:38  (00:00)    
reboot   system boot  3.10.0-327.el7.x Mon Jun 26 21:37 - 21:39  (00:02)    
songyu   pts/0        :0               Mon Jun 26 21:32 - 21:37  (00:04)    
songyu   :0           :0               Mon Jun 26 20:17 - 21:37  (01:20)    
(unknown :0           :0               Mon Jun 26 20:16 - 20:17  (00:00)    
reboot   system boot  3.10.0-327.el7.x Mon Jun 26 20:15 - 21:39  (01:23)    
songyu   :0           :0               Tue Jun 20 12:20 - 12:23  (00:02)    
(unknown :0           :0               Tue Jun 20 12:20 - 12:20  (00:00)    
reboot   system boot  3.10.0-327.el7.x Tue Jun 20 20:12 - 12:23  (-7:-49)   
songyu   :0           :0               Tue Jun 20 12:12 - 12:18  (00:06)    
(unknown :0           :0               Tue Jun 20 12:12 - 12:12  (00:00)    
reboot   system boot  3.10.0-327.el7.x Tue Jun 20 20:01 - 12:23  (-7:-38)   

wtmp begins Tue Jun 20 20:01:34 2017
  • 查看所有用户的最后一次登录时间,lastlog,该命令默认读取/var/log/lastlog文件内容,命令输出:
    • 用户名
    • 登录终端
    • 登录IP
    • 最后一次登录时间
[songyu@localhost ~]$ lastlog
用户名           端口     来自             最后登陆时间
root             pts/0                     三 6月 28 23:02:13 +0800 2017
bin                                        **从未登录过**
daemon                                     **从未登录过**
adm                                        **从未登录过**
lp                                         **从未登录过**
sync                                       **从未登录过**
shutdown                                   **从未登录过**
halt                                       **从未登录过**
mail                                       **从未登录过**
operator                                   **从未登录过**
games                                      **从未登录过**
ftp                                        **从未登录过**
nobody                                     **从未登录过**
avahi-autoipd                              **从未登录过**
systemd-bus-proxy                           **从未登录过**
systemd-network                            **从未登录过**
dbus                                       **从未登录过**
polkitd                                    **从未登录过**
abrt                                       **从未登录过**
tss                                        **从未登录过**
unbound                                    **从未登录过**
usbmuxd                                    **从未登录过**
colord                                     **从未登录过**
saslauth                                   **从未登录过**
libstoragemgmt                             **从未登录过**
geoclue                                    **从未登录过**
rpc                                        **从未登录过**
setroubleshoot                             **从未登录过**
rtkit                                      **从未登录过**
ntp                                        **从未登录过**
qemu                                       **从未登录过**
rpcuser                                    **从未登录过**
nfsnobody                                  **从未登录过**
radvd                                      **从未登录过**
chrony                                     **从未登录过**
sssd                                       **从未登录过**
pulse                                      **从未登录过**
gdm              :0                        三 6月 28 21:01:07 +0800 2017
gnome-initial-setup                           **从未登录过**
avahi                                      **从未登录过**
postfix                                    **从未登录过**
sshd                                       **从未登录过**
tcpdump                                    **从未登录过**
songyu           pts/0                     三 6月 28 23:02:19 +0800 2017

环境变量

写入环境变量配置文件,vi ~/.bashrc

[songyu@localhost ~]$ vi /root/.bashrc 

上述命令需要重新登录才能使写入生效,立即生效需执行source /root/.bashrc命令

[songyu@localhost ~]$ source /root/.bashrc 
PATH

PATH环境变量定义的是系统搜索命令的路径

[songyu@localhost ~]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/songyu/.local/bin:/home/songyu/bin

vim编辑器

vi编辑器是Unix系统最初的编辑器,它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行,在文件中移动、插入、编辑和替换文本。在GNU项目将vi编辑器移植到开源世界后对其进行了一些改进,将其重命名为vi improved或vim。

vim编辑器有两种操作模式:

  • 普通模式
  • 插入模式

当刚打开要编辑的文档时,vim编辑器会进入普通模式,vim 文件名,如下所示:

[songyu@localhost worktest]$ vim helloworld.sh

vim提供了一些能够提高移动速度的命令:

  • PageDownCtrl + F:下翻一屏
  • PageUpCtrl + B:上翻一屏
  • G:移动到缓冲区的最后一行
  • num + G:移动到缓冲区的第num行
  • gg:移动到缓冲区的第一行

在普通模式中按i键切换到插入模式,此时可以通过上下左右移动光标,或空格、退格及回车等键编辑内容。要退出插入模式回到普通模式,按下键盘上的Esc键。

#!/bin/bash

echo "hello world!"

编辑结束后按Esc键切换到普通模式,输入:,有几个命令可以将缓冲区的数据保存到文件中并退出:

  • q:如果未修改缓冲区数据,退出
  • q!:取消所有对缓冲区数据的修改并退出
  • w filename:将文件保存到另一个文件中
  • wq:将缓冲区数据保存到文件中并退出
[songyu@localhost worktest]$ vim helloworld.sh
[songyu@localhost worktest]$ ls -l
总用量 16
-rw-rw-r--. 1 songyu songyu   4 6月  28 18:10 cc.conf
-rw-rw-r--. 1 songyu songyu   0 6月  28 18:22 ee.conf
-rw-rw-r--. 1 songyu songyu   0 6月  28 18:28 gg.conf
-rw-rw-r--. 1 songyu songyu  33 6月  28 21:22 helloworld.sh
drwxrwxr-x. 3 songyu songyu  54 6月  28 12:20 japan
-rw-r--r--. 1 songyu songyu 970 6月  28 17:55 yum.conf
-rw-rw-r--. 1 songyu songyu   4 6月  28 18:08 yy.conf
[songyu@localhost worktest]$ chmod 755 helloworld.sh
[songyu@localhost worktest]$ ls -l
总用量 16
-rw-rw-r--. 1 songyu songyu   4 6月  28 18:10 cc.conf
-rw-rw-r--. 1 songyu songyu   0 6月  28 18:22 ee.conf
-rw-rw-r--. 1 songyu songyu   0 6月  28 18:28 gg.conf
-rwxr-xr-x. 1 songyu songyu  33 6月  28 21:22 helloworld.sh
drwxrwxr-x. 3 songyu songyu  54 6月  28 12:20 japan
-rw-r--r--. 1 songyu songyu 970 6月  28 17:55 yum.conf
-rw-rw-r--. 1 songyu songyu   4 6月  28 18:08 yy.conf
[songyu@localhost worktest]$ ./helloworld.sh  
hello world!

上述命令中,./代表当前目录下。

可以使用vim查找命令来查找缓冲区中的数据,按下/键并输入要查找的文本,按下回车键:

  • 如果要查找的文本出现在光标当前位置之后,则光标会跳到该文本出现的第一个位置
  • 如果要查找的文本并未出现在光标当前位置之后出现,则光标会绕过文件末尾,出现在该文本所在的第一个位置
  • 输出一条错误消息,说明在文件中没有找到要查找的文本

echo

echo输出命令,echo [选项] [输出内容],选项

  • -e:支持反斜线控制的字符转换
  • \a,输出警告音
  • \b,退格键
  • \n,换行符
  • \r,回车键
  • \t,Tab键
[songyu@localhost ~]$ echo "jin tian tian qi bu cuo."
jin tian tian qi bu cuo.
[songyu@localhost ~]$ echo jin tian tian qi bu cuo.
jin tian tian qi bu cuo.
[songyu@localhost ~]$ echo -e "jin tian\n tian qi bu cuo."
jin tian
 tian qi bu cuo.

cat

cat命令会显示文本文件中的所有数据,cat [选项] [命令]

  • 查看文件内容,cat 文件名
  • 给所有行加行号,cat -n 文件名
  • 只给有文本的行加行号,cat -b 文件名
[songyu@localhost etc]$ cat yum.conf 
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release


#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
  • 创建一个文件,该文件已经存在时将清空原内容,cat > 文件名 -> 回车键 -> 输入文件内容 -> Ctrl + D退出
[songyu@localhost worktest]$ cat > yy.conf
a
b
[songyu@localhost worktest]$ cat yy.conf
a
b
  • 合并文件,cat 文件1 文件2 > 文件3
[songyu@localhost worktest]$ cat yy.conf 
a
b
[songyu@localhost worktest]$ cat cc.conf 
c
d
[songyu@localhost worktest]$ cat yy.conf cc.conf > ee.conf
[songyu@localhost worktest]$ cat ee.conf 
a
b
c
d

touch

touch [选项] 文件名

[songyu@localhost worktest]$ touch gg.conf
[songyu@localhost worktest]$ ls
cc.conf  ee.conf  gg.conf  japan  yum.conf  yy.conf
[songyu@localhost worktest]$ cat gg.conf 

more

more命令类似cat命令,cat命令是将整个文件的内容从上到下显示在屏幕上,而more命令是逐页的显示,常用命令参数如下:

  • +n:从第n行开始显示,例如more +5 catalina.out
  • -n:一次展示的行数

常用操作命令:

  • 回车键:向下n行,需要定义,默认为一行
  • Ctrl + F空格键:向下滚动一屏
  • Ctrl + B:向上滚动一屏
  • =:输出当前行的行号
  • :f:输出文件名和当前行的行号
  • q:退出more命令

less

相比于more命令,less命令更有弹性,常用命令如下:

  • /关键字:向下搜索关键字
  • ?关键字:向上搜索关键字
  • n:重复前一个搜索,与/?有关
  • N:反向重复前一个搜索,与/?有关
  • PageDownCtrl + F:下翻一屏
  • PageUpCtrl + B:上翻一屏
  • 回车键:向下滚动一行
  • 空格键:向下滚动一页
  • G:移动到最后一行
  • g:移动到第一行
  • q:退出less命令

tail

tail命令会显示文件最后几行(默认最后10行)的内容,常用命令参数如下:

  • -n num:显示的行数,例如tail -n 5 catalina.out
  • -f:实时查看文件的内容

ifconfig

打开终端 -> 输入ifconfig,可查看本机IP地址,区别于Windows系统中的ipconfig命令,如下所示:

[songyu@localhost ~]$ ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.80.128  netmask 255.255.255.0  broadcast 192.168.80.255
        inet6 fe80::20c:29ff:fe09:2fe1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:09:2f:e1  txqueuelen 1000  (Ethernet)
        RX packets 21  bytes 4972 (4.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 83  bytes 9160 (8.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 4  bytes 340 (340.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 340 (340.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:34:1e:60  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

netstat

netstat [选项]命令用于显示网络相关信息,如网络连接、路由表、接口状态等,输出结果分为两个部分:Active Internet connections (servers and established)Active UNIX domain sockets (servers and established),选项:

  • -a,列出所有的网络连接
  • -t,列出TCP协议端口
  • -u,列出UDP协议端口
  • -n,显示IP地址和端口号,而不显示域名和服务名
  • -l,仅列出在监听状态的网络服务
[songyu@localhost ~]$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 192.168.122.1:domain    0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
udp        0      0 192.168.80.128:44690    ntp3.itcompliance.d:ntp ESTABLISHED
udp        0      0 192.168.80.128:44907    biisoni.miuku.net:ntp   ESTABLISHED
udp        0      0 0.0.0.0:53102           0.0.0.0:*                          
udp        0      0 192.168.122.1:domain    0.0.0.0:*                          
udp        0      0 0.0.0.0:bootps          0.0.0.0:*                          
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*                          
udp        0      0 0.0.0.0:mdns            0.0.0.0:*                          
udp        0      0 localhost:323           0.0.0.0:*                          
udp        0      0 0.0.0.0:29154           0.0.0.0:*                          
udp        0      0 192.168.80.128:45600    leontp.ccgs.wa.edu.:ntp ESTABLISHED
udp        0      0 192.168.80.128:38492    61-216-153-107.HINE:ntp ESTABLISHED
udp6       0      0 [::]:16296              [::]:*                             
udp6       0      0 localhost:323           [::]:*                             
raw6       0      0 [::]:ipv6-icmp          [::]:*                  7          
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     29895    @/tmp/.ICE-unix/3115
unix  2      [ ACC ]     STREAM     LISTENING     8450     /run/systemd/journal/stdout
unix  2      [ ACC ]     STREAM     LISTENING     18181    /var/run/NetworkManager/private
unix  5      [ ]         DGRAM                    8453     /run/systemd/journal/socket
...
[songyu@localhost ~]$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 192.168.122.1:domain    0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
[root@localhost ~]# netstat -an | grep ESTABLISHED
udp        0      0 192.168.80.128:34932    94.237.64.20:123        ESTABLISHED
udp        0      0 192.168.80.128:55849    203.135.184.123:123     ESTABLISHED

Similar Posts

Comments