linux 基础文件,Linux学习之文件基础

首次登录与使用帮助

Linux的基本原则

由目的单一的小程序组成;组合小程序完成复杂任务;

一切皆文件;

尽量避免捕获用户接口;

配置文件保存为纯文本格式;

x window与命令行

默认情况下提供6个终端来让用户登录,使用ctrl+alt+F(16)来切换即可.分别命名为tty1tty6.

还有一种自然是图形界面,称之为x-window.如果已经安装过x-window系统那么运行stratx命令后使用ctrl+alt+F7即可启动.当然这个在inittab文件里是可以自行修改的.像我的是ctrl+alr+F1才是图形界面,并且是默认的.

登录

输入密码登录后,出现类似root@fredal tmp]#的提示,最左边的代表当前用户是root.@后面的指的是主机名fredal,接着代表当前目录为tmp.#代表当前用户是管理员,而$代表当前用户是普通用户.运行su fredal切换用户到普通用户fredal,那么:[fredal@fredal tmp]$.

使用su命令切换用户,使用exit退出.

命令格式与热键

命令格式如下分为命令,选项与参数.

[root@fredal ~]$ command [-options] parameter1 parameter2 ...

例如ls -l /root,选项分为短选项-与长选项--,不同的选项可以合在一起,例如ls -al /root.参数指的是命令的作用对象,像这儿指的是/root目录下.

如果需要补全可以使用按两次tab键,可以用于命令补全,同样也可用于文件补全.

ctrl-c键用于中止程序.ctrl-d相当于输入结束或者exit.

使用帮助

我们的命令分为内部命令与外部命令.

可以用whatis 参数来区分,例如help是一个内部命令,那么

[fredal@fredal tmp]$ whatis help

help (1) - bash built-in commands, see bash(1)

看到有built-in字样,说明是内部命令,否则是外部命令.

如果是内部命令,可以使用help 参数来获取帮助,没错,可以help help.得到关于help命令自身的使用帮助.

外部命令使用man 参数来获取帮助.

输入man 7 man得到

c2ebba67eca7

1_0

这样的帮助是分章节的(上图是第七章),每一章如下

用户命令(/bin, /usr/bin, /usr/local/bin)

系统调用

库用户

特殊文件(设备文件)

文件格式(配置文件的语法)

游戏

杂项(Miscellaneous)

管理命令(/sbin, /usr/sbin, /usr/local/sbin)

默认是有哪个章节就显示最前的那章.同样可以用whatis 参数来查看命令有哪些章节的说明.而我们要想显示那一章节就用man 章节数 参数即可

关于man使用帮助的一些说明:

符号:

<>:必选

[]:可选

...:可以出现多次

|:多选一

{}:分组

关键字:

NAME:命令名称及功能简要说明

SYNOPSIS:用法说明,包括可用的选项

DESCRIPTION:命令功能的详尽说明,可能包括每一个选项的意义

OPTIONS:说明每一个选项的意义

FILES:此命令相关的配置文件

BUGS:

EXAMPLES:使用示例

SEE ALSO:另外参照

翻屏:

向后翻一屏:SPACE

向前翻一屏:b

向后翻一行:ENTER

向前翻一行:k

查找:

/KEYWORD: 向后查找

n: 下一个

N:前一个

?KEYWORD:向前查找

n: 下一个

N:前一个

另外使用q退出.

除了man命令,还可以使用info命令来获得帮助,大概是对man的一个补充吧,就是info 参数,不赘述了.

基础命令

type

type 参数查看命令的类型及一些信息.

c2ebba67eca7

0

date与clock

c2ebba67eca7

1

看上去没啥区别,不过前者指的是系统时间,后者指的是硬件时间.他们自身的修改不会影响到对方.

可以用自己喜欢的格式显示,例如date +%Y/+%m/+%d,就显示2016/3/13.同样修改时间例如date 1210161730是修改成2030年12月10日16:17:00.可以看到格式是月日时分年.

clock操作类似.如果想让硬件时间同步到系统时间,使用hwclock -s,反之使用hwclock -w.

cal

显示日历的命令,cal显示当前月,cal 年份显示某一年的年历.cal 月份 年份显示某年某月的月历.

c2ebba67eca7

1_1

bc

一个简单的计算器,值得注意的是除法运算和java一样1/3变成0.如果要保留小数使用scale=小数位.使用quit退出

nano

一个简单的文本编辑器,使用nano 文件名即可新建文件,进入到以下界面.使用ctrl+O保存,ctrl+x离开

c2ebba67eca7

1_2

sync

sync进行数据的写入操作,会使内存中尚未更新的数据写入到硬盘中.

开关机

惯例上使用shutdown即可,同时poweroff关机,reboot重启,比如

shutdown -h now

poweroff -f

更多参数参考man page.

切换执行等级

常用的几个等级

1. level 0: 关机

2. level 3: 命令行模式

3. level 5: 图形界面模式

4. level 6: 重启

那么显然`init 0`可以执行关机.

忘记密码

passwd命令,输入两次新密码即可.

文件与目录配置

文件属性

我们用ls -al命令来查看文件,出现如下格式.

c2ebba67eca7

2

从左到右基本上可以划分为七列,意义如下:

文件的类型吧及权限

表示有多少文件名链接到此节点

表示这个文件或目录的"所有者帐号"

表示这个文件的所属用户组

文件的容量大小,默认为B

文件的创建日期或者是最近的修改日期

文件名

说说第一列,也就是类型权限.共有10个字符,第一个字符代表文件的类型:

-:普通文件 (f)

d: 目录文件

b: 块设备文件,可供存储的接口设备 (block)

c: 字符设备文件,串行端口设备 (character)

l: 符号链接文件(symbolic link file)

p: 命令管道文件(pipe)

s: 套接字文件(socket)

后面九位,每三个一组,均为"rwx"的三个参数的组合.[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute),如果都没有权限就是[-].

第一组为"文件所有者的权限"

第二组为"同用户组的权限"

第三组为"其他非本用户组"的权限

说说第六列,也就是时间戳.基本上记录以下三类:

访问时间:access

修改时间:modify,文件内容发生了改变

改变时间:change,metadata,元数据(本身的属性改变)

目录配置标准FHS

文件层次标准(FHS,Filesystem Hierarchy Standard)统一解决碎片化问题.

按照文件系统使用频繁与否可分为四类

c2ebba67eca7

3_0

根目录:是整个系统最重要的一个目录,所有的目录都由根目录衍生出来,同时也与开机,还原,系统修复等操作有关.

在根目录查看所有文件可以看到

c2ebba67eca7

3_1

FHS定义出根目录/应该有以下子目录才好

/bin:放置的是单用户模式下还能被操作的命令,上图中是一个链接文件.

/boot:放置开机会使用到的文件,包括linux内核文件以及配置文件等

/dev: 任何设备与接口文件都是存在这个目录中

/etc: 系统的主要配置文件都在这,一般普通用户可以查阅但只有root用户才能修改

/home: 这是系统默认的用户主文件夹,比如说我这个里面会有fredal的目录在,但是root用户是不在这儿的.带上~选项,表示当前用户的主文件夹.

/lib:放置开机会用到的函数库,以及/bin与/sbin下命令调用的函数库.

/media:媒体的意思,放置的是可删除的设备,包括软盘,光盘...

/mnt:挂载设备的目录

/opt:给第三方软件放置的目录

/root:系统管理员得到主文件夹,和/home是不同的.

/sbin:管理命令,与/bin用户命令不同,包括开机,修复,还原系统等命令

/srv:"service"的缩写,一些网络服务启动之后,所需要取用的数据目录

/tmp:临时文件

当然还有一些目录也是需要了解的

/lost+found:在文件系统发生错误时,将一些丢失的片段放置到这个目录下

/proc:虚拟文件系统,放置的数据都在内存中,如系统的内核,进程,外部设备的状态,网络状态等.

/sys:也是虚拟文件系统,跟硬件设备相关的属性映射文件

接下来需要了解/usr了,(UNIX SoftWare Resource)缩写,也就是操作系统软件资源,而不是什么用户的目录.所有的系统默认的软件都会放置在这,类似于windows中"C:\windows".与/下很多重复目录的区别在于是否与开机相关

/usr/bin:用户可使用的命令,和/bin区别在于是否与开机相关

/usr/sbin:非系统正常运行所需要的系统命令,如网络服务的服务命令

/usr/lib:各种应用软件的函数库,目标文件

/usr/local:系统管理员在本机自行安装的软件,建议放到此目录.这里面也有/bin,/sbin,/lib

/usr/src:源码

接下来将/var.定义为可变的文件,包括缓存,登录文件以及某些软件运行产生的文件.

/var/cache:缓存文件

/var/lib:程序本身执行的过程中需要使用的库

/var/tmp:也是临时文件

我们的目录树如下:

c2ebba67eca7

3_2

路径

文件的路径:就是文件存放的地方,通过它系统就可以找到该文件。

绝对路径:路径的写法一定是由根目录“/”写起的。例如:/usr/local/mysql。

相对路径:路径的写法不是由根目录“/”写起的。例如例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等

. :代表当前的目录,也可以使用 ./ 來表示;

.. :代表上一层目录,也可以 ../ 來代表。

-:代表前一次目录,按多次相当于来回轮换

~:当前用户的主文件夹

文件与目录管理

cd(切换目录)

就是一个切换命令的操作,加上~或者啥都不加表示回到主目录.-表示与前一层来回切换,cd ..表示回到上一层,cd /var/spool这种属于绝对路径写法,cd ../bin属于相对路径写法

c2ebba67eca7

4

pwd(显示目录)

用于打印当前目录,有参数-P表示显示出真实的路径(而不是链接)

c2ebba67eca7

4_1

我们知道/bin是一个链接目录.链接到/usr/bin中,所以加了参数会有区别

mkdir(创建新目录)

主要参数:

-m:用于指定要创建的目录的权限。(不常用)

-p:创建一大串级联目录,并且当创建一个已经存在的目录时不会报错

如果目录已经存在,报错.创建不存在的级联目录时需要加上参数.另外不指定权限会默认为drwxr-xr-x

c2ebba67eca7

4_2

我们在创建目录的时候,可以使用{}进行辅助,例如在创建多个目录的时候,或者交叉目录的时候.

[root@fredal tmp]# mkdir -p hello/black/{one,two/guess}创建了多个目录.

[root@fredal tmp]# mkdir -p hello/test/{a,b}_{c,d}这行命令会创建a_c,a_d,b_c,b_d四个目录

install

只说-d参数,同样有创建目录的效果

c2ebba67eca7

4_2a

rmdir(删除目录)

删除空的目录,-p参数可以删除一连串的单源空目录,自底向上的.

环境变量$PATH

为什么可以在某些地方不加地址就可以直接那个命令呢,就是环境变量的原因,可以查看路径设置的详细

c2ebba67eca7

4_3

ls(查看文件与目录)

ls可能是最常用的指令之一.

主要参数:

-l:长格式(包含文件的属性与权限等数据)

-h:做单位转换(KB,GB)

-a: 显示以隐藏文件

-A: 显示隐藏文件但不包括.和..

-d: 显示目录自身属性

-i: 列出index node, inode

-r: 逆序显示

-R: 递归(recursive)显示,连同子目录文件

-F: 根据文件目录等信息给与附加数据结构(*代表可执行文件,/代表目录,=代表socket文件,|代表FIFO文件)

--color=never :不要颜色;

--color=always :显示颜色

--color=auto :自动决定颜色显示

--full-time :以完整時間模式 (包含年、月、日、時、分) 輸出

c2ebba67eca7

4_4

touch

一般来说我们用文本编辑器创建新文件,但这个也可以.描述为若之前对应文件不存在,创建一个新文件;若存在,则修改这个文件的最后修改期限(时间戳)

主要参数:

-a:只更改存取时间

-c:不建立任何文件

-d::使用指定的日期时间

-m:只更改变动时间

-r::把指定的文件或者目录的日期时间,统统设置成为参考文件或目录的日期时间。:

-t::使用指定的日期时间

c2ebba67eca7

4_5

c2ebba67eca7

4_6

cp(复制文件或目录)

cp使用形如cp SRC DEST.还是有许多要注意的地方.例如如果目标已经存在且是目录,那么会放到该目录下.如果目标已经存在且是文件,会覆盖.如果复制多个文件那么目标必须为目录,如果目标是目录那么必须是存在的等等,如果源文件是目录必须加上-r等等.

主要参数:

-r:递归处理,将指定目录下的文件和子目录一起复制

-i:覆盖现有的文件之前先询问用户

-f: 强制复制

-p: 连同文件的属性一起复制过去

-a:归档复制,常用于备份

-d: 复制链接文件本身而非源文件

c2ebba67eca7

4_7

c2ebba67eca7

4_8

另外要注意,复制的文件是谁创建的就是谁的用户组,如果要保留用户组的话需要使用-a.而如果源文件是链接文件的话默认复制源文件的,如果复制链接文件本身需要使用-d

rm(删除文件或目录)

主要参数:

-f:强制删除文件或目录。

-i:删除既有文件或目录之前先询问用户。

-r:递归处理,将指定目录下的所有文件及子目录一并处理。等同于rmdir。

-v:显示指令的执行过程

注意在root用户中,rm相当于rm-i.使用\rm来使用rm

c2ebba67eca7

4_9

mv(移动文件与目录,重命名)

同样要考虑目标文件或目录是否存在等等

主要参数:

-b:若需覆盖文件,覆盖前先备份。

-f:若目标文件和现有的文件或目录重复,则直接覆盖现有的文件或目录。

-i:覆盖现有的文件之前先询问用户。

-v:显示指令执行的过程

-u: 若目标文件存在,比较哪个更新

c2ebba67eca7

4_10

stat与file(查看属性,类型)

stat用于查看文件各种属性状态,而file用于查看文件类型(包括目录)

c2ebba67eca7

4_11

文件内容查阅

有部分内容涉及到管道命令,但是更多的管道命令之后还会细说.

cat(查看文件内容)

cat有连接的意思,除了查看单个文件内容,还可以查看多个文件拼接的内容,用空格隔开即可

c2ebba67eca7

5_1

主要参数:

-n:由1开始对所有输出的行数进行编号。

-b:和-n相似,但是对于空白的行不进行编号。

-s:当遇到有连续的两行以上的空白行时,代换为一行的空白行。

-E:结尾用断行符号$表示出来

c2ebba67eca7

5_2

tac(反向显示)

就是cat的倒序显示,先显示最后一行.

c2ebba67eca7

5_3

more和less(分屏显示)

当显示内容过多时候我们需要分屏显示.

more /etc/man.config可以分屏显示文件,空格键下一屏,b键上一屏,Enter键下一行,q表示离开,/KEY表示向下查询.基本与man使用类似,但是却没有上一行的操作.

相对来说less命令更好用一些,less /etc/man.config就是分屏查看,操作与man操作几乎一致.

head(取出前几行)

不加参数的话,默认取出前十行.参数-n 数字表示取出前多少行

c2ebba67eca7

5_4

另外head -n -100的话表示,后面一百行不打印,只打印前面的.

tail(取出后几行)

不加参数同样默认后十行,-n可以指定取出尾部多少行.

c2ebba67eca7

5_5

类似的如果tail -n +100,表示前面一百行不打印,只打印后面的,相当于取多少行后的所有.

参数-f非常有用,相当于持续检测后面的内容.比如tail -f test.txt后,在另一个终端尾部添加test.txt的内容,当前终端会实时显示.

cut(选取)

这个与之后几个也是涉及到管道命令,这里先有个基础的认识.

选取命令就是将一段数据进行分析,然后选出我们想要的,当然这个过程是不会改变数据的内容的,只是显示内容改变

主要参数:

-d:后面接分割字符,与-f一起使用

-f:表示取出第几段的意思

-c:以字符的固定单位取出固定字符

c2ebba67eca7

5_6

看到passwd文件都是以:为分隔符的一串,那么如果要取出每行的第一段就应该使用cut -d: -f1 /etc/passwd.

c2ebba67eca7

5_7

如果要去出第一段到第三段就使用cut -d: -f1-3 /etc/passwd

c2ebba67eca7

5_8

那如果没有分隔符,而只想根据第几个字符来分割,比如只想取出前面三个字符,或者12个字符以后的所有字符怎么办?

可以使用cut -c -3 /etc/passwd,cut -c 12- /etc/passwd

c2ebba67eca7

5-9

sort(排序显示)

排序是默认根据ASCII表顺序的

主要参数:

-f:忽略大小写的差异,A和a认为一样.

-b:忽略最前面的空格符部分

-n:使用数字的排序方式

-r:反向排序

-u:表示重复的行仅出现一行

-t:分隔符

-k:表示以哪个区间的字段进行排序

c2ebba67eca7

5_10

接下来我们对passwd的第三个字段进行排序

c2ebba67eca7

5_11

uniq(去除重复显示)

要注意的是和sort -u不同,这儿只有相邻并且重复才会被认为是重复

主要参数:

-d:显示重复的行

-D:显示所有重复的行

-c:进行重复的计数

c2ebba67eca7

5_12

wc(计数)

想要知道有多少行,多少字,多少字符.可以使用这个命令

主要参数:

-l:仅输出多少行

-w:仅输出多少字

-m:仅输出多少字符

c2ebba67eca7

5_13

tr(操作字符)

tr可以删除一段信息当中的文字,或者进行替换.当然这个只是在显示上做得改动,不会真的删除或替换.

主要参数:

-d:删除这个字符串

-s:替换掉重复字符

c2ebba67eca7

5_14

join(合并文件操作)

处理两个文件间的数据,把相同数据的一行加在一起.

主要参数:

-t::分隔符

-i:忽略大小写的差别

-1:表示第一个文件要用哪个字段来分析

-2:表示第二个文件用哪个字段分析

我们建立两个文件,第一个以姓名,性别,年份,班级来建立字段.第二个以姓名,年份,身高体重来建立字段.

那么如果是默认的,就是会以空格符分割数据,并且对比第一个字段的数.这里join -t: a.txt b.txt就会对比两个文件的名字字段并合并显示.我们看到年份字段也是两个文件共有的,第一个文件中第三段和第二个文件中第二段是年份,那么join -t: -1 3 a.txt -2 2 b.txt可以按年份进行合并,但是注意到我们文件中有两个相同年份2015,所以会出现交叉

c2ebba67eca7

5_15

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值