[root@localhost ~]# uname -r
3.10.0-693.el7.x86_64
格式:主版本.次版本.释放版本-修改版本
次版本:如果是偶数,则为稳定版本,如果是奇数,则为开发版本,内核开发人员使用
释放版本:为对次版本的改动,即加入一些功能
修改版本:编译次数,每编译一次+1
20世纪60年代,MIT开发分时操作系统(Compatible TIme-Sharing System),支持30台终端访问主机
1965年,Bell实验室、MIT、GE(通用电气公司)准备开发Multics系统,为了同时支持300个终端访问主机,但是1969年失败了
1969年,Ken Thompson(C语言之父)利用汇编语言开发了FIle Server System(Unics,即Unix的原型)
1973年,Dennis Ritchie和Ken Thompson发明了C语言,而后写出了Unix的内核
1977年,Berkeley大学的Bill Joy针对他的机器修改Unix源码,称为BSD(Berkeley Software Distribution)
1979年,Unix发布System V,用于个人计算机
1984年,因为Unix规定:“不能对学生提供源码”,Tanenbaum老师自己编写兼容于Unix的Minix,用于教学
1984年,Stallman开始GNU(GNU‘s Not Unix)项目,创办FSF(Free Software Foundation)基金会
1985年,为了避免GNU开发的自由软件被其他人用作专利软件,因此创建GPL(General Public License)版权声明 1988年,MIT为了开发GUI,成立了XFree86的组织
1991年,芬兰赫尔辛基大学的研究生Linus Torvalds基于gcc、bash开发了针对386机器的Lniux内核
1994年,Torvalds发布Linux-v1.0
1996年,Torvalds发布Linux-v2.0,确定了Linux的吉祥物:企鹅
用户具有使用自由、修改自由、重新发布自由以及创建衍生品的自由。这也正好符合了黑客和极客对自由的追求,因此国内外开源社区的根基都很庞大,人气也相当高
开源软件重要特性:低风险;高品质;低成本;更透明
如果开源软件为了单纯追求“自由”而牺牲程序员的利益,这将会影响程序员的创造激情,因此世界上现在有60多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益。
vmware
CentOS7镜像
shell是系统的用户界面 ,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上shell是一个命令解释器,它解释用户输入的命令并且把用户的意图传达给内核。(可以理解为用户与内核之间的翻译官角色)
使用shell的两种方式:
[root@ser2 ~]# ls -a /home/
#命令 选项 参数
命令:整条shell命令的主体
选项:会影响会微调命令的行为,通常以-或者--开头
参数:命令作用的对象(长参数、短参数)
在bash中可以使用tab键对正在输入的命令进行自动补全,默认的补全包并不齐全,可以使用yum包管理工具安装bash-complation进行补全
[root@ser2 ~]# yum install -y bash-completion
[root@ser2 ~]# history
History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 ,用户登录/退出时会将缓存区读取/保存至~/.bash_history
参数:
‐ a: 追加本次会话执行的命令历史列表至历史文件中
‐ d: 删除历史中指定的命令
‐ c: 清空历史命令
操作:
[root@SER2 ~]# alias wl=‘cat /etc/sysconfig/network-scripts/ifcfg-ens33‘
# 建立别名(临时的,仅在当前shell生效)
[root@SER2 ~]# wl
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="1864a917-1e72-452d-a4c8-0c0d7e6757b0"
DEVICE="ens33"
ONBOOT="yes"
[root@SER2 ~]# unalias wl
# 取消wl这个别名
[root@SER2 ~]# alias # 查看系统当前的别名
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 --showtilde‘
[root@SER2 ~]# type -a ls # 查看命令类型
ls 是 `ls --color=auto‘ 的别名
ls 是 /usr/bin/ls
[root@SER2 ~]# /bin/ls
anaconda-ks.cfg home
[root@SER2 ~]# ls # 别名优先
anaconda-ks.cfg home
[root@SER2 ~]# \ls # 跳过别名
anaconda-ks.cfg home
永久别名
[root@localhost ~]# vim /root/.bashrc # 用户别名
[root@localhost ~]# vim /etc/bashrc # 系统别名
[root@SER2 ~]# ls --help
# 用法:ls [选项] ... [文件] ...
中文man手册
yum -y install man-pages-zh-CN.noarch
通过颜色判断文件的类型是不一定正确的
Linux系统中文件是没有扩展名的!!!!
ls -l 文件名 #看第一个字符
- 普通文件(文本文档,二进制文件,压缩文件,电影,图片。。。)
d 目录文件(蓝色)
b 块设备文件(块设备)存储设备硬盘,U盘 /dev/sda,/dev/sda1
c 字符设备文件(字符设备)打印机,终端 /dev/tty1,/dev/zero
s 套接字文件
p 管道文件
l 链接文件(淡蓝色)
[root@SER2 ~]# ll -d /etc/hosts /bin/ls /home /dev/sda /dev/tty1 /etc/grub2.cfg
/dev/log /run/dmeventd-client
# 第一行的第一个字母是标识文件的类型,文件类型一共有七类
-rwxr-xr-x. 1 root root 117680 10月 31 2018 /bin/ls
srw-rw-rw-. 1 root root 0 8月 25 11:03 /dev/log
brw-rw----. 1 root disk 8, 0 8月 25 11:03 /dev/sda
crw--w----. 1 root tty 4, 1 8月 25 11:03 /dev/tty1
lrwxrwxrwx. 1 root root 22 8月 22 11:10 /etc/grub2.cfg ->
../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 6月 7 2013 /etc/hosts
drwxr-xr-x. 3 root root 20 8月 25 11:03 /home
prw-------. 1 root root 0 8月 25 11:03 /run/dmeventd-client
[root@SER2 ~]# file /etc/hosts
/etc/hosts: ASCII text
[root@SER2 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked
(uses shared libs), for GNU/Linux 2.6.32,
BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped
[root@SER2 ~]# file /dev/sda
/dev/sda: block special
[root@SER2 ~]# file /dev/tty1
/dev/tty1: character special
[root@SER2 ~]# file /etc/grub2.cfg
/etc/grub2.cfg: symbolic link to `../boot/grub2/grub.cfg‘
[root@SER2 ~]# file /home
/home: directory
[root@SER2 ~]# file /run/dmeventd-client
/run/dmeventd-client: fifo (named pipe)
[root@localhost ~]# stat anaconda-ks.cfg
文件:"anaconda-ks.cfg"
大小:1244 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33574991 硬链接:1
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2020-11-28 14:03:21.043099567 +0800
最近更改:2020-11-28 14:03:21.043099567 +0800
最近改动:2020-11-28 14:03:21.043099567 +0800
创建时间:-
which指令会在环境变量$PATH 设置的目录里查找符合条件的文件。
[root@localhost ~]# which poweroff
/usr/sbin/poweroff
locate 要搜索的文件或目录名,非实时的从数据库里快速搜索文件或目录。
[root@localhost ~]# yum -y install mlocate # 安装locate
[root@localhost ~]# updatedb # 更新数据库
[root@localhost ~]# locate hosts # 查找hosts文件名的文件
[root@localhost ~]# locate /etc/sh # 查找/etc目录下所有以sh开头的文件
默认情况下,locate数据库中会忽略某些文件夹,可以在配置文件中修改
[root@localhost ~]# cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda
configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2
gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs
proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs
udf usbfs ceph fuse.ceph"
PRUNENAMES = ".git .hg .svn .bzr .arch-ids {arch} CVS"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache
/var/lib/yum/yumdb /var/lib/dnf/yumdb /var/spool/cups /var/spool/squid /var/tmp
/var/lib/ceph"
find [选项] [路径] [查找条件 + 处理动作]
查找路径:指定具体目录路径,默认是当前文件夹
查找条件:指定的查找标准(文件名/大小/类型/权限等),默认是找出所有文件
处理动作:对符合条件的文件做什么操作,默认输出屏幕
与Windows的多根目录不同,Linux以单根的方式组织文件,采用级层式的树状目录结构,在此结构中最上层是根目录“/”,然后在此目录下再创建其它的目录。在linux世界里,一切皆文件。
绝对路径:从/开始的路径 /home/aaron/file1
相对路径:从当前路径开始 a.txt ./a.txt ../a.txt
[root@SER2 /]# useradd aaron
[root@SER2 /]# touch /home/aaron/file1 # 绝对路径
[root@SER2 /]# touch ~/file2
[root@SER2 /]# touch ~aaron/file3
[root@SER2 123]# pwd
[root@SER2 123]# mkdir abc # 相对路径
[root@SER2 123]# touch ../file3
[root@SER2 123]# touch file4
[root@SER2 123]# touch abc/file5
[root@SER2 123]# cd /home/aaron/ # 绝对路径
[root@SER2 aaron]# cd ~aaron/
[root@SER2 aaron]# cd ../../root # 相对路径
[root@SER2 ~]# cd - # 返回上次目录
/home/aaron
[root@SER2 aaron]# cd ~ # 直接回家目录
[root@SER2 aaron]# cd # 直接回家目录
touch命令:可以创建文件,也可更改文件时间
Update the access and modification times of each FILE to the current time.
[root@SER2 ~]# touch file1.txt # 无则创建,有则修改时间
[root@SER2 ~]# touch file3 file4
[root@SER2 ~]# touch /home/file10.txt
[root@SER2 ~]# touch /home/{maomao,gougou}
[root@SER2 ~]# touch file{1..20}
[root@SER2 ~]# touch file{a..c}
[root@SER2 ~]# touch file{old,new} # {}集合,等价touch fileold filenew
[root@SER2 ~]# mkdir dir1
[root@SER2 ~]# mkdir /home/dir2 /home/dir3
[root@SER2 ~]# mkdir /home/{dir4,dir5}
[root@SER2 ~]# mkdir -v /home/{dir6,dir7} # 显示操作的消息
[root@SER2 ~]# mkdir -v /home/dir8/111/22
[root@SER2 ~]# mkdir -pv /home/dir8/111/22 # 创建目录和其所有父层目录
[root@SER2 ~]# mkdir -pv /home/{abc/{dir1,111},efg}
cp命令: 复制文件
Usage: cp [OPTION]... [-T] SOURCE DEST
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...
[root@SER2 ~]# mkdir /home/dir{1,2}
[root@SER2 ~]# touch install.log
[root@SER2 ~]# cp -v install.log /home/dir1
[root@SER2 ~]# cp -v install.log /home/dir1/abc.txt
[root@SER2 ~]# cp -rv /etc /home/dir1
[root@SER2 ~]# cp -v install.log /home/dir88 # 没有/home/dir88
[root@SER2 ~]# cp -v install.log /home/dir2
[root@SER2 ~]# cp -v anaconda-ks.cfg !$
[root@SER2 ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd /etc/hostname /home/dir2
# 将多个文件复制到同一个目录
[root@SER2 ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd /etc/hostname .
[root@SER2 ~]# type -a cp
cp 是 `cp -i‘ 的别名
cp 是 /usr/bin/cp
[root@SER2 ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33/etc/sysconfig/network-scripts/ifcfg-ens33.bak
[root@SER2 ~]# cp -rv /etc/sysconfig/network-scripts/{ifcfg-ens33,ifcfgens33.bak}
[root@SER2 ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33{,-old}
mv命令: 移动文件
Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
注意事项类比cp命令
[root@SER2 ~]# mv file1 /home/dir3 # 将file1移动到/home/dir3
[root@SER2 ~]# mv file2 /home/dir3/file20 # 将file2移动到/home/dir3,并且改名file20
[root@SER2 ~]# mv file4 file5 # 将file4改名为file5
[root@SER2 ~]# cd /home
[root@SER2 home]# rm -rf dir1
[root@SER2 ~]# mkdir /home/dir10
[root@SER2 ~]# touch /home/dir10/{file2,file3,.file4}
[root@SER2 ~]# rm -rf /home/dir10/*
[root@SER2 ~]# ls /home/dir10/ -a # 隐藏文件没有被删除
. .. .file4
[root@SER2 ~]# rm -rf file*
[root@SER2 ~]# rm -rf *.pdf
cat tac less more head tail tailf grep ....
/bin/date
/etc/hostname
/etc/sysconfig/network-scripts/ifcfg-ens33
/etc/passwd
/etc/shadow
/etc/group
/etc/grub2.cfg
/etc/resolv.conf
/etc/profile # 设置系统环境变量
/etc/bashrc # 影响bash shell环境
/var/log/messages # 系统主日志文件
/var/log/secure # 跟安全相关的日志如ssh登录,本地登录......
/proc/cpuinfo # 查看CPU信息:核心数...
原文:https://www.cnblogs.com/Bennyzion/p/14099936.html