文件管理命令详解

Linux03

Linux03_01?文件管理命令详解



作业1:

1、创建目录/backup

# mkdir -v /backup

2、复制目录/etc至/backup目录中,并重命名为“etc-当前日期”,如etc-2013-02-26;要求保留文件原来的属性,保持链接文件;

cp

-r

-p

-d

# cp -a /etc /backup/etc-2013-02-28

命令替换

3、复制文件/etc/inittab为/tmp/inittab.new,并删除inittab.new文件的后两行;

# cp /etc/inittab  /tmp/inittab.new

# nano /tmp/inittab.new

作业2:

1、思考:ls命令是否可以显示某目录的整体大小,即包括其内部的所有文件的整体大小?

[[email protected] ~]# ls -lh

total 64K

-rw------- 1 root root  885 Dec 21 03:15 anaconda-ks.cfg

-rw-r--r-- 1 root root    0 Jan 28 18:22 C

drwxr-xr-x 2 root root 4.0K Jan  7 18:12 Desktop

2、通过帮助手册,学习使用du命令;

# du

-s:展现目录总的大小

-h:展现每个目录带有单位的大小

[[email protected] ~]# du -s test_cp/

20     test_cp/

[[email protected] ~]# du -h test_cp/

8.0K     test_cp/test2

4.0K     test_cp/dir

20K     test_cp/

3、通过帮助,学习read命令;

变量:内存空间,有名称

变量赋值:

变量替换

作业3:

描述GPL, BSD, Apache三个开源协定的大体联系及区别。

自由软件

开源协定,版权描述

作业4:

1、如何获取Linux当前最新的内核版本号?

www.kernel.org

2、列出你所了解的Linux发行版,并说明其跟Linux内核的关系。

Linux, GNU: GNU/Linux, 源代码

发行版:Fedora, RedHat(CentOS), SUSE, Debian(Ubuntu, Mint), Gentoo, LFS(Linux From Scratch)

C, Tom, AMD, Jerry,

编译:就是把程序在特定硬件环境下,进行编译成二进制,所以与硬件相关

RedHat: 通用格式:就是在第版本的cpu下编译,而在高版本的cpu下安装运行

奔腾:

运行程序

设备管理

软件管理

进程管理

网络管理

目录管理:

ls、cd、pwd、mkdir、rmdir、tree

文件管理:

touch、stat、file、rm、cp、mv、nano

日期时间:

date、clock、hwclock、cal

查看文本:

cat、tac(反向显示)、more、less、head、tail

cat:连接并显示

-n:显示行号

-E:显示Linux系统中文本文件每行的行结束符为$符,而在window中为$符+回车/换行符(假如把Linux中文本复制到window中并不会换行)

[[email protected] ~]# cat -n -E /etc/issue /etc/fstab

1     Red Hat Enterprise Linux Server release 5.5 (Tikanga)$

2     Kernel \r on an \m$

3     $

4     LABEL=/ ...$-->这个属于fsttab中内容,所以连接两个文件的内容一起显示

Ctrl+c

分屏显示:

more、less

more: 向后翻,翻到最后退出

less: 支持man的操作,翻到最后不退出

head:查看前n行

tail:查看后n行

-n :显示多少行

tail -f: 查看文件尾部,不退出,等待显示其他进程在后续追加至此文件的新内容;

[[email protected] ~]# cut -d : -f1-3 /etc/passwd

root:x:0

bin:x:1

Linux03_02? bash命令详解


文本处理:

cut(剪切)、join(联合)、sed、awk

database:数据库

关系型数据库:

表:二维表

文本文件:

Tom:23:male:2013/05/06

cut:

-d: 指定字段分隔符,默认是空格

-f: 指定要显示的字段

-f 1,3:离散表示法

-f 1-3:连续表示法

-s, --only-delimited

do not print lines not containing delimiters

表示不打印不包含的行

文本排序:sort:默认是使用字符排序

-n:数值排序

-r: 降序

-t: 字段分隔符

-t, --field-separator=SEP

use SEP instead of non-blank to blank  tran-

sition-->指定字符分割符

-k: 以哪个字段为关键字进行排序

-k, --key=POS1[,POS2]

start  a key at POS1, end it at POS2 (origin)

-u: 排序后相同的行只显示一次

-f: 排序时忽略字符大小写

[[email protected] test_cp]# sort -t : -k 3 /etc/passwd

root:x:0:0:root:/root:/bin/bash

avahi-autoipd:x:100:101:avahi-autoipd:/

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

uniq: 重复是指相邻的重复的行,只显示一次,而对于不相邻的则不视为重复

-c: 显示文件中行重复的次数

-d: 只显示重复的行

[[email protected] test_cp]# cat test.sort

12

12

43

523

123

12

525

[[email protected] test_cp]# uniq -c test.sort

2 12

1 43

1 523

1 123

1 12

1 525

[[email protected] test_cp]# uniq -d test.sort

12

[[email protected] test_cp]#

文本统计:wc (word count)

-l:行

-w:单词数

-c字节数

-L:最长的一行包含多少个字符

[[email protected] test_cp]# wc /etc/fstab

7    42      532   /etc/fstab

行  字符数 字节数

字符处理命令:tr —— 转换或删除字符

tr [OPTION]... SET1 [SET2]

-d: 删除出现在字符集中的所有字符

[[email protected] test_cp]# tr ‘a-z‘ ‘A-Z‘ <  oraInstall2014-12-20_09-55-25PM.out

YOU CAN FIND THE LOG OF THIS INSTALL SESSION AT:

/U01/APP/ORAINVENTORY/LOGS/INSTALLACTIONS2014-12-20_09-55-25PM.LOG

[[email protected] test_cp]# 上面是通过<重定向文件,tr本身并不能跟文件

[[email protected] test_cp]# tr ‘abc‘ ‘ABC‘

aaa

AAA

bad

BAd

[[email protected] test_cp]# tr -d ‘abc‘

aa

abbafa

f

[[email protected] test_cp]#

bash及其特性:

shell:shell在用户登录以后启动,shell也是可执行程序;退出就终止了

shell: 外壳

GUI:Gnome, KDE, Xfce

CLI: sh, csh, ksh, bash, tcsh, zsh-->可以相互嵌套

root, student

程序:进程

进程:在每个进程看来,当前主机上只存在内核和当前进程

进程是程序的副本,进程是程序执行实例

用户工作环境:

bash:

#

$

tom, jerry

shell,子shell

[[email protected] test_cp]# pstree

|-sshd-+-sshd---bash---pstree               <<--

|      `-sshd---bash---man---sh---sh---less

|-syslogd

|-twm

|-udevd

|-vino-server

|-vmtoolsd

|-vmtoolsd---{vmtoolsd}

|-2*[vncconfig]

|-xfs

|-2*[xterm---bash]

`-yum-updatesd

[[email protected] test_cp]# bash -->子shell

[[email protected] test_cp]# bash -->子shell的子shell

[[email protected] test_cp]# pstree

|-sshd-+-sshd---bash---bash---bash---pstree     <<--

|      `-sshd---bash---man---sh---sh---less

|-syslogd

|-twm

[[email protected] ~]# bash

[[email protected] ~]# csh

[[email protected] ~]# ksh

# export LANG=en

# pstree

|-udevd

|-vino-server

|-vmtoolsd

|-vmtoolsd---{vmtoolsd}

|-2*[vncconfig]

|-xfs

|-2*[xterm---bash]

`-yum-updatesd

|-sshd---sshd---bash---bash---csh---ksh---pstree <--shell的嵌套

|-syslogd

|-twm

|-udevd

|-vino-server

|-vmtoolsd

|-vmtoolsd---{vmtoolsd}

|-2*[vncconfig]

|-xfs

|-2*[xterm---bash]

`-yum-updatesd

bash: shell允许用户对其进行装饰

1、命令历史、命令补全

2、管道、重定向

3、命令别名

4、命令行编辑

5、命令行展开

6、文件名通配

7、变量

8、编程

命令行编辑:

光标跳转:

Ctrl+a:跳到命令行首

Ctrl+e:跳到命令行尾

Ctrl+u: 删除光标至命令行首的内容

Ctrl+k: 删除光标至命令行尾的内容

Ctrl+l: 清屏

Ctrl+ < > :光标跳过单词

命令历史:默认会保存在家目录中的.bash_history 文件中

查看命令历史:history

-c:清空命令历史

-d OFFSET [n]: 删除指定位置的命令

-w:保存命令历史至历史文件中

环境变量

PATH:命令搜索路径

HISTSIZE: 命令历史缓冲区大小

[[email protected] ~]# echo $H

$HISTCMD       $HISTFILESIZE  $HOME          $HOSTTYPE

$HISTFILE      $HISTSIZE      $HOSTNAME

[[email protected] ~]# echo $HISTFILESIZE

1000

命令历史的使用技巧:

!n:执行命令历史中的第n条命令;

!-n:执行命令历史中的倒数第n条命令;

!!: 执行上一条命令;

!string:执行命令历史中最近一个以指定字符串开头的命令

!$:引用前一个命令的最后一个参数;

按Esc后松开再按 .

Alt+.

上面两个是获取上个命令中的参数

命令补全:Tab Tab,Tab

PATH:在PATH路径中搜索补全的

路径补全:从你打头的路径下搜索

Linux03_03? bash命令详解


文本相关的命令

查看:cat, tac, more, less, head, tail

统计:wc

处理:tr, cut, join

排序:sort

uniq

bash特性:

命令行编辑:

命令历史:

history

-c

-w

-d:删除某个记录

HISTSIZE

~/.bash_history

!n, !-n, !!, !string, !$

命令补全,路径补全

命令补全:搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,如果多于一个,两次tab,可以给出列表;否则将直接补全;

路径补全:搜索我们给出的起始路径下的每个文件名,并试图补全;

命令别名

alias CMDALIAS=‘COMMAND [options] [arguments]‘-->假如定义中有空格需要引起来‘‘

在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;

alias:本身是shell的内置命令,单独敲alias为显示所有别名命令

ualias CMDALIAS:取消命令别名

\CMD:在shell中不适用别名效果  \ls

命令替换: $(COMMAND),

[[email protected] test_cp]# echo ‘this direcotry is $(pwd)‘

this direcotry is $(pwd)

[[email protected] test_cp]# echo "this direcotry is $(pwd)"

this direcotry is /root/test_cp

反引号:`COMMAND`

[[email protected] test_cp]# echo "this directory is `(pwd)`"

this directory is /root/test_cp

把命令中某个子命令替换为其执行结果的过程

[[email protected] test_cp]# touch ./file-$(date +%F-%H-%M-%S).txt

[[email protected] test_cp]# ls

dir

file-2015-01-29-23-32-52.txt

bash支持的引号:

``: 命令替换

"": 弱引用,可以实现变量替换

‘‘: 强引用,不完成变量替换

文件名通配, globbing

*: 任意长度的任意字符

?:任意单个字符

[]:匹配指定范围内的任意单个字符

[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]

[:space:]:空白字符集合

[:punct:]:标点符号集合

[:lower:]:小写字母集合

[:upper:]: 大写字母集合

[:alpha:]: 大小写字母集合

[:digit:]: 数字集合

[:alnum:]: 数字和大小写字母集合

# man 7 glob -->查看通配

[^]: 匹配指定范围之外的任意单个字符

匹配字母开头结尾中间有空白字符如下:

[[:alpha:]]*[[:space:]]*[^[:alpha:]]

练习:

1、创建a123, cd6, c78m, c1 my, m.z, k 67, 8yu, 789等文件;注意,以上文件是以逗号隔开的,其它符号都是文件名的组成部分;

2、显示所有以a或m开头的文件;

ls [am]*

3、显示所有文件名中包含了数字的文件;

ls *[0-9]*

ls *[[:digit:]]*

4、显示所有以数字结尾且文件名中不包含空白的文件;

ls *[^[:space:]]*[0-9]   ?????????

5、显示文件名中包含了非字母或数字的特殊符号的文件;

ls *[^[:alnum:]]*

Linux03_04? Linux用户和权限详解


用户、组、权限

明确:进程是操作计算的代理,所以进程一定是以发起该进程的用户的身份在运行

所以是否可以访问某个文件取决于该进程发起者所具有的权限和该文件所需要的权限而决定的。

这个过程的判断当然是由资源安全管理机制来完成的(内核

安全上下文(secure context):

权限:

r, w, x

文件:

r:可读,可以使用类似cat等命令查看文件内容;

w:可写,可以编辑或删除此文件;

x: 可执行,eXacutable,可以命令提示符下当作命令提交给内核运行;

目录:

r: 可以对此目录执行ls以列出内部的所有文件;

w: 可以在此目录创建文件;对于修改文件取决于文件自身

x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;

默认应该让文件不具有可执行文件,而对于目录就应该有可执行能力(假如文件默认可以执行,假如写了恶意的命令则会出现恶劣后果)

rwx:

r--:只读

r-x:读和执行

---:无权限

0 000 ---:无权限

1 001 --x: 执行

2 010 -w-: 写

3 011 -wx: 写和执行

4 100 r--: 只读

5 101 r-x: 读和执行

6 110 rw-: 读写

7 111 rwx: 读写执行

755:rwxr-xr-x

rw-r-----: 640

660:rw-rw----

rwxrwxr-x:775

User Identify用户:UID, /etc/passwd

oracle:x:501:501:(一般为空的,这里就是):/home/oracle:/bin/bash

用户名:密码:用户ID: 组ID:用户详细信息: 用户工作目录:所使用的shell

Group Identify用户组:GID, /etc/group

dba:x:502:oracle,monkey

组名:密码:组ID:组成员

影子口令:

用户:/etc/shadow

组:/etc/gshadow

用户类别:

管理员:0

普通用户: 1-65535

系统用户:1-499

(之所以会出现系统用户是因为:在系统启动时,用户还未登录就已经在后台跑起来许多系统进程,

而进程是否可以访问资源取决于进程所属的用户所拥有的权限和资源所需要的权限,

那么系统的某些进程该属于哪个用户的呢?假如你说属于root显然不合适,

因为root权限太大对于这样的进程没有办法去控制而且危险性很强,

所以为了维护这种访问资源的机制就创建了一些不需要登录的系统用户来管理这些系统进程

:例如web服务器进程,需要创建系统进程来维护这个进程)

一般用户:500-60000

对于组本身  用户组类别:

管理员组:

普通组:

系统组:

一般组:

对于用户     用户组类别:

私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组

基本组:用户的默认组

附加组,额外组:默认组以外的其它组

安全上下文:我系统中每个进程,都是从可执行文件被执行而被运行起来的

因此每个文件被执行都先被用户进程访问再执行的,因此是通过用户进程

所具有的权限和所被执行的文件所需要的权限来判断是否执行而运行该进程

当进程运行起来以后,以后该进程所具有的权限跟文件没有关系

而跟发起该进程的用户所具有的权限有关系。

进程:tom tom

对象:rwxrw-r--  jerry tom a.txt

tom: ls

rwxr-xr-x root root /bin/ls

ls

/etc/passwd

account: 登录名

password: 密码

UID:

GID:基本组ID

comment: 注释

HOME DIR:家目录

SHELL:用户的默认shell

安全shell:

[[email protected] test_cp]# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/bin/tcsh

/bin/csh

/bin/ksh

/usr/bin/ksh

/usr/bin/pdksh

/etc/shadow

lvyongwen:$1$DxJ53wWP$3ZpbWEjFJMgqzMMFgECOQ.:16425:0:99999:7:::

-md5- -杂质-- -----密码加密结果---

$之间的表示:使用了md5加密方式,其中掺杂了8个字符的杂质,最后才是密码+杂质加密的结果

-------------------------------------------------------

nobody:*:16425:0:99999:7:::

nscd:!!:16425:0:99999:7:::

If the password field contains some string that is not

valid result of crypt(3), for instance ! or *, the user

will not be able to use a unix password to log in, subject

to pam(7).

上面的表示要想锁定用户可以把password改为*/!就可以了

-------------------------------------------------------------

[[email protected] test_cp]# which useradd

/usr/sbin/useradd

[[email protected] test_cp]# ls -l useradd -->列出的是文件,所以只在当前目录下查找

ls: useradd: No such file or directory

[[email protected] test_cp]# ls -l `which useradd`

-rwxr-x--- 1 root root 79288 Nov 27  2009 /usr/sbin/useradd

[[email protected] test_cp]# ls -l $(which adduser)

lrwxrwxrwx 1 root root 7 Dec 21 02:57 /usr/sbin/adduser -> useradd

[[email protected] test_cp]#

加密方法:

对称加密:加密和解密使用同一个密码

公钥加密:每个密码都成对儿出现,一个为私钥(secret key),一个为公钥(public key)

单向加密(指纹加密),散列加密:提取数据特征码,常用于数据完整性校验

3、不可逆

1、雪崩效应/蝴蝶效应:初始条件微小改变导致结构的巨大改变

2、定长输出

MD5:Message Digest, 128位定长输出

SHA1:Secure Hash Algorithm, 160位定长输出

[[email protected] ~]# file  /etc/default/useradd

/etc/default/useradd: ASCII text-->说明是纯文本可以cat了

[[email protected] ~]# cat /etc/default/useradd

# useradd defaults file-->useradd m默认配置如下

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

[[email protected] ~]#

时间: 2024-10-06 14:25:06

文件管理命令详解的相关文章

[鸟哥linux视频教程整理]02_04_Linux文件管理命令详解续2

Linux文件管理命令详解续: 一.复制和移动文件 cp:   cp SRC DEST -r:复制目录到文件 -f:强行复制 -i:交互式 -p:保留原文件属性不变 -a:归档复制,常用于备份 说明: 1.一个文件到一个文件,多个文件到一个目录: 2.默认情况下只能复制文件到目录,不能复制目录到文件: 3.若目的目录下无文件,则复制并创建同名文件,否则重命名. 4.哪个用户复制的,新文件属主属组归谁: move:  move SRC  DEST move -t DEST SRC 1.目的地址有目

Linux文件管理命令详解及练习

Windows里对于文件的管理比较直观,但Linux呢?如何在Linux系统里创建.复制.移动.删除文件与目录呢?这其实是个问题,但随着学习的进行,这将不再是个问题:一:文件管理类命令名称?命令的归纳:1.创建文件:? touch? ? ? ? ? ? ? ? ? ? ? ? ? 2.查看文件属性:ls? ? ? ? ? ? ? ? ? ? ? ? ? 3.查看文件内容:cat.tac.more.less.head.tail? ? ? ? ? ? ? ? ? ? ? ? ? 4.复制文件.目录:

linux文件管理命令详解

gentoo lfs(linux from scratch) 目录管理 ls .pwd. cd.mkdir.rmdir.tree 文件管理 touch.cp.mv.rm.file.stat 时间管理 date.clock.hwclock.cal 查看文本 cat.more.less.head.tail cat(tac逆序显示):连接并显示.shift+pageup翻屏. -n 显示时添加行号,对于linux文本文件的行结束符是$      分屏显示: more.less more支持向后翻,用法

文件根目录系统笔记+文件管理命令详解part1

Linux文件系统: rotfs: 根文件系统 /boot: 系统启动相关的文件,如内核.initrd,以及grub(bootloader) /dev: 设备文件 块设备: 随机访问,数据块, 字符设备: 线性访问(有次序的,按字符为单位,例如键盘) 设备号: 主设备号(major)和次设备号(minor) crw-rw----. 1 root root     10,  62 Apr  5 15:59 crash /etc: 配置文件 /home: 用户的家目录,默认为/home/USERNA

2-3 Linux文件管理命令详解

1. 复制文件 cp: copy 格式  SRCFILE         DEST 一个文件到一个文件 多个文件到一个目录 注,cd 后面什么都不加,是进入用户的家目录 如果目标文件不存在,则先创建文件,然后再复制内容.复制的是内容. -a是一个存档命令,很管用. 2. 移动 mv     SRC      DEST. 如果目标不存在,则不会移动 源于目标一致,就是重命名 3. install 这个命令不是安装第三方软件,

Linux 文件管理命令详解(笔记)

查看文本文件内容命令: cat more tac less head tail cat 命令用法 cat 加文件名即可查看该文件 cat -n name 显示该文件并显示行数 cat 用来显示小文件的,即行数不太多的文件,如果是大文件就没有优势了. more 命令用法 more 后边跟文件名即可查看文件. more 用来显示大文件可以翻屏,space(空格)向下翻,B键向上翻,但是翻到文件尾部自动退出不可再向上翻. tac 命令用法 tac +文件名 此命令用来使文件倒向显示,即原来在最后的一行

Linux 文件管理命令详解 cp,mv,install (笔记)

CP 此命令用来复制文件和文件夹的命令 cp /etc/passwd /tmp 复制/etc/passwd 文件到/tmp文件夹下并以原文件名passwd命名 cp /etc/passwd /tmp/123 复制/etc/passwd 文件到/tmp文件夹下以文件名123命名 cp -r /etc/ssh /tmp 此命令用来复制目录 cp -f  force 此命令是辅助命令,用来强制复制文件到指定目录或文件,即使目录文件夹有该文件或目录,则删除它,并把源复制过来. cp -p 此命令是同文件

03-01 linux文件管理命令详解

1.目录管理 ls.cd.pwd.mkdir.rmdir.tree 2.时间日期 touch.stat.file.rm.cp.mv.nano 3.查看文本 cat.more.less.head.tail.cat的变体tac 4.正则表达式 5.管道和重定向 6.用户.组.权限 原文地址:https://www.cnblogs.com/shareformlwh/p/12600443.html

jar打包命令详解

:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是说,制作一个可执行的 JAR 文件包,就可以像.chm 文档一样双击运行了:而另一种回答,则是使用 JET 来进行编译.但是 JET 是要用钱买的,而且,据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣.所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性.先来看看什么是 JAR 文件包: 1. JAR 文件包 JAR 文件就是 Java Archi