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"
- 修改.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:...:路径n”,意思是可执行文件的路径包括原先设定的路径,也包括从“路径1”到“路径n”的所有路径。当用户输入一个一串字符并按回车后,shell会依次在这些路径里找对应的可执行文件并交给系统核心执行。那个“PATH”表示原先设定的路径仍然有效,注意不要漏掉。某些软件可能还有“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:
如果右边是一个目录,一定要加一个/,