Юникс shell-ийн командууд

Юникс орчинд ороход шел дээр ажиллах нь зайлшгүй. Шел дээр ажиллах нь эхлээд залхуутай мэт санагдаж болох ч, энэ нь командууд болон багаж хэрэгслүүдийг хир зөв, үр дүнтэй ашиглаж байгаагаас хамаардаг. Үүний тулд хийж байгаа үйлдлээ хэрхэн илүү хялбар хурдан хийх вэ гэдгийг бодож, интернэтээс туршлага судлаж, шинэ хэрэгсэл, шинэ команд байнга сурч байх хэрэгтэй. Ингээд зарим хэрэг болохуйц командуудыг сийрүүлье.

Ямар шел дээр ажиллаж байгааг харах

echo $SHELL
/bin/bash

Командын гарын авлагыг унших

man ls

Програм хаана байрлаж байгааг харах

whereis cp
cp: /bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz

Ажиллаж байгаа директори харах

pwd
/home/ochiro

Файлын төрлийг харах

file pauker.pau.gz
pauker.pau.gz: gzip compressed data, from MS-DOS

Файлын эхний 5 мөрийг харах

head -n 5 ./tomcat/logs/localhost.2007-03-05.log

Mar 5, 2007 4:36:16 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Mar 5, 2007 4:36:16 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Mar 5, 2007 4:36:17 PM org.apache.catalina.core.ApplicationContext log

Файлын сүүлийн 5 мөрийг харах

tail -n 5 ./tomcat/logs/manager.2007-03-05.log

INFO: HTMLManager: list: Listing contexts for virtual host 'localhost'
Mar 5, 2007 5:15:48 PM org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: restart: Reloading web application at '/testapp'
Mar 5, 2007 5:15:48 PM org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: list: Listing contexts for virtual host 'localhost'

Лог файлын сүүлийн мөрүүдийг ажиглах

tail -f ./tomcat/logs/localhost.2007-03-05.log
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)

Хоёр файлын ялгааг олох

diff dic.txt dic-new.txt
1a2
\> new line

Удаан ажиллах командыг ард ажиллуулах

bin/backup-files.sh &
\[1\] 26490

Ард ажиллаж байгаа командуудыг харах

jobs
\[1\]+  Stopped                 bin/backup-files.sh

Ажиллуулсан командуудынхаа түүхийг үзэх

history

1  echo $SHELL
2  whereis cp
3  pwd
4  file pauker.pau.gz
5  head -n 5 TUTORIAL~
6  cp dic.txt dic-new.txt
7  cat dic.txt
8  vi dic-new.txt
9  diff dic.txt dic-new.txt

Файл байхгүй бол үүсгэх

touch newfile.txt

Дискний сул зайг харах

df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda2              13G  7.6G  4.5G  63% /
udev                  506M  152K  506M   1% /dev
/dev/hda3              51G   25G   26G  49% /home
/dev/hdb1              38G   25G  2.2G  92% /mnt/FAT32

Директори доторхи файлуудыг хэмжээгээр нь буурах эрэмбээр жагсаах

du -sh archive/\* | sort -nrk 1
859M    archive/nihongo
303M    archive/photo
277M    archive/lessons
233M    archive/install
1.8G    archive/books

Бичсэн скриптдээ ажиллах зөвшөөрөл тавих

chmod u+x scripts/upload.sh

Тооны тооллыг хөрвүүлж харах

echo 'obase=10; ibase=16; E59' | bc
3673

Олон мөр оролт

bc <<> A
\> EOF
10

Директорын бүтцийг ганц командаар үүсгэх

mkdir -p project/{lib/ext,bin,src,doc/{html,txt,pdf},demo/stat/a}

Директорийг архивлах

tar cvf /tmp/archive.tar archive

Файлыг шахах

gzip archive.tar

Архивийн файлыг сонгосон директори луу задлах

tar xvf -C dest/to/extract archive.tar.gz

Эхний команд тэг утга буцаасан тохиолдолд дараагийн команд ажиллана

cd directory/exists && tar xvf ~/archive.tar

Эхний команд тэг биш утга буцаавал дараагийнх ажиллана

cd directory/not/exists || mkdir -p directory/not/exists

Директори байхгүй бол үүсгээд архивийг задлана

cd dest/dir || mkdir -p dest/dir && tar xvf -C dest/dir ~/archive.tar

Урт командыг арагш ташуу зураасаар хуваах

cd dest/to/extract || \\
\> mkdir -p est/to/extract && \\
\> tar xvf -C est/to/extract ~/archive.tar

Зарим командуудыг дэд шелд ажиллуулаад гаралтыг admin руу мэйлдэх

( cd dest/to/extract/ || mkdir -p dest/to/extract && \\
\> VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \\
\> | mailx admin -S "Archive contents"

Зарим командуудыг бүлэглэж ажиллуулаад гаралтыг admin руу мэйлдэх

{ cp ${VAR}a . && chown -R guest.guest a && \\
\> tar cvf newarchive.tar a; } | mailx admin -S "New archive"

Эхний командаар гарч ирэх жагсаалтууд дээр өөр команд ажиллуулах

ls -1 | xargs file
bin:              directory
desk-books:       directory
Desktop:          directory
diagrams:         directory
dic-new.txt:      UTF-8 Unicode text
dic.txt:          UTF-8 Unicode text

Файл дотроос текст хайх

grep implement TUTORIAL.txt
On systems which do not implement suspending, C-z creates a subshell
function which implements the C-p command.

Файл дотроос хайхдаа regular expression ашиглах

grep ^The TUTORIAL.txt
The characters ">>" at the left margin indicate directions for you to
The first thing that you need to know is how to move around from place
The following commands are useful for viewing screenfuls:
There are several ways you can do this.  You can use the arrow keys,
The location of the cursor in the text is also called "point".  To
There is a whole series of commands that start with CONTROL-x; many of

wc хэрэглэлгүйгээр файл дотор хайсан текст хэдэн мөрөнд байгааг тоолох

grep -c ^The TUTORIAL.txt
30

awk ашиглаж багана сонгож харах

ls -l | awk '{print $3 " " $8 }'

ochiro bin
ochiro desk-books
ochiro Desktop
ochiro diagrams
ochiro dic-new.txt
ochiro dic.txt

Сонгосон баганаас хайх

ls --time-style=locale -l | awk '$6 == "Mar"'
drwxr-xr-x 11 ochiro users    3064 Mar  1 14:34 desk-books
drwxr-xr-x  2 ochiro users     784 Mar  2 09:53 Desktop
\-rw-r--r--  1 ochiro users      13 Mar  7 13:55 dic-new.txt
drwxr-xr-x  5 ochiro users    2664 Mar  6 10:43 downloads
drwxr-xr-x  2 ochiro users      48 Mar  5 13:55 ftpserver
drwxrwxrwx  7 ochiro users     400 Mar  5 18:03 wbt

Файл дотроос текст хайж(cursor) солиод(pointer) шинэ файлд хадгалах

sed s/cursor/project\_name/g TUTORIAL.txt > TUTORIAL\_new.txt

Олон файлаас(*.txt) текст хайж(searchtext) солих(replacetext)

find ./ -name \*.txt -type f -exec sed -i 's/searchtext/replacetext/' {} \\;

Хамгийн их хэрэглэсэн 10 командаа харах

history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}' \\
\> |sort|uniq -c|sort -nr|head -10
125 ls
32 su
32 cd
26 vi
25 sudo
23 cat
19 ping
19 netstat
19 exit
18 ps

Сүүлийн нэг цагийн дотор өөрчөгдсөн файлууд

 find ~ -mmin -60 \\! -type d
/home/ochiro/.thunderbird/Mail/Junk
/home/ochiro/.thunderbird/Mail/Sent
/home/ochiro/.thunderbird/Mail/Inbox.msf
/home/ochiro/.thunderbird/Mail/Drafts
/home/ochiro/.thunderbird/Mail/Inbox
/home/ochiro/.thunderbird/Mail/Junk.msf
/home/ochiro/.thunderbird/Mail/Sent.msf
/home/ochiro/.thunderbird/Mail/Drafts.msf
/home/ochiro/TUTORIAL\_new.txt
/home/ochiro/dic.txt

Эх сурвалжууд: