1.0Linux的哲学思想(优势)
1、一切都是一个文件,一切硬件设备包括硬件接口都可以以文件形式显示
2、系统小型,轻量级,300个包(不装桌面的情况下)
3、避免令人困惑的用户界面(图形界面)
4、在windows操作系统中,没有后缀名会无法打开文件,linux不以后缀名区分文件,没有后缀名对Linux操作没有影响
5、免费
2.0Linux理解
shell的概念(区别于Xshell(远程管理服务器的软件))
shell指代的是一类软件的集合(操作系统的一部分,用kill命令是杀不掉的,-9命令可以强杀),作用是翻译,计算机使用的是二进制语言,shell的作用就是将人类语言翻译成机器能够听懂的语言,将命令传达给操作系统内核执行(centos\ubuntu等都是以Linux为内核的操作系统),操作系统将命令交给电脑硬件处理。
-
Linux系统中运行的一种特殊程序(完成特定任务的一串代码)
-
用户与内核(Linux)的“翻译官”
-
用户登陆Linux系统(作用:调度硬件,分配资源,网络管理)时,自动加载一个shell(所有系统,叫法可能有所不同)程序
-
Bash(Shell的一种(可以多开,Linux本就是多人多任务的系统环境,每个bash互相独立又相自联系),比如还有sh、csh、tcsh、nologin(奇葩))是Linux系统中默认使用的Shell程序
tips:桌面本身为一个软件,打开进程管理器,关闭删除explorer,桌面就会消失,打开文件,运行新任务,打开explorer.exe,桌面就会恢复。
3.0Linux命令的分类
命令的本质是程序,需要安装,很多命令在安装完操作系统后不用安装,是因为一些命令集成于Shell(不仅是翻译界面,本身也是一系列程序的集合,例如命令)解释器程序内部,这些命令被称为内部命令(例如cd,shell的一部分,自动载入内存(内部命令在bash里,而bash在内存里),可以直接使用,没有相对应的独立文件),而需要我们额外安装的命令我们称为外部命令(例如ls,装系统的时候选中软件选择里的开发工具自动安装),每个命令都对应一个文件,必须知道其对应的文件位置,由shell加载后执行,外部命令存放在硬盘里,使用时需要内存读取后使用,所以速度比内部命令慢。
type -a命令可以用于区分命令是内部命令还是外部命令,查看命令是否有相对应文件
3.1linux命令执行方式与过程
绝对路径执行
例如/usr/bin/ls
[root@localhost ~]# /usr/bin/ls
通过输入绝对路径执行命令
anaconda-ks.cfg original-ks.cfg text text2 tt
置入环境变量
将命令置入设置好的环境变量路径 /usr/local/sbin、/usr/local/bin、/usr/bin、/usr/sbin/、/root/bin
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
(直接输入ls命令会按顺序寻找,找到就停)
(例子:将ls命令升级后,将升级后的ls命令放入/usr/bin/下面,升级前的命令放入/usr/local/sbin/下,直接输入ls命令,会显示老版本的ls命令,要注意不同模式下命令的存放位置)
(例子:将ls命令升级后,将升级后的ls命令放入/usr/bin/下面,升级前的命令放入/usr/local/sbin/下,直接输入ls命令,会显示老版本的ls命令,要注意不同模式下命令的存放位置)
Linux命令执行过程
hash -d命令删除掉缓存表中的命令后,shell程序会重新去环境变量路径中寻找。
3.2.Linux命令格式
通用的命令行使用格式:命令 [选项] [参数] (英文字符区分大小写,windows不区分)
- 命令唯一不变
- 整条命令中最关键的一部分
- 短格式选项:使用符号“-”引导(多个单字符选项可以组合在一起使用,例如ls -al)
- 长格式选项:使用符号”--“引导
命令 -字母 命令--单词 命令 选项
ls -a 命令 -字母
ls --all 命令 --单词
ip a =ip addr unix风格
[root@localhost ~]# cd ~;ls
分号可以先执行前面再执行后面,前面一个命令执行不成功不影响后面命令的执行
anaconda-ks.cfg original-ks.cfg text text2 tt
3.3编辑Linux命令行
快捷键 | 作用 |
Tab | 补全命令或者参数(如果命令是唯一的,按一次直接补全,如果命令不唯一,按两次显示所有衍生命令,输入关键字符按Tab补全命令) (有些命令参数只能是文件夹(文件\用户名),选错无法补齐) |
\反斜杠 | 命令换行 |
ctrl+U | 清空至行首 |
ctrl+A | 移动至行首 |
end | 移动至行尾 |
ctrl+K | 清空至行尾 |
ctrl+L | 清平(把光标移动到最顶格) |
ctrl+C | 强制退出当前操作 |
ctrl+S/Q | 锁屏解锁 |
page上下键 | 可以快捷选择使用过的历史命令 |
[root@localhost /]# user
useradd userdel userhelper usermod usernetctl users
[root@localhost /]# userdel
[root@localhost /]# l\
> s
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
3.4获得命令帮助的一些方法(不如百度)
命令 | 作用 |
help cd | 查看内部命令 |
ls --help | 查看外部命令 |
man man | 查看man手册 |
man 1 passwd | 看passwd命令作用 |
man 5 passwd | 看passwd文件内容 |
3.5Linux一些基础命令
帮助:命令 --help (命令相关帮助)
ls --help 查看ls的命令帮助
mkdir --help 查看mkdir的命令帮助
显示进程树:pstree (可视化的展示当前操作系统所有的进程以及其父子关系)
pstree -p (显示进程树中每个进程的ID(PID))
tips:PID,每个进程的唯一标识符,以便系统能够有效管理和调度。
pstree 可视化的展示当前操作系统所有的进程以及其父子关系
pstree -p 显示进程树中每个进程的ID(PID)
显示文件内容:type (显示指定文件(命令)内容)
type -a(显示指定命令所有指定位置)
[root@localhost ~]# type ls 显示指定命令ls的内容
ls is aliased to `ls --color=auto'
[root@localhost ~]# type -a ls 显示指定命令所有定义位置(懒惰模式?)
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
[root@localhost ~]# type cd
cd is a shell builtin(cd是shell内置命令)type -a命令可以用于区分命令是内部命令还是外部命令
移动文件:mv
mv /usr/bin/ls /mnt/ 将/usr/bin/下的ls移动到/mnt/下面
删除文件或目录:rm (删除指定的文件和目录)
rm -r(删除该目录以及其所有递归目录)
rm -f(强制删除)
rm text 删除当前目录下的text文件夹
rm -r ./text 删除当前目录下的text文件夹及其所有递归目录
rm -f ../ 强制删除上一级目录
显示文件内容:cat
[root@localhost /]# cat etc/passwd 显示etc文件夹下的passwd文件
root:x:0:0:root:/root:/bin/bash
root:当前用户
x:密码的校验符
0:用户编号
0:用户组编号
root:备注信息
/root:用户家目录
/bin/bash:用户登录默认加载的bash
显示当前目录所在的绝对路径:pwd
切换当前所在目录:cd 目标位置(切换到目标位置)
cd ~ 或者 cd (切换到当前用户的家目录)
cd - (切换到上一次执行cd之前所在的目录)
cd .. (切换到上级所在目录)
[root@localhost /]# cd
[root@localhost ~]# cd /
[root@localhost /]# cd -
/root
[root@localhost ~]# cd /usr/bin
[root@localhost bin]# cd -
/root
[root@localhost ~]# pwd
/root
列表 :ls (以列表形式列出当前目录下所有文件及子目录)
ls -l (以长列表形式列出当前目录下所有文件及子目录,可以看到文件的属性)
ls -a (显示所有文件及隐藏文件,包括.和..)
ls -d (显示当前文件夹,一般是.,加上l后可查看属性)
ls -h (友好显示,会给文件大小加上单位,kb及以上才会加上单位)
ls -R (递归显示所有文件及文件夹)
ls -t (按时间排序,越新的在越上面)
ls -S (按大小排序,越大的在越上面)
ls -r (倒序显示)
[root@localhost ~]# cd ~
[root@localhost ~]# mkdir -p aa/bb/cc
[root@localhost ~]# ls
1 aa anaconda-ks.cfg original-ks.cfg text text2 tt
[root@localhost ~]# ls -al
total 56
dr-xr-x---. 7 root root 4096 Oct 22 12:32 .
dr-xr-xr-x. 17 root root 239 Sep 7 20:13 ..
-rw-r--r--. 1 root root 0 Oct 22 10:49 1
drwxr-xr-x. 3 root root 16 Oct 22 12:32 aa
-rw-------. 1 root root 2761 Sep 5 19:01 anaconda-ks.cfg
-rw-------. 1 root root 3833 Oct 21 20:00 .bash_history
-rw-r--r--. 1 root root 18 Dec 28 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 28 2013 .bash_profile
-rw-r--r--. 1 root root 185 Sep 10 02:26 .bashrc
drwx------. 3 root root 18 Sep 5 19:57 .cache
drwxr-xr-x. 3 root root 18 Sep 5 19:57 .config
-rw-r--r--. 1 root root 100 Dec 28 2013 .cshrc
-rw-------. 1 root root 38 Oct 22 10:01 .lesshst
-rw-------. 1 root root 2041 Sep 5 19:01 original-ks.cfg
-rw-r--r--. 1 root root 129 Dec 28 2013 .tcshrc
drwxr-xr-x. 2 root root 36 Oct 20 19:33 text
-rw-r--r--. 1 root root 24 Sep 17 08:47 text2
drwxr-xr-x. 2 root root 22 Sep 9 08:53 tt
-rw-------. 1 root root 779 Oct 20 18:35 .viminfo
-rw-------. 1 root root 132 Oct 20 18:27 .xauthd5k9Xm
-rw-------. 1 root root 134 Oct 22 05:51 .Xauthority
[root@localhost ~]# ls -d
.
[root@localhost ~]# ls -dl
dr-xr-x---. 7 root root 4096 Oct 22 12:32 .
[root@localhost ~]# ls -tr
original-ks.cfg anaconda-ks.cfg tt text2 text 1 aa
[root@localhost ~]# ls -R aa
aa:
bbaa/bb:
ccaa/bb/cc:
[root@localhost ~]#
第一个字符 | 文件的类型及功能 |
- | 普通文件,图片,文本,压缩包等 |
d | 目录文件夹 |
l | 软链接,类似于windows中的快捷方式 |
c | 字符文件,键盘 |
d | 快设备,硬盘(4k一读,最合理的读写速度,大了影响空间,小了影响速度) |
s | 套接字 |
p | 管道文件 |
AB两个程序互传数据需要用到套接字和管道文件,套接字是双向的,分为网络套接字(a和b传送数据)和本地套接字,管道文件是单向的,一般都在ram里,用的时候才有,一般run文件夹下居多。
.表示selinux,是一种保护措施,文件的使用时间相当于修改时间,文件的链接数指的是硬链接。
查找文件和目录:find
别名:alias (自定义命令="原始命令")
alias my1="cd etc/profile"
unalias my1 删除创建的别名
别名>内部>hash>外部 优先级
创建文件夹:mkdir
mkdir -p (创建递归文件夹)
tips:不要创建p p的文件名,如果要创建,格式用“p p”;rm -f -f无效,因为shell把-f认为是选项,所以要rm -rf ./-rf,尽量不要创建带-文件,尽量用数字和字母创建名字
[root@localhost ~]# mkdir -p aa/bb/cc
[root@localhost ~]# ls -R aa
aa:
bbaa/bb:
ccaa/bb/cc:mkdir -pv /mysql/{3306,2237,3308}/{bin,log,pid,data,etc} 创建递归目录并显示创建信息
创建文件:touch(文件不存在时,创建文件,文件存在时,刷新文件时间)
查看占用磁盘空间:du(查看当前目录及其所有子目录占磁盘空间的大小)
du -a(查看当前目录及其所有子目录以及文件所占空间的大小)
du -s(显示当前文件夹占磁盘的总大小)
du -h(显示单位)
du -d(显示层级,例如d1、d2、d3
tips:ll显示的是文件的真实大小,du显示的是文件占磁盘的空间
4.0通配符
一些符号不表示原来的意思,重新赋予它新的含义,用来匹配文件或者文件夹的名字。
通配符 | 含义 |
? | 代表任意一个字符(?.txt不包含10.txt) |
* | 代表任意长度的字符(*.txt包含所有以txt结尾的文件) (*p,p结尾;p*,p开头;*p*包含p) |
{a..z}{1..10}{A..Z} | 表示a到z,1到10,A到Z,touch {1..10} |
[0-9][0-9] [a-c] | 表示单个字符,0-9当中一位,ls [0-9][0-9]表示从00-99 表示a,A,b,B,c |
[[:lower:]] | 表示a-z |
[[:upper:]] | 表示A-Z |
[^0-9] [^a] | 匹配列表中所有字符以外的字符 除了名为a以外的所有文件及文件夹,由于单个字符,10等文件名也不行,10可以用[^a][0-9]表示 |
[[:digit:]] | 表示0-9 |
[[:alpha:]] | 表示所有字母 |
5.0软硬链接
硬链接:ln 源文件的路径 硬链接的路径
软链接:ln -s 源文件的路径 软链接的路径