一、ls命令
ls是用来列取系统的目录或文件的;
tree命令以树形的形式来显示文件的目录结构(用命令:yum install -y tree 安装此命令),-L 指定查看的层次;
[root@aming01 ~]# tree
-bash: tree: 未找到命令
[root@aming01 ~]# yum install -y tree^C
[root@aming01 ~]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
目录的思维导图
http://www.apelearn.com/study_v2/linux_dir_tree.jpg
2、文件目录结构
[root@aming01 ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
/bin/ /sbin/ /usr/bin/ /usr/sbin/ :用来储存系统命令的文件目录
/boot/ :系统启动相关文件目录(Grub)
/dev/ :设备文件目录 (鼠标、键盘、CD)
/etc/ :系统配置文件目录(网卡、等)
/home/ :用户家目录
/lib/ :库文件目录(ldd 查看命令依赖的库文件,例:ldd /bin/ls)
/media/ :媒介目录(默认为空)
/mnt/ :临时挂载目录
/opt/ :空目录
/proc/ :系统启动进程目录 !
/run/ : 一些进程产生的临时文件(开机或关机都会消失的文件)
/srv/ :空目录 (存服务产生的一些文件)
/sys/ :存系统内核文件
/tmp/ :系统的临时目录(任何用户都可以在里面读写)
/usr/ :存储用户文件
/var/ :存储系统日志(/var/log/messages 系统重要日志存储的地方)
3、ls用法
ls -l常用于显示文件的详细信息
[root@aming01 ~]# ls -l
总用量 4
-rw-------. 1 root root 1420 4月 24 23:37 anaconda-ks.cfg
-i 查看inode号
-h 以K单位显示文件的大小,配合l使用
-a 显示隐藏文件
-d 只列目录本身
-t 按时间排序
-s按大小排序
拓展:1字符=8比特
ll是ls -l的别名,可以用which查看
[root@aming01 ~]# which ll
alias ll='ls -l --color=auto' #显示颜色作用,例如运行的是/bin/ls /显示的目录为白色,ls /则有颜色
/usr/bin/ls
二、文件类型
[root@aming01 ~]# ls -l
总用量 4
-rw-------. 1 root root 1420 4月 24 23:37 anaconda-ks.cfg
第一位
-表示为普通文件,命令也是-号
d表示是目录
c表示字符串设备
l表示软链接文件
b表示块设备
s表示通信文件
三、alias命令
可以用which来看别名
[root@aming01 ~]# which ll
alias ll='ls -l --color=auto'
/usr/bin/ls
alias是由命令加选项的组合形成新的命令
查看系统里的alias
[root@aming01 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
PATH是系统的环境变量
查看PATH内容的变量是什么
[root@aming01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
如果命令在这些目录下,可以生效,如果不在这些目录下,则不会生效
which查看一个命令,就是在这些目录下查看(alias除外,因为alias里有命令有别名)
自定义命令:
[root@aming01 ~]# alias aming='ls -lha'
[root@aming01 ~]# aming
总用量 28K
dr-xr-x---. 3 root root 147 4月 26 02:02 .
dr-xr-xr-x. 17 root root 245 5月 10 07:16 ..
-rw-------. 1 root root 1.4K 4月 24 23:37 anaconda-ks.cfg
-rw-------. 1 root root 1.7K 5月 14 03:12 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
drwx------. 2 root root 48 4月 27 06:25 .ssh
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
[root@aming01 ~]# which aming
alias aming='ls -lha'
/usr/bin/ls
取消别名:
[root@aming01 ~]# unalias aming
四、相对和绝对路径
绝对路径:就是从根开始的路径
相对路径:相对于你所在的位置的路径,要定位到一个目录或文件所经过的路径
例如:用pwd查看你当前的位置,如果在/root下
因为/root/.ssh/authorized_keys,/.ssh/authorized_keys在/root下,
相对于/root,那么/.ssh/authorized_keys就是相对路径
而绝对路径,不管你在哪一个路径下,都能通过这个绝对路径,也就是根开始找到这个文件
五、CD命令
cd就是change directory
更换到指定的目录下
[root@aming01 ~]# cd /etc
[root@aming01 etc]# cd /
[root@aming01 /]#
cd - 进入上一次所在的目录
cd 回到家目录下
cd ~(~和用户的家目录是一致的)
cd .. 进入到上一级目录
[root@aming01 /]# cd /etc/sysconfig/network-scripts/
[root@aming01 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@aming01 network-scripts]# cd ..
[root@aming01 sysconfig]# pwd
/etc/sysconfig
[root@aming01 sysconfig]# cd ..
[root@aming01 etc]# pwd
/etc
六、创建和删除目录mkdir/rmdir
1、mkdir命令
mkdir=make directory 创建目录
[root@aming01 ~]# mkdir /tmp/hhh
[root@aming01 ~]# ls -ld /tmp/hhh #l详细信息 d只列目录本身
drwxr-xr-x. 2 root root 6 5月 14 05:01 /tmp/hhh
mkdir -p可以创建一窜目录,一下子创建多级目录
[root@aming01 ~]# mkdir -p /tmp/hhh/1/2
[root@aming01 ~]# ls -l /tmp/hhh
总用量 0
drwxr-xr-x. 3 root root 15 5月 14 05:04 1
[root@aming01 ~]# ls -l /tmp/hhh/1
总用量 0
drwxr-xr-x. 2 root root 6 5月 14 05:04 2
-pv 可看见创建过程
[root@aming01 ~]# mkdir -pv /tmp/hhh/2/3/4
mkdir: 已创建目录 "/tmp/hhh/2"
mkdir: 已创建目录 "/tmp/hhh/2/3"
mkdir: 已创建目录 "/tmp/hhh/2/3/4"
2、rmdir命令
rmdir=remove directory 删除目录(不能删文件)
rmdir 删除目录的前提是目录是空的
[root@aming01 ~]# rmdir /tmp/hhh/2
rmdir: 删除 "/tmp/hhh/2" 失败: 目录非空
touch 可创建一个空白文件
touch了一个文件后,再touch同一个文件,则会修改时间;目录则不行
七、rm命令
rm 可以删除文件、(rm -r 可以删目录)
[root@aming01 ~]# touch /tmp/hhh/2/3/4/1.txt
[root@aming01 ~]# ls /tmp/hhh/2/3/4
1.txt
[root@aming01 ~]# rm /tmp/hhh/2/3/4/1.txt
rm:是否删除普通空文件 "/tmp/hhh/2/3/4/1.txt"?y
[root@aming01 ~]# ls /tmp/hhh/2/3/4
rm -f 可以不用询问确认,直接删除的命令
[root@aming01 ~]# touch /tmp/hhh/2/3/4/1.txt
[root@aming01 ~]# touch /tmp/hhh/2/3/4/2.txt
[root@aming01 ~]# ls /tmp/hhh/2/3/4
1.txt 2.txt
[root@aming01 ~]# rm -f /tmp/hhh/2/3/4/*.txt # *号表示全部,*.txt表示全部txt文件
[root@aming01 ~]# ls /tmp/hhh/2/3/4
rm -r 可以删除目录(想直接删除 不要确认 可以用-rf)
[root@aming01 ~]# rm -r /tmp/hhh/2/3/4
rm:是否删除目录 "/tmp/hhh/2/3/4"?y
扩展:history命令可以查看最近敲过的历史命令
!+命令(vi),在历史命令里找最近一次vi命令,例如:
[root@aming01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@aming01 ~]# !vi
vi /etc/sysconfig/network-scripts/ifcfg-ens33
八、环境变量PATH
在Linux系统中我们之所以能够直接使用命令是因为命令的绝对路径在环境变量里面,如果我们将该命令的绝对路径移出环境变量则不能直接使用。
which命令,这个命令可以用来查看一个命令的绝对路径和是否做过别名
[root@aming01 ~]# which ll
alias ll='ls -l --color=auto'
/usr/bin/ls
范例:
/usr/bin是在PATH可以找到的,ls在/usr/bin下,所以ls命令是生效的;
若复制/usr/bin/ls到/tmp/ls2,ls2命令也不生效,因为/tmp不在PATH里,所以命令不生效;
所以需要添加/tmp到PATH下(PATH=$PATH:/tmp/),这样就可以让ls2命令生效。
[root@aming01 ~]# ls /usr/bin/ls
/usr/bin/ls
[root@aming01 ~]# cp /usr/bin/ls /tmp/ls2
[root@aming01 ~]# ls2
-bash: ls2: 未找到命令
[root@aming01 ~]# ls
anaconda-ks.cfg
[root@aming01 ~]# PATH=$PATH:/tmp/
[root@aming01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
[root@aming01 ~]# ls2
anaconda-ks.cfg
如果在拷贝的另一台虚拟上输入ls2,命令不生效,所以要改成永久命令
执行vi /etc/profile 可以让终端一开机就加载命令
[root@aming01 ~]# vi /etc/profile
进入配置文件后,在最后面加入 PATH=$PATH:/tmp/
若想删除ls2命令或者/tmp,可用下面的命令:
[root@aming01 ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@aming01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
九、cp命令
cp=copy 拷贝命令
拷贝文件
[root@aming01 ~]# cp /etc/passwd /tmp/1.txt
[root@aming01 ~]# ls /tmp
1.txt
hhh
拷贝目录 需要加-r (拷贝目录的时候要带斜杠)
[root@aming01 ~]# cp -r /tmp/hhh/2/ /tmp/hhh/a/
[root@aming01 ~]# ls /tmp/hhh
1 2 a
其实在cp或rm的时候会问,是因为-i的存在
[root@aming01 ~]# which cp
alias cp='cp -i'
/usr/bin/cp
在拷贝时,若不想让其询问确认,使用方法:
[root@aming01 ~]# /usr/bin/cp /etc/passwd /tmp/1.txt
拷贝文件时,当文件存在时,会进行询问是否覆盖
[root@aming01 ~]# touch /tmp/hhh/1.txt
[root@aming01 ~]# ls /tmp/hhh
1 1.txt 2 a
[root@aming01 ~]# cp /etc/passwd /tmp/hhh/1.txt
cp:是否覆盖"/tmp/hhh/1.txt"? n
当拷贝目录时,没有同一目录存在的话,并不会询问是否覆盖,而是直接将源目录放到目标目录下面去,如果目标目录不存在,将会把源目录放到目标目录并改名字。
当目标目录已经存在的时候,它会把源目录直接放到目标目录的里面;如果目标目录不存在,它会把源目录拷贝过来并改名字
拓展:
!tree 最近一次tree的命令
tree !$ !$表示上一条命令的最后一个参数
十、mv命令
mv=移动/改名的意思 ,使用格式为:mv [参数] [源文件或源目录] [目标文件或目标目录]
当目标文件是目录,且目录不存在时,就会把源目录重命名为目标目录名
[root@aming01 ~]# ls -l /root
总用量 4
drwxr-xr-x. 2 root root 6 5月 14 06:27 123
drwxr-xr-x. 2 root root 6 5月 14 06:27 456
-rw-------. 1 root root 1420 4月 24 23:37 anaconda-ks.cfg
[root@aming01 ~]# mv /root/123 /root/666
[root@aming01 ~]# ls -l /root
总用量 4
drwxr-xr-x. 2 root root 6 5月 14 06:27 456
drwxr-xr-x. 2 root root 6 5月 14 06:27 666 #因为不存在666,所以456重命名为666
-rw-------. 1 root root 1420 4月 24 23:37 anaconda-ks.cfg
当目标文件是目录,且目录存在时,就会把源目录放到目标目录下面
[root@aming01 ~]# mv /root/456 /root/666
[root@aming01 ~]# ls /root/666
456
当目标文件是文件,且文件不存在时,会把源文件重命名为目标文件
[root@aming01 ~]# touch /tmp/1.txt
[root@aming01 ~]# ls -l /tmp
总用量 116
-rw-r--r--. 1 root root 0 5月 14 07:09 1.txt
drwxr-xr-x. 2 root root 6 5月 14 06:17 hhh
drwxr-xr-x. 3 root root 17 5月 14 06:19 hhh1
drwxr-xr-x. 2 root root 6 5月 14 06:23 hhh2
-rwxr-xr-x. 1 root root 117656 5月 14 05:40 ls2
[root@aming01 ~]# mv /tmp/1.txt /tmp/2.txt
[root@aming01 ~]# ls -l /tmp
总用量 116
-rw-r--r--. 1 root root 0 5月 14 07:09 2.txt
drwxr-xr-x. 2 root root 6 5月 14 06:17 hhh
drwxr-xr-x. 3 root root 17 5月 14 06:19 hhh1
drwxr-xr-x. 2 root root 6 5月 14 06:23 hhh2
-rwxr-xr-x. 1 root root 117656 5月 14 05:40 ls2
当目标文件是文件,且文件存在时,会提示是否覆盖掉目标文件
[root@aming01 ~]# touch /tmp/1.txt
[root@aming01 ~]# mv /tmp/1.txt /tmp/2.txt
mv:是否覆盖"/tmp/2.txt"? n
已存在同一目录,不能覆盖目标目录(非空)
十一、文档查看cat/more/less/head/tai
cat 命令
cat -A 显示所有的字符
cat -n 会把行数显示出来
[root@aming01 ~]# cat -n /etc/passwd|head -5 # |head -5显示前五行
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
扩展:cat /etc/passwd>> 123.cfg.1 把/etc/passwd增加到目标文件
可以一直增加。当文件较大,一直在滚屏,这时候如果需要暂停滚屏,按trl+s;如果需要回复
滚屏,按ctrl+q恢复滚屏。
more 命令
特点是一部分一部分地显示,先显示一部分,按空格键就继续显示
往回看按ctrl+b 空格往下看
可以用q键退出
less命令
与more命令用法差不多
也是用空格键一部分一部分显示,但是它支持上下键方向键查看,ctrl+b往上看,ctrl+f往下看
最后需要用q键退出来
使用/字符串 能够在其中搜索想要的字符串信息,按n(next)继续往下搜索,显示出来,按到没有位置,
shift n是往上搜。
/是从前往后搜,?是从后往前搜,按n从后往上显示上一个,按shift n从前往后显示下一个
shift G把光标定位到行尾,按g光标定位到行首
head命令
使用head命令会只显示文件内容的前十行
[root@aming01 ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
head -n 行数文件名 会显示文件内容的前几行
[root@aming01 ~]# head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
tail命令
使用tail命令会只显示文件内容的后
[root@aming01 ~]# tail /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tail -n 行数文件名 会显示文件内容的后
[root@aming01 ~]# tail -n 5 /etc/passwd
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
-f 查看动态的文件,常用于日志,如果内容不变就会显示最后十行,但是如果内容变了,他就产生变化,显示刚变化的内容。
十二 、文件和目录权限chmod
当我们查看文件信息时
[root@aming01 ~]# ls -l
总用量 4
drwxr-xr-x. 3 root root 17 5月 14 06:30 666
-rw-------. 1 root root 1420 4月 24 23:37 anaconda-ks.cfg
第一位-是表示文件类型
rw-为所有者(user)的权限,---为所属组(group)的权限,最后的---为其他用户(others)的权限
第一个root表示所有者 第二个root表示所属组 17表示大小 后面就是时间
其中rwx权限表示顺序是否可读、是否可写、是否可执行,而用数字表示rwx为7 r=4,w=2,x=13
.表示文件受制selinux
chmod 更改权限
使用方法例如:
[root@aming01 ~]# chmod 700 /tmp/1.txt
[root@aming01 ~]# ls -l /tmp/1.txt
-rwx------. 1 root root 0 5月 14 07:57 /tmp/1.txt
加-R 的作用是可以把目录和目录下的子文件、文件批量的更改
chmod另外的更改方法
chmod u=rw,g=r,o=r filname.
还有a+x 表示所有者,所属组,其他用户都加上x权限
[root@aming01 ~]# chmod 600 /tmp/1.txt
[root@aming01 ~]# ls -l /tmp/1.txt
-rw-------. 1 root root 0 5月 14 07:57 /tmp/1.txt
[root@aming01 ~]# chmod a+x /tmp/1.txt
[root@aming01 ~]# ls -l /tmp/1.txt
-rwx--x--x. 1 root root 0 5月 14 07:57 /tmp/1.txt
chmod在普通用户下只能改所有者是自己的文件
所属组是自己都不行
十三、更改所有者和所属组chown
chown使用方法 chown user1:hhh filname
这样子能一次性地更改所有者和所属组
[root@aming01 ~]# chown user1: /tmp/1.txt
[root@aming01 ~]# ls -l /tmp/1.txt
-rwx--x--x. 1 user1 root 0 5月 14 07:57 /tmp/1.txt
-R选项的作用是联级更改,不仅更改当前目录,连目录里面的目录或文件也一并更改了
十四、umask
umask命令
umask决定默认的文件和目录的权限,系统root用户的umask值默认是0022,看后三位,通过umask值可以确定文件和目录的权限是什么
目录的默认权限是755,文件的默认权限是644
[root@aming01 ~]# umask
0022
[root@aming01 ~]# touch /tmp/3.txt
[root@aming01 ~]# ls -l !$
ls -l /tmp/3.txt
-rw-r--r--. 1 root root 0 5月 14 08:21 /tmp/3.txt
[root@aming01 ~]# mkdir /tmp/12
[root@aming01 ~]# ls -l !$
ls -l /tmp/12
总用量 0
[root@aming01 ~]# ls -ld /tmp/12
drwxr-xr-x. 2 root root 6 5月 14 08:21 /tmp/12
更改umask权限
[root@aming01 ~]# umask 002
[root@aming01 ~]# umask
0002
[root@aming01 ~]# touch /tmp/4.txt
[root@aming01 ~]# ls -l /tmp/4.txt
-rw-rw-r--. 1 root root 0 5月 14 08:22 /tmp/4.txt
[root@aming01 ~]# mkdir /tmp/123
[root@aming01 ~]# ls -ld /tmp/123
drwxrwxr-x. 2 root root 6 5月 14 08:23 /tmp/123
其中算法不应该直接进行加减,例如:
umask为022 目录755 文件644
777-022=755 ;666-022=644
umask为002 目录775 文件664
777-002-775:;666-002=664
其中不应该直接加减,应该用rwx来相加减,例如:
umask为003
666=rw-rw-rw- 减去-------wx=第一部分r-- w-- ---=6,第二部分r-- w-- ---=6,第三部分r-- w-w --x=4
--x=0是因为0本来就没有减去什么还是0,例如:赤裸之人让他脱还是赤裸一样 不变。
umask可以在etc/bashrc配置文件中更改