Shell 简介:
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。他接收了用户输入的命令并把它送入内核去执行。实际上Sheel是一个命令解释器。它解释由用户输入的命令并把它们送到内核。不仅如何,Shell有自己的编程语言用于对命令进行编辑,用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点。,比如他也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有相同的效果。
Shell用途
我们可以使用Shell实现对Linux系统的大部分管理,如:
- 文件管理
- 用户干栗
- 权限管理
- 磁盘管理
- 软件管理
- 网络管理
如何使用Shell
- 输入命令 效率低
- Shell Script 效率高
linux 命令
- ping ip/网址
测试是否连接 - date
当前时间 - useradd 用户名
添加用户 - gedit 名称.sh
gedit useradd.sh
打开一个uesradd.sh 脚本文件
for i in {1..20}
do
uesradd tianyun$1
echo "tianyun$i is created!"
done
执行
bash useradd.sh
- ls
ls
展示当前目录和文件,不包含隐藏
Desktop Downloads Pictures Templates Videos
Documents Music Public useradd.sh
ls -a
列出文件包含隐藏文件
[root@linux lilihai]# ls -a
. .bash_profile .dbus .esd_auth Music useradd.sh
.. .bashrc Desktop .ICEauthority Pictures Videos
.bash_history .cache Documents .local Public
.bash_logout .config Downloads .mozilla Templates
[root@linux lilihai]#
ls -l
列出文件详细信息
[root@linux lilihai]# ls -l
total 4
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Desktop
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Documents
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Downloads
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Music
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Pictures
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Public
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Templates
-rw-rw-r--. 1 lilihai lilihai 99 Dec 13 17:36 useradd.sh
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Videos
ls -a -l
累出所有文件,包含隐藏文件并展示详细信息。
[root@linux lilihai]# ls -a -l
total 40
drwx------. 15 lilihai lilihai 4096 Dec 13 17:52 .
drwxr-xr-x. 4 root root 33 Dec 13 17:56 ..
-rw-------. 1 lilihai lilihai 443 Dec 13 18:04 .bash_history
-rw-r--r--. 1 lilihai lilihai 18 Oct 31 01:07 .bash_logout
-rw-r--r--. 1 lilihai lilihai 193 Oct 31 01:07 .bash_profile
-rw-r--r--. 1 lilihai lilihai 231 Oct 31 01:07 .bashrc
drwx------. 14 lilihai lilihai 4096 Dec 13 17:11 .cache
drwxr-xr-x. 16 lilihai lilihai 4096 Dec 13 18:12 .config
drwx------. 3 lilihai lilihai 25 Dec 13 17:07 .dbus
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Desktop
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Documents
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Downloads
-rw-------. 1 lilihai lilihai 16 Dec 13 17:07 .esd_auth
-rw-------. 1 lilihai lilihai 310 Dec 13 17:07 .ICEauthority
drwx------. 3 lilihai lilihai 19 Dec 13 17:07 .local
drwxr-xr-x. 4 lilihai lilihai 39 Dec 13 16:48 .mozilla
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Music
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Pictures
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Public
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Templates
-rw-rw-r--. 1 lilihai lilihai 99 Dec 13 17:36 useradd.sh
drwxr-xr-x. 2 lilihai lilihai 6 Dec 13 17:08 Videos
[root@linux lilihai]#
ls -a /
ls -a /目录
列出指定目录、跟目录下所有目录
[root@linux lilihai]# ls -a /
. bin dev home lib64 mnt proc run srv tmp var
.. boot etc lib media opt root sbin sys usr
[root@linux lilihai]# ls -a /home
. .. jack lilihai
[root@linux lilihai]#
ls常见选项
-a all,查看目录下所有文件,包含隐藏文件
-l 长列表像是
-h human 以人性化方式显示
-t 按修改时间排序
-S 按文件的Size排序
-r 逆序排列
-i 显示文件的incode号(索引号)
ip
ip a
获取IP
192.168.190.130
: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:79:26:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.190.130/24 brd 192.168.190.255 scope global noprefixroute dynamic ens33
valid_lft 1660sec preferred_lft 1660sec
inet6 fe80::ad9a:bde8:6300:117c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:65:1a:58 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:65:1a:58 brd ff:ff:ff:ff:ff:ff
- su
切换用户:
[lilihai@linux ~]$ su
Password:
[root@linux lilihai]#
- whoami
显示当前用户
[root@linux lilihai]# whoami
root
- passwd
设置密码:
passwd 账号
快捷键
CTRL+C 终止前台运行程序
CTRL+D 退出等价于exit
CTRL+L 清屏
CTRL+A 光标移动到命令行最前端
CTRL+E 光标移动命令行后端
CTRL+U 删除光标前所有字符
CTRL+K 删除贯标后所有字符
CTRL+R 搜索历史命令,利用关键字
ALT+. 引用上一个命令和最后一个参数,等价于!$
ESC. 引用上一个命令的最后一个参数,等价于!$
历史命令
- history
光标上下键 上一条命令吓一跳命令
CTRL+R 搜索历史命令(输入某个命令的关键字)
!行号 执行多少行号的历史命令
!字符集 搜索历史最近一个已xxx字符集开头的命令
!$ 医用上一个命令的最后一个参数。
别名
- 别名优先级最高
alias 变量名='路径/命令'
[lilihai@linux ~]$ alias dt='date'
[lilihai@linux ~]$ date
Thu Dec 13 19:39:58 CST 2018
永久别名:
[root@linux ~]# gedit /etc/bashrc
alias yang='date'
关闭重启打开 terminal
BASH Shell 对文件进行管理
创建、复制、删除、移动、查看、编辑、压缩、查找
-
目录结构
-
bin 普通用户使用的命令 /bin/ls./bin/date
*sbin 管理员使用的命令 /skin/service -
dev 设备文件 /dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/pts/1
-
root root 用户的HOME
-
proc 虚拟的文件系统,反映出来的内核,进程信息或者实时状态
-
User 系统文件,相当于c:Windowsuserlocal 软件安装目录,相当于c:Program
/user/bin 普通用户使用的应用程序
/user/sbin 管理员使用的应用程序
/user/lib 库文件Glibc 32bit
/user/lib64 库文件Glibc 64bit -
boot 存放的系统启动相关的文件。
-
etc 配置文件
系统相关如网络/etc/sysconfig/network
应用相关的配置文件/etc/ssh/sshd_config -
tmp 临时文件
-
var 存放的一些变化文件,比如数据库,日志,邮件....
创建文件
thuch 路径+文件
创建文件
touch file1.txt 没有则创建,有则修改时间
[root@linux linux]# touch file.txt
[root@linux linux]# ll -l
total 0
-rw-r--r--. 1 root root 0 Dec 14 15:43 file.txt
[root@linux linux]# touch file.txt
[root@linux linux]# ll -l
total 0
-rw-r--r--. 1 root root 0 Dec 14 15:44 file.txt
同时在一个目录下创建两个文件
touch file3 file4
[root@linux linux]# touch file3 file4
[root@linux linux]# ll -l
total 0
-rw-r--r--. 1 root root 0 Dec 14 15:46 file3
-rw-r--r--. 1 root root 0 Dec 14 15:46 file4
-rw-r--r--. 1 root root 0 Dec 14 15:44 file.txt
创建一个txt文件
touch /home/file10.txt
oot@linux ~]# ll /home -a
total 4
drwxr-xr-x. 7 root root 190 Dec 14 14:57 .
dr-xr-xr-x. 18 root root 248 Dec 14 15:43 ..
-rw-r--r--. 1 root root 0 Dec 14 14:55 file1
-rw-r--r--. 1 root root 0 Dec 14 15:51 file10.txt
在指定目录下一次性创建两个文件
touch /linux/{zhuzhu,guoguo}
root@linux linux]# touch /linux/{zhuzhu,guouog}
[root@linux linux]# ll -a
total 0
drwxr-xr-x. 3 root root 101 Dec 14 15:53 .
dr-xr-xr-x. 18 root root 248 Dec 14 15:43 ..
-rw-r--r--. 1 root root 0 Dec 14 15:49 file
drwxr-xr-x. 2 root root 6 Dec 14 15:48 .file
-rw-r--r--. 1 root root 0 Dec 14 15:46 file3
-rw-r--r--. 1 root root 0 Dec 14 15:46 file4
-rw-r--r--. 1 root root 0 Dec 14 15:44 file.txt
-rw-r--r--. 1 root root 0 Dec 14 15:53 guouog
-rw-r--r--. 1 root root 0 Dec 14 15:53 zhuzhu
一次性创建以file开头1到20的文件
touch file{1..20}
[root@linux linux]# touch file{1..20}
[root@linux linux]# ll -a
total 4
-rw-r--r--. 1 root root 0 Dec 14 15:49 file
-rw-r--r--. 1 root root 0 Dec 14 15:56 file1
-rw-r--r--. 1 root root 0 Dec 14 15:56 file10
-rw-r--r--. 1 root root 0 Dec 14 15:56 file11
-rw-r--r--. 1 root root 0 Dec 14 15:56 file12
-rw-r--r--. 1 root root 0 Dec 14 15:56 file13
-rw-r--r--. 1 root root 0 Dec 14 15:56 file14
-rw-r--r--. 1 root root 0 Dec 14 15:56 file15
-rw-r--r--. 1 root root 0 Dec 14 15:56 file16
-rw-r--r--. 1 root root 0 Dec 14 15:56 file17
-rw-r--r--. 1 root root 0 Dec 14 15:56 file18
-rw-r--r--. 1 root root 0 Dec 14 15:56 file19
-rw-r--r--. 1 root root 0 Dec 14 15:56 file2
-rw-r--r--. 1 root root 0 Dec 14 15:56 file20
-rw-r--r--. 1 root root 0 Dec 14 15:56 file3
-rw-r--r--. 1 root root 0 Dec 14 15:56 file4
-rw-r--r--. 1 root root 0 Dec 14 15:56 file5
-rw-r--r--. 1 root root 0 Dec 14 15:56 file6
-rw-r--r--. 1 root root 0 Dec 14 15:56 file7
-rw-r--r--. 1 root root 0 Dec 14 15:56 file8
一次性创建file开头 filea fileb filec 三个文件
touch file{a..c} 等价于
touch file{a,b,c}
[root@linux linux]# touch file{a..c}
[root@linux linux]# ll -a
total 0
drwxr-xr-x. 3 root root 115 Dec 14 16:00 .
dr-xr-xr-x. 18 root root 248 Dec 14 15:43 ..
drwxr-xr-x. 2 root root 6 Dec 14 15:48 .file
-rw-r--r--. 1 root root 0 Dec 14 16:00 filea
-rw-r--r--. 1 root root 0 Dec 14 16:00 fileb
-rw-r--r--. 1 root root 0 Dec 14 16:00 filec
-rw-r--r--. 1 root root 0 Dec 14 15:54 gg.txt
-rw-r--r--. 1 root root 0 Dec 14 15:53 guouog
-rw-r--r--. 1 root root 0 Dec 14 15:54 zhu.txt
-rw-r--r--. 1 root root 0 Dec 14 15:53 zhuzhu
目录 mkdir
创建一个目录
mkdir dir1
[root@linux linux]# mkdir dir1
[root@linux linux]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec 14 16:06 dir1
同时在文件夹下面一次性创建两个目录
mkdir /linux/{dir2,dir3}
[root@linux ~]# mkdir /linux/{dir2,dir3}
[root@linux ~]# ll /linux
total 0
drwxr-xr-x. 2 root root 6 Dec 14 16:06 dir1
drwxr-xr-x. 2 root root 6 Dec 14 16:08 dir2
drwxr-xr-x. 2 root root 6 Dec 14 16:08 dir3
一次性创建多级目录,
mkdir -pv /linux/dir22/xiaohai
[root@linux dir3]# mkdir -pv /linux/dir22/xiaohai
mkdir: created directory ‘/linux/dir22’
mkdir: created directory ‘/linux/dir22/xiaohai’
复制 cp
复制一个文件到指定目录
cp -v anaconda-ks.cfg /linux/dir2/
anaconda-ks.cfg 文件拷贝到dir2 目录下
-v 展示详细信息
[root@linux dir1]# cp -v anaconda-ks.cfg /linux/dir2/
‘anaconda-ks.cfg’ -> ‘/linux/dir2/anaconda-ks.cfg’
复制一个文件到指定目录并且重命名
cp -v anaconda-ks.cfg /linux/dir2/anaconda.txt
[root@linux dir2]# cp -v anaconda-ks.cfg /linux/dir2/anaconda1.txt
‘anaconda-ks.cfg’ -> ‘/linux/dir2/anaconda1.txt’
复制一个文件如果已存在覆盖
cp -rv anaconda1.txt /.
-r
[root@linux dir2]# cp -rv anaconda1.txt /.
cp: overwrite ‘/./anaconda1.txt’?
移动 mv
将file2移动到/home/dir3下
mv file2 /home/dir3
将fiel2移动到home/dir3下,并改名为file20
mv file2 /home/dir3/file20
重命名
当前位置移动就是重命名
mv file4 file5
删除 rm
rm /目录 删除
rm -rf /目录 递归并强制删除
-r 递归
-f force 强制
-v 详细过程
查看
cat
cat 文件地址
-n 显示行号
-A 显示控制字符(换行符/制表符)
linux 换行$
Windows 换行^M$
head 默认查看前世行
默认该文件的前10行 也可以指定行数
head -2 /文件
tail 默认查看后十行
tail -20 /w文件
从后查看 指定多少行
tail -f /文件
滚动展示文件内容
less 分页显示文件内容
less 文件/
grep 搜索文件中带有指定内容的行,可使用正则
grep '关键字' /文件地址
grep '^a' /文件地址 以a开头的
编辑器
gedit
图形化编辑器
vi
- vi 工作模式
当使用 vi a.txt 进入到command model(命令模式)
输入i 进入到编辑模式
按v/V/^v 进入到可视化模式
按:进入到扩展命令模式(extended command model)
进入到扩展命令模式 按wq退出
命令模式(在命令模式下操作)
光标移动
hjkl
l右移动
h 左移动
j下移动
k 上移动
0 按0 回到行首
$ 按$回到行尾
gg 回到第一行行首
G 回到行尾
5G 回到第五行行首
查找
/ 输入关键词查找 按n/N 下一个 小n往后找 大N往前找
/^d 以d开头的
/st$以st结尾的
复制
- y 命令(以行为单位)
yy 复制一行
ygg 从光标开始一直复制到第一行
3yy 复制三行
yG 从行首复制到行为
删除
- d 命令(以行为单位)
D 从光标删除到尾行
dd 删除u当前行
3dd 删除下面三行
dgg 从当前行开始删除到行首
dG 从当前行删除到行尾
粘贴
- p 粘贴
- x 删除光标所在字符
- u 撤销
- ^r 重做
- r 用来修改一个字符
进入到其他模式
- a 进入到编辑模式(光标在当前位置的下个字符)
- A 进入到编辑模式 (光标到行尾)
- i 进入到编辑模式 (光标到行前一个字符)
- o 进入到编辑模式(光标换行)
- :进入模式模式
- v 进入可视模式
- ^v 进入可视块模式
- V 进入可是模式
- R 进入替换模式
可是块模式
- 块插入(在制定块前插入字符) ctrl+v 选择块 ->shift+i 输入字符-->按Esc 退出
- 块替换 ctrl+v 选择块,r 输入替换字符
- 块删除 ctrl+v ,d|x 删除
- 块复制 ctrl+v 选择块 ,y
扩展命令模式 按:进入
:10 进入10行
:w 保存
:q 退出
:wq 保存并退出
:w! 强制保存并退出
:q! 不保存 强制退出
:wq! 强制保存并退出
:x 保存并退出
:X 给文件加入密码
查找替换 按:进入
/ 替换标识符 也可以改成 @#¥%% 随意字符
:1,5 /s/small/big/
把1~5行的每行第一个small替换成big
:1,5 /s/small/big/g
把1~5行的每行所有small替换成big
:1,$ /s/small/big/
把1~最后一行的每行第一个small替换成big
:1,$ /s/small/big/g
把1~最后一行的每行所有small替换成big
:4,9 s/^#// 将4-9行以#开头的替换空
读入文件/写文件(另存为)
:w 保存到当前位置
:w /linux/test.txt 保存到linux/test.txt
:1,3 w /linux/33.txt 把1到3行去保存到33.txt
:r /etc/hosts 读入文件到当前行后
:5 r /ect/hosts 读入文件到第五行后
设置环境
- 关闭窗口失效
: set number 设置行号
: set Ic 不缺分大小写
: set ai 自动缩进
:set list 显示控制字符
:set nolist 取消显示控制字符
:set nonu 取消显示行号
:set noic 取消忽略大小写 - 永久有效
vim ~/.vimrc
set Ic
set nu
一次性打开两个文件
vim -O /etc/hostname /ect/hosts
小o 水平分割
大O 垂直分割
按ctrl+ww 切换