操作系统简介
shell
shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上shell是一个命令解释器,它解释用户输入的命令并且把用户的意图传达给内核。(可以理解为用户与内核之间的翻译官角色)
[root@localhost ~]#
[用户名@主机名 目录名]权限标识
快捷键 | 作用 |
---|---|
^C | 终止前台运行的程序 |
^D | 退出 等价exit |
^L | 清屏 |
^A | 光标移动到命令行的最前端 |
^E | 光标移动到命令行的后端 |
^U | 删除光标前所有字符 |
^K | 删除光标后所有字符 |
^R | 搜索历史命令,利用关键词 |
ls
选项
- -a:显示所有文件及目录 (**.**开头的隐藏文件也会列出)
- -l:除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
- -r:将文件以相反次序显示(原定依英文字母次序)
- -t:将文件依建立时间之先后次序列出
- -A:同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录)
- -F:在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
- -R:若目录下有文件,则以下之文件亦皆依序列出
- -h:将显示出来的文件大小以合适的单位显示出来
[root@localhost ~]# ls -ahl
-rw-------. 1 root root 128 4月 2 09:37 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
drwxr-xr-x. 2 root root 32 4月 2 14:00 dir
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
-rw-r--r--. 1 root root 0 4月 2 14:00 test.txt
- 第一列共10位,第1位表示文档类型,
d
表示目录,-
表示文件,l
表示链接文件,d
表示可随机存取的设备,如U盘等,c
表示一次性读取设备,如鼠标、键盘等。后9位,依次对应三种身份所拥有的权限,身份顺序为:owner、group、others,权限顺序为:readable、writable、excutable。如:-r-xr-x---
的含义为当前文档是一个文件,拥有者可读、可执行,同一个群组下的用户,可读、可写,其他人没有任何权限。 - 第二列表示链接数,表示有多少个文件链接到inode号码。
- 第三列表示拥有者
- 第四列表示所属群组
- 第五列表示文档容量大小,单位字节
- 第六列表示文档最后修改时间(atime),注意不是文档的创建时间哦
- 第七列表示文档名称。以点(.)开头的是隐藏文档
查看系统别名
[root@server1 selinux]# alias
alias cman='man -M /usr/share/man/zh_CN'
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]# type -a cp
cp 是 `cp -i' 的别名
cp 是 /usr/bin/cp
- 修改别名,比如使用wl来查看IP地址相关信息
[root@localhost ~]# alias wl='ip address'
[root@localhost ~]# wl
- 为了让别名永久生效,可以讲修改别名的命令写入
bashrc
文件,这个文件中的命令会在每次登陆命令行的时候执行
[root@localhost ~]# echo "alias wl='ip address'" >> /etc/bashrc
history
选项
- -c:将目前shell中的所有history命令消除
- -a:将目前新增的命令写入histfiles, 默认写入
~/.bash_history
- -w:将目前history记忆的内容写入到histfiles
[root@localhost ~]# history -w histfiles.txt
安装中文man手册
yum -y install man-pages-zh-CN.noarch
echo "alias cman='man -M /usr/share/man/zh_CN'" >> .bashrc
source .bashrc
touch(创建新文件)
mkdir (创建新目录)
选项
- -m:配置文件的权限喔,直接配置,不需要看默认权限 (umask)
- -p:帮助你直接将所需要的目录(包含上一级目录)递归创建起来
- -v:显示目录创建的过程
cp (复制文件或目录)
- -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
- -r:递归持续复制,用於目录的复制行为;(常用)
- -v:显示复制的详细过程
[root@localhost ~]# cp -v install.log /home/dir1
# 复制文件到目录下
[root@localhost ~]# cp -v install.log /home/dir1/abc.txt
# 复制文件到目录下,并且重命名为abc.txt
[root@localhost ~]# cp -rv /etc /home/dir1
# 复制目录
[root@localhost ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd /etc/hostname /home/dir2
# 将多个文件复制到同一个目录
[root@localhost ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd /etc/hostname .
# 将多个文件复制到当前目录
[root@localhost ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
[root@localhost ~]# cp -rv /etc/sysconfig/network-scripts/{ifcfg-ens33,ifcfg-ens33.bak}
[root@localhost ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33{,.bak}
# 备份配置文件
mv(移动文件与目录,或修改名称)
- -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i:若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u:若目标文件已经存在,且 source 比较新,才会升级 (update)
- -v:显示复制的详细过程
rm (移除文件或目录)
选项
- -f:就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i:互动模式,在删除前会询问使用者是否动作
- -r:递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
文本文件查看
cat
cat -n #显示行号
less
可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页
head
查看文件的开头部分的内容
- 查看文件的前6行
[root@localhost ~]# head -n 6 anaconda-ks.cfg
tail
会把文本文件里的最尾部的内容显示在屏幕上
实例
- 查看文件anaconda-ks.cfg尾部的3行
[root@localhost ~]# tail -n 3 anaconda-ks.cfg
- 查看日志的实时更新情况
[root@localhost ~]# tail -f /var/log/messages
- 查看文件anaconda-ks.cfg从第10行到结尾
[root@localhost ~]# tail -n +10 anaconda-ks.cfg
grep
针对文件内容进行过滤
实例
[root@xwz ~]# grep 'root' /etc/passwd
# 在/etc/passwd的文件中找出有root的行
[root@xwz ~]# grep '^root' /etc/passwd
# 在/etc/passwd中找出root开头的行
[root@xwz ~]# grep 'bash$' /etc/passwd
# 在/etc/passwd中找出bash结尾的行
文件
更改系统语言
[root@localhost ~]# export LANG="en_US.UTF-8"
# 改回中文是LANG="zh_CN.UTF-8"
文件时间
[root@localhost ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1241 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 33574979 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2021-04-04 17:54:09.700844151 +0800
Modify: 2021-04-04 16:53:30.524854041 +0800
Change: 2021-04-04 16:53:30.524854041 +0800
Birth: -
- Access:访问时间,也叫atime
- 当文件被访问的时候,这个时间就会发生改变
- Linux文件运行的时候查看文件又频繁数量又大,如果每次atime发生变化的时候都记入硬盘,或造成很大的压力。RHEL6开始relatime,atime延迟修改,必须满足其中一个条件:
- 自上次atime修改后,已达到86400秒
- 发生写操作时
- Modify:修改时间,也叫mtime
- 当文件内容发生变化的时候,这个时间就会发生改变
- Change:改变时间,也叫ctime
- 当文件状态被改变的时候,这个时间就会发生修改
文件类型
方法一:ls
- -普通文件(文本文档,二进制文件,压缩文件,电影,图片。。。)
- d目录文件(蓝色)
- b块设备文件(块设备)存储设备硬盘,U盘 /dev/sda,/dev/sda1
- c字符设备文件(字符设备)打印机,终端 /dev/tty1,/dev/zero
- s套接字文件
- p管道文件
- l链接文件(淡蓝色)
方法二:file
方法三:stat
文件查找
which
用于查找文件
which指令会在环境变量$PATH
设置的目录里查找符合条件的文件
[root@server1 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
实例
- 查看ls命令的可执行文件在什么目录
[root@localhost ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
# which会先告诉你ls其实是一个别名
# 然后显示出来ls所在的具体位置
- 查看poweroff在什么目录
[root@localhost ~]# which poweroff
/usr/sbin/poweroff
locate
用于查找符合条件的文件,他会去保存文件和目录名称的数据库内,查找合乎范本样式条件的文件或目录
在centos7的最小化安装中,并没有自带locate命令,我们需要输入如下命令进行安装。
- 手动更新,输入
updatedb
- 默认情况下,
updatedb
会每天自动执行一次
[root@localhost ~]# yum -y install mlocate
- 查找ens33网卡配置文件所在的位置
[root@server1 mlocate]# updatedb
[root@server1 mlocate]# locate -r ens33$
/etc/sysconfig/network-scripts/ifcfg-ens33
/home/dir2/ifcfg-ens33
/root/ifcfg-ens33
find
实时查找工具,通过遍历指定路径下的文件系统完成文件查找
查找条件
- 根据文件名查找
[root@localhost ~]# find /etc -name "ifcfg-ens33"
[root@localhost ~]# find /etc -iname "ifcfg-ens33" # 忽略大小写
[root@localhost ~]# find /etc -iname "ifcfg*"
- 按文件大小
[root@localhost ~]# find /etc -size +5M # 大于5M
[root@localhost ~]# find /etc -size 5M # 等于5M
[root@localhost ~]# find /etc -size -5M # 小于5M
- 指定查找的目录深度
[root@localhost ~]# find / -maxdepth 3 -a -name "ifcfg-ens33" # 最大查找深度
# -a是同时满足,-o是或
[root@localhost ~]# find / -mindepth 3 -a -name "ifcfg-ens33" # 最小查找深度
- 按时间找
[root@localhost ~]# find /etc -mtime +5 # 修改时间超过5天
[root@localhost ~]# find /etc -mtime 5 # 修改时间等于5天
[root@localhost ~]# find /etc -mtime -5 # 修改时间5天以内
- 按照文件属主、属组找,文件的属主和属组,会在下一篇详细讲解。
[root@localhost ~]# find /home -user xwz # 属主是xwz的文件
[root@localhost ~]# find /home -group xwz
[root@localhost ~]# find /home -user xwz -group xwz
[root@localhost ~]# find /home -user xwz -a -group root
[root@localhost ~]# find /home -user xwz -o -group root
[root@localhost ~]# find /home -nouser # 没有属主的文件
[root@localhost ~]# find /home -nogroup # 没有属组的文件
- 按文件类型
[root@localhost ~]# find /dev -type d
- 按文件权限,文件权限会在下一篇详细讲解
[root@localhost ~]# find / -perm 644 -ls
[root@localhost ~]# find / -perm -644 -ls # 权限小于644的
[root@localhost ~]# find / -perm 4000 -ls
[root@localhost ~]# find / -perm -4000 -ls
- 按正则表达式
[root@localhost ~]# find /etc -regex '.*ifcfg-ens[0-9][0-9]'
# .* 任意多个字符
# [0-9] 任意一个数字
- 条件组合
- -a:多个条件and并列
- -o:多个条件or并列
- -not:条件取反
处理动作
- ‐print:默认的处理动作,显示至屏幕
- ‐ls:类型于对查找到的文件执行
ls ‐l
命令 - ‐delete:删除查找到的文件
- ‐fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中
- ‐ok COMMAND {}:对查找到的每个文件执行由COMMAND指定的命令,需要确认
- **‐exec COMMAND {} **:对查找到的每个文件执行由COMMAND指定的命令,不需要确认
- {}:用于引用查找到的文件名称自身
实例
- 查找/var目录下属主为root,且属组为mail的所有文件或目录
[root@localhost ~]# find /var ‐user root ‐group mail
- 查找/usr目录下不属于root,bin或Hadoop的所有文件或目录
[root@localhost ~]# find /usr ‐not ‐user root ‐a ‐not ‐user bin ‐a ‐not ‐user centos
[root@localhost ~]# find /usr ‐not \(‐user root ‐o ‐user bin ‐o ‐user hadoop\)
- 查找/etc目录下最近一周内容曾被修改过的文件或目录
[root@localhost ~]# find /etc/ ‐mtime ‐7
- 查找当前系统上没有属主或属组,且最近一周内曾被访问过的文件或目录
[root@localhost ~]# find / \(‐nouser ‐o ‐nogroup\) ‐a ‐atime ‐7
- 查找/etc目录下大于1M且类型为普通文件的所有文件或目录
[root@localhost ~]# find /etc ‐size +1M ‐type f
- 查找/etc目录下所有用户都没有写权限的文件
[root@localhost ~]# find /etc ‐not ‐perm /222
- 查找/etc目录下至少一类用户没有执行权限的文件
[root@localhost ~]# find /etc ‐not ‐perm ‐111
- 查找/etc/init.d目录下,所有用户都执行权限,且其它用户写权限的文件
[root@localhost ~]#find /etc/init.d ‐perm ‐113
tar 命令
-x 从压缩的文件中提取文件
-v 显示操作过程
-f 指定压缩文件
- 常见解压/压缩命令
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName ```