bash shell 命令 - linux

参考书籍《Linux命令行与shell脚本编程大全》

复制文件

cp 1.sh -i 13.sh

cp -i 在覆盖前询问用户

cp -v 告诉用户正在做什么

 

 

创建目录

mkdir 

创建多级目录

mkdir -p New_Dir/Sub_Dir/Under_Dir

 

删除文件夹

rmdir (只能删除空目录)

 

 

查看文件类型

file

file 【文件名】

[newcs@dsszbyz-etl-inf7 day]$ file *

exec_bbzx_agent_work_operate_dd.sh:      Bourne-Again shell script, UTF-8 Unicode text executable

exec_bbzx_daducha_day.sh:                Bourne-Again shell script, UTF-8 Unicode text executable, with very long lines

 

查看文件内容

cat 

cat -n 【文件名】 空行也有行号


 

cat -b 【文件名】 只给有效行加行号

[newcs@dsszbyz-etl-inf7 day]$ cat -b exec_bbzx_agent_work_operate_dd.sh

     1    #!/bin/bash

     2    #功能: 循环跑数据

     3    #参数:

     4    ##输入日期,格式:20190101,不带参数默认前一天

     5    cd /home/newcs/kfyy/rpt_src/bash/hour

     6    if [ ! -n "$1" ] ;then

     7      v_day=`date -d "-1 day" "+%Y-%m-%d"`

     8    else

     9      inday="$1"

    10      v_day="${inday:0:4}-${inday:4:2}-${inday:6:2}"

    11    fi

 

    12    gap=3600  #间隔1800秒

 

more 分页显示文件内容

 

less 功能比moer 更强大("less is moer")

 

tail 指定显示最后多行

tail -n 50  【文件名】 显示末尾50行 (简写tail-20)

tail -f 【文件名】 实时显示文件中的新增内容(多用于实时监测系统日志)

        ctrl +c  退出

 

head 显示开头多行

head -n 20 【文件名】 显示开头50行   (简写head -20)

 

查看进程

ps

单独的ps命令,只会显示运行在当前控制台下的属于当前用户的进程

[newcs@dsszbyz-etl-inf7 ~]$ ps

  PID TTY          TIME CMD

4285 pts/66   00:00:00 bash

10616 pts/66   00:00:00 ps

 

[newcs@dsszbyz-etl-inf7 ~]$ ps -ef

UID        PID  PPID  C STIME TTY          TIME CMD

root         1     0  0  2018 ?        00:35:21 /usr/lib/systemd/systemd --switched-root --system --deserialize 21

root         2     0  0  2018 ?        00:00:12 [kthreadd]

root         3     2  0  2018 ?        00:00:05 [ksoftirqd/0]

 UID:启动这些进程的用户。

 PID:进程的进程ID。

 PPID:父进程的进程号(如果该进程是由另一个进程启动的)。

 C:进程生命周期中的CPU利用率。

 STIME:进程启动时的系统时间。

 TTY:进程启动时的终端设备。

 TIME:运行进程需要的累计CPU时间。

 CMD:启动的程序名称。

ps -l  参数 l ,会显示更多的列。如下

 F:内核分配给进程的系统标记。

 S:进程的状态(O代表正在运行;S代表在休眠;R代表可运行,正等待运行;Z代表僵

化,进程已结束但父进程已不存在;T代表停止)。

 PRI:进程的优先级(越大的数字代表越低的优先级)。

 NI:谦让度值用来参与决定优先级。

 ADDR:进程的内存地址。

 SZ:假如进程被换出,所需交换空间的大致大小。

 WCHAN:进程休眠的内核函数的地址。

 

Unix 风格: -ef

BSD 风格: f

GUN长参数 风格:-forest

 

显示层级父子关系

 

 

挂载、移除其他存储设备

mount  挂载到某个文件路径下

umount    卸载移动存储设备

 

 

查看设备上的磁盘剩余空间

df

 

bash shell 命令 - linux_第1张图片

df -h  以M、G为单位显示剩余空间

 

 设备的设备文件位置;

 能容纳多少个1024字节大小的块;

 已用了多少个1024字节大小的块;

 还有多少个1024字节大小的块可用;

 已用空间所占的比例;

 设备挂载到了哪个挂载点上。

 

du

显示文件夹目录、文件夹大小、文件大小

-a   #显示目录中文件的大小  单位 KB 。

-b  #显示目录中文件的大小,以字节byte为单位。

-c  #显示目录中文件的大小,同时也显示总和;单位KB。

-k 、 -m  、#显示目录中文件的大小,-k 单位KB,-m 单位MB.

-s  #仅显示目录的总值,单位KB。

-h

bash shell 命令 - linux_第2张图片

 

显示文件夹大小

bash shell 命令 - linux_第3张图片

bash shell 命令 - linux_第4张图片

 

排序    sort

默认按照字符串排序

 

管道命令 “|”

bash shell 命令 - linux_第5张图片

 将du命令的输出传给 sort 命令

 

搜索数据

grep 自动模糊匹配

-v 反向搜索

-n 显示匹配模式的行所在的行号

-c 有多少行含有匹配

-e 指定多个条件,可用正则表达式代替

 

例:查询 包含t 或 f的文件

bash shell 命令 - linux_第6张图片

bash shell 命令 - linux_第7张图片

 

压缩文件(.bz2    .Z    .gz    .zip)

bash shell 命令 - linux_第8张图片

 

gzip

 gzip:用来压缩文件。

 gzcat:用来查看压缩过的文本文件的内容。

 gunzip:用来解压文件

 

归档数据 tar(较压缩更常用),

bash shell 命令 - linux_第9张图片

 

通常文件以'*.tgz' 结尾        '*.tar.gz'

 

tar  【文件名】.tar.gz

    

 


 

外部命令(文件系统命令)    

并不是shell程序的一部分,例如:ps

找到命令路径 

[newcs@dsszbyz-etl-inf7 hour]$ type -a ps

ps is /bin/ps

ps is /usr/bin/ps

[newcs@dsszbyz-etl-inf7 hour]$ which ps

/bin/ps

 

当外部命令执行时,会创建出一个子进程。这种操作被称为衍生(forking)

[newcs@dsszbyz-etl-inf7 hour]$ ps --forest

  PID TTY          TIME CMD

10083 pts/117     00:00:00 bash

2658 pts/117      00:00:00  \_ ps

bash shell 命令 - linux_第10张图片

 

内建命令(不用创建子进程)

有些命令有多种实现方式(内建、外部命令)例如:pwd 、 echo

[newcs@dsszbyz-etl-inf7 day]$ type -a pwd

pwd is a shell builtin

pwd is /bin/pwd

pwd is /usr/bin/pwd

[newcs@dsszbyz-etl-inf7 day]$ which pwd

/bin/pwd

type  

which    查找文件的(会在环境变量$PATH设置的目录里查找符合条件的文件

 

内建命令history(最近使用的命令列表)

 

 


环境变量

env    printenv

显示变量

 

打印 echo $【变量名】 例:echo $JAVA_HOME

直接显示环境变量,对应的文件夹内容

[newcs@dsszbyz-etl-inf7 day]$ ll $JAVA_HOME

total 25928

drwxr-xr-x 2 root root     4096 Mar 16  2018 bin

-rw-r--r-- 1 root root     3244 Dec 20  2017 COPYRIGHT

drwxr-xr-x 4 root root      147 Mar 16  2018 db

drwxr-xr-x 3 root root     4096 Mar 16  2018 include

-rw-r--r-- 1 root root  5202881 Dec 20  2017 javafx-src.zip

drwxr-xr-x 5 root root     4096 Mar 16  2018 jre

drwxr-xr-x 5 root root     4096 Mar 16  2018 lib

-rw-r--r-- 1 root root       40 Dec 20  2017 LICENSE

drwxr-xr-x 4 root root       60 Mar 16  2018 man

-rw-r--r-- 1 root root      159 Dec 20  2017 README.html

-rw-r--r-- 1 root root      424 Dec 20  2017 release

-rw-r--r-- 1 root root 21095860 Dec 20  2017 src.zip

-rw-r--r-- 1 root root    63933 Dec 20  2017 THIRDPARTYLICENSEREADME-JAVAFX.txt

-rw-r--r-- 1 root root   145180 Dec 20  2017 THIRDPARTYLICENSEREADME.txt

 

设置局部用户定义变量

[newcs@dsszbyz-etl-inf7 ~]$ myParm="parm1"    //定义变量

[newcs@dsszbyz-etl-inf7 ~]$ echo $myParm

parm1

[newcs@dsszbyz-etl-inf7 ~]$ unset myParm            //删除变量

[newcs@dsszbyz-etl-inf7 ~]$ echo $myParm

 

[newcs@dsszbyz-etl-inf7 ~]$

定义数组

mytest=("one" "two" "three" "four"  "five")

${mytest[1]}  //two

 

//打印数组所有值

echo ${mytest[*]}

 

parm1=("day_id" "${v_dayid}")

parm2=("hour_id" "${v_hourid}")

parmlist=(${parm1} ${parm2})

 

 

 

追加环境变量 PATH

环境变量的本质是方便运行程序命令。  

例如,运行java。没有配置PATH时会报找不到的错误,必须要使用全路径才能找到。

多个路径是用“:”分割,追加在末尾时。

PATH = $PATH:【路径】

PATH变量的修改只能持续到退出或重启系统

 

环境变量持久化

/etc/profile.d目录中创建一个以.sh结尾的文件。把所有新的或修改过的全局环境变

量设置放在这个文件中。

在大多数发行版中,存储个人用户永久性bash shell变量的地方是$HOME/.bashrc文件。这一

点适用于所有类型的shell进程。

但如果设置了BASH_ENV变量,那么记住,除非它指向的是$HOME/.bashrc,否则你应该将非交互式shell的用户变量放在别的地方

 


 

系统权限设置

 

查看用户账号文件

 登录用户名

 用户密码

 用户账户的UID(数字形式)

 用户账户的组ID(GID)(数字形式)

 用户账户的文本描述(称为备注字段)

 用户HOME目录的位置

 用户的默认shell

[newcs@dsszbyz-etl-inf7 ~]$ cat /etc/passwd | grep newcs

newcs:x:2007:2007::/home/newcs:/bin/bash

 

文件权限码

bash shell 命令 - linux_第11张图片

权限问题,实际应用 java https://www.cnblogs.com/hihtml5/p/6483783.html

 

 

改变权限

chmod

 

 


安装软件

 

处理损坏的包依赖关系

有时在安装多个软件包时,某个包的软件依赖关系可能会被另一个包的安装覆盖掉。这叫作

损坏的包依赖关系(broken dependency)。

如果系统出现了这个问题,先试试下面的命令:

yum clean all

然后试着用yum命令的update选项。有时,只要清理了放错位置的文件就可以了。

如果这还解决不了问题,试试下面的命令:

yum deplist package_name

这个命令显示了所有包的库依赖关系以及什么软件可以提供这些库依赖关系。

 

在vi 、vim编辑器中,向下翻页 (ctrl+f) 向上翻页 (ctrl+b) 

     查找字符串 斜杆“/”,再输入查找内容。  “n”下一个。

 

wc 统计文本

[newcs@dsszbyz-etl-inf7 half_hour]$ wc exec_hlw_agent_call_condition_fh-2.sh

  92  417 5850 exec_hlw_agent_call_condition_fh-2.sh

 文本的行数

 文本的词数

 文本的字节数

 

 

重定向

 

"<" 、">"、 "<<"

 

 

 

你可能感兴趣的:(bash shell 命令 - linux)