Linux基础

Linux基础

基础知识

文章目录

Linux的基本原则

  • 由目的单一的小程序组成,组成小程序来完成复杂的任务
[root@MR ~]# cat CentOS-Base.repo | wc -l
62
  • Linux里一切皆是文件
[root@MR ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@MR ~]# file /dev
/dev: directory
  • 一些配置文件都是保存成纯文本格式
[root@MR ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text

shell

  • 什么是shell呢,英语翻译shell就是一个外壳,他可以理解为用户的工作环境,在window中shell就是桌面,那在Linux中呢,我们常用的终端就是一个shell
[root@MR ~]# echo $SHELL
/bin/bash
  • 常见的shell有两种形式,一种是图形界面,即GUI,例如window就是一种GUI。还有一种就是命令行终端,即CLI,Linux系统中的bash就是CLI,接下来就会写到bash
[root@MR /]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
# 以上是本系统支持的shell

bash

bash的特性:

  • 支持命令历史、命令补全、路径补全
[root@MR /]# history
  .........以上省略........... 
  693  cat /etc/shells
  694  history
[root@MR /]# !693
cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
[root@MR /]# history -c
[root@MR /]# history
    1  history
[root@MR /]# pa
packer               parted               paste
pam_console_apply    partprobe            pathchk
pam_tally2           partx
pam_timestamp_check  passwd
[root@MR /]# passwd
[root@MR /]# cd /etc/sys
sysconfig/          sysctl.d/           system-release
sysctl.conf         systemd/            system-release-cpe
[root@MR /]# cd /etc/sysconfig/
  • 支持管道、重定向
 | 如同任意门
[root@MR ~]# cat CentOS-Base.repo | wc -l
62
[root@MR ~]# echo '12344321' > 15
[root@MR ~]# cat 15
12344321
  • 支持命令行编辑
alias   快捷命令操作
[root@MR ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@MR ~]# alias passwd='cat /etc/passwd'
[root@MR ~]# passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#(如果你先重启电脑还能使用的话,请往下看)
[root@MR ~]# ls -a
[root@MR ~]# vim .bashrc
(按字母“i”进入编辑模式)
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias network='cd /etc/sysconfig/network-scripts'
alias passwd='cat /etc/passwd' #(将此行命令添加进去)
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc #(如果你想任何用户都可以使用得话,请添加之此文本文件/etc/bashrc)
fi
(狂按‘esc键’输入":wq")
快捷操作键:
ctrl+a 命令回到开始
ctrl+e 命令回到最后
ctrl+w 命令一节一节得删除
  • 支持命令行展开
#(首先你要yum install tree -y 来安装tree)
[root@MR ~]# mkdir -p a/{b/{d,e/{f,g}},c}
[root@MR ~]# tree a
a
├── b
│   ├── d
│   └── e
│       ├── f
│       └── g
└── c

6 directories, 0 files
  • 支持文件名通配
#(a*可以匹配当前目录下所有a开头的文件)
[root@MR ~]# ls a*  
anaconda-ks.cfg

a:
b  c
  • 支持变量
[root@MR ~]# a=3
[root@MR ~]# echo $a
3
  • 支持编程
[root@MR ~]# vim shijian.sh
# 将date加如进去
[root@MR ~]# bash shijian.sh
2019年 03月 23日 星期六 11:31:45 CST

bash支持的引号

“ ` ”反引号 用于命令替换 反引号里面的命令取出来是它们的值

[root@MR ~]# pwd
/root
[root@MR ~]# echo `pwd`
/root

“ ‘ ” 单引号 取本身,不完成命令替换

[root@MR ~]# echo 'pwd'
pwd

" " ” 双引号 实现命令替换,支持变量

[root@MR ~]# a=1
[root@MR ~]# echo "$a"
1

另:单引号取出来是本身

反引号和双引号取出来是他们的值

bash的快捷操作

  • ctrl+a 跳到行头
  • ctrl+e 跳到行尾
  • ctrl+u 删除光标前面的内容
  • ctrl+k 删除光标后面的内容
  • ctrl+<–
  • ctrl+L 清屏

bash的命令历史

history 查看命令历史

[root@MR ~]# history
    1  ls
    2  history
    3  echo `$a`
    4  cd /etc/sysconfig/network-scripts/
    ......以下省略.........

常用选项

​ -c 清除历史命令

[root@MR ~]# history -c
[root@MR ~]# history
    1  history

​ -d 一般后接参数,删除第几条命名

[root@MR ~]# history
    1  history
    2  cd
    3  pwd
    4  ls
    5  mv
    6  history
[root@MR ~]# history -d 4
[root@MR ~]# history
    1  history
    2  cd
    3  pwd
    4  mv
    5  history
    6  history -d 4
    7  history

​ -w 保存文件到当前用户下的/.bash_history 中

[root@MR ~]# history -w
[root@MR ~]# cat .bash_history
history
cd
pwd
mv
history
history -d 4
history
history -w

​ !n 再次执行历史命令中的第n条历史命令

[root@MR ~]# history
    1  history
    2  cd
    3  pwd
    4  mv
    5  history
    6  history -d 4
    7  history
    8  history -w
    9  cat bash_history
   10  cat .bash_history
   11  history
[root@MR ~]# !3
pwd
/root

​ !-n 再次执行历史命令中倒数第n条命令

[root@MR ~]# history
    .......以上省略........
   15  stat a
   16  cd
   17  ls
   18  history
[root@MR ~]# !-3
cd

​ !! 执行上一条命令

[root@MR ~]# cd /etc/
[root@MR etc]# !!
cd /etc/

​ !stat 执行历史命令中最近一个以stat开头的命令

[root@MR ~]# history
..........以上省略..........
   28  stat a
   29  cd
   30  ls
   31  stat a
   32  ls
   33  cd
   34  pwd
   35  historiy
   36  history
[root@MR ~]# !stat
stat a
  文件:"a"
  大小:22              块:0          IO 块:4096   目录
设备:fd00h/64768d      Inode:694         硬链接:4
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2019-03-17 15:19:50.679860493 +0800
最近更改:2019-03-17 15:19:43.697860882 +0800
最近改动:2019-03-17 15:19:43.697860882 +0800
创建时间:-

​ !$ 引用前一条命令的最后一个参数

[root@MR ~]# cat /etc/hostname
MR.ZLJ

[root@MR ~]# vim !$
vim /etc/hostname

​ esc . 引用前一条命令的最后一个参数

[root@MR ~]# cat /etc/hostname
MR.ZLJ

[root@MR ~]# vim /etc/hostname   #此处按一下esc键然后在按"."键

bash的命令、路径补全

[root@MR /]# pa
packer               parted               paste
pam_console_apply    partprobe            pathchk
pam_tally2           partx
pam_timestamp_check  passwd
[root@MR /]# passwd
[root@MR /]# cd /etc/sys
sysconfig/          sysctl.d/           system-release
sysctl.conf         systemd/            system-release-cpe
[root@MR /]# cd /etc/sysconfig/

bash命令别名

alias   快捷命令操作
[root@MR ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@MR ~]# alias passwd='cat /etc/passwd'
[root@MR ~]# passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#(如果你先重启电脑还能使用的话,请往下看)
[root@MR ~]# ls -a
[root@MR ~]# vim .bashrc
(按字母“i”进入编辑模式)
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias network='cd /etc/sysconfig/network-scripts'
alias passwd='cat /etc/passwd' #(将此行命令添加进去)
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc #(如果你想任何用户都可以使用得话,请添加之此文本文件/etc/bashrc)
fi
(狂按‘esc键’输入":wq")

bash中的命令替换

[root@MR ~]# echo $(pwd)
/root
[root@MR ~]# echo `pwd`
/root

另谨记单引号取出来是本身,反引号和双引号取出来是他们的值

bash命令展开

~:展开为用户的家目录

[root@MR ~]# cd ~
[root@MR ~]# pwd
/root

~USERNAME:展开为指定用户USERNAME的家目录

[root@MR home]# cd ~zhou
[root@MR zhou]# ls

{}:可承载一个以逗号分隔的列表,并将其展开为多个路径

mkdir -p a/{b/{d,f},c}

bash环境变量

PATH 命令搜索路径

which 哪里

[root@MR ~]# which ls
alias ls='ls --color=auto'
        /usr/bin/ls

HISTSIZE 定义命令历史能存多少条,默认为1000条

[root@MR ~]# echo $HISTSIZE
1000
[root@MR ~]# HISTSIZE=100
[root@MR ~]# echo $HISTSIZE
100

SHELL 当前系统中使用的shell

常见的SHELL在/etc/shells中

[root@MR ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

命令语法

(命令){选项} 【参数】

选项:可以没有,也可以很多个

​ 短格式之间可以合并

​ 长格式之间不能合并

参数:命令的对象,可以没有,也可以有多个

命令类型

  • 内部命令:shell内置
[root@MR ~]# type pwd
pwd 是 shell 内嵌
  • 外部命令:在某一个路径下面有一个和命令名称相对应的可执行文件
[root@MR ~]# type mv
mv 是 `mv -i' 的别名
[root@MR ~]# type passwd
passwd 是 /usr/bin/passwd

ls:列出指定目录的内容

​ -l 长格式显示

[root@MR ~]# ls -l
总用量 4
drwxr-xr-x. 2 root root  43 3月  10 00:15 1111111
-rw-------. 1 root root 810 3月   6 16:33 anaconda-ks.cfg

​ -h 做单位转换

​ -a 显示所有文件(包括隐藏文件)

[root@MR ~]# ls -alh
总用量 48K
dr-xr-x---.  3 root root 4.0K 3月  23 17:50 .
drwxr-xr-x. 17 root root 4.0K 3月  23 14:47 ..
drwxr-xr-x.  2 root root   43 3月  10 00:15 1111111
-rw-------.  1 root root  810 3月   6 16:33 anaconda-ks.cfg
-rw-------.  1 root root 5.8K 3月  23 17:14 .bash_history
-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
-rw-r--r--.  1 root root  224 3月   7 21:59 .bashrc
-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc
-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc
-rw-------.  1 root root 5.4K 3月  23 16:43 .viminfo

​ -d 显示目录自身的属性

[root@MR ~]# ls -ld
dr-xr-x---. 3 root root 4096 3月  23 17:50 .

​ -t 以时间排序

[root@MR ~]# ls -tl /
总用量 28
drwxrwxrwt.   7 root root  101 3月  26 17:25 tmp
drwxr-xr-x.  76 root root 8192 3月  26 17:04 etc
drwxr-xr-x.  23 root root  720 3月  26 17:03 run
drwxr-xr-x.  20 root root 3180 3月  26 17:03 dev
dr-xr-xr-x.  13 root root    0 3月  26 17:03 sys
drwxr-xr-x.  21 root root 4096 3月  26 17:03 var
dr-xr-xr-x. 418 root root    0 3月  26 17:03 proc
dr-xr-x---.   4 root root 4096 3月  10 00:17 root
drwxr-xr-x.   2 root root    6 3月   8 19:55 home
drwxr-xr-x.   3 root root   18 3月   8 17:59 mnt
dr-xr-xr-x.   3 root root 4096 3月   6 16:48 boot
drwxr-xr-x.  13 root root 4096 3月   6 16:30 usr
lrwxrwxrwx.   1 root root    9 3月   6 16:30 lib64 -> usr/lib64

​ -r 逆序显示

[root@MR ~]# ls -lar
总用量 48
-rw-------.  1 root root 5528 3月  23 16:43 .viminfo
-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc
-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc
-rw-r--r--.  1 root root  224 3月   7 21:59 .bashrc
-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
-rw-------.  1 root root 5844 3月  23 17:14 .bash_history
-rw-------.  1 root root  810 3月   6 16:33 anaconda-ks.cfg
drwxr-xr-x.  2 root root   43 3月  10 00:15 1111111
drwxr-xr-x. 17 root root 4096 3月  23 14:47 ..
dr-xr-x---.  3 root root 4096 3月  23 17:50 .

cd:切换目录

pwd:打印当前所在目录

[root@MR home]# pwd
/home
[root@MR home]# cd /etc
[root@MR etc]# pwd
/etc

mkdir:创建目录

-p:创建目录时若父目录不存在则自动创建

-v:显示创建目录的过程

[root@MR ~]# mkdir -vp a/{b/{d,e},c}
mkdir: 已创建目录 "a"
mkdir: 已创建目录 "a/b"
mkdir: 已创建目录 "a/b/d"
mkdir: 已创建目录 "a/b/e"
mkdir: 已创建目录 "a/c"

touch:创建空文件(更新文件时间)

再次创建文件就是更新时间戳
[root@MR ~]# ls -l
总用量 4
-rw-r--r--. 1 root root   0 3月  23 18:05 1
drwxr-xr-x. 2 root root  43 3月  10 00:15 1111111
drwxr-xr-x. 4 root root  22 3月  23 17:58 a
-rw-------. 1 root root 810 3月   6 16:33 anaconda-ks.cfg
[root@MR ~]# touch 1
[root@MR ~]# ls -l
总用量 4
-rw-r--r--. 1 root root   0 3月  23 18:06 1
drwxr-xr-x. 2 root root  43 3月  10 00:15 1111111
drwxr-xr-x. 4 root root  22 3月  23 17:58 a
-rw-------. 1 root root 810 3月   6 16:33 anaconda-ks.cfg

stat:显示文件或文件系统的状态

[root@MR ~]# stat 1
  文件:"1"
  大小:0               块:0          IO 块:4096   普通空文件
设备:fd00h/64768d      Inode:68184559    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2019-03-23 18:06:15.458598473 +0800
最近更改:2019-03-23 18:06:15.458598473 +0800
最近改动:2019-03-23 18:06:15.458598473 +0800
创建时间:-

rm:删除文件

-r:递归删除,删除目录时必须使用此选项

-f:强制删除,不询问

[root@MR ~]# ls -l
总用量 4
-rw-r--r--. 1 root root   0 3月  23 18:06 1
drwxr-xr-x. 2 root root  43 3月  10 00:15 1111111
drwxr-xr-x. 4 root root  22 3月  23 17:58 a
-rw-------. 1 root root 810 3月   6 16:33 anaconda-ks.cfg
[root@MR ~]# rm -rf a
[root@MR ~]# ls
1  1111111  anaconda-ks.cfg

cp:复制文件

一个文件到一个文件,多个文件到一个目录

-a:归档复制,常用于备份

-r:递归拷贝,拷贝目录时必须使用此选项

-p:拷贝时保留原权限

[root@MR ~]# ls
1  2  3  A  anaconda-ks.cfg  b
[root@MR ~]# cp 1 2 3 A
[root@MR ~]# cd A
[root@MR A]# ls
1  2  3

[root@MR ~]# ls -l
总用量 4
drwxr-xr-x. 2 root root   6 3月  23 18:12 A
-rw-------. 1 root root 810 3月   6 16:33 anaconda-ks.cfg
[root@MR ~]# cp -arp A b
[root@MR ~]# ls -l
总用量 4
drwxr-xr-x. 2 root root   6 3月  23 18:12 A
-rw-------. 1 root root 810 3月   6 16:33 anaconda-ks.cfg
drwxr-xr-x. 2 root root   6 3月  23 18:12 b

mv:移动文件(重命名)

[root@MR ~]# ls
1  2  3  A  anaconda-ks.cfg  b
[root@MR ~]# mv A B
[root@MR ~]# ls
1  2  3  anaconda-ks.cfg  b  B
[root@MR ~]# mv b B
[root@MR ~]# ls B
1  2  3  b

cat:顺序查看文本内容

拼接文件内容并输出至标准输出(屏幕)

-n:显示行号

[root@MR ~]# cat -n anaconda-ks.cfg
     1  #version=RHEL7
     2  # System authorization information
     3  auth --enableshadow --passalgo=sha512
     4
     5  # Use CDROM installation media
     6  cdrom
     7  # Run the Setup Agent on first boot
............以下省略.............

tac:逆序查看文件内容

连接文件并倒序打印内容至标准输出

[root@MR ~]# tac anaconda-ks.cfg

%end

@core
%packages

clearpart --none --initlabel
# Partition clearing information

more:全屏查看文本文件内容

只能从前往后看,百分比查看,看完自动退出

[root@MR ~]# more anaconda-ks.cfg
#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512

# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot

--More--(34%)

less:全屏查看文本文件内容

可从前往后看亦可从后往前看,看完不会自动退出

(往上是b,往下是空格,退出是q)

head:从前往后查看一定行数

默认下显示前十行,我们也可以输入-n 【输入一个数字】来查看你想要看到的前多少行

[root@MR ~]# head CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
......................以下省略7条........................
[root@MR ~]# head -n 1 CentOS-Base.repo
# CentOS-Base.repo

tail:从后往前查看一定行数

默认下只显示后十行,我们也可以输入-n 【输入一个数字】来查看你想要看到的后多少行

[root@MR ~]# tail CentOS-Base.repo
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
......................以下省略7条........................
[root@MR ~]# tail -n 1 CentOS-Base.repo
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6

-f:实时查看文件的更新

[root@MR ~]# cat 1
123
456
789
[root@MR ~]# tail -f 1
123
456
789
#此时我们另开一个终端
[root@MR ~]# vim 1
#把789改为444
此时另外一个终端就会变
[root@MR ~]# tail -f 1
123
456
444

wc:用于统计文本文件的行数、字数、字节数

用于统计指定文本的行数、字数、字节数

-l 只显示行数

-w 只显示单词数

-c 只显示字节数

#例如我现在来统计刚才这个1文本
[root@MR ~]# wc -l 1
1 1
#1这个文本只有一行
[root@MR ~]# wc -w 1
4 1
#1这个文本只有4个单词
[root@MR ~]# wc -c 1
9 1
#1这个文本只有9个字节

du:查看文件或目录占用的磁盘空间大小

-s:显示总的占用空间大小

-h:单位转换,以更友好的方式显示大小

一般两者组合使用 du -sh

[root@MR ~]# du -sh anaconda-ks.cfg
4.0K    anaconda-ks.cfg

df:报告文件系统磁盘空间使用情况

-h:单位转换,以更友好的方式显示大小

[root@MR ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root   18G  937M   17G    6% /
devtmpfs               908M     0  908M    0% /dev
tmpfs                  914M     0  914M    0% /dev/shm
tmpfs                  914M  8.6M  905M    1% /run
tmpfs                  914M     0  914M    0% /sys/fs/cgroup
/dev/sr0               3.5G  3.5G     0  100% /mnt/cdrom
/dev/sda1              497M   96M  401M   20% /boot

hostname:查看或临时修改主机名,重开终端有效,重启失效

[root@MR ~]# hostname 123
[root@MR ~]# bash
[root@123 ~]# reboot
#重启之后
[root@MR ~]# hostname
MR.ZLJ

hostnamectl:查看或永久修改主机名,重开终端有效,重启依然有效

可在/etc/hostname中配置

[root@MR ~]# vim /etc/hostname

clear:清屏

输入到屏幕后,屏幕会被清空

[root@MR ~]# clear

whoami:显示当前登录用户

[root@MR ~]# whoami
root

w:显示当前在线用户并显示其正在运行的命令

[root@MR ~]# w
 20:57:35 up 4 min,  1 user,  load average: 0.02, 0.10, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     20:53    7.00s  0.02s  0.01s w

who:查看当前在线用户

[root@MR ~]# who
root     pts/0        2019-03-23 20:53 (192.168.83.1)

which:显示指定命令的绝对路径

[root@MR ~]# which pwd
/usr/bin/pwd

cal:显示日历

[root@zhoulijie ~]# cal
     March 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 29 30
31
# 在cal 后面更上年份,就显示那一年
[root@zhoulijie ~]# cal 2018
                               2018

       January               February                 March
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6                1  2  3                1  2  3
 7  8  9 10 11 12 13    4  5  6  7  8  9 10    4  5  6  7  8  9 10
14 15 16 17 18 19 20   11 12 13 14 15 16 17   11 12 13 14 15 16 17
21 22 23 24 25 26 27   18 19 20 21 22 23 24   18 19 20 21 22 23 24
28 29 30 31            25 26 27 28            25 26 27 28 29 30 31
....................以下省略.................................

ldd:查看指定程序有哪些依赖库文件

[root@MR ~]# ldd /usr/bin/pwd
        linux-vdso.so.1 =>  (0x00007fff58dfe000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f093cc15000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f093cfdc000)

date:显示示或设置日期与时间

-s:以字符串方式设置时间

[root@MR ~]# date
2019年 03月 23日 星期六 20:59:54 CST
[root@MR ~]# date -s "2019-03-23 21:00:00"
2019年 03月 23日 星期六 21:00:00 CST

格式化输出时间:

+%Y:年 %m:月 %d:日 %H:时 %M:分 %S:秒

[root@MR ~]# mkdir $(date '+%Y-%m-%d'-测试)
[root@MR ~]# ls
index.html.1      111_file    anaconda-ks.cfg   
2019-03-23-测试  
[root@MR ~]# mkdir `date '+%Y-%m-%d-%H:%M:%S'-测试`
[root@MR ~]# ls
 2019-03-23-测试 
111_file  2019-03-09-测试   index.html.1 
2019-03-23-11:56:35-测试  anaconda-ks.cfg 

获取帮助

内部命令:help 【命令】

外部命令:【命令】–help

man手册:man【命令】

通配符

*:匹配任意长度的任意字符

[root@zhoulijie opt]# ls
123456789  185dcdvdv  1cshcd  acvbfv  bgfdbdsgv
[root@zhoulijie opt]# rm -rf 1*
[root@zhoulijie opt]# ls
acvbfv  bgfdbdsgv

?:是匹配任意单个字符

[root@zhoulijie opt]# ls
acvbfv  al  bgfdbdsgv
[root@zhoulijie opt]# ls a?
al

[]:是匹配指定范围内的单个字符

[root@zhoulijie wen]# ls
1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  g  h  i  j  k  l  m
[root@zhoulijie wen]# ls [1-9]
1  2  3  4  5  6  7  8  9
[root@zhoulijie wen]# ls [1,a]
1  a
[root@zhoulijie wen]# ls [a-h]
a  b  c  d  e  f  g  h

[^]:是匹配指定范围之外的任意单个字符

[root@zhoulijie wen]# ls [^a-m]
1  2  3  4  5  6  7  8  9
[root@zhoulijie wen]# ls [^1-9]
a  b  c  d  e  f  g  h  i  j  k  l  m

常见的归档与压缩文档格式

  • .gz
  • .bz2
  • .xz
  • .zip
  • .z

归档工具–tar

常见的选项:

  • -c:创建归档文件
  • -f file.tar:指定要操作的归档文件
  • -x:还原归档文件
  • -v:显示归档过程
  • -p:归档时保留权限信息。只有管理员才有此权限用此选项
  • -C:指定还原归档或解压时的目录
  • -tf:不展开归档,直接查看归档了哪些文件

常用的组合项:

  • -zcf abc.tar.gz:归档并调用gzip进行压缩
[root@MR ~]# ls
1  2  3  anaconda-ks.cfg  B
[root@MR ~]# tar -zcf abc.tar.gz 1 2 3
[root@MR ~]# ls
1  2  3  abc.tar.gz  anaconda-ks.cfg  B
  • -jcf abc.tar.bz2:归档并调用bzip2进行压缩
[root@MR ~]# tar -jcf abc.tar.bz2 1 2 3
[root@MR ~]# ls
1  2  3  abc.tar.bz2  abc.tar.gz  anaconda-ks.cfg  B
  • -Jcf abc.tar.xz:归档并调用xz进行压缩
[root@MR ~]# tar -Jcf abc.tar.xz 1 2 3
[root@MR ~]# ls
1  2  3  abc.tar.bz2  abc.tar.gz  abc.tar.xz  anaconda-ks.cfg  B
  • -xf abc.tar.gz:解压
  • -C 是指定解压后的文件放哪里
[root@MR ~]# mkdir q
[root@MR ~]# tar -xf abc.tar.bz2 -C q
[root@MR ~]# ls q
1  2  3

文本排序命令sort

  • -n 以数值大小进行排序
[root@MR ~]# vim 123
12
3
10
4
7
1
[root@MR ~]# sort -n 123
1
3
4
7
10
12
  • -u:去重,排序后相同的行只显示一次
[root@zhoulijie tmp]# cat 1
1
3
5
7
9
1
7
9
3
[root@zhoulijie tmp]# sort -u 1
1
3
5
7
9

文本去重命令uniq

此命令要结合前面的一个命令sort -n 排序后才能使用

​ -c:显示文件中行重复的次数

[root@zhoulijie tmp]# cat 1
1
3
5
7
9
1
7
9
3
[root@zhoulijie tmp]# sort -n 1 | uniq -c
      2 1
      2 3
      1 5
      2 7
      2 9

​ -d:只显示重复的行

[root@zhoulijie tmp]# cat 1
1
3
5
7
9
1
7
9
3
[root@zhoulijie tmp]# sort -n 1 | uniq -d
1
3
7
9

​ -u:只显示未重复的行

[root@zhoulijie tmp]# cat 1
1
3
5
7
9
1
7
9
3
[root@zhoulijie tmp]# sort -n 1 | uniq -u
5

cut 提取

-d:指定字段为分隔符,默认是空格

-f:指定要显示的字段,可以是“,”,也可以是“—”

​ -f 1,5 显示一和五行

​ -f1-5 显示一到五行

[root@MR ~]# cut -d: -f 1,5 /etc/passwd
root:root
bin:bin
daemon:daemon
adm:adm
lp:lp
sync:sync
shutdown:shutdown
halt:halt
mail:mail
operator:operator
.........以下省略。。。。。。。。。。

awk 高级提取

-F:指定字段为分隔符,默认是空格

NR== :后接数字,代表第几行

$ :后接数字,代表第几列,多列之间用“,”隔开

在ifconfig中查找IP地址

[root@MR ~]# ifconfig | awk -F' ' 'NR==2 {print $2}'
172.17.206.240
[root@MR ~]#  ip a | awk 'NR==9 { print $2 }'| awk -F/ '{print $1}'
192.168.83.130

sed 高级替换

替换格式为:sed -i ‘s/需要替换的字符/替换的字符/y’ 后接文件

[root@MR ~]# cat abc
hello nihao
hello 123
hello 456
hello nihao

[root@MR ~]# sed -i 's/nihao/hi/g' abc
[root@MR ~]# cat abc
hello hi
hello 123
hello 456
hello hi

文件命名规范

  • 长度不能超过255字符
  • 不能使用/当文件名
  • 严格区分大小写

文本过滤grep

grep命令广泛用于在文本中执行关键词搜索,并且显示匹配结果

[root@zhoulijie tmp]# grep /bin/bash  /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhang:x:998:997::/home/zhang:/bin/bash
zhou:x:1000:1000::/home/zhou:/bin/bash

此命令广泛用于与管道符相结合使用

[root@zhoulijie tmp]# cat anaconda-ks.cfg | grep password
# Root password

文件查找命令find

用于按照指定条件来查找文件

  • -name 匹配名称
[root@zhoulijie tmp]# find / -name fstab
/etc/fstab
[root@zhoulijie tmp]# find / -name sda
/dev/sda
/sys/devices/pci0000:00/0000:00:10.0/host7/target7:0:0/7:0:0:0/block/sda
/sys/block/sda
/sys/class/block/sda
  • -user 匹配所有者
[root@zhoulijie tmp]# find / -user zhou
find: ‘/proc/3238/task/3238/fd/6’: 没有那个文件或目录
find: ‘/proc/3238/task/3238/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/3238/fd/6’: 没有那个文件或目录
find: ‘/proc/3238/fdinfo/6’: 没有那个文件或目录
/var/spool/mail/zhou
/home/zhou
/home/zhou/.bash_logout
/home/zhou/.bash_profile
/home/zhou/.bashrc
  • xargs 通过管道符将查找到的内容给xargs处理,后接命令
[root@zhoulijie tmp]# ls a
[root@zhoulijie tmp]# find / -name fstab | xargs cp -t a
[root@zhoulijie tmp]# ls a
fstab

文件的层级系统

FHS:文件层级系统

  • /:根分区
  • /boot:开机所需文件——内核、开机菜单以及所需要配置文件等
  • /dev:以文件形式存放任何设备与接口
  • /etc:配置文件
  • /home:普通用户的家目录
  • /root:系统管理员的家目录
  • /bin:存放单用户模式下还可以操作的命令
  • /lib:开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
  • /sbin:开机过程中需要的命令
  • /media:挂载点目录,通常用来挂载移动硬盘
  • /mnt:挂载点目录,通常用来挂载额外的临时文件系统
  • /opt:放置第三方的软件
  • /sys:伪文件系统,跟硬盘设备文键相关的属性映射文件,不能单独分区
  • /srv:一些网络服务的数据文件目录
  • /tmp:任何人均可以使用的“共享”临时目录
  • /proc:虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
  • /usr:全局共享只读文件。提供操作系统核心功能,可以单独分区
  • /usr/local:用户自行安装的软件
  • /usr/sbin:Linux系统开机时不会使用到的软件/命令/脚本
  • /usr/share:帮助与说明文档,也可放置共享文件
  • /var:主要存放经常变化的文件,如日志
  • /lost+found:当文件系统发生错误时,将一些丢失的文件片段存放在这里

/etc、/bin、/sbin、/lib等目录内时系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上

/usr/bin、/usr/sbin、/usr/lib提供操作系统核心功能,/usr可以单独分区

/usr/local/bin、/usr/local/sbin、/usr/local/lib、/usr/local/etc、/usr/local/man等等在/usr/local目录下的内容都是第三方软件,建议单独分区

重定向

【覆盖输出】:>

[root@zhoulijie tmp]# ls
[root@zhoulijie tmp]# echo "1234" > 123
[root@zhoulijie tmp]# ls
123
[root@zhoulijie tmp]# cat 123
1234

【追加输出】:>>

[root@zhoulijie tmp]# cat 123
1234
[root@zhoulijie tmp]# echo "5678" >> 123
[root@zhoulijie tmp]# cat 123
1234
5678

【错误覆盖输出】:2>

[root@zhoulijie tmp]# ls
123
[root@zhoulijie tmp]# ls abc
ls: 无法访问abc: 没有那个文件或目录
[root@zhoulijie tmp]# ls abc 2> 123
[root@zhoulijie tmp]# cat 123
ls: 无法访问abc: 没有那个文件或目录

【标准覆盖输出和错误覆盖输出到同一文件里面】:&>

[root@zhoulijie tmp]# ls
123
[root@zhoulijie tmp]# ls -l 123 abc &> qqq
[root@zhoulijie tmp]# cat qqq
ls: 无法访问abc: 没有那个文件或目录
-rw-r--r--. 1 root root 10 3月  25 18:38 123

【输入重定向】:<

此输入重定向适用于mysql语句中恢复sql

[root@zhoulijie tmp]# mysql < 1.sql

管道符

命令A |命令B

意思就是前一个命令的结果交给后一个命令去处理

[root@zhoulijie tmp]# cat anaconda-ks.cfg | grep password
# Root password
[root@zhoulijie tmp]# touch a | ls -l | tee a
总用量 12
-rw-r--r--. 1 root root  10 3月  25 18:38 123
-rw-r--r--. 1 root root   0 3月  25 18:59 a
-rw-------. 1 root root 810 3月  25 18:55 anaconda-ks.cfg
-rw-r--r--. 1 root root  95 3月  25 18:39 qqq
[root@zhoulijie tmp]# cat a
总用量 12
-rw-r--r--. 1 root root  10 3月  25 18:38 123
-rw-r--r--. 1 root root   0 3月  25 18:59 a
-rw-------. 1 root root 810 3月  25 18:55 anaconda-ks.cfg
-rw-r--r--. 1 root root  95 3月  25 18:39 qqq

linux下的编辑器

linux中常见的文本编辑器有:

  • emacs
  • pico
  • nano
  • joe
  • jed
  • vi/vim

vi/vim编辑器

vi/vim编辑器是linux和unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi/vim是效率很高的文本编辑器。尽管在linux上也有很多图形界面的编辑器可用,但vi/vim在系统和服务器管理中的功能是那些图形编辑器所无法比拟的

vi/vim编辑器可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的.

vim是vi的增强版,比vi更容易使用。vi的命令几乎都可以在vim上使用。

特点
  • vi/vim是一种纯文本编辑器,它不像word可以排版,可以调整字体大小,可以改变字体等等
  • vi/vim只是一个文本编辑工具,只能对文本的内容进行操作,比如新增内容、修改内容、删除内容等等
  • 全屏幕显示
vi/vim的三种编辑模式
  • 末行模式
  • 命令模式
  • 输入模式

三者的作用:

  • 末行模式:用于查找文本、保存修改等等
  • 命令模式:用户执行,比如复制、粘贴行等等
  • 输入模式:用于输入文本、修改文本等等
vi/vim三者之间的切换方式
  • 命令模式到输入模式

按"i"跳转到当前光标所在行的行首

按"a"调转到当前光标所在行的行位

按"o"在当前光标所在行的下方再新建一行并跳转到那一行

  • 输入模式到命令模式

按"Esc"键

  • 命令模式到末行模式

按ctrl“+":"键

  • 末行模式到命令模式

狂按"Esc"键

关闭文件方式

在末行文件下关闭文件:

  • q 退出
  • w 保存
  • wq 保存并退出
  • q! 强制退出

在命令模式下关闭文件

  • zz
常用操作
  • K :向上移动

  • J :向下移动

  • H:向左移动

  • L:向右移动

  • 10 gg 跳转到10行(输入数字几,再按gg就代表跳多少行

  • dd :删除当前光标所在行一整行

  • 1,3d :表示删除第一行到第三行

  • 复制命令:yy

  • 粘贴命令:p

  • 替换:r

r#:将当前光标的字符替换成为#,这里的#可以是任意字符

  • 撤销:u

ctrl+r:还原最近一次撤销操作

  • 重复前一次编辑操作:.

  • 文本查找:/字符 或者 ?字符

/ 字符:从上往下查找这个字符并高亮显示

?字符:从下往上查找这个字符并高亮显示

  • 查找并替换:s///g

此命令只能在末行模式下使用

1234
5678
1234
5678
1234
5678
~
~
:1,4 s/1234/abcd/g                              
abcd
5678
abcd
5678
1234
5678
~
~
:1,4 s/1234/abcd/g                                            3,1          全部

  • 末行模式下显示或取消显示行号

set nu 显示行号

set nonu 取消显示行号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值