本文共 18936 字,大约阅读时间需要 63 分钟。
命令 | 格式 | 参数 | 示例 | 说明 |
---|---|---|---|---|
Ctrl+Alt+T | 打开终端 | |||
ls | ls -参数 查看的文件夹 | grep 部分文件名 | 无aal | 显示当前文件夹的可见文件显示当前目录下的所有文件及文件夹包括隐藏的.和…等显示当前目录下的所有文件及文件夹包括隐藏的.和…等并显示详细信息,详细信息包括大小,属组,创建时间 |
ls | linux 文件颜色的含义,白色文件代表一般性文件,如文本文件,配置文件,源码文件等; 蓝色代表目录,绿色代表可执行文件,红色表示压缩文件,浅蓝色表示链接文件,灰色表示其他文件,红色闪烁表示链接的文件有问题了,黄色表示设备文件。 | |||
ls -d .* | ls -d表示显示目录自身的属性,而不是目录中的内容 | 显示当前文件夹的所有目录属性 | ||
ls -a | 表示显示所有文件,包含隐藏文件 | |||
ls -F | 选项会在显示目录条目时,在目录后加一个/ | |||
ll | 显示当前文件夹的所有文件的详细信息,包含拥有者,属组,操作权限,链接信息 | |||
rm | rm 文件;rm -rf 目录 | -r表示递归操作;-f表示强行删除,不作任何提示 | 删除文件或目录 | |
apt-get | sudo apt-get install 软件名 | apt-get install xxx 安装xxx 。如果带有参数,那么-d 表示仅下载 ,-f 表示强制安装 apt-get remove xxx 卸载xxx apt-get remove --purge softname1 卸载并清除配置apt-get update 更新软件信息数据库 apt-get upgrade 进行系统升级 apt-cache search 搜索软件包 | sudo apt-get install build-essentia | apt-get理论上是要求能够联网,但是如果制作了本地源,就不需要联网,制作本地源可以参考;使用apt-get方法安装的软件,所有下载的deb包都缓存到了/var/cache/apt/archives目录下了,所以可以把常用的deb包备份出来,甚至做成ISO工具包、刻盘,以后安装Ubuntu时就可以在没有网络环境的情况下进行了; |
dpkg | sudo dpkg -i package.deb | dpkg -i package.deb 安装包dpkg -r package.deb 删除包dpkg -r --purge package.deb 连同配置文件一起删除dpkg -P package.deb 删除包(包括配置文件)dpkg -info package.deb dpkg -L package 列出与该包关联的文件dpkg -l package.deb 显示该包的版本dpkg –unpack package.deb 解开 deb 包的内容dpkg -S keyword 搜索所属的包内容dpkg -l 列出当前已安装的包dpkg -c package.deb 列出 deb 包的内容dpkg –configure package 配置包 | 下面的命令是拷贝archives这个目录到/var/cache/apt/目录下,替换原有的archivesenadmin@ubuntu-server:~/ftp$ sudo cp -r archives/ /var/cache/apt/ | |
make install | 配置:这是编译源代码的第一步,通过 ./configure 命令完成。执行此步以便为编译源代码作准备。常用的选项有 --prefix=PREFIX ,用以指定程序的安装位置。更多的选项可通过 --help 查询。也有某些程序无需执行此步。 编译:一旦配置通过,可即刻使用 make 指令来执行源代码的编译过程。视软件的具体情况而定,编译所需的时间也各有差异,我们所要做的就是耐心等候和静观其变。此步虽然仅下简单的指令,但有时候所遇到的问题却十分复杂。较常碰到的情形是程序编译到中途却无法圆满结束。此时,需要根据出错提示分析以便找到应对之策。 安装:如果编译没有问题,那么执行 sudo make install 就可以将程序安装到系统中了。 | 1.解压缩tar -zxf nagios-4.0.2.tar.gz 2.进入目录cd nagios-4.0.2 3.配置./configure --prefix=/usr/local/nagios 4.编译make all 5.安装make install && make install-init && make install-commandmode && make install-config | 如果要使用make安装的话,那么必须得安装build-essential 这个依赖包,安装方法已经在前面说过了。在安装完毕以后,我们就可以进行源码安装。源码安装大致可以分为三步骤:(./configure)–> 编译(sudo make) –> 安装(sudo make install)。 | |
bin安装 | 直接下载编译好的bin文件,格式如xxx.tar.gz,然后直接解压缩到目标目录,然后配置好环境变量即可 | |||
chmod | chmod [-cfvR] [--help] [--version] mode file | -c或——changes:效果类似“-v”参数,但仅回报更改的部分; -f或–quiet或——silent:不显示错误信息; -R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理; -v或——verbose:显示指令执行过程; mode: u User,即文件或目录的拥有者; g Group,即文件或目录的所属群组; o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围; a All,即全部的用户,包含拥有者,所属群组以及其他用户; r 读取权限,数字代号为“4”; w 写入权限,数字代号为“2”; x 执行或切换权限,数字代号为“1”; - 不具任何权限,数字代号为“0”; s 特殊功能说明:变更文件或目录的权限。 | chmod u+x,g+w f01 为文件f01设置自己可以执行,组员可以写入的权限; chmod u=rwx,g=rw,o=r f01 ; chmod 764 f01 ;chmod a+x f01 对文件f01的u,g,o都设置可执行属性 | chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。Linux用 户分为:拥有者、组群(Group)、其他(other),Linux系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及root的相关信 息, 都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。 此外,所有的组群名称记录在/etc/group內! |
chown | chown [选项]… [所有者][:[组]] 文件. | 必要参数:-c 显示更改的部分的信息-f 忽略错误信息-h 修复符号链接-R 处理指定目录以及其子目录下的所有文件-v 显示详细的处理信息-deference 作用于符号链接的指向,而不是链接文件本身选择参数:--reference````=目录或文件,把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组<br> –from=当前用户:当前群组, 只有当前用户和群组跟指定的用户和群组相同时才进行改变<br> –help显示帮助信息<br> –version显示版本信息|将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie : chown jessie:users file1.txt;<br>将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport : chown -R lamport:users * ;<br>要更改文件 program.c 的所有者: chown jim program.c,program.c的用户访问权限现在应用到 jim。作为所有者,jim 可以使用<br>要将目录 /tmp/src 中所有文件的所有者和组更改为用户 john 和组 build: chown -R john:build /tmp/src``` | 通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。 | |
tar | tar -cvf name.tar directory_to_compress ;tar -xvf name.tar ;tar -xvf name.tar -C location ; | -c代表压缩;-v代表压缩或解压时打印整个过程;-f代表后面跟着文件名;-x代表解压缩;-C后面跟着解压后的目标路径 | tar -xvf archive_name.tar -C /tmp/extract_here/ | Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩。 |
zip | zip name.zip directory_to_compress ;unzip name.zip | zip可能是目前使用得最多的文档压缩格式。它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。缺点就是支持的压缩率不是很高,而tar.gz和tar.bz2在压缩率方面做得非常好。 | ||
tar.gz | tar -zcvf name.tar.gz directory_to_compress ;tar -zxvf name.tar.gz ;tar -zxvf name.tar.gz directory_to_decompress | -z代表压缩或解压缩的格式为gz;其他参数与tar一致; | 与tar相比其实只是多了个指明压缩格式的z参数,并且文件名多了.gz;实际上对于.tar.gz格式的文件解压时即使不写z参数也能正常解压,因为linux系统已经预装了这些工具包,在解压缩时会自动选用合适的工具来解压;tar.gz压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。 | |
.tar.Z | tar Zcvf Name.tar.Z directory_to compress ;tar Zcvf name.tar.Z directoory_to decompress | |||
tar.bz2 | tar -jcvf name.tar.bz2 directory_to_compress ;tar -jxvf name.tar.bz2 ;tar -jxvf name.tar.bz2 directory_to _decompress | -j代表压缩格式为bz2 | 这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。 | |
tar.bz | 与tar.bz2除了文件名后缀少了2其他格式一模一样 | |||
unrar | unrar a name.rar directory_to_compress ;unrar e name.rar ;unrar x name.rar directory_to_compress | a代表解压;e代表解压到当前目录;x代表解压到指定目录 | 可以使用unrar --help来查看相关参数的作用 | |
rar | rar a name.rar;rar e name.rar | |||
top | toptop -bn 1 -i -c | 无参数,显示不同进程对cpu、内存等使用情况,可以按ctrl+c退出cpu查看; | 全参数的时候,第三行有cpu使用率的相关情况us:表示用户空间程序的cpu使用率(没有通过nice调度);sy:表示系统空间的cpu使用率,主要是内核程序;ni:表示用户空间且通过nice调度过的程序的cpu使用率;id:空闲cpu;wa:cpu运行时在等待io的时间;hi:cpu处理硬中断的数量;si:cpu处理软中断的数量st:被虚拟机偷走的cpu | |
find | find path expression search-term | path 路径,可以不写expression 搜索方式,如名字、类型、所属人、大小、时间、权限search-term 查询关键词(文件名) | find -name test.file find /var -name test.file | 不提供路径会搜索整个目录树来查找名为 test.file 的文件,并且会提供其存放位置。find命令有时会花费几分钟来查找整个目录树,尤其是如果系统中有很多文件和目录的话。要显著减少时间,你可以指定搜索的目录。 |
find | find ./ -mtime n | |||
locate | locate interfaces | 使用locate命令在根目录下搜索interfaces文件,比find命令快。因为它查询的是数据库(/var/lib/locatedb),数据库包含本地所有的文件信息。 | ||
whereis | whereis grep使用whereis命令搜索grep二进制文件 | 搜索linux系统中的所有可执行文件即二进制文件。 | ||
which | which grep使用which命令查看grep命令是否存在以及存在的目录 | 查看系统命令是否存在,并返回系统命令所在的位置 | ||
type | type cd查看cd命令是否为系统自带的命令 | 查看某个命令是否为系统自带的命令 | ||
mkdir 目录名 | 新建一个文件夹 | |||
touch 文件名 | 新建一个空文件 | |||
rmdir 目录名 | 删除一个空文件夹,文件夹里有内容则不可用 | |||
rm -rf 目录名 | 删除一个文件夹,里面有内容也可以 | |||
cp 文件名 目标路径 | 拷贝一个文件到目标路径,似乎进入系统文件夹可以从其他地方拷过来,但在普通文件夹却不一定能拷到系统文件夹去 | |||
cp -i | 拷贝,同名文件夹存在时,输出[yes/no]询问是否执行 | |||
cp -f | 强制复制文件,如有同名不询问 | |||
mv | mv 文件 夹不需要加参数-R | mv 比cps要快 | ||
echo | echo 参数 内容(如字符串、变量) | 无参数是打印内容并换行-n打印内容不换行,下一次打印时会从新行开始-e处理特殊字符 | echo “456” 输出:456echo -n "123"echo "456"输出:123456echo -e "a\bdddd"输出:dddd echo -e “a\adddd” //输出同时会发出报警声音输出:addddecho -e “a\ndddd” //自动换行输出:adddd< | 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\a 发出警告声;\b 删除前一个字符;\c 最后不加上换行符号;\f 换行但光标仍旧停留在原来的位置;\n 换行且光标移至行首;\r 光标移至行首,但不换行;\t 插入tab;\v 与\f相同;\ 插入\字符;\nnn 插入nnn(八进制)所代表的ASCII字符; |
read | 更多信息参考 | 接收标准输入(键盘)的输入或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中。 | ||
bc | bc(选项)(参数) | 选项:-i:强制进入交互式模式;-l:定义使用的标准数学库;-w:对POSIX bc的扩展给出警告信息;-q:不打印正常的GNU bc环境信息;-v:显示指令版本信息;-h:显示指令的帮助信息。参数:文件:指定包含计算任务的文件。 | 算术操作高级运算bc命令它可以执行浮点运算和一些高级函数:echo “1.212*3” | bc 3.636设定小数精度(数值范围)echo “scale=2;3/8” | bc 0.37进制转换abc=192echo “obase=2;$abc” | bc 11000000进制转换abc=11000000 echo “obase=10;ibase=2;$abc” | bc 192 计算平方和平方根echo “10^10” | bc echo “sqrt(100)” | bc | bc命令是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。 |
hostname | hostname(选项)(参数) | 选项:-v:详细信息模式;-a:显示主机别名;-d:显示DNS域名;-f:显示FQDN名称;-i:显示主机的ip地址;-s:显示短主机名称,在第一个点处截断;-y:显示NIS域名。参数:主机名:指定要设置的主机名。 | hostnameAY1307311912260196fcZ | 用于显示和设置系统的主机名称。环境变量HOSTNAME也保存了当前的主机名。在使用hostname命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改/etc/hosts 和/etc/sysconfig/network 的相关内容。 |
whoami | whoami(选项) | 选项:--help :在线帮助;--version :显示版本信息。 | whoamiroot | 用于打印当前有效的用户名称,相当于执行id -un 命令。 |
printf | printf format-string [arguments...] | format-string: 为格式控制字符串 arguments: 为参数列表。 | $ echo "Hello, Shell"Hello, Shell$ printf "Hello, Shell\n"Hello, Shell | printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n |
linux下用户和权限
linux下用户权限的一次测试:目标,创建某用户,然后该用户只能访问自己的主目录,无法访问其他目录(包括系统根目录)
首先如下创建用户useradd -m testaccountpasswd12345678登录到该用户自动进入该用户的主目录但是用 cd /home ,仍然能够看到各用户下的主目录,并且能够能cd 进入;例如采用 cd /home/test/tmp 可以进入到另一个用户test的主目录;利用vi XXX.py,仍然可以看到文件内容;但是输入内容会提示为告警,read only,尝试用wq或wq!去保存该内容,会发现无法保存,说明看其他用户的文件是可以的,但不能改。同时用cd / 也可以进入系统根目录,并能查看内容,操作权限与上面的内容相似。修改/etc/ssh/sshd_config 文件#Subsystem sftp /usr/libexec/openssh/sftp-server #这行指定使用sftp服务使用系统自带的internal-sftpSubsystem sftp internal-sftp #这行用来匹配用户Match User testaccount#用chroot将用户的根目录指定到/home/testaccount,这样用户就只能在/home/testaccount下活动ChrootDirectory /home/testaccountX11Forwarding noAllowTcpForwarding noForceCommand internal-sftp #指定sftp命令用testaccount用户重新登录,发现权限设置并不起作用按提示将/home/testaccount 目录所有者改为root,并赋 确保目录权限755或者750重新登录testaccount发现仍然不起作用。试验其他方法[ACL权限设置命令setfacl和getfacl命令](https://www.cnblogs.com/MLibra/p/6240209.html)getfacl /显示如下getfacl: Removing leading '/' from absolute path names# file: .# owner: root# group: rootuser::r-xgroup::r-xother::r-x设置用户对/目录没有读写操作的权限setfacl -m user:testaccount:--- /重新查看getfacl / 结果如下getfacl: Removing leading '/' from absolute path names# file: .# owner: root# group: rootuser::r-xuser:testaccount:---group::r-xmask::r-xother::r-x此时登录到testaccount,然后cd / 会报如下错误-bash: cd: /: Permission deniedls-bash: /usr/bin/ls: Permission deniedcd /home-bash: cd: /home: Permission deniedcd ~-bash: cd: /home/testaccount: Permission denied这说明此时testaccount用户对所有的文件夹都没有任务权限再将testaccount用户主目录的权限开放给testaccount用户setfacl -m user:testaccount:rwx /home/testaccountgetfacl /home/testaccount结果如下getfacl: Removing leading '/' from absolute path names# file: home/testaccount# owner: testaccount# group: testaccountuser::rwxuser:testaccount:rwxgroup::r-xmask::rwxother::r-x但此时会发现testaccount用户仍然不仅地其他目录无法登录,连/home/testaccount也无法登录。退出系统,连系统都登录不进去。将tstaccount用户的权限设置回去setfacl -m user:testaccount:r-x /然后再 setfacl -m user:testaccount:--x /此时 testaccount 用户可以进入/目录,但是ls时会 Permission denied不过cd /usr/local时能进入,并且 ls 可查看。当然也能cd /home/testaccount加入默认,效果一样setfacl -d -m user:testaccount:--x /似乎是这些目录都能看到,但目录里文件的文件不一定能看到(有些能看到,有些不能看到)需要递归设置,可参考[setfacl设置特定目录的权限](https://blog.csdn.net/yaerfeng/article/details/39475379)setfacl -R -m user:testaccount:--x /usr/local/python35/lib/python3.5系统会逐个对文件进行权限设置(时间很长,尤其是设置/proc目录,我们可以只对一些关键的系统目录和其他用户目录进行设置)这样cd python3.5,再ls时会显示 Permission deniedcd python3.5/sqlite3 也能进入,但ls时 Permission denied进入另一用户的主目录,发现该testaccount用户仍然能够通过vi命令操作此文件夹下的文件。setfacl -R -m user:testaccount:--x /home/test设置后发现不能看到相应的目录,但如果你虽然看不到,但知道这个地方有仍然可以进入相应目录,但vi操作不了。综合上面的试验:我们可以通过setfacl -R -m 将某一用户对某一些文件夹的权限禁掉,再是开放用户自己主目录的读写权限。
sudo权限
linux下各种服务和软件的安装
Ubuntu 16.04 LTS 中安装命令的简化
Ubuntu 16.04 LTS | 老版本Ubuntu |
---|---|
apt install 包名 | 替代 apt-get install 包名 |
apt remove 包名 | 替代 apt-get remove 包名< |
apt search 包名 | 替代 apt-cache search 包名 |
apt show 包名 | 替代 apt-cache show 包名 |
apt update | 替代 apt-get update |
apt upgrade | 替代 apt-get upgrade |
apt list –installed | 替代 dpkg –get-selections | grep -v deinstall替代 dpkg -l |
apt list –upgradable | apt-get -u upgrade –assume-no |
apt edit-sources | 替代 echo ‘new line of text’ | sudo tee -a /etc/apt/sources.list替代 sudo nano /etc/apt/sources.list |
apt autoremove | 替代 apt-get autoremove |
apt purge 包名 | 替代 apt-get purge 包名 |
yum方式安装:(安装rpm包)
rpm 是linux的一种软件包名称,以.rmp结尾,安装的时候语法为:rpm -ivh。
rpm包的安装有个很大的缺点就是文件的关联性太大,有时装一个软件要安装很多其他的软件包,很麻烦。 所以为此RedHat小红帽开发了yum安装方法,他可以彻底解决这个关联性的问题,很方便,只要配置两个文件即可安装,安装方法是:yum -y install 。 yum并不是一中包,而是安装包的软件 简单的说: rpm 只能安装已经下载到本地机器上的rpm 包. yum能在线下载并安装rpm包,能更新系统, 且还能自动处理包与包之间的依赖问题,这个是rpm 工具所不具备的。 linux下更多软件安装方法可参考自己配置的yum源/etc/yum.repos.d/ //必须在这个路径下
CentOS-CR.repo
指向的是官网镜像http://mirror.centos.org CentOS-Debuginfo.repo 指向的是官网http://debuginfo.centos.org CentOS-fasttrack.repo 指向的是镜像列表http://mirrorlist.centos.org CentOS-Sources.repo 指向的是官网镜像http://vault.centos.org CentOS-Vault.repo 指向的是官网镜像http://vault.centos.org CentOS-Media.repo 指向的是本地挂载的镜像,应该是需要自己配置。也可以自己命名成其他的。[c7-media]name=CentOS-$releasever - Mediabaseurl=file:///media/CentOS/ file:///media/cdrom/ file:///media/cdrecorder/gpgcheck=0enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
而/media/CentOS已经指向了某个外部文件。下面是外部文件中的内容的例子
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7EFI images Packages RPM-GPG-KEY-CentOS-Testing-7EULA isolinux repodata TRANS.TBL
CentOS7-ctyun.repo
这个是自定义的连接云上的yum源; 放在一台能连接外网的机器上,进行跳转[base]name=CentOS-$releasever - Base - ctyun.cnbaseurl=http://100.125.0.40/centos/$releasever/os/$basearch/ http://mirror.centos.org/centos/$releasever/os/$basearch/gpgcheck=1failovermethod=priorityigpgkey=http://100.125.0.40/centos/RPM-GPG-KEY-CentOS-7
hdp-2.6.5.repo
这是我举是一个例子,是放在局域网内的某节点上的本地yum源#hdp-2.6.5.repo#VERSION_NUMBER=2.6.5.0-292[HDP-2.6.5.0]name=HDP Version - HDP-2.6.5.0baseurl=http://192.168.15.75/hdp-2.6.5/HDP/centos7/2.6.5.0-292gpgcheck=1gpgkey=http://192.168.15.75/hdp-2.6.5/HDP/centos7/2.6.5.0-292/RPM-GPG-KEY/RPM-GPG-KEY-Jenkinsenabled=1priority=1
RPM软件包管理器
英文原义:RPM Package Manager(原Red Hat Package Manager,现在是一个递归缩写) 注解:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。与Dpkg类似。 如rpm -i xv-3.10a-13.i386.rpm
rpm -ivh ***.rpm 其中i表示安装,v表示输出,h表示用#作进度标记
-q代表query,-a代表all
强制删除卸载yum安装的软件
rpm -e --noscripts vsftpd-2.0.1-2mdk.x86_64
如何在linux shell中将执行结果不在屏幕上打印,而是保存到文件中及如何以当前时间命名文件
格式为:执行语句 > 要保存的文件名
比如python xxx.py > abc.txtbin/sparksql xxx.txt >abc.txt
如何让文件名为当前时间?
$(date -d "today" +"%Y%m%d_%H%M%S").txt#date 是linux中获取时间的命令,参数-d "today"是获取今天的时间。后面是自己想要的日期时间字符串格式。还可以在前后加上其他字符串,比如本例中的'.txt'
tail命令 文件内容查看
tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。 通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。 注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。 语法 tail(选项)(参数) 选项--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;-c或——bytes= :输出文件尾部的N(N为整数)个字节内容;-f 或;--follow :显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;-F:与选项“-follow=name”和“--retry"连用时功能相同;-n 或——line= :输出文件的尾部N(N位数字)行内容。--pid= <进程号> :与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;-s <秒数> 或——sleep-interal= <秒数> :与“-f”选项连用,指定监视文件变化时间隔的秒数;-v或——verbose:当有多个文件参数时,总是输出各个文件名;--help:显示指令的帮助信息;--version:显示指令的版本信息。 秒数> 秒数> 进程号>
参数解释:-f 该参数用于监视File文件增长。-c Number 从 Number 字节位置读取指定文件-n Number 从 Number 行位置读取指定文件。-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。-b Number 从 Number 表示的512字节块位置读取指定文件。-k Number 从 Number 表示的1KB块位置读取指定文件。File 指定操作的目标文件名称上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部開始计算。
参数
文件列表:指定要显示尾部内容的文件列表。 实例tail file (显示文件file的最后10行)tail +20 file (显示文件file的内容,从第20行至文件末尾)tail -c 10 file (显示文件file的最后10个字符)tail -n 20 filename 说明:显示filename最后20行。tail -r -n 10 filename 说明:逆序显示filename最后10行。
补充:
跟tail功能相似的命令还有: cat 从第一行開始显示档案内容。 tac 从最后一行開始显示档案内容。 more 分页显示档案内容。 less 与 more 相似,但支持向前翻页 head 仅仅显示前面几行 tail 仅仅显示后面几行 n 带行号显示档案内容 od 以二进制方式显示档案内容Linux cat命令详解
cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的;
cat主要有三大功能: 1.一次显示整个文件$ cat filename
2.从键盘创建一个文件
$ cat > filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件$cat file1 file2 > file
cat具体命令格式为 : cat [-AbeEnstTuv] [--help] [--version] fileName
-n 或 –number 由 1 开始对所有输出的行数编号-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行-v 或 –show-nonprinting
范例:
cat -n linuxfile1 > linuxfile2 把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里cat -b linuxfile1 linuxfile2 >> linuxfile3 把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到linuxfile3 里。cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容
在linux shell脚本中我们经常见到类似于cat << EOF
的语句,不熟悉的童鞋可能觉得很奇怪:EOF好像是文件的结束符,用在这里起到什么作用?
1、cat<filename,创建文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束:注意:输入时是没有'>'的。3、cat>filename<
更详细参考
查找替换和统计文件中的字符
查找文件名或路径
## 只列出常规文件find ./ -type f ## 只列出文件夹find ./ -type d
替换字符
查找perl脚本中出现了"DELETE_FLAG_"个数(-l表示字符串个数)grep "DELETE_FLAG_" *.pl |more|wc -l 查找包含了5433字符的文件名grep -l "5433" *.plcd /usr/perl/AAA#替换前统计一下return -1和return 0的个数grep "return -1" *.pl |more|wc -lgrep "return 0" *.pl |more|wc -lsudo sed -i 's/return -1/exit(1)/' *.plsudo sed -i 's/return 0/exit(0)/' *.plsudo chmod 777 *.pl#替换前统计一下exit(1)和exit(0)的个数,与之前的数目进行校对,正常前后数据应该一致,且return为0grep "exit(1)" *.pl |more|wc -lgrep "exit(0)" *.pl |more|wc -lgrep "return" *.pl |more|wc -l
Linux patch命令
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。 语法awk [选项参数] 'script' var=value file(s)或awk [选项参数] -f scriptfile var=value file(s)
选项参数说明:
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。-v var=value or --asign var=value
赋值一个用户定义变量。-f scripfile or --file scriptfile
从脚本文件中读取awk命令。-mf nnn and -mr nnn
对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。-W compact or --compat, -W traditional or --traditional
在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。-W copyleft or --copyleft, -W copyright or --copyright
打印简短的版权信息。-W help or --help, -W usage or --usage
打印全部awk选项和每个选项的简短说明。-W lint or --lint
打印不能向传统unix平台移植的结构的警告。-W lint-old or --lint-old
打印关于不能向传统unix平台移植的结构的警告。-W posix
打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替和=;fflush无效。-W re-interval or --re-inerval
允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]
。-W source program-text or --source program-text
使用program-text作为源代码,可与-f命令混用。-W version or --version
打印bug报告信息的版本。
基本用法
log.txt文本内容如下:
2 this is a test3 Are you like awkThis's a test10 There are orange,apple,mongo
用法一:
awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号
实例:
# 每行按空格或TAB分割,输出文本中的1、4项$ awk '{print $1,$4}' log.txt---------------------------------------------2 a3 likeThis's10 orange,apple,mongo# 格式化输出$ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt---------------------------------------------2 a3 likeThis's10 orange,apple,mongo
未完
清空历史命令
history#查看echo >.python_history#清空python记录echo >.bash_history#清空shell记录history -c #清空history中的记录,猜测这里是由定期的去读bash_history中的记录history #再次查看
expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。
语法expr 表达式
表达式说明:
- 用空格隔开每个项;
- 用 / (反斜杠) 放在 shell 特定的字符前面;
- 对包含空格和其他特殊字符的字符串要用引号括起来
实例
1、计算字串长度expr length “this is a test” 14
2、抓取字串
expr substr “this is a test” 3 5is is
3、抓取第一个字符数字串出现的位置
expr index "sarasara" a 2
4、整数运算
expr 14 % 9 5expr 10 + 10 20expr 1000 + 900 1900expr 30 / 3 / 2 5expr 30 \* 3 (使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义) 90expr 30 * 3 expr: Syntax error
shell 脚本命令太长,如何换行
行尾加\
Linux 命令大全 |
---|
1、文件管理 |
— | — | — | — |
---|---|---|---|
chown -R 操作软链接的时候,其子目录不会发生变化;因而还是直接操作原目录
Linux 命令大全 |
---|
2、文档编辑 |
— | — | — | — |
---|---|---|---|
Linux 命令大全 |
---|
3、文件传输 |
— | — | — | — |
---|---|---|---|
Linux 命令大全 |
---|
4、磁盘管理 |
— | — | — | — |
---|---|---|---|
Linux 命令大全 |
---|
5、磁盘维护 |
— | — | — | — |
---|---|---|---|
Linux 命令大全 |
---|
6、网络通讯 |
— | — | — | — |
---|---|---|---|
Linux 命令大全 |
---|
7、系统管理 |
— | — | — | — |
---|---|---|---|
Linux 命令大全 |
---|
8、系统设置 |
— | — | — | — |
---|---|---|---|
Linux 命令大全 |
---|
9、备份压缩 |
— | — | — | — |
---|---|---|---|
Linux 命令大全 |
---|
10、设备管理 |
— | — | — | — |
---|---|---|---|
Linux 命令大全 |
---|
其他命令 |
运维
CentOS 7添加开机启动服务/脚本
方法一1、赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)chmod +x /opt/script/autostart.sh2、打开/etc/rc.d/rc.local或/etc/rc.local文件,在末尾增加如下内容su - user -c '/opt/script/autostart.sh'3、在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限chmod +x /etc/rc.d/rc.local
转载地址:https://blog.csdn.net/qingqing7/article/details/78566997 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!