linux文件和目录管理常用命令

您所在的位置:网站首页 航班坐位等级怎么看 linux文件和目录管理常用命令

linux文件和目录管理常用命令

2023-06-11 23:35| 来源: 网络整理| 查看: 265

linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。linux命令几乎成为用户使用linux的入口,会使用常用命令成为了学习和使用linux的基础。

cd 目录命令 cd [-L|[-P [-e]] [[email protected]]] [dir]

cd /home 进入 ‘/home’ 目录 cd … 返回上一级目录 cd …/… 返回上两级目录 cd 进入当前用户的主目录 cd ~ 进入当前用户的主目录 cd – 进入当前用户的主目录 cd ~user1 指定进入user1用户的主目录 cd - 返回上次所在的目录

cd命令的作用就是从当前目录跳转到dir处, 如果dir处留空的话就会跳转到环境变量HOME中设置的值.

环境变量CDPATH 对于环境变量CDPATH,如果没有设置CDPATH的话,每次cd查找的跳转目录都是以当前的目录为父目录. 若有设置CDPATH的话,每次cd查找的跳转目录就是以设置的目录为父目录来查找. e.g. 假设当前有目录结构: ~/a/b/c 若没有设置CDPATH

[[email protected] ~]# cd a [[email protected] a]# cd c -bash: cd: c: No such file or directory

若将CDPATH设为CDPATH=.:/root/a/b的话

[[email protected] a]# export CDPATH=.:/root/a/b [[email protected] a]# cd c /root/a/b/c

将常用目录设置到CDPATH里就能有效提高cd的效率 CDPATH中目录之间使用:隔开 若不加上.路径(即当前路径的话),以前默认的本目录作为父目录cd就不可用了 若dir处是以/开头(即是绝对路径)的话,CDPATH就失效了

cd -P, -e参数 进入到快捷方式目录的实际目录中. e.g. 假设 ~ 目录下有a,b两个目录, 同时a下有一个连接到b的子目录b(这个b是快捷方式)

[[email protected] a]# cd b /root/a/b [[email protected] a]# cd -P b ./b

若将一个文件夹自己的快捷方式放到文件夹里,这样写脚本的时候就有可能会出现无限循环,当前路径名就会变得无限长,但是加上了-P命令后就可以避免无线循环的情况. 如果在-P后面加上-e的话,若跳转前路径不存在对应物理路径的话(比如说夹杂着多个快捷方式为名称的路径)就会返回一个失败的状态.

cd -L参数 -L参数和-P相反(两者不能同时出现,即 -L|-P),是跳转到链接目录中,类似于不带参数的cd.

[[email protected] a]# cd -L b /root/a/b pwd 显示工作路径 pwd [-LP] [[email protected] c]# pwd /root/a/b/c

pwd -L参数 L(logical)当目录为连接路径时,显示连接路径pwd -P参数 P(physical)显示实际物理路径,而非使用连接(link)路径

[[email protected] java_sdk_1.8.0]# pwd /etc/alternatives/java_sdk_1.8.0 [[email protected] java_sdk_1.8.0]# pwd -L /etc/alternatives/java_sdk_1.8.0 [[email protected] java_sdk_1.8.0]# pwd -P /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 ls命令 ls [OPTION]... [FILE]...

ls 查看目录中的文件 ls -F 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls -a 显示隐藏文件 ls [0-9] 显示包含数字的文件名和目录名

[[email protected] ~]# pwd /root [[email protected] ~]# [[email protected] ~]# [[email protected] ~]# [[email protected] ~]# ls a anaconda-ks.cfg test [[email protected] ~]# ls -F a/ anaconda-ks.cfg test/ [[email protected] ~]# ls -f . .. .pm2 test .bashrc .vimrc .npm .ssh a [[email protected] ~]# ls -a . .npm .pm2 .. a .bashrc test .ssh .vimrc tree命令

显示文件和目录由根目录开始的树形结构

usage: tree [-acdfghilnpqrstuvxACDFQNSUX] [-H baseHREF] [-T title ] [-L level [-R]] [-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes] [--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset] [--filelimit[=]#] [--si] [--timefmt[=]] [] [[email protected] ~]# tree . ├── a │ └── b │ └── c ├── anaconda-ks.cfg └── test └── aaa.txt 4 directories, 2 files mkdir 创建目录命令 mkdir [OPTION]... DIRECTORY...

mkdir dir1 创建一个叫做dir1的目录 mkdir dir1 dir2 同时创建两个目录 mkdir -p /tmp/dir1/dir2 创建一个目录树

Try 'mkdir --help' for more information. rm 移除命令 rm [OPTION]... FILE...

rm -f file1 删除一个叫做file1的文件 rmdir dir1 删除一个叫做dir1的目录 rm -rf dir1 删除一个叫做dir1的目录并同时删除其内容 rm -rf dir1 dir2 同时删除两个目录及它们的内容

Try 'rm --help' for more information. mv 移动命令

mv dir1 new_dir 重命名/移动 一个目录

Usage: mv [OPTION]... [-T] SOURCE DEST or: mv [OPTION]... SOURCE... DIRECTORY or: mv [OPTION]... -t DIRECTORY SOURCE... Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY. cp 拷贝命令

cp file1 file2 复制一个文件 cp dir/* . 复制一个目录下的所有文件到当前工作目录 cp -a /tmp/dir1 . 复制一个目录到当前工作目录 cp -a dir1 dir2 复制一个目录

Usage: cp [OPTION]... [-T] SOURCE DEST or: cp [OPTION]... SOURCE... DIRECTORY or: cp [OPTION]... -t DIRECTORY SOURCE... Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. ln 链接命令

ln -s file1 lnk1 创建一个指向文件或目录的软链接 ln file1 lnk1 创建一个指向文件或目录的物理链接

touch 命令 touch [OPTION]... FILE...

修改文件时间戳,或者新建一个不存在的文件 -a 或–time=atime或–time=access或–time=use  只更改存取时间 -c 或–no-create  不建立任何文档 -d 使用指定的日期时间,而非现在的时间 -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题 -m 或–time=mtime或–time=modify  只更改变动时间 -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同 -t 使用指定的日期时间,而非现在的时间 eg: touch -t 0712250000 file1

file 命令

该命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。

[[email protected] a]# file aaa.txt aaa.txt: UTF-8 Unicode text [[email protected] a]# file -i aaa.txt aaa.txt: text/plain; charset=utf-8 [[email protected] a]# file -i hello.html hello.html: text/html; charset=us-ascii //查看软连接对应文件的文件类型 [[email protected] a]# ln -s aaa.txt saaa [[email protected] a]# file saaa saaa: symbolic link to `aaa.txt' [[email protected] a]# file -L saaa saaa: UTF-8 Unicode text iconv 命令

用来转换文件的编码方式,比如它可以将UTF8编码的转换成GB18030的编码,反过来也行。 -f encoding :把字符从encoding编码开始转换。 -t encoding :把字符转换到encoding编码。 -l :列出已知的编码字符集合 -o file :指定输出文件 -c :忽略输出的非法字符 -s :禁止警告信息,但不是错误信息 –verbose :显示进度信息 -f和-t所能指定的合法字符在-l选项的命令里面都列出来了 iconv -l 列出已知的编码

[[email protected] a]# file hello.html hello.html: HTML document, ISO-8859 text [[email protected] a]# iconv -f ISO-8859-1 -t UTF-8 hello.html -o hello2.html [[email protected] a]# file hello2.html hello2.html: HTML document, UTF-8 Unicode text find 命令 find pathname -options [-print -exec -ok ...] #查找当前目录下文件内容中含有 html 单词的内容 [[email protected] a]# find . -type f | xargs grep html ./hello.html: ./hello.html: ./hello.html: ./hello2.html:

find 命令功能强大,使用多变,附上一个连接,讲的非常好。find命令查找包含指定内容的文件

cat 命令 cat [OPTION]... [FILE]...

-n或-number:有1开始对所有输出的行数编号; -b或–number-nonblank:和-n相似,只不过对于空白行不编号; -s或–squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行; -A:显示不可打印字符,行尾显示“$”; -e:等价于"-vE"选项; -t:等价于"-vT"选项;

[[email protected] a]# touch f1 f2 [[email protected] a]# echo "hello" > f1 [[email protected] a]# echo "world" > f2 [[email protected] a]# cat f1 hello [[email protected] a]# cat f1 f2 #同时显示文件fl和f2的内容 hello world [[email protected] a]# cat f1 f2 > f3 #将文件fl和f2合并后放入文件f3中 [[email protected] a]# cat f3 hello world 一行命令实现代码行数统计 1. 基本版 # find . -name "*.cpp"|xargs wc -l|grep "total"|awk '{print $1}' # find . -name "*.cpp"|xargs cat|wc -l 2. 去空行版 # find . -name "*.java"|xargs cat|grep -v ^$|wc -l 上面的^$是正则表达式,^是以匹配开头,$是匹配结尾,所以^$是匹配一个空行。 3. 去注释版 # find . -name "*.java"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l 上面的^\s*\/\/.*$是正则表达式,其中^\s*表明以空格(多个)开头,\/\/表明是//开头的注释,“.*$”表明可能以“.”结尾 去注释版只是去掉以//开头的注释,对于以/* */包含的注释并没有去掉。 上面是只识别.cpp文件,如果想一次统计多种类型的文件,怎么办呢: 4. 统计本文件夹下.h,.cpp,.sh三种类型的文件代码行数 方式一: # find -name "*[.h|.cpp|.sh]" -type f | xargs cat | wc -l 方式二: # find -name "*[.h|.cpp|.sh]" -type f -exec cat {} \; | wc -l 方式三: # find -regex ".*\.h\|.*\.cpp\|.*\.sh" | xargs cat |wc -l 其实上面三种方法的区别就是find到所有的目标文件的方法,还有下面两种方法可以找到想要的结果。 方法四: # find -name "*[.h|.cpp|.sh]" ! -name "." 上面!号前半部分找出会包含"."这个目录,用"!"排除这个目录,当然了,这个和上面方式一,二中的-type f是相近似的方法,-type f是指定目标类型为文件。 方法五:最笨的方法: # find -name "*.h" -o -name "*.sh" -o -name "*.cpp" 此外,如果当前目录下包含子目录,则一并会被find出来,如果不想find子目录,则可以用-maxdepth选项: # find -maxdepth 1 -name "*[.h|.cpp|.sh]" -type f


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3