Linux命令
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 http://mirrors.aliyun.com/repo/epel-6.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做以下的工作:
- 从文件读取输入命令,从bash的调用选项-c参数读取字符串作为命令,或者从用户终端读取输入命令。
- 将输入命令切割为单词和操作符,依据在Quoting部分描述的引用规则。这些标记按照元字符切割。别名扩展就是在这步骤做的。
- 将标记解析为简单的和复合的命令
- 进行各种各样的shell扩展,将扩展后的标记切割为文件名称和命令以及参数的列表。
- 进行必要的重定向处理并从参数列表中移除重定向操作符和操作数。
- 执行命令
- 可选地,等待命令的执行完成并收集命令执行的退出状态。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=http://mirrorlist.centos.org/?release=$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 http://mirrors.aliyun.com/repo/Centos-6.repo
或者:curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者:curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、之后运行yum makecache生成缓存
4、其他非阿里云ECS用户会出现 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 信息,不影响使用。用户也可自行修改相关配置: eg:
sed -i -e '/http://mirrors.cloud.aliyuncs.com/d' -e '/http://mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.
需要yum clean all
yum makecache
就可以使用aliyun的yum源了。
相关文章