Linux命令

2020-07-08 00:00:00 命令 文件 目录 查看 字符

linux简单命令

type和file

type打印一个字符串的类型,可能的值为:别名,内置命令,函数,关键字,可执行文件或者什么都不输出(不是前面的类型)。

  • type命令:外部命令和内部命令:操作系统:kernel内核+shell壳
  • 查看cd命令的类型:type cd

解释:cd是一个builtin命令,也就是bash内置的命令。

查看yum命令的类型:type yum

yum是外部命令

file命令:检查文件的类型。file /usr/bin/yum

yum命令是外部命令,它的文件是python脚本类型文件。

file /bin/ls

ls是二进制可执行文件(ELF)。

安装man软件,查看命令的帮助信息:yum install man man-pages -y

shellbash(空白符切割,查看是内部命令还是外部命令(从PATH指定的路径中从左向右查找))

man的使用:

比如:man yum,b向上翻页;空格向下翻页;回车向下一行;p直接翻到首页;q退出man信息

ls:显示目录内容

ls /etc/sysconfig

-l长格式显示ls -l

ls后可以跟多个路径:ls / /etc

help和echo

help查看内部命令的帮助信息:type echo


查看内部命令的帮助,使用help;help echo

echo -n表示不要另起新行:echo -n "hello world"

-e表示解释逃逸字符:echo -e "hello wor\nld"

help命令列出所有的内部命令:

man

安装man manual手册:yum install man man-pages -y

首先将epel的源放到本地

  • wget -O /etc/yum.repos.d/epel.repo mirrors.aliyun.com/repo
  • yum clean all
  • yum makecache

使用中文提示:

  • 1.yum install man-pages-zh-CN -y
  • 2.设置LANG的值:echo $LANG 显示en_US.UTF-8 ;接着LANG=zh_CN.UTF-8

man的编号:man

  • 1用户命令(/bin,/usr/bin,/usr/local/bin)
  • 2系统调用
  • 3库函数
  • 4特殊文件(设备文件)
  • 5文件格式(配置文件的语法)
  • 6游戏
  • 7杂项(Miscellaneous)
  • 8管理命令(/sbin,/usr/sbin,/usr/local/sbin)

指定查看某种帮助:man 2 read

test命令

计算3 > 2的结果,打印返回值,计算3 < 2的结果,打印返回值

  • test 3 -gt 2
  • echo $?
  • test 3 -lt 2
  • echo $?
  • 注意命令以空格切割:[ 3 -gt 2 ]
  • 查看命令返回值:echo $?
  • [ 3 -gt 2 ]
  • echo $?
  • [ 3 -lt 2 ]
  • echo $?

环境变量:PATH

  • 当在shell中执行命令的时候,默认到PATH指定的路径中查找可执行文件。
  • 如果在PATH中的多个目录都包含该可执行文件,则执行先找到的。

echo $PATH

环境变量:LANG:设置区域和语言

  • echo $LANG
  • LANG=zh_CN.UTF-8
  • echo $LANG

/etc/profile bash启动(交互式shell)

bash启动的时候,先执行该配置文件中的配置信息,每个用户登录时都会运行的环境变量设置。

bash的使用

下面是shell在读取和执行命令时候的操作的一个简短的描述。基本上,shell做以下的工作:

  1. 从文件读取输入命令,从bash的调用选项-c参数读取字符串作为命令,或者从用户终端读取输入命令。
  2. 将输入命令切割为单词和操作符,依据在Quoting部分描述的引用规则。这些标记按照元字符切割。别名扩展就是在这步骤做的。
  3. 将标记解析为简单的和复合的命令
  4. 进行各种各样的shell扩展,将扩展后的标记切割为文件名称和命令以及参数的列表。
  5. 进行必要的重定向处理并从参数列表中移除重定向操作符和操作数。
  6. 执行命令
  7. 可选地,等待命令的执行完成并收集命令执行的退出状态。echo $?
  • 逃逸字符:一个非引起来的\就是bash的逃逸字符。它保留了跟着它的下一个字符的字面值,但是后面跟一个换行比较意外。如果出现了\newline,并且反斜线没有引起来,则后面跟的新行被看成是当前行的继续(也就是说,将\移除掉并有效地忽略掉)。
  • 单引号:单引号中的字符保留它们的字面量。单引号中不能嵌套单引号,使用反斜线也不行。
  • 双引号:双引号中的字符保留了它们的字面值,但是有例外。'$','`','\'以及如果启动了历史扩展还包括'!'。当shell在POSIX模式的时候'!'在双引号中没有特殊含义,即使开启了历史扩展。'$','`'在双引号中保留它们的特殊含义。在后面跟着以下字符的时候,'\'也保留了它的特殊含义:“$”,“`”,“''”,“\”或者新行。在双引号内,跟着这几个字符的反斜线被移除。反斜线后面跟的没有特殊含义的字符不会移除,而是不做任何修改保留下来。双引号内可以通过反斜线转义包含在一个双引号内部。如果启用了历史扩展,双引号中的!会执行,除非它使用反斜线转义。!之后的反斜线不会移除。*和@在双引号中有特殊含义。

df命令查看挂载的磁盘使用情况

df -h以人类可读的方式显示

df



df -h




其中/boot目录在根目录下,但是它实际上是一个分区/dev/sda1

进到/boot,通过ll查看内容:

ll



使用umount卸载掉/boot的分区:

umount /boot

退出/boot,重新进入,使用ll查看目录内容



没有内容了

而此时如果向/boot目录写文件,则文件时存储在/dev/sda3分区上。

如果挂载/dev/sda1到/boot,则/boot实际指向了/dev/sda1分区:

mount /dev/sda1 /boot






虚拟目录树就是为了解耦程序和底层。


虚拟目录树的各个目录用途

目录

用途

/

虚拟目录的根目录。通常不会在这里存储文件

/bin

二进制目录,存放许多用户级的GNU工具

/boot

启动目录,存放启动文件

/dev

设备目录,Linux在这里创建设备节点

/etc

系统配置文件目录

/home

主目录,Linux在这里创建用户目录

/lib

库目录,存放系统和应用程序的库文件

/media

媒体目录,可移动媒体设备的常用挂载点

/mnt

挂载目录,另一个可移动媒体设备的常用挂载点

/opt

可选目录,常用于存放第三方软件包和数据文件

/proc

进程目录,存放现有硬件及当前继承的相关信息

/root

root用户的主目录

/sbin

系统二进制目录,存放许多GNU管理员级工具

/srv

服务目录,存放本地服务的相关文件

/sys

系统目录,存放系统硬件信息的相关文件

/tmp

临时目录,可以在该目录中创建和删除临时工作文件

/usr

大量用户级的GNU工具和数据文件都存储在这里

/var

可变目录,用以存放经常变化的文件,比如日志文件


文件元数据












文件类型:

  • -表示普通文件(f)
  • d目录文件
  • b块设备文件(block)
  • c字符设备文件(character)
  • l符号链接文件(symbolic link file)
  • p命令管道文件(pipe)
  • s套接字文件(socket)

文件权限:

9位,每3位一组,三组

权限(U,G,O):用户的,用户所在组的其他用户,其他用户

每一组rwx(读,写,执行)


-rw-r--r-- 1 root root 892 Oct 22 10:52 passwd

修改权限,让bjsxt可写

chmod命令:

给passwd的其他用户添加可写的权限

chmod o-w passwd

-rw-r--rw- 1 root root 892 Oct 22 10:52 passwd

[ugoa][+-][rwx]

其他用户有了写的权限,就可以修改文件了。


文件硬链接的次数

文件的属主(owner)

文件的属组(group)

文件大小(size),单位字节

时间戳(timestamp):近一次被修改的时间

访问时间:access

修改:modify,文件内容发生了变化

改变:change,文件元数据发生了变化


stat


第三节 系统操作命令

df

显示各个挂载分区的使用情况,使用人类能读懂的方式显示。

df -h



du

查看当前目录下每个文件的大小,以人类能读懂的方式显示

du -hs ./*



cd

切换工作目录

cd /etc/



回家目录

cd



cd ~




去root的家目录

cd ~root



回到上一个目录

cd -



pwd

pwd显示当前工作路径

pwd

cd

pwd


mkdir:使用路径指定要创建的目录

  • ls /
  • mkdir /a
  • ls /

在当前目录创建目录,相对路径

  • ls /
  • mkdir /a
  • pwd
  • mkdir a
  • ls

深度创建目录:mkdir a/b/c

mkdir -p a/b/c

在指定目录下创建三个目录:1dir,2dir,3dir:mkdir a/b/c/{1,2,3}dir

rm:删除文件

  • touch a/b/c/hello.java
  • ls a/b/c
  • rm a/b/c/hello.java
  • ls a/b/c

强制删除文件:touch a/b/c/hello.java

  • ls a/b/c
  • rm -f a/b/c/hello.java
  • ls a/b/c

迭代删除文件(目录)

  • ls a/b/c
  • rm a/b/c/okokdir
  • ls a/b/c
  • rm a/b/c/okokdir
  • ls a/b/c

迭代强制删除目录(文件)

  • ls a/b/c
  • rm -rf a/b/c/okokdir
  • ls a/b/c
  • cp
  • cp filea fileb
  • ls
  • cp /etc/passwd ~
  • ls

拷贝目录:

  • cp -r dira dirb
  • ls /etc/yum.repos.d/
  • cp /etc/yum.repos.d/ ~
  • ls /etc/yum.repos.d/
  • cp -r /etc/yum.repos.d/ ~

ln:创建硬链接

  • ln a b
  • ll -i
  • ln passwd pwd
  • ll -i

创建软连接:ln -s a b

  • ll -i
  • ln -s passwd pwds
  • ll -i

列出内容,同时显示每个文件的inode的值

  • ls -l -i
  • stat

显示文件的元数据:stat /etc/profile

  • change和modify的不同
  • modify指的是文件内容被修改的时间
  • change表示文件元数据被修改的时间

touch

  • touch 已存在的文件,抹平各个时间
  • touch 不存在的文件,则创建文件

cat:显示文件内容

more

  • 翻页功能
  • 只能下翻(回车按行,空格键翻页),不能上翻,到结尾退出。q退出

less

  • 提供上翻下翻的功能,q退出
  • 空格键向下翻页,b向上翻页,p回首页,回车按行下翻
  • /root 查找包含root的信息

head:查看文件内容的前10行

  • head /etc/profile
  • 查看文件内容的前2行
  • head -2 /etc/profile

tail:查看文件结尾的后10行

  • tail /etc/profile
  • 查看文件结尾的后2行
  • tail -2 /etc/profile

管道:|

  • 如何显示文件中间的几行?
  • head -m profile | tail -n
  • 管道左侧的输出作为右侧的输入
  • echo "/" | ls -l 错误,因为ls不需要输入,只需要参数
  • xargs:将前面输出作为后面命令的参数:echo "/" | xargs ls -l

vi编辑器的使用

  • i 进入编辑模式
  • a 在选定字符后插入字符
  • o 在当前行下添加新行
  • O 在当前行上添加新行
  • I 在当前行首进入编辑模式
  • A 在当前行末进入编辑模式
  • ESC 退出编辑模式
  • : 末行模式
  • ESC,ESC 退出末行模式
  • ZZ 在命令模式保存并退出编辑器
  • :wq 保存并退出编辑器
  • :w 保存编辑器内容
  • :q! 不保存退出编辑器
  • 移动光标:h左j下k上l右
  • w 移动到下一个单词的词首
  • e:跳至当前或下一个单词的词尾
  • b:跳至当前或下一个单词的词首
  • 0:行首
  • ^:行首的个非空白字符
  • $:行尾
  • G:文档末尾
  • 3G:第三行
  • gg:文档开头
  • ctrl-f 向下翻页 forward
  • ctrl-b 向上翻页 backward
  • 删除替换单个字符:x:删除光标之前位置字符;3x:删除光标开始3个字符
  • r:替换光标位置字符
  • dw 删除单词
  • dd 删除整行
  • yw 复制单词
  • yy 复制1行
  • nyy 复制n行,n是数字
  • p 粘贴 paste
  • ctrl+r:重做 操作结束后使用u退回到上次操作,则ctrl+r重做
  • . 重复上一步操作
  • set:设置
  • :set nu number
  • :set nonu nunumber
  • :set readonly
  • :/after
  • n,N
  • ?向上查找
  • :! 执行命令
  • 查找并替换:s/str1/str2/gi
  • /:临近s的个为边界字符:/ @ #(为了防止内容和边界字符重复,可以使用@和#做边界字符)
  • g:一行内全部替换
  • i:忽略大小写
  • n:行号
  • .:当前光标行
  • +n:偏移n行
  • $:末尾行,$-3
  • %:全文
  • :%d 删除全文
  • :.,$-1d 从当前行删除到倒数第二行
  • :.,+3d 从当前行再往下数三行删除
  • :.,13d 从当前行到第13行删除

软件源

  • centos切换软件源:
  • 本地软件源
  • 通过nginx发布内部软件源
  • 让Centos的软件源指向其他源

cd /etc/yum.repos.d/

CentOS-Base.repo

本地软件源

  • cd /etc/yum.repos.d/
  • cp CentOS-Base.repo localRepo.repo
  • mkdir old
  • mv CentOS-* old 做备份将原来的文件备份到一个位置
  • vim localRepo.repo

[base]

name=CentOS-$releasever - Base

#mirrorlist=mirrorlist.centos.org/?$releasever&arch=$basearch&repo=os

baseurl=file:///mnt

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

插入DVD的ISO镜像文件(CentOS-6.8-x86_64-bin-DVD1.iso),挂载到/mnt目录



  • mount /dev/cdrom /mnt
  • cd /mnt

查看其中的内容

  • cd /mnt/Packages
  • ls -l | wc -l

统计出该目录有多少个rpm包

  • yum clean all 清空本地元数据缓存
  • yum makecache 创建本地元数据缓存
  • yum repolist查看元数据的具体信息
  • yum install pcre
  • yum install gcc

至此,本地yum源配置完成。

CentOS使用其他源

如果使用清华的,请使用:

https://mirrors.tuna.tsinghua.edu.cn/help/centos/下的centos6的内容

将该内容贴到/etc/yum.repos.d/mytsinghua.repo中

  • yum clean all
  • yum makecache

即可

使用阿里巴巴的源

查看帮助信息



CentOS

1、备份


2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/

CentOS 6:wget -O /etc/yum.repos.d/CentOS-Base.repo mirrors.aliyun.com/repo

或者:curl -o /etc/yum.repos.d/CentOS-Base.repo mirrors.aliyun.com/repo

CentOS 7:wget -O /etc/yum.repos.d/CentOS-Base.repo mirrors.aliyun.com/repo

或者:curl -o /etc/yum.repos.d/CentOS-Base.repo mirrors.aliyun.com/repo

3、之后运行yum makecache生成缓存

4、其他非阿里云ECS用户会出现 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 信息,不影响使用。用户也可自行修改相关配置: eg:

sed -i -e '/mirrors.cloud.aliyuncs.com' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.

需要yum clean all

yum makecache

就可以使用aliyun的yum源了。

相关文章