linux第一天

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 切换

vimdiff /ect/host /ect/hostname 对比两个文件不同

原文地址:https://www.cnblogs.com/lilihai/p/10142134.html