Linux

Linux_第1张图片

一、文件基本操作

1.批量重命名
  • rename ‘s/.txt/.c/’ *.txt
  • rename ‘y/a-z/A-Z/’ .c
    sed命令?
    对于所有*.txt文件,用第一个参数提供的正则表达式将.txt替换为.c
2.查看文件内容:
  • cat -n
  • tac ????
  • nl = cat -n
    • -b a\b
    • -n ln/rn/rz
      三者区别
  • mort /less filename
    • enter\space
    • h\q
  • tail
    -n 10
    -f 不停读取文件最后某部分内容并显示,用于动态查看日志。
    查看文件类型:file ,如file test.txt
    包括编码格式

二、环境变量

3.环境变量与文件查找
变量类型:
    - 当前shell进程的私有【用户自定义变量】  如temp=abc
    - shell内建变量
    - 环境变量:可直接定义,也可从用户自定义变量导入:export temp。常用大写表示
           - 子进程可以继承父进程的环境变量
           - 关机、关shell会丢失,除非将环境变量设置为永久生效。
    - 变量按生命周期分类:
        - 永久:需要修改配置文件,变量永久生效;
             - /etc/bashrc  存放shell变量
        - /etc/profile   存放环境变量
        -.profile:
        - 临时:使用 export 命令行声明即可,变量在关闭 shell 时失效。
    - 两个重要文件:
        - /etc/bashrc  存放shell变量
        - /etc/profile   存放环境变量
        -.profile:只对当前用户永久生效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好啦。

相关命令:
    set
    env
    export
如何查看某几个文件区别?/如何查看三个变量的区别:
    export | sort > export.txt
    env | sort >env.txt
    set | sort >set.txt

    vim diff env.txt  export.txt   set.txt
4.命令的查找路径与顺序

shell中执行一个命令,会先去PATH变量中查找,如能查到到,则执行。
PATH环境变量:存储要执行的文件所在路径/目录

如:在某个目录下创建abc.sh脚本,只有在该目录下可运行,若想在任意地方运行,需要配置PATH变量,添加该路径。
PATH=$PATH:/home/shiyanlou/mybin

但是这样存在问题:一旦关闭shell,该环境变量会失效。
解决方法:

  • 让添加的环境变量全局有效,即永久--修改配置文件profile

  • 每次shell启动,自动执行配置
    - 用户目录下会有个shell启动时的自动执行文件:zsh是.zshrc,bash是 .bashrc

    把环境变量的配置添加到.zshrc中:
    echo "PATH=$PATH:/home/shiyanlou/bin" >> .zshrc
    

注意:> 将标准输出以覆盖方式重定向到一个文件
>> 追加方式

5. 修改、删除环境变量
Linux_第2张图片

Linux_第3张图片

变量删除:
unset temp 删除环境变量temp

6.环境变量生效
  • source .zshrc
  • . ./.zshrc 点为 source缩写,此时后面的文件必须指定完整的绝对或相对路径名,source 则不需要。
7.搜索文件
  • whereis 简单快速
    只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)
  • locate 快而全
    locate /home/my 列出home及子目录中所有以my开头文件
    locate /home/usr/share/*.jpg share下所有jpg文件,*要加\转义
    • -c仅计数 -i忽略大小写 -m man文件 -b二进制文件 -s源代码文件

通过“ /var/lib/mlocate/mlocate.db ”数据库查找,不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行 updatedb 命令更新一次,所以有时候你刚添加的文件,它可能会找不到,需要手动执行一次 updatedb 命令

  • which 小而精
    which python,常用来查看是否安装某软件,shell内建命令。
  • find 精而细
    sudo find /etc/ -name interfaces ,去 /etc/ 目录下面 ,搜索名字叫做 interfaces 的文件或者目录(模糊匹配需要用正则表达式)
    基本命令格式为 find [path] [option] [action]
Linux_第4张图片

$ find ~ -newer /home/shiyanlou/Code
列出用户家目录下比 Code 文件夹新的文件


实验:
chown :更改文件所属用户/群组
chmod rwx 读写执行,依次:所有者、群组、其他用户

8.打包、压缩

常见格式:

文件后缀名 说明
*.zip zip 程序打包压缩的文件
*.rar rar 程序压缩的文件
*.7z 7zip 程序压缩的文件
*.tar tar 程序打包,未压缩的文件
*.gz gzip 程序(GNU zip)压缩的文件
*.xz xz 程序压缩的文件
*.bz2 bzip2 程序压缩的文件
*.tar.gz tar 打包,gzip 程序压缩的文件
*.tar.xz tar 打包,xz 程序压缩的文件
*tar.bz2 tar 打包,bzip2 程序压缩的文件
*.tar.7z tar 打包,7z 程序压缩的文件

8.1 zip

  • 打包
    zip -r -q -[1-9] -e -l -o test.zip /home/shiyanlou
    zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/*.zip
    • -r 递归打包,如不写,则目录下全为空文件夹,子目录下的文件无法被打包进去
    • -q 安静模式不向屏幕输出打包信息
    • -o 表示输出文件,需在其后紧跟打包输出文件名
    • -9体积最小时间最久,-1体积最大时间最短。
    • -e 加密
      -l 将 linux中的LF 转换为win中的 CR+LF,防止不兼容
    • -x 排除之前创建的 zip 文件,否则又会被打包进这一次的压缩文件中,注意:这里只能使用绝对路径,否则不起作用。

关于 zip 命令,因为 Windows 系统与 Linux/Unix 在文本文件格式上的一些兼容问题,比如换行符(为不可见字符),在 Windows 为 CR+LF(Carriage-Return+Line-Feed:回车加换行),而在 Linux/Unix 上为 LF(换行),所以如果在不加处理的情况下,在 Linux 上编辑的文本,在 Windows 系统上打开可能看起来是没有换行的。如果你想让你在 Linux 创建的 zip 压缩文件在 Windows 上解压后没有任何问题,那么你还需要对命令做一些修改:

du -h test.zip 查看文件大小

  • h, --human-readable(顾名思义,你可以试试不加的情况)
  • d, --max-depth(所查看文件的深度)

file test.zip

  • 解压
    unzip -q [-O GBK] shiyanlou.zip -d ziptest
    • -O GBK 指定编码类型
    • -d指定目录

使用 unzip 解压文件时我们同样应该注意兼容问题,不过这里我们关心的不再是上面的问题,而是中文编码的问题,通常 Windows 系统上面创建的压缩文件,如果有有包含中文的文档或以中文作为文件名的文件时默认会采用 GBK 或其它编码,而 Linux 上面默认使用的是 UTF-8 编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理),为了解决这个问题,我们可以在解压时指定编码类型。

  • 查看
    unzip -l shiyanlou.zip

-r 指定目录
-d 指定路径

8.2 rar

rar shiyanlou.rar . 创建压缩包
rar d shiyanlou.rar .zshrc 从指定压缩包删除某文件
rar l shiyanlou.rar 查看不解压文件
$ unrar x shiyanlou.rar 全路径解压

unrar e shiyanlou.rar tmp/

8.3
tar -cvf shiyanlou.tar shiyanlou/----需要压缩的文件夹

  • c 创建一个tar包
  • f 指定文件名,其后要紧跟文件名
  • v 以可视的方式输出打包的文件
    tar -xf shiyanlou.tar -C tardir 把包解压到tardir文件夹中
  • x 解压
  • C 指定目录

tar -tf shi.tar 只查看不解压
创建不同压缩格式的文件:
tar -czf shiyanlou.tar.gz~

  • xzf 参数不区分先后

压缩文件格式 参数
*.tar.gz -z
*.tar.xz -J
*tar.bz2 -j

tar 排除多个目录

  • 我们以tomcat 为例,打包的时候我们要排除 tomcat/logs 目录,命令如下:
tar -zcvf tomcat.tar.gz --exclude=tomcat/logs tomcat 
  • 如果要排除多个目录,增加 --exclude 即可,如下命令排除logs和libs两个目录及文件xiaoshan.txt:
tar -zcvf tomcat.tar.gz --exclude=tomcat/logs --exclude=tomcat/libs --exclude=tomcat/xiaoshan.txt tomcat

常用命令:

zip:
打包 :zip something.zip something (目录请加 -r 参数)
解包:unzip something
指定路径:-d 参数
tar:
打包:tar -zcvf something.tar something
解包:tar -zxvf something.tar(应该去掉z)
ps: z参数--解压gzip格式的。
指定路径:-C 参数

三、基本操作命令

1、cd
(1)命令
ls [选项] [目录名]
(2)常用参数
参数描述
-a :–all 列出目录下的所有文件,包括以 . 开头的隐含文件
-l : 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
-d :–directory 将目录象文件一样显示,而不是显示其下的文件
-h :–human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
-t :以文件修改时间排序
备注:
列出当前目录中所有以d开头的文件目录的详细内容: ls -d d*

2、cd
进入系统根目录 : cd /
进入当前目录的父目录:cd ..
进入当前用户的跟目录 : cd ~
进入上次目录所在目录: cd -

3、mkdir
(1)命令格式

mkdir [选项] 目录

(2)常用参数

参数 描述
-m --mode=模式 设定权限<模式>
-p --parents 可以是一个路径名称。若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
-v --verbose 每次创建新目录都显示信息

ps:连续创建多个文件夹:
mkdir -vp {test/, test2/, test3/{tt1/, tt2/ }} 同时又在test3下创建了两个子目录

4、mv 移动/重命名
(1)命令格式

mv [选项] 源文件或目录 目标文件或目录
当目的文件/目录不存在是才为重命名;
(2)常用参数

参数 描述
-b --back 若需覆盖文件,则覆盖前先行备份
-f --force 如果目标文件已经存在,不会询问而直接覆盖
-i --interactive 若目标文件已经存在时,就会询问是否覆盖
-u --update 若目标文件已经存在,且源文件比较新,才会更新
-t --target 该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后

5、cp
(1)命令格式

cp [选项] 源文件/目录 目的文件/目录

(2)常用参数

参数 描述
-t --target-directory 指定目标目录
-i --interactive 覆盖前询问(使前面的 -n 选项失效)
-n --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-s --symbolic-link 对源文件建立符号链接,而非复制文件
-f --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-u --update 使用这项参数之后,只会在源文件的修改时间较目的文件更新时,或是对应的目的文件并不存在,才复制文件
例:将test1下最近更新的文件复制到test2下,覆盖前询问:
cp -iu test1/* test2/

6、cat
(1)命令格式

cat [选项] [文件]

(2)常用参数

参数 描述
-A --show-all 等价于 -vET
-b --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E --show-ends 在每行结束处显示 $
-n --number 对输出的所有行编号,由 1 开始对所有输出的行数编号
-s --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
-t 与 -vT 等价
-T --show-tabs 将跳格字符显示为 ^I
-u (被忽略)
-v --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
ps:
cat总是与重定向符搭配使用 >;
tac 与cat相反,从最后一行开始显示。

7、nl
将文件加行号显示,与cat -n的区别是它可以有更多的显示方法;
(1)命令格式

nl [选项] [文件]

(2)常用参数

参数 描述
-b 指定行号指定的方式,主要有两种:
-b a 表示不论是否为空行,也同样列出行号(类似 cat -n)
-b t 如果有空行,空的那一行不要列出行号(默认值)
-n 列出行号表示的方法,主要有三种:
-n ln 行号在屏幕的最左方显示
-n rn 行号在自己栏位的最右方显示,且不加 0
-n rz 行号在自己栏位的最右方显示,且加 0
-w 行号栏位的占用的位数


Linux_第5张图片

你可能感兴趣的:(Linux)