shell简介
概念;Shell是一种特殊的程序
作用:是内核与用户的一种接口
shell命令解释器查看:cat /etc/shells
shell一种解释型的语言(内部命令/外部命令)
内部命令:系统自带的,随系统内核一起启动(56) cd(改变路径)
外部命令:就是一些额外的软件或者程序 ls(列出文件或者目录)
sh(Borurne Shell) csh ksh
BASH 是rhel中默认的一种
shell命令
通用命令格式
命令字 【选项】 【参数】
选项:
作用:用于调节命令的具体功能
"-"引导短格式选项(单个字符) EX:“-l”
"--"引导长格式选项(多个字符) EX: "--color"
多个短格式选项可以写在一起
-a -l -z -x --> -alzx
参数:
命令操作的对象,有文件,目录等
[root@localhost ~]# ls -l /home
BASH快捷方式
CTRL + c 中断当前操作
CTRL + l(aile) = clear #清屏
'\' #换行
CTRL + A #光标跳到行首
CTRL + E #光标跳到行尾
CTRL + U #清空光标所在位置的前面所有内容
CTRL + K #清空光标所在位置的后面所有内容
CTRL + SHIFT + "+" #放大字体
CTRL + "-" #缩小字体
命令解析
[root@localhost Desktop]#
root:代表当前登录用户
localhost:代表当前系统的主机名称
Desktop:代表当前所在的位置
#:这个#代表当前登录用户是管理员用户
root:管理员 administractor
$:代表当前登录用户为普通用户
ex:[student@localhost ~]$
[root@localhost ~]# su - student
su [-] username 切换当前登录
有 - :代表切换bash
无 - :代表不切换bash环境
由root用户到普通用户不需要密码
由普通用户到root用户需要密码
exit 退出
常用命令
系统命令
#准确的shell命令规范
命令字 【选项】 【参数】
#查看系统当前主机名 hostname
[root@localhost Desktop]# hostname
localhost.localdomain
#修改主机名并让他生效 hostnamectl set-hostname hostname
[root@localhost Desktop]# hostnamectl set-hostname BJTLXY
[root@localhost Desktop]# hostname
bjtlxy
[root@localhost Desktop]# su -
Last login: Fri Jun 29 08:07:42 EDT 2018 on pts/0
#关机操作
poweroff
init 0
shutdown -h now
halt
#重启命令
reboot
shutdown -r now #现在重启
shutdown -r +15 #15min后重启
#查看当前系统时间 date
[root@bjtlxy ~]# date
Fri Jun 29 08:18:33 EDT 2018
#查看日历 cal
[root@bjtlxy ~]# cal
June 2018
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
[root@bjtlxy ~]# cal 2018 #查看全年日历
[root@bjtlxy ~]# cal 09 2018 #查看某年某月的日历
#查看历史
[root@bjtlxy ~]# history #查看历史命令,默认保留1000行
!n #调用历史命令 ex:!22
[root@bjtlxy ~]# history -c #清除历史命令
#获得命令帮助:
help(内部命令)cd,kill 56条
EX:help cd
--help(适用于大多数外部命令查找) ls
EX:ls --help
使用man手册
man cd
输入 / ,可以查找
info 也可进行命令帮助查找(使用与man接近)
info cd
pinfo 命令名称 以浏览器的形式查看详细的GUN信息
pinfo cd
/usr/share/doc #所有已安装软件的说明文件
firefox file:///usr/share/doc
目录操作
#cd切换工作目录
cd 【目录位置】
绝对路径:cd /home/student
相对路径:
cd 什么都不跟,代表切换当前用户家目录
cd . 当前目录
cd .. 代表上级目录
cd - 返回上一次所在的工作路径
cd / 返回到根目录
cd ~ 返回到用户的家目录
cd ../../ 返回上一级目录的上一级目录
#ls:列出当前目录下的文件或者目录
格式: ls [选项] [目录或文件名]
选项:
-l 以长格式显示
-a 显示所有文件目录信息,包括隐藏文件
-d 显示目录本身的属性
-h 显示详细信息,变换了统计单位
--color 以颜色区分不同类型的文件
注:在Linux中,以.开头的文件是隐藏文件
ll == ls -l
#mkdir 创建一个新目录
格式:mkdir 【选项-p】[路径]目录名
-p 递归创建多级目录
mkdir -p b/c/e/f/g
#rmdir 删除一个空目录
[root@tlxy ~]# rmdir adir/
文件操作
#touch 创建一个空文件,更新文件时间标记
格式:touch 文件名
注:在Linux中,不以后缀区分文件
#echo打印
[root@tlxy ~]# echo "hello world"
hello world
#重定向覆盖写
echo "hello world" > a.txt
#重定向追加写
echo "hello world" >> a.txt
#cp 复制文件或者目录
格式:cp [选项] 源文件/目录 目标文件/目录
-r 递归复制整个目录树
[root@tlxy bb]# cp /root/aa/a.txt /root/bb/
[root@tlxy bb]# cp ../aa/a.txt .
#rm 删除文件或目录
格式:rm [选项] 文件或者目录
-r 递归删除整个目录树
-f 强制删除不给任何提示
[root@tlxy bb]#rm -rf / 从删库到跑路(心有多大就跑多远)
#mv 移动/重命名文件或者目录
格式:mv [选项] 源文件/目录 目标文件/目录
ex:
[root@localhost text]# ls
a.txt b.text
[root@localhost text]# mv b.text /root/text-2/
注:若移动目标位置与源位置相同(当前下操作),则此操作相当于重命名(改名)
ex: [root@localhost ~]# mv text text-1
#find 用于查找文件或者目录
格式:find [查找范围] [查找条件]
查找条件:
-name 按文件名查找
[root@localhost ~]# find / -name initial-setup-ks.cfg
/root/initial-setup-ks.cfg
[root@localhost ~]# find / -name initial-*
/root/initial-setup-ks.cfg
[root@localhost ~]# find / -name initial-*-*
/root/initial-setup-ks.cfg
[root@localhost ~]# sudo find / -name *conda*
/home/yuxiang/anaconda3
find: ‘/run/user/1000/gvfs’: 权限不够
yuxiang@yx-pro:~$
-type 按文件类型查找
f 普通文件
[root@localhost ~]# find / -name text -type f
d 目录
[root@localhost ~]# find / -name text -type d
b 块设备文件
c 字符设备文件
-user 按文件属主查找(这个文件是谁的)
[root@localhost ~]# find / -user yuxiang -name initial-setup-ks.cfg -type f
find / -user yuxiang -type f -name yx.initial-setup-ks.cfg
-size 按文件大小进行查找
[root@localhost ~]# find /var/ -size +1k -size -10k -type f # 查找大于1k,小于10k的文件
-a 逻辑与
-o 逻辑或
! 逻辑非
[root@localhost ~]# find / ! -name temp -type f
find / -name anaconda-ks.cfg -o -name initial-setup-ks.cfg
文件内容操作
#cat 文件内容查看,显示出文件的全部内容
格式:cat filename
#less(more) 全屏方式分页显示文件内容
格式:less/more filename
按回车Enter逐行滚动
按空格键向下翻页
按b键向上翻页
按q键退出
more用法与less一致,只是多了一个百分比显示
#head(头部)显示文件头部若干行,默认十行
格式:head [选项] filename
head -n 5 initial-setup-ks.cfg
#tail(尾部)显示文件尾部若干行,默认十行
格式:tail [选项] filename
[root@localhost ~]# tail -n +5 initial-setup-ks.cfg
注释:注意符号的使用 + - 代表意思不同
#wc 统计文件内容的,默认情况下统计结果为: 行数 词数 字节数
格式:wc [选项] filename
选项:
-w 统计字数 一个字被定义为由空白,跳格,换行以这些为分割字符串
-l 行数
-c 字节数
-m 字符数 -m -c 不能一起使用
-L 打印最长行的长度
man wc
wc --help
wc --version
wc -l -c -w -L initial-setup-ks.cfg
#grep 在文件中查找并显示包含指定字符串的行
格式:grep [选项] 查找条件 目标文件
选项:
-c 显示匹配行的数量
-i 查找时不区分大小写
-v 反转查找
[root@localhost ~]# grep -c 'boot' initial-setup-ks.cfg
7
[root@localhost ~]# grep -c -v 'boot' initial-setup-ks.cfg
42
[root@localhost ~]# grep -i "agent" initial-setup-ks.cfg
查找条件设置:
1.查找条件用引号引起来
2.“^………………”表示以什么什么开头
3.“………………$”表示以什么什么结尾
4.“^$” 匹配空行
[root@localhost ~]# grep -cv '^$' anaconda-ks.cfg
[root@localhost ~]# grep "^#" anaconda-ks.cfg
[root@localhost ~]# grep "ation$" anaconda-ks.cfg
归档/压缩
tar 压缩与解压缩 制作归档文件和释放归档文件
格式:
制作归档文件:
tar [选项] [目录]/归档文件名 源文件或者目录
释放归档文件:
tar [选项] 归档文件 [-C 目标文件]
命令:
压缩:
tar -czvf [存放路径]归档文件名.tar.gz 源文件或者目录
tar -cjvf [存放路径]归档文件名.tar.bz2 源文件或者目录
-c 压缩
-z 压缩为.gz格式
-vf 显示详细信息
解压缩:
tar -xzvf [存放路径]归档文件名.tar.gz [-C 解压目录]
tar -xjvf [存放路径]归档文件名.tar.bz2 [-C 解压目录]
-x 解压
alias 别名:为使用频率较高的命令设置简短的调用名称
查看当前用户所有别名
alias [别名]
设置别名
alias 别名=“实际执行的命令”
[root@localhost ~]# alias aa="grep -c 'boot' initial-setup-ks.cfg"
[root@localhost ~]# alias aa
alias aa='grep -c '\''boot'\'' initial-setup-ks.cfg'
[root@localhost ~]# aa
7
取消别名
[root@localhost ~]# unalias aa
[root@localhost ~]# unalias -a #取消所有别名
让别名永久生效
将别名设置在~/.bashrc文件中
.bashrc文件内容追加
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias aa="grep -c 'boot' initial-setup-ks.cfg"
#ln创建链接
软连接 ln -s 源文件 目标文件
ln -s a.text a.text.soft
硬连接 ln 源文件 目标文件 #相当于cp -p +同步跟新
ln a.text a.text.hard
重定向与管道符
作用:将命令的执行结果输出到指定的文件中,而不是直接显示在屏幕上
0 标准输入 键盘 stdin 仅读取
1 标准输出 终端 stdout 仅写入
2 标准错误 终端 stderr 仅写入
3+ filename 其他文件 读/写
>:覆盖写
>>:追加写
1>:标准覆盖写
2>:错误覆盖写
&>:标准输出和错误输出均写入文件
| :管道传送符,将管道前面的结果作为后面的输出
[root@localhost ~]# echo "hello world" >a.txt
[root@localhost ~]# cat a.txt
hello world
[root@localhost ~]# echo "hello world world" >>a.txt
[root@localhost ~]# cat a.txt
hello world
hello world world
[root@localhost ~]# cat a.txt | head -n 1 >1.txt
[root@localhost ~]# cat 1.txt
hello world
VIM
vim特点
vim特点:可拓展性比较高,支持多种语言的脚本,支持文件类型的插件,支持文本的各种骚气操作
vim3种模式
正常模式:可以使用快捷键命令,或按:输入命令行。
插入模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。
可视模式:正常模式下按v可以进入可视模式, 在可视模式下,移动光标可以选择文本。按V进入可视行模式, 总是整行整行的选中。ctrl+v进入可视块模式。
替换模式:正常模式下,按R进入。
常用快捷键
yy:复制一行
P/p:粘贴粘贴板的内容到当前行的上/下面
dd:删除光标所在行
/ + 'str' + enter:向后查找
? + 'str' + enter:向前查找
w:将缓冲区写入文件,即保存修改
wq=x:保存修改并退出
q:退出,如果对缓冲区进行过修改,则会提示
q!:强制退出,放弃修改
o:在当前行之下新加一行,并进入插入模式
u:撤销
Ctrl+u:替换粘贴
shift+insert:粘贴
其他命令
elinks
常用纯文本浏览器
elinks【选项】【网址】
ex:elinks www.baidu.com
du
计算文件或目录容量
du 【选项】【文件/目录】
-h 显示详细信息
ex:du -h initial-setup-ks.cfg