Linux基础和命令(二)

200 阅读5分钟

1、查看切换显示统计目录

1.1 pwd

[root@localhost ~]# pwd       //显示当前路径
/root
[root@localhost bin]# cd /bin
[root@localhost bin]# ll /bin
lrwxrwxrwx. 1 root root 7 86 20:57 /bin -> usr/bin
[root@localhost bin]# pwd -P
/usr/bin
#-P 显示真实路径

1.2 cd

cd 目标位置

命令效果
cd cd ~若不指定目标位置,切换到当前用户的宿主目录(家目录)
cd -到前一次目录
一个点号“.”开头表示以当前的工作目录作为起点(已点开头的是)
两个点号“..”开头表示以当前目录的上一级目录(父目录)作为起点
“~用户名”形式开头表示以指定用户的宿主目录(家目录)作为起点
"."开头文件表示隐藏文件
[root@localhost ~]# cd /etc/
[root@localhost etc]# 
[root@localhost ~]# cd  
[root@localhost ~]# 
[root@localhost ~]# cd  ~
[root@localhost ~]# 

1.3 ls

ls [选项] [文件或目录… ]

  • -l 已长格式显示文件和目录列表 ll=ls -l
  • -a 显示全部包括隐藏文件
  • -A 显示全部文件或隐藏文件,但不包括 . 和..
  • -d 只显示当前目录
  • -h 友好显示文件大小
  • -R 递归显示该目录及该目录的子目录下的所有内容
  • --color 显示颜色
  • -S 按从大到小排序

颜色表示的文件类型:

  • 黑色数据文件 TXT
  • 绿色 可执行文件
  • 黄色 块设备文件
  • 红色 压缩包
  • 蓝色 文件夹
  • 天蓝色 连接文件(快捷方式)
[root@localhost ~]# vim /etc/DIR_COLORS#颜色在这里显示

文件类型

    • 普通文件
  1. d 目录文件directory
  2. l 符号链接文件link
  3. b 块设备block 比如直接读1块 /dev 4k (512*8(扇区)=4096字节=4k)
  4. c 字符设备character 一个字符一个字符读取 /dev/zero (/dev/null)
  5. p 管道文件pipe 两个软件联系 A-管道文件-B A 写 B 读 单向的
  6. s 套接字文件socket 可以双向的 注:file命令可以识别文件类型,文件后缀无法判断文件类型,文件后缀无所谓
[root@localhost data]# ls /run/
autofs.fifo-misc  
#管道
gssproxy.sock
#套接字

touch file{A..Z}.txt ls file[zhou].txt

1.4 通配符

符号效果
匹配一个字符 f?.txt
*匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
{1..10}1到10
{a..z}a b c ...z
{A..Z}A B C .....Z
[123]取其中之一有就显示没有也无所谓
[a-z]范围需要注意
[0-9]匹配数字范围(0123456789)
\转义符,表示原来的意思
[[:lower:]]小写字母表示 a-z
[[:upper:]]大写字母表示 A-Z
[^zhou]匹配列表中的所有字符以外的字符
[[:digit:]]任意数字,相当于0-9
[root@localhost data]# ls -a *
1
#不显示隐藏文件
[root@localhost data]# ls -a
.  ..  1
#显示隐藏文件
[root@localhost data]# ls *
# *不包括.开头的
ls: 无法访问*: 没有那个文件或目录

[root@localhost data]# ls .*
#包括了 .. 上层目录
.:

..:
aaa  boot  dev  home  lib64  misc  net  proc  run   sdb1  sys  usr
bin  data  etc  lib   media  mnt   opt  root  sbin  srv   tmp  var

[root@test1 opt]# touch f{a..z}.log
[root@test1 opt]# touch f{A..Z}.log
[root@test1 opt]# ls
123456.txt  fa.log      fe.log  fj.log  fo.log  ft.log  fy.log
123.txt     f{A.Z}.log  ff.log  fk.log  fp.log  fu.log  fz.log
1.txt       fb.log      fg.log  fl.log  fq.log  fv.log  rh
2.txt       fc.log      fh.log  fm.log  fr.log  fw.log  test.txt
abc.txt     fd.log      fi.log  fn.log  fs.log  fx.log
[root@test1 opt]# ls f[zhou].log  
#####四个其中的之一有就全显示      
fh.log  fo.log  fu.log  fz.log
[root@test1 opt]# ls f[x-z].log   
####显示的xXyYz 不包括Z
fx.log  fX.log  fy.log  fY.log  fz.log
[root@test1 opt]# ls f[a-c].log   
#####显示的A b B c C 不包括a
fa.log  fA.log  fb.log  fB.log  fc.log   
[root@test1 opt]# ls f{a..c}.log
#显示所有小写
-rw-r--r-- 1 root root 0 Nov  7 09:46 fa
-rw-r--r-- 1 root root 0 Nov  7 09:46 fb
-rw-r--r-- 1 root root 0 Nov  7 09:46 fc
[root@localhost ~]# ls 1[[:lower:]]*                
#########显示小写字母
1a1.txt  1e1.txt  1i1.txt  1m1.txt  1q1.txt  1u1.txt  1y1.txt
1b1.txt  1f1.txt  1j1.txt  1n1.txt  1r1.txt  1v1.txt  1z1.txt

[root@localhost ~]# ls 1[[:upper:]]*                 
########################显示大写字母
[root@localhost ~]# ls 1[[:upper:]]*
1A1.txt  1E1.txt  1I1.txt  1M1.txt  1Q1.txt  1U1.txt  1Y1.txt

######[0-9]只能匹配10 以下的
[root@localhost data]# touch f{1..10}.txt
[root@localhost data]# touch f{10..20}.txt
[root@localhost data]# ll f[0-9].txt
-rw-r--r--. 1 root root 0 829 01:50 f1.txt
-rw-r--r--. 1 root root 0 829 01:50 f2.txt
-rw-r--r--. 1 root root 0 829 01:50 f8.txt
-rw-r--r--. 1 root root 0 829 01:50 f9.txt
[root@localhost data]# ll f[0-9][0-9].txt
#两个 [0-9]可以匹配双数字
[root@localhost data]# ll f{1..20}.txt
#{10..20}可以匹配双数字

[root@localhost data]# ll f??.txt
#两个?号可以匹配
[root@localhost data]# ll f*.txt
#  *也可以
-rw-r--r--. 1 root root 0 829 01:51 f10.txt
-rw-r--r--. 1 root root 0 829 01:51 f11.txt
-rw-r--r--. 1 root root 0 829 01:51 f12.txt

[root@localhost data]# ls /etc/.*
#显示隐藏文件也包括.. 的上层目录
#如果不想看上层目录 就要加-d 只显示当前目录
[root@localhost data]# ls /etc/.* -d
/etc/.  /etc/..  /etc/.java  /etc/.pwd.lock  /etc/.updated

1.5 alias

临时修改

  • alias 命令别名 = ’命令‘
  • unalias 别名命令 删除别名
  • \加别名命令 (显示原始命令)
du --max-depth=1 /etc/ |sort -nr
du -d 2 /etc/ |sort -nr
a s h
[root@localhost dev]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'

#如果不加引号无法识别
[root@localhost dev]# alias myls=ls -alh
-bash: alias: -alh: 未找到

#就想使用原来的命令
[root@localhost dev]# ls
[root@localhost dev]# \ls

#删除别名
[root@localhost dev]# unalias myvim 
[root@localhost dev]# myvim
bash: myvim: 未找到命令...

永久修改

  • 在/etc/.bashrc 会影响全部
  • /root/.bashrc只影响当前用户

注:别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)

1.6 du

du [选项] [文件或目录… ]

选项说明
-a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
--max-depth=n最大显示到第n层
注:a s无法同时使用

1.7-which

搜索范围由环境变量 PATH 决定(echo $PATH)

which+命令/程序名(默认当找到第一个目标后不再继续查找)

which±a+命令/程序名(在所有搜索路径中查找)

总结

  1. ls在生产环境内慎用,可能会文件量过大会直接死机