学习linux命令

97 阅读12分钟

常用命令:

1.     ls 展示指定工作目录下的内容及属性信息

2.     cp 复制文件或者目录

3.     mv 移动文件或对其改名

4.     mkdir 创建目录

5.     touch 创建新文件或者修改文件属性

6.     pwd 查看目录路径

7.     cat 打印(查看)文本文件内容

8.     echo 打印输出内容

9.     rm 删除文件或者目录

10.  rmdir 删除空目录

 

ls:list的缩写

 

-a显示所有文件及目录 (包括以“.”开头的隐藏文件)
-l使用长格式列出文件及目录信息
-r将文件以相反次序显示(默认依英文字母次序)
-t根据最后的修改时间排序
-A同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录)
-S根据文件大小排序
-R递归列出所有子目录

 

 

命令详解:

a) -a, --all 显示所有文件及目录(包括以’.’开头的隐藏文件)

b)      -A, --almost-all 同-a,但不列出.(当前目录)及..(父目录)

                 i.          --author 与-l同时使用时列出每个文件的作者

c)      -b, --escape 以八进制溢出序列标识不可打印的字符

                 i.          --block-size=SIZE 在打印之前按SIZE缩放尺寸

d)      -B, --ignore-backups -- 不要列出以~结尾的隐含条目

e)      -c  with -lt: 按ctime排序并显示  with -l: 显示ctime并按名称排序 否则:按ctime排序,最新优先

f)       -C 每栏由上至下列出项目

                 i.          --color[=WHEN] 控制是否使用色彩分辨文件。WHEN可以是“never”(默认)、“always”或“auto”

g)      -d, --directory 当遇到目录时列出目录本身二位目录内的文件

h)      -D, --dired 产生适合Emacs的dired模式使用的结果

i)       -f 不进行排序,-aU选项生效,-lst选项失效

j)       -F, --classify 加上文件类型的指示符号(*/=@|其中一个)

                 i.          --format=关键字 交错-x,逗号分割-m,水平-x,长-l,单栏-1,详细-l,垂直-C

                ii.          –full-time 既-l --time-style=full-iso

k)      -g 类似-l,但不列出所有者

                 i.          --group-directories-first 在文件前分组目录。此选项可以--sort一起使用.但一旦使--sort=none(-U)将禁用分组

l)       -G, --no-group 以一个长列表的形式,不输出组名

m)    -h, --human-readable 与-l一起,以易于阅读的格式输出文件大小

                 i.          –si 同上面类似,但使用1000为基地而非1024

n)      –H, --dereference-command-line 跟随命令行列出的符号链接

                 i.          –dereference-command-line-symlink-to-dir 跟随命令行列出的目录的符号链接

                ii.          --hide=PATTERN 隐藏符合PATTERN模式的项目

               iii.          --indicator-style=方式 指定在每个项目名称后加上指示符号方式:none(默认),classify(-F),file-type(-P)

o)      -i, --inode 显示每个文件的inode号

p)      -I, --ignore=PATTERN 不显示任何符合指定shell PATTERN的项目

q)      -k 即--block-size=1k

r) -l 使用较长格式列出文件及目录信息

s)      -L, --dereference 当显示符号连接的文件信息时,显示符号链接所指示的对象而非符号链接本身的信息

t)       -m 所有项目以逗号分割,并填满整行行宽

u)      -n, --numeric-uid-gid 类似-l,但列出UID及GID号

v)      -N, --literal 输出未经处理的项目名称(如不特别处理控制字符)

w)     -o 类似-l,但不列出有关组的信息

x)      -p, --indicator-style=slash 对目录加上表示符号‘/’

y)      -q, --hide-control-chars 以“?”字符代替无法打印的字符

                 i.          –show-control-chars 直接显示复发打印的字符(默认,除非调用的程序名是‘ls’并在终端输出结果)

z)      -Q, --quote-name 将条目名称括上双引号

                 i.          –quoting-stule=方式 使用指定的方式显示条目:literal、locale、shell、shell-always、c、escape

aa) –r, --reverse 逆序排序

bb) -R, --recursive 递归列出所有子目录

cc)    -s, --size 以块数形式显示每个文件分配的尺寸

dd) -S 根据文件大小排序

--sort=WORD 以下是可选的WORD和它们代表的相应选项:

1.      extension -X   status -c  

2.      none -U   time -t  

3.      size -S   atime -u  

4.      time -t   access -u  

5.      version -v   use -u

--time=WORD 和-l同时使用时显示WORD所代表的时间而非修改时间:atime、access、use、ctime或status;加上--sort=time选项时会以指定时间作为排序关键字

--time-style=STYLE 和-l同时使用时根据STYLE代表的格式显示时间:full-iso、iso、locale、posix-iso、+FORMAT。FORMAT即是date所用的时间格式;如果FORMAT是FORMAT1<换行>FORMAT2,FORMAT1适用于较旧的文件而FORMAT2适用于较新的文件;如果STYLE以“posix-”开头,则STYLE仅在POSIX语系之外生效。

ee) -t 根据修改时间排序

ff)      -T, --tabsize=宽度 指定制表符tab的宽度,而非8个字符

gg)   -u 同-lt一起使用:按照访问时间排序并显示 同-l一起使用显示访问时间并按文件名排序 其他:按照访问时间排序

hh)   -U 不进行排序;按照目录顺序列出项目

ii)      -v 在文本中进行数字(版本)的自然排序

jj)      -w, --width=COLS 自行指定荧幕宽度而不是用目前的数值

kk)    -x 逐行列出项目而不是逐栏列出

ll)      -X 根据扩展名排序

mm)-Z, --context 打印文件的安全上下文

nn)   -1 每行只列出一个文件

                 i.          --help 显示此帮助信息并退出

                ii.          --version 显示版本信息并退出

 

SIZE可以是一个可选的证书,后面跟着以下的单位中的一个:

       KB 1000,K 2014, MB 10001000, M 10241024,还有G、T、P、E、Z、Y。

使用彩色来区分文件类型的功能已被禁用,默认设置和--color=never同时禁用了它。

使用—color=auto选项,ls只在标准输出被连至终端是才生成颜色代码。

LS_COLORS环境变量可改变此设置,可使用dircolors命令来设置。

 

退出状态:

       0 正常

       1 一般问题(例如:无法访问子文件夹)

       2 严重问题(例如:无法使用命令行参数)

 

cp:copy 的缩写

cp [参数]  源文件 目标文件

1.      -f 若目标文件已存在,则会直接覆盖源文件

2.      -i 若目标文件存在,则会询问是否覆盖

3.      -p 保留源文件或者目录的所有属性

4.      -r 递归复制文件和目录

5.      -d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录

6.      -l 对源文件建立硬连接,而非复制文件

7.      -s 对源文件建立符号连接,而非复制文件

8.      -b 覆盖已存在的文件目标前将目标文件备份

9.      -v 详细显示cp命令执行的操作过程

10.    -a 等价于“dpr”三个参数的结合

实例

1、  使用指令 cp 将当前目录 test/  下的所有文件复制到新目录 newtest 下,输入如下命令:

                        i.              cp –r test/ newtest

2、  复制多个文件到指定的文件夹 dir

                        i.              cp -r file1 file2 dir

注意:用户使用该指令复制目录时,必须使用参数 -r 或者 -R 。

mv:“move”单词的缩写

mv [参数] 源文件 目标文件

1、   -i 若存在同名文件,则向用户询问是否覆盖

2、   -f 覆盖已有文件时,不进行任何提示

3、   -b 当文件存在时,覆盖前为其创建一个备份

4、   -u 当源文件比目标文件新,或者目标文件不存在时,才执行移动操作
-v 详细显示进行的步骤

5、   -n 不要覆盖任何已存在的文件或目录

注:如果您指定了-i、-f、-n 中的多个,仅最后一个生效。

示例

1、将 test.txt 文件重命名为 newtest.txt

mv test.txt newtest.txt

2、将 info 目录放入 logs 目录中。注意,如果 logs 目录不存在,则该命令将 info 改名为 logs。

mv info logs

3、将目录 dir 下的文件移动到当前目录下:

mv dir/* .

mkdir:“make directories”的缩写

mkdir [参数]  目录

1、   -p 如果上层目录不存在,会顺便把上层目录也创建

2、   -m 建立目录的同时设置目录的权限

3、   -z 设置安全上下文

4、   -v 每次创建新目录都显示信息

示例:

1、   创建一个test的目录

mkdir test

2、   如果test的父目录aaa不存在,也会顺便把父目录一同创建

mkdir -p aaa/test

3、   创建test目录时指定文件属性有读、写和执行权限,且其他人无权访问

mkdir -m 700 test

4、   同时创建多个目录dir1、dir2、dir3

mkdir dir1 dir2 dir3

touch:一是创建新的空文件,二是改变已有文件的时间戳属性

touch 命令会根据当前的系统时间更新指定文件的访问时间和修改时间。如果文件不存在,将会创建新的空文件,除非指定了”-c”或”-h”选项

1、  -a 改变档案的读取时间记录

2、  -m 改变档案的修改时间记录

3、  -r 使用参考档的时间记录,与-file的效果一样

4、  -c 不创建新文件

5、  -d 设定时间与日期,可以使用各种不同的格式

6、  -t 设定档案的时间记录,格式与date命令相同

7、  -no-create 不创建新文件

8、  -help 显示帮助信息

9、  -version 列出版本讯息

示例

1、将 test.txt 的档案时间改为,当前系统时间,文件不存在建之。(所以也可以当作创建空白新文件使用)

[root@haif ~]# touch test.txt

2、修改文件时间

(1)使用 ls 查看当前 test.txt 的文件属性

[root@haif ~]# ls -l test.txt

-rw-r--r--  1 haif  staff  0  7  9 16:05 test.txt #时间是 7月9号15:05

(2)将 test.txt 文件的时间改为 5月6日18点3分

[root@haif ~]# touch -c -t 05061803 test.txt

(3)再次使用 ls 查看属性

[root@haif ~]# ls -l test.txt

-rw-r--r--  1 haif  staff  0  5  6 18:03 test.txt# 时间是 5月6号18:03了

pwd:print work directory 的缩写,显示工作目录

-L 显示逻辑路径

-P 显示实际物理地址

示例:

显示当前目录

pwd      => /home

目录是软连接,显示实际物理地址

pwd -P   => /var/spool/mail

显示逻辑地址

pwd -L   => /var/mail

cat:

将文件内容或标准输入组合输出到标准输出,不过 cat 这个命令适合用于查看内容较少的纯文本文件的,如果是较大的文件,推荐使用 more 这种命令。

另外当文件内容较大时,文本内容会在屏幕上快速闪动(滚屏),用户往往看不清所显示的具体内容。因此对于较长文件内容可以按Ctrl+S键,停止滚屏;以及Ctrl+Q键可以恢复滚屏;而按Ctrl+C(中断)键则可以终止该命令的执行。

cat [参数] 文件

-n 显示行数(空行也编号)

-s 显示行数(多个空行算一个编号)

-b 显示行数(空行不编号)

-E 每行结束处显示$符号

-T 将TAB字符显示为^|符号

-v 使用^和M-引用,除了LFD和TAB之外

-e 等价于-vE组合

-t 等价于-vT组合

-A 等价于-vET组合

-help 显示帮助信息

-version 显示版本信息

示例

1、普通输出

[root@haif ~]# cat test.txt

i love you

www.iamhaif.com

2、显示行号

[root@haif ~]# cat -n test.txt

     1  i love you

     2

     3  www.iamhaif.com

3、空行不现实行号

[root@haif ~]# cat -b test.txt

     1  i love you

 

     2  www.iamhaif.com

4、清空文件内容

[root@haif ~]# cat /dev/null > test.txt

/dev/null 有点像是一个无底洞 ??

 

echo:

将文件内容或标准输入组合输出到标准输出,所谓标准输入,简单说就是从键盘输入的内容,标准输出,简单说,就是打印到屏幕上。

-n 不输出结尾的换行符

-e 允许对下面列出的加反斜线转义的字符进行解释

-e  “\a” 发出警告音

-e “\b” 删除前面的一个字符

-e “\c” 结尾不加换行符

-e “\f” 换行,光标仍停留在原来的坐标位置

-e “\n” 换行,光标移至首行

-e “\r” 光标移至首行,但不换行

-E 禁止反斜杠转义,与-e参数功能相反

-version 查看版本信息  -help 查看帮助信息

示例

1、输出一段字符串:iamhaif

[root@haif ~]# echo "iamhaif"

iamhaif

2、将字符串 iamhaif 导入到文件 test.txt 中

[root@haif ~]# echo "iamhaif" >> test.txt

3、输入变量的值

[root@haif ~]# echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/haif/program/go:/usr/local/go/bin

4、输出信息中删除某个字符,注意看数字 3 消失了

[root@haif ~]# echo -e "123\b456"

12456

5、输出带有换行字符的内容

[root@haif ~]# echo -e "a\nb\nc"

a

b

c

rm:remove 的缩写

删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。

不过需要注意的是,对于链接文件,它只是删除了链接,原有文件均保持不变。

rm 也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令。

rm -rf /* 这个执行了就凉了。

另外就是,通过该命令删除的文件,其实是可以恢复的哦。

rm [参数] 文件

-f 强制删除,忽略不存在的文件,不会出现警告信息

-i 删除前会询问用户是否操作

-r/R 递归删除目录及其内容

-v 显示指令的详细执行过程

-d 删除空目录

默认时,rm不会删除目录。使用(-r或-R)选项可删除每个给定的目录,以及其下所有的内容。

示例

1、删除前逐一询问确认

[root@haif ~]# rm -i file1.txt

remove file1.txt?

2、删除当前目录下所有文件:

[root@haif ~]# rm -rf *

3、清空系统中所有的文件(需谨慎):

[root@haif ~]# rm -rf /*

 

rmdir: remove directory的缩写

删除空的目录。并且也只能删除空目录,当要删除非空目录时,就要使用带有“-R”选项的 rm 命令。

rmdir命令的“-p”参数可以递归删除指定的多级目录,但是要求每个目录也必须是空目录。

-p 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错

--ignore-fail-on-non-empty 忽略仅由目录非空产生的所有错误

-v 显示命令的详细执行过程

示例

1、删除空目录 test

[root@haif ~]# rmdir test

2、删除指定目录及其上级文件夹(如果删除了test之后,b为空文件夹,则b也会被删除,a类似)

[root@haif ~]# rmdir -p a/b/test