通过建站学运维(课时4)

2.9 rm命令

rm = remove
rm:删除目录/文件
*代表所有,通配符
rm 【文件名/目录名】 删除文件/目录名

[root@qiaojidong-01 src]# tree
.
├── ccc.py
├── music
└── music1
    └── english2

3 directories, 1 file
[root@qiaojidong-01 src]# rm ccc.py 
rm:是否删除普通空文件 "ccc.py"?y
[root@qiaojidong-01 src]# tree
.
├── music
└── music1
    └── english2

3 directories, 0 files

rm -f 【文件/目录名】 强制删除文件/目录

!tree 使用命令历史里面上一次最近的tree开头的命令
history 查询最近使用的所有命令
!【命令】 使用命令历史里上一次最近的【命令】开头的命令

rm -r 级联删除目录及目录内的文件

[root@qiaojidong-01 src]# tree
.
├── music
└── music1
    └── english2

3 directories, 0 files
[root@qiaojidong-01 src]# rm music1
rm: 无法删除"music1": 是一个目录
[root@qiaojidong-01 src]# rm -r music1
rm:是否进入目录"music1"? y
rm:是否删除目录 "music1/english2"?y
rm:是否删除目录 "music1"?y
[root@qiaojidong-01 src]# tree
.
└── music

1 directory, 0 files
[root@qiaojidong-01 src]# 

rm -rf 不提示直接级联删除目录及目录内的文件

2.10 环境变量PATH

1、如果命令在 /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /root/bin以上任意目录内,可以直接输入命令名使用该目录而无需输入该命令的绝对路径。
2、PATH=$PATH:/tmp/ 将/tmp/加入环境变量里。(重启后消失)
3、/etc/profile 将需要加入加入换进变量的文件vi在该文件内重启后不会消失,永远可用。

关于PATH的作用:
PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bin,/sbin等目录下面去找你此时输入的命令,而PATH的值恰恰就是/bin:/sbin:/usr/bin:……。其中的冒号使目录与目录之间隔开。

关于新增自定义路径:
现在假设你新安装了一个命令在/usr/locar/new/bin下面,而你又想像ls一样在任何地方都使用这个命令,你就需要修改环境变量PATH了,准确的说就是给PATH增加一个值/usr/locar/new/bin。你只需要一行bash命令export PATH=$PATH:/usr/locar/new/bin。这条命令的意思太清楚不过了,使PATH自增:/usr/locar/new/bin,既PATH=PATH+":/usr/locar/new/bin";通常的做法是把这行bash命令写到/root/.bashrc的末尾,然后当你重新登陆LINUX的时候(应该是linux启动时就会执行这个文件),新的默认路径就添加进去了。当然这里你直接用source /root/.bashrc执行这个文件重新登陆了。你可以用echo $PATH命令查看PATH的值。

关于删除自定义路径:
当某天你发现你新增的路径/usr/locar/new/bin已经没用了的话,你可以修改/root/.bashrc文件里面你新增的路径。或者你可以修改/etc/profile文件删除你不需要的路径.

一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。例如我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量:


临时环境变量(重启后消失)


1、直接用export命令:
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已经设好,可用命令export查看:
[root@localhost bin]# export
declare -x BASH_ENV="/root/.bashrc"
declare -x G_BROKEN_FILENAMES=“1”
declare -x HISTSIZE=“1000”
declare -x HOME="/root"
declare -x HOSTNAME=“localhost.localdomain”
declare -x INPUTRC="/etc/inputrc"
declare -x LANG=“zh_CN.GB18030”
declare -x LANGUAGE=“zh_CN.GB18030:zh_CN.GB2312:zh_CN”
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME=“root”
declare -x LS_COLORS=“no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:.cmd=01;32:.exe=01;32:.com=01;32:.btm=01;32:.bat=01;32:.sh=01;32:.csh=01;32:.tar=01;31:.tgz=01;31:.arj=01;31:.taz=01;31:.lzh=01;31:.zip=01;31:.z=01;31:.Z=01;31:.gz=01;31:.bz2=01;31:.bz=01;31:.tz=01;31:.rpm=01;31:.cpio=01;31:.jpg=01;35:.gif=01;35:.bmp=01;35:.xbm=01;35:.xpm=01;35:.png=01;35:.tif=01;35:”
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/opt/au1200_rm/build_tools"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/au1200_rm/build_tools/bin"
declare -x PWD="/opt/au1200_rm/build_tools/bin"
declare -x SHELL="/bin/bash"
declare -x SHLVL=“1”
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x SSH_AUTH_SOCK="/tmp/ssh-XX3LKWhz/agent.4242"
declare -x SSH_CLIENT=“10.3.37.152 2236 22”
declare -x SSH_CONNECTION=“10.3.37.152 2236 10.3.37.186 22”
declare -x SSH_TTY="/dev/pts/2"
declare -x TERM=“linux”
declare -x USER=“root”
declare -x USERNAME=“root”
可以看到,环境变量已经设好,PATH里面已经有了我要加的编译器的路径。
里去操作了。

永久环境变量


2、修改profile文件:
所有用户(不安全)
修 改/etc/profile(对所有用户都是有效的)
#vi /etc/profile
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

  1. 修改.bashrc文件:

vi /~/.bashrc

(单独用户)
修改~/.bashrc文件。 htt(74)p://www.icwin.net/bbs http://www.wantso.com (每个用户目录下都有,ls -all)
cd ~
vi .bashrc
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:

echo $PATH

看看输出里面是不是已经有了/my_new_path这个路径了。


“/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”等路径已经在系统环境变量中了,如果可执行文件在这几个标准位置,在终端命令行输入该软件可执行文件的文件名和参数(如果需要参数),回车即可。

如果不在标准位置,文件名前面需要加上完整的路径。不过每次都这样跑就太麻烦了,一个“一劳永逸”的办法是把这个路径加入环境变量。命令 “PATH=$PATH:路径”可以把这个路径加入环境变量,但是退出这个命令行就失效了。要想永久生效,需要把这行添加到环境变量文件里。有两个文件可选:“/etc/profile”和用户主目录下的“.bash_profile”,“/etc/profile”对系统里所有用户都有效,用户主目录下的“.bash_profile”只对这个用户有效。

> “PATH= P A T H : 路 径 1 : 路 径 2 : . . . : 路 径 n ” , 意 思 是 可 执 行 文 件 的 路 径 包 括 原 先 设 定 的 路 径 , 也 包 括 从 “ 路 径 1 ” 到 “ 路 径 n ” 的 所 有 路 径 。 当 用 户 输 入 一 个 一 串 字 符 并 按 回 车 后 , s h e l l 会 依 次 在 这 些 路 径 里 找 对 应 的 可 执 行 文 件 并 交 给 系 统 核 心 执 行 。 那 个 “ PATH:路径1:路径2:...:路径n”,意思是可执行文件的路径包括原先设定的路径,也包括从“路径1”到“路径n”的所有路径。当用户输入一个一串字符并按回车后,shell会依次在这些路径里找对应的可执行文件并交给系统核心执行。那个“ PATH:1:2:...:n1nshellPATH”表示原先设定的路径仍然有效,注意不要漏掉。某些软件可能还有“PATH”以外类型的环境变量需要添加,但方法与此相同,并且也需要注意“$”。

注意,与DOS/Window不同,UNIX类系统环境变量中路径名用冒号分隔,不是分号。另外,软件越装越多,环境变量越添越多,为了避免造成混乱,建议所有语句都添加在文件结尾,按软件的安装顺序添加。

格式如下():

# 软件名-版本号

PATH=$PATH:路径1:路径2:…:路径n

其他环境变量=$其他环境变量:…

在“profile”和“.bash_profile”中,“#”是注释符号,写在这里除了视觉分隔外没有任何效果。

设置完毕,注销并重新登录,设置就生效了。如果不注销,直接在shell里执行这些语句,也能生效,但是作用范围只限于执行了这些语句的shell。

相关的环境变量生效后,就不必老跑到软件的可执行文件目录

2.11 cp命令

cp = copy
cp 拷贝文件

[root@qiaojidong-01 src]# tree
.
└── music
    └── music1
        └── chinese
            └── 1.mp3

3 directories, 1 file
[root@qiaojidong-01 src]# cp music/music1/chinese/1.mp3 music

[root@qiaojidong-01 src]# tree
.
└── music
    ├── 1.mp3
    └── music1
        └── chinese
            └── 1.mp3

3 directories, 2 files

cp -r 拷贝目录

[root@qiaojidong-01 src]# tree
.
└── music
    ├── 1.mp3
    └── music1
        └── chinese
            └── 1.mp3

3 directories, 2 files
[root@qiaojidong-01 src]# cp -r music/
1.mp3   music1/ 
[root@qiaojidong-01 src]# cp -r music/music1/chinese/ music/
[root@qiaojidong-01 src]# tree
.
└── music
    ├── 1.mp3
    ├── chinese
    │   └── 1.mp3
    └── music1
        └── chinese
            └── 1.mp3

4 directories, 3 files
[root@qiaojidong-01 src]# 

使用cp时,所有的目录都要加上/
!$表示上一个命令的最后一个参数

2.12mv命令

mv = move

在同一个文件夹下使用mv命令相当于给mv的文件改名字。也可以在将文件移动位置的同事改名字。
目标目录不存在时,mv命令相当于改名字。如果目标目录存在,将把该目录放在目标目录之下。

[root@qiaojidong-01 src]# 
[root@qiaojidong-01 src]# mkdir -p 1/2/3/4
[root@qiaojidong-01 src]# tree
.
└── 1
    └── 2
        └── 3
            └── 4

4 directories, 0 files
[root@qiaojidong-01 src]# mv 1 2
[root@qiaojidong-01 src]# ls
2
[root@qiaojidong-01 src]# tree
.
└── 2
    └── 2
        └── 3
            └── 4

4 directories, 0 files
[root@qiaojidong-01 src]# 

2.13文档查看 cat more less head tail

cat:查看文件内容。
#tac:倒序的查看一个文件的内容。

[root@qiaojidong-01 2]# vi 3.md
[root@qiaojidong-01 2]# cat 3.md 
123131231231231231

cat -a 显示文件的所有字符(这样使用显示出来文本中会有一个$符号,代表这一行的结尾)
cat -n 在cat的同时会把每一行的行号显示出来。
more:也是查看文件内容,特点是如果有多页,会多页显示。
按任意键朝下查看,按ctrl+B朝上查看。B>>back ground。
wc:查看一个文件的行数。

#/root/anaconda-ks.cfg.1 //这是一个自动装系统的文件
cat /etc/passwd >> anaconda-ks.cfg.1 中>>表示将passwd的文件内容追加到 anaconda-ks.cfg.1中去。

*>> 追加重定向

less:与more类似,(可以使用more的所有功能)

但是支持↑↓方向键逐行查看。同样,
ctrl+B向上逐页查看,
ctrl+F向下逐页查看。不会自动退出,需要按Q键推出。
并支持查询:/【字符】+enter 如需继续查询该字符,按N键。
往前看是shift+N键。如需从后往前,输入?号。
g、G定位首行、末行
/、?搜索
n、N向上向下
空格:分屏向下显示
head:查看一个文件的前10行。
head -n [数字],指定查看文件的前n行。

tail: 查看一个文件的最后10行。

tail -n[数字],指定查看文件的后n行。
tail -f 动态的查看文件的后10行。

2.14 文件货目录权限chmod

ls命令

ls -a 查看隐藏的文件或目录
ls -l 查看文件的详细信息(时间、大小、权限、属主、属组、文件属性)
ls后如果文件第11位有.(点)意味着该文件受制于SElinux。
##暂时关闭SElinux命令:setenforce 0
##SElinux配置文件位置:/etc/SElinux/config
vi文件/etc/SElinux/config后,文件中SELINUX=enforcing是开启,desiable是关闭。

最前面第一个字母(两个含义): dr-xr-x—
第一大列、表示文件属性(d表示目录
-表示普通文件
l表示软链接文件
b表示块设备文件
c表示字符设备文件(键盘、鼠标)
s表示套接字文件(socket文件,这个文件是Unix/Linux系统里用
来通信的,进程间通信的文件))
p表示管道文件(|命名管道)
ls -d 查看目录本身
ls -t 按时间排序,最新的在上面
ls -i inode -->(在格式化磁盘的时候生成的)
后面字母 表示文件权限

== 一个文件拥有3个权限位,用ls查看,从第二位开始
前三位是文件所有者的权限
中间三位表市文件的所属组的权限
后三位表示其他用户拥有该文件的权限
第一位是否可写r、第二位是否可读w、第三位是否可执行x,若不可以用x表示==

== r=read 4 w=write 2 x=execute 1 t=谁的文件谁做主。三位数一结算:==
如:rw-r–r-- ==644 rw-r-xr-x 655
chmod:更改一个文件的权限。
chmod 【数字数字数字】 文件名 (仅仅是对于该文件或该目录本身)
chmod -R 【数字数字数字】 文件名 :更改该文件或改目录下所有的文件和目录的权限。
chmod直观使用方法:
chmod u=ABC,G=ABC,O=ABC 文件名 ##A,B,C代表d,r,w,x(写、读、可执行、不可执行),中间不能加-号
chmod z+A 文件名 ##A,B,C代表d、r、w、x(写、读、可执行、不可执行)。 z代表a、g、o(所有人、所属组、所属者)

2.15更改所有者和所属组chown

chown=change owner, 更改所有者、所属组。
查看系统的用户有哪些:/cat/etc/passwd
chgrp=change group 更改所属组
用法:chown或chgrp 【用户名或所属组】 /【文件绝对路径】

2.16 umask

umask使用方法
  A 什么是umask?

当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。

你的系统管理员必须要为你设置一个合理的 umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。在已经登录之后,可以按照个人的偏好使用umask命 令来改变文件创建的缺省权限。相应的改变直到退出该shell或使用另外的umask命令之前一直有效。一般来说,umask命令是在/etc /profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久 性地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile文件中。

B 如何计算umask值

umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最 大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来 说,umask中各个数字最大可以到7。

该命令的一般形式为:

umask nnn

其中nnn为umask置000-777。

让我们来看一些例子。

计算出你的umask值:

可以有几种计算umask值的方法,通过设置umask值,可以为新创建的文件和目录设置缺省权限。下表列出了与权限位相对应的umask值。

在计算umask值时,可以针对各类用户分别在这张表中按照所需要的文件/目录创建缺省权限查找对应的umask值。

例如,umask值002 所对应的文件和目录创建缺省权限分别为6 6 4和7 7 5。

还有另外一种计算umask值的方法。我们只要记住umask是从权限中“拿走”相应的位即可。

umask值与权限

umask 文件 目录

0 6 7

1 6 6

2 4 5

3 4 4

4 2 3

5 2 2

6 0 1

7 0 0

例如,对于umask值0 0 2,相应的文件和目录缺省创建权限是什么呢?

第一步,我们首先写下具有全部权限的模式,即777 (所有用户都具有读、写和执行权限)。

第二步,在下面一行按照umask值写下相应的位,在本例中是0 0 2。

第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。

稍加练习就能够记住这种方法。

第四步,对于文件来说,在创建时不能具有执行权限,只要拿掉相应的执行权限比特即可。

这就是上面的例子, 其中u m a s k值为0 0 2:

1) 文件的最大权限 rwx rwx rwx (777)

2) umask值为0 0 2 — --- -w-

3) 目录权限 rwx rwx r-x (775) 这就是目录创建缺省权限

4) 文件权限 rw- rw- r-- (664) 这就是文件创建缺省权限

下面是另外一个例子,假设这次u m a s k值为0 2 2:

1) 文件的最大权限 rwx rwx rwx (777)

2 ) u m a s k值为0 2 2 — -w- -w-

3) 目录权限 rwx r-x r-x (755) 这就是目录创建缺省权限

4) 文件权限 rw- r-- r-- (644) 这就是文件创建缺省权限

C 常用的umask值

下表列出了一些umask值及它们所对应的目录和文件权限。

常用的umask值及对应的文件和目录权限

umask 值 目录 文件

0 22 7 5 5 6 4 4

0 27 7 5 0 6 4 0

0 02 7 7 5 6 6 4

0 06 7 7 1 6 6 0

0 07 7 7 0 6 6 0

D umask命令

如果想知道当前的umask 值,可以使用umask命令:

$umask

如果想要改变umask值,只要使用umask命令设置一个新的值即可:

$ umask 002

确认一下系统是否已经接受了新的u m a s k值:

$umask

002

$touch testfile

$ls -l testfile

rw- rw- r–

在使用umask命令之前一定要弄清楚到底希望具有什么样的文件/目录创建缺省权限。否则可能会得到一些非常奇怪的结果;例如,如果将umask值设置为6 0 0,那么所创建的文件/目

录的缺省权限就是0 6 6!

以上引用自http://blog.sina.com.cn/s/blog_a3fb4c660102vbmv.html

课堂笔记:

linux dir tree http://www.apelearn.com/study_v2/linux_dir_tree.jpg

alias:
别名,写入bashrc 和 proflie内才会永久生效,否则重启或重新开启终端后就会失效。

cp:
如果右边是一个目录,一定要加一个/,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值