Linux基础
基础知识
文章目录
- Linux基础
- 基础知识
- Linux的基本原则
- shell
- bash
- 命令语法
- 命令类型
- ls:列出指定目录的内容
- cd:切换目录
- pwd:打印当前所在目录
- mkdir:创建目录
- touch:创建空文件(更新文件时间)
- stat:显示文件或文件系统的状态
- rm:删除文件
- cp:复制文件
- mv:移动文件(重命名)
- cat:顺序查看文本内容
- tac:逆序查看文件内容
- less:全屏查看文本文件内容
- head:从前往后查看一定行数
- tail:从后往前查看一定行数
- wc:用于统计文本文件的行数、字数、字节数
- du:查看文件或目录占用的磁盘空间大小
- df:报告文件系统磁盘空间使用情况
- hostname:查看或临时修改主机名,重开终端有效,重启失效
- hostnamectl:查看或永久修改主机名,重开终端有效,重启依然有效
- clear:清屏
- whoami:显示当前登录用户
- w:显示当前在线用户并显示其正在运行的命令
- who:查看当前在线用户
- which:显示指定命令的绝对路径
- cal:显示日历
- ldd:查看指定程序有哪些依赖库文件
- date:显示示或设置日期与时间
- 获取帮助
- 文件的层级系统
- 重定向
- 管道符
- 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 取消显示行号