Linux系统命令基础
Linux系统命令基础
前面咱们已经成功安装了Linux系统--centos7,那么现在奔向Linux命令行的世界。
Linux命令格式
1.一般情况下,【参数】是可选的,一些情况下【文件或路径】也是可选的
2.参数 > 同一个命令,跟上不同的参数执行不同的功能
执行linux命令,添加参数的目的是让命令更加贴切实际工作的需要!
linux命令,参数之间,普遍应该用一个或多个空格分割!
Linux命令行
命令提示符
[py@pylinux ~]$ 普通用户py,登陆后
[root@pylinux ~]# 超级用户root,登录后
root代表当前登录的用户
@ 分隔符
pylinux 主机名
~ 当前的登录的位置,此时是家目录
# 超级用户身份提示符
$ 普通用户身份提示符
操作系统目录分隔符
windows平台命令行目录分隔符
Linux平台命令行目录分隔符
Linux与Windows的目录结构比较
Linux首先是建立一个根"/"文件系统,所有的目录也都是由根目录衍生出来。
登录系统后,在当前命令窗口输入命令:
ls /
查看结果如下图:
在Linux底下,所有的文件与目录都是由根目录开始,是目录与文件的源头,然后一个个的分支下来,如同树枝状,因此称为这种目录配置为:目录树。
目录树的特点是什么呢?
- 目录树的起始点是根目录(/,root);
- 每一个目录不止能使用本地的文件系统,也可以使用网络上的文件系统,可以利用NFS服务器挂载特定目录。
- 每一个文件在此目录树中的文件名,包含完整路径都是独一无二的。
图解linux与Windows目录
Linux与windows区别
- windows特点:E:\学习视频\高清视频\
- Linux目录特点:/etc/hosts /root/data/oldboy.txt
Linux 系统目录结构基本特点:
1.Linux下一切从根
开始
2.Linux下面的目录是一个有层次的目录结构
3.在linux中每个目录可以挂载到不同的设备(磁盘)上
4.Linux 下设备不挂载不能使用,不挂载的设备相当于没门没窗户的监狱(进不去出不来),挂载相当于给设备创造了一个入口(挂载点,一般为目录)
Linux目录挂载
挂载通常是将一个存储设备
挂接到一个已经存在的目录
上,访问这个目录
就是访问该存储设备的内容。
对于Linux系统来说,一切接文件,所有文件都放在以根目录
为起点的树形目录结构中,任何硬件设备也都是文件形式
如图所示,是U盘存储设备和Linux系统自己的文件系统结构,此时Linux想要使用U盘的硬件设备,必须将Linux本身的目录
和硬件设备的文件目录合二为一,此过程就称之为挂载
。
挂载操作会隐藏原本Linux目录中的文件,因此选择Linux本身的目录,最好是新建空目录用于挂载
挂载之后,这个目录被称为挂载点
此时U盘文件系统已经是Linux文件系统的一部分,访问/sdb-u文件夹,即是访问访问U盘系统中的文件夹。
-
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
-
/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
-
/dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
-
/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
-
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
-
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
-
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
-
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
-
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
-
/opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
-
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
-
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
-
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
-
/selinux: 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
-
/srv: 该目录存放一些服务启动之后需要提取的数据。
-
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
-
/tmp:这个目录是用来存放一些临时文件的。
-
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
-
/usr/bin:系统用户使用的应用程序。
-
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
-
/usr/src:内核源代码默认的放置目录。
-
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
为什么要学Linux命令
- Linux从诞生就是黑屏界面,所有操作倚靠命令完成,如磁盘读写、文件操作、网络管理等
- 企业中,服务器的维护工作都是
ssh客户端
完成,没有图形界面 - 程序员想要管理linux服务器,必须学习常用命令
Linux命令学习方法
- 熟能生巧,多敲打,多练习即可
- 不可能一下子掌握所有命令用法,学会使用搜索引擎查阅命令资料
当年浩哥在一家美资企业,一位台湾老程序员送我的一本书。。。
可能是看我骨骼惊奇吧!!
Linux文件及目录管理命令
命令 | 对应英文 | 作用 |
---|---|---|
ls | list | 查看文件夹内容 |
pwd | print work directory | 查看当前所在目录 |
cd 目录名 | Change directory | 切换文件夹 |
touch 文件名 | touch | 如果文件不存在,则创建 |
mkdir 目录名 | Make directory | 创建目录 |
rm 文件名 | Remove | 删除指定文件 |
我们知道切换目录的指令是cd,那么首先得知道如何切换目录,这个得用心记呀!
. 当前目录
.. 上一层目录
- 前一个工作目录
~ 当前【用户】所在的家目录
/ 顶级根目录
cd命令,变换目录
cd是change directory的缩写,这是用来变换工作目录的命令,注意命令和目录之间有一个空格。
需要注意的是,在所有目录底下都存在两个目录,分别是【.】和【..】,分别代表当前目录,上层目录!那么如何证明它的存在呢?
命令: ls -la /
查看命令解释:man ls (Linux下的帮助指令)
结论:ls - list directory contens (列出目录内容)
ls -la / 以竖状格式化显示列出/目录所有内容
tree命令
以树形结构显示目录下内容
tree命令可能要单独安装:
yum install tree -y
tree命令语法:
tree常用参数
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在条目后加上文件类型的指示符号(* , /, = , @ , | ,其中的一个) 目录/
ls命令
显示目录下内容及属性信息的命令
-a 显示指定目录下所有子目录与文件,包括以.开头的隐藏文件
-l 以列表方式显示文件的详细信息 ls -l 等于ll 用法
-h, --human-readable 与-l 一起,以易于阅读的格式输出文件大小
(例如 1K 234M 2G)
-t 根据最后修改时间排序,默认是以文件名排序,通常与-l 连用
-F 在条目后加上文件类型的指示符号(* , /, = , @ , | ,其中的一个)
注:可以标识文件类型
加上 * 代表可执行的普通文件
加上 = 表示套接字
加上 | 表示FIFOS(队列系统)
加上 @表示符号链接
加上 / 表示文件夹
-d 显示目录本身的信息 而不是显示目录的内容
-r, --reverse 逆序排列
-S 根据文件大小排序,从大到小排序
-i 显示索引节点信息(索引节点相当于身份证号)
--full-time 以完整的时间格式输出(也就是按照中国的时间日期显示)
案例
ls -lt 按照时间进行排序
ls -lrt 找出最新的文件
ls -d */ 列出当前所有目录
ll -hS ./* 显示出当前目录下所有内容详细,且以kb,mb,gb单位从大到小排序
mkdir命令
创建文件夹
用法:mkdir [选项]... 目录...
若指定目录不存在则创建目录。
-m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask
-p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理
mkdir {1..3}加花括号创建连续的目录,用..隔开 花括号内可以是连续的数字、连续的字母mkdir {a..e}
案例
mkdir {alex,pyyu,mjj} 创建三个文件夹,逗号隔开
mkdir alex{1..5} 创建连续的目录
mkdir cunzhang longting 创建少量连续目录
touch命令
创建文件或修改文件时间戳
用法:touch [选项]... 文件...
将每个文件的访问时间和修改时间改为当前时间。
不存在的文件将会被创建为空文件,除非使用-c 或-h 选项。
touch {连续数字或字母} 创建多个文件序列
touch {1..10}
touch {a..z}
-c, --no-create 不创建任何文件
-t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间替代当前时间
-r, --reference=文件 使用指定文件的时间属性替代当前文件时间
案例
修改文件时间
touch -t 06010808 alex1 #修改alex1文件的时间是 6月1号8点8分
touch -r alex1 alex2 #把alex2的时间改成alex1一样
cp复制
复制命令
windows复制
可以说是相当简单了
ctrl + c 复制
ctrl + v 黏贴
linux复制
用法:cp [选项]... [-T] 源文件 目标文件
或:cp [选项]... 源文件... 目录
或:cp [选项]... -t 目录 源文件...
将源文件复制至目标文件,或将多个源文件复制至目标目录。
-r 递归式复制目录,即复制目录下的所有层级的子目录及文件 -p 复制的时候 保持属性不变
-d 复制的时候保持软连接(快捷方式)
-a 等于-pdr
-p 等于--preserve=模式,所有权,时间戳,复制文件时保持源文件的权限、时间属性
-i, --interactive 覆盖前询问提示
案例
复制 > copy > cp
#移动xxx.py到/tmp目录下
cp xxx.py /tmp/
#移动xxx.py顺便改名为chaoge.py
cp xxx.py /tmp/chaoge.py
Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数)
cp -r 递归,复制目录以及目录的子孙后代
cp -p 复制文件,同时保持文件属性不变 可以用stat
cp -a 相当于-pdr
#递归复制test文件夹,为test2
cp -r test test2
cp是个好命令,操作文件前,先备份
cp main.py main.py.bak
移动多个文件,放入文件夹c中
cp -r 文件1 文件2 文件夹a 文件夹c
案例2
[root@pylinux opt]# cp luffy_boy.zip luffy_boy.zip.bak2
cp:是否覆盖"luffy_boy.zip.bak2"? y
[root@pylinux opt]# cp luffy_boy.zip luffy_boy.zip.bak2 -i
cp:是否覆盖"luffy_boy.zip.bak2"? y
cp确认是否覆盖是-i参数作用,默认alias因为添加了别名
[root@pylinux opt]# alias
alias cp='cp -i'
[root@pylinux opt]# cp luffyCity/ luffyCity2 #必须添加-r参数才可以复制递归目录
cp: omitting directory 'luffyCity/'
[root@pylinux opt]#
[root@pylinux opt]#
[root@pylinux opt]#
[root@pylinux opt]# cp -r luffyCity/ luffyCity2
[root@pylinux opt]#
[root@pylinux opt]#
[root@pylinux opt]# ls
luffyCity luffyCity2
取消cp别名的方式
- 使用命令绝对路径
- 命令开头用反斜线 \
- 取消cp命令别名
- 写入环境变量配置文件
1.
[root@pylinux opt]# which cp
alias cp='cp -i'
/usr/bin/cp
[root@pylinux opt]# /usr/bin/cp luffy_boy.zip luffy_boy.zip.bak
2.
[root@pylinux opt]# \cp luffy_boy.zip luffy_boy.zip.bak
3.
[root@pylinux opt]# unalias cp
[root@pylinux opt]#
[root@pylinux opt]# cp luffy_boy.zip luffy_boy.zip.bak
4.
[root@pylinux opt]# vim ~/.bashrc #可以注释掉如下配置
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
#alias cp='cp -i'
alias mv='mv -i'
快速备份配置文件
mv命令
mv命令就是move的缩写,作用是移动或是重命名文件
用法:mv [选项]... [-T] 源文件 目标文件
或:mv [选项]... 源文件... 目录
或:mv [选项]... -t 目录 源文件...
将源文件重命名为目标文件,或将源文件移动至指定目录。
-f, --force 覆盖前不询问
-i, --interactive 覆盖前询问
-n, --no-clobber 不覆盖已存在文件如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
-t, --target-directory=DIRECTORY 将所有参数指定的源文件或目录移动至 指定目录
-u, --update 只在源文件文件比目标文件新,或目标文件不存在时才进行移动
mv移动|重命名
mv案例
移动(搬家)命令 > move > mv
1.给文件重命名
mv abc abc.py
2.如果目标文件存在,-i参数则提示是否覆盖
mv test1.txt test2.txt
3.使用反斜杠命令屏蔽别名
\mv kunkun wuyifan
4.取消别名
5.移动单个文件
mv file1.txt dir/
6.移动多个文件
mv file1.txt file2.txt dir/
7.通配符移动多个文件
mv dir/file* ../
rm命令
Linux在使用rm(删除)、cp(覆盖)、mv(搬家)等命令的时候,必须非常小心,因为这些命令都是“炸弹”,想必大家都听过“删库到跑路”,一言不合“rm -rf /”,假如你真的这么做了,那么。。。上帝保佑你
用法:rm [选项]... 文件...
删除 (unlink) 文件。
rm命令就是remove的含义,删除一个或者多个文件,这是Linux系统重要命令
-f, --force 强制删除。忽略不存在的文件,不提示确认
-i 在删除前需要确认
-I 在删除超过三个文件或者递归删除前要求确认。
-d, --dir 删除空目录
-r, -R, --recursive 递归删除目录及其内容
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 显示版本信息并退出
案例
1.删除普通文件,需要确认提示,默认添加了-i参数
rm file1.txt
2.强制删除文件,不提示
rm -f file2.txt
3.递归删除文件夹
[root@pylinux tmp]# rm -r heh/
rm:是否进入目录"heh/"? y
rm:是否删除普通空文件 "heh/kuanmian2"?y
rm:是否删除普通空文件 "heh/kuanmian"?y
rm:是否删除目录 "heh/"?y
炸弹命令
务必看清楚敲打的命令,是否正确、不得有空格
务必看清楚敲打的命令,是否正确、不得有空格
务必看清楚敲打的命令,是否正确、不得有空格
1.强制删除且不让用户确认
rm -rf 文件夹
2.强制删除且显示过程
[root@pylinux tmp]# rm -rfv ./*
已删除"./456.txt"
已删除目录:"./q/w/e/r/t/yt"
已删除目录:"./q/w/e/r/t"
已删除目录:"./q/w/e/r"
已删除目录:"./q/w/e"
已删除目录:"./q/w"
已删除目录:"./q"
注意文件恢复
rm命令删除文件后可以通过如ext3grep工具恢复数据,若是想要粉碎文件,还有其他方式
Linux帮助命令
man帮助命令
当你不知道linux命令如何使用的时候,使用man命令帮助你
语法
man 命令
如:
man ls
进入man帮助文档后,按下q退出
使用--help参数
语法:
命令 --help
帮助命令的精简版
如 ls --help
help命令获取帮助
语法:
help 命令
只针对bash内置命令
info命令获取帮助
语法:
info 命令
从互联网中获取
互联网有很多在线linux中文文档网站
Linux开关机命令
shutdown重启或者关机
[root@pylinux ~]#shutdown --help
shutdown [OPTIONS...] [TIME] [WALL...]
Shut down the system.
重启
语法:
shutdown -r参数 -r --reboot Reboot the machine
shutdown -r 10 #十分钟后重启
shutdown -r 0 #立刻重启
shutdown -r now #立刻重启
关机
语法:
shutdown -h --halt 停止的含义
shutdown -h 10 #十分钟后关机
shutdown -h 0
shutdown -h now #立即关机
halt,poweroff,reboot命令关机与重启
reboot 重启
poweroff
halt 关机
关机、重启、注销命令列表
命令 | 说明 |
---|---|
shutdown -h now | 立刻关机,企业用法 |
shutdown -h 1 | 1分钟后关机,也可以写时间如 11:30 |
halt | 立刻关闭系统,需手工切断电源 |
init 0 | 切换运行级别为0,0表示关机 |
poweroff | 立刻关闭系统,且关闭电源 |
重启 | |
reboot | 立刻重启机器,企业用法 |
Shutdown -r now | 立刻重启,企业用法 |
shutdown -r 1 | 一分钟后重启 |
Init 6 | 切换运行级别为6,此级别是重启 |
注销命令 | |
logout | 注销退出当前用户 |
exit | 注销退出当前用户,快捷键ctrl + d |
Linux命令行常用快捷键
ctrl + c cancel取消当前操作
ctrl + l 清空屏幕内容
ctrl + d 退出当前用户
ctrl + a 光标移到行首
ctrl + e 光标移到行尾
ctrl + u 删除光标到行首的内容
Linux的环境变量
同学们应该都会配置windows下的环境变量(PATH),都知道系统会按照PATH的设定,去每个PATH定义的目录下搜索可执行文件。
那么如何查看Linux下的PATH环境变量呢?
执行命令:
echo $PATH
echo命令是有打印的意思
$符号后面跟上PATH,表示输出PATH的变量
PATH(一定是大写的)这个变量是由一堆目录组成,分隔符是":"号,而不同于windows的";"号。
绝对路径与相对路径
Linux中非常重要的概念--路径,路径用来定位如何找到某个文件。
这里浩哥先讲个例子,到底什么是相对路径,绝对路径
比如一个老外,要来老男孩教育学习python,但是他找不到地点,因此向你问路,你可以告诉他:
1.先坐飞机来中国北京,从北京机场坐地铁到沙河地铁站,然后走路800米到沙河汇德商厦,上四楼,找到浩哥,结束寻路。
2. 浩哥就在汇德商厦403办公室,武佩奇后面坐着呢!!!
Linux下特别注意文件名/路径的写法,可以将所谓的路径(path)定义为绝对路径(absolute)和相对路径(relative)。这两种文件名/路径的写法依据是这样的:
- 绝对路径:由根目录(/)为开始写起的文件名或者目录名称,如/home/oldboy/test.py;
- 相对路径:相对于目前路径的文件名写法。例如./home/oldboy/exam.py或../../home/oldboy/exam.py,简单来说只要开头不是/,就是属于相对路径
因此你必须了解,相对路径是:以你当前所在路径的相对路径来表示的。
例如你现在在/home 这个目录下,如要进入/var/log这个路径,如何写呢?
- cd /var/log (绝对路径)
- cd ../var/log(相对路径)
结果如图:
因为你在/home底下,因此你要回到上一层(../)之后,才能继续前往/var,特别注意:
- . :代表当前的目录,也可以用./ 来表示
- .. :代表上一层的目录,也可以用../来表示