summaryrefslogtreecommitdiff
path: root/StepTalkShell/Unix.txt
blob: 94d309648e2dc6312b8b16e4d65a8632e88df5c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
Unix shell equivalents
----------------------

StepTalk is not meant to be used for tasks that can be done using ordinary Unix
shells. But this does not mean, that it cannot be used for such tasks. In this
file you may find list of unix commands and tasks and their Smalltalk
equivalents.

Contents:

    File Manipulation
    Output
    Paths and filenames
    Network
    Math
    Date and Time

File manipulation
-----------------

> fm := NSFileManager defaultManager

ls

    > (fm directoryContentsAtPath: '.') sortedArrayUsingSelector:#compare:

pwd

    > fm currentDirectoryPath
    
cd path

    > fm changeCurrentDirectoryPath: 'path'

ln -s path other

    > fm createSymbolicLinkAtPath:'path' pathContent:'other'
    
cp src dest
    
    > fm copyPath:'src' toPath:'dest' handler: nil
    
cp file_list dest

    > file_list do: [ :file | fm copyPath:file toPath:'dest' handler: nil ]
    
mv - as cp, movePath:toPath:handler: 
ln - as cp, linkPath:toPath:handler: 
rm - removeFileAtPath:handler:

mkdir dir

    > fm createDirectoryAtPath:'dir' attributes:nil

df path

    > fm fileSystemAttributesAtPath:'path'   

Output
------

echo 'string'

    > Transcript show:'string'
    
cat file

    > Transcript show: (NSString stringWithContentsOfFile:'file')

"write a string to a file"

    > ('string' writeToFile:'file' atomically:YES)

"create a string from a file"

    > str := NSString stringWithContentsOfFile:'file'


Paths and filenames
--------------------------------
For more information, refer to the NSString documentation.
NSString methods for path manipulation:

    - fileSystemRepresentation 
    - isAbsolutePath 

    - pathComponents 
    - lastPathComponent 
    - pathExtension 

    - stringByAbbreviatingWithTildeInPath 
    - stringByAppendingPathComponent: 
    - stringByAppendingPathExtension: 
    - stringByDeletingLastPathComponent 
    - stringByDeletingPathExtension 
    - stringByExpandingTildeInPath 
    - stringByResolvingSymlinksInPath 
    - stringByStandardizingPath 
    - stringsByAppendingPaths:

Examples:

    > path := '/usr/GNUstep/System/Applications/Ink.app'
    > path pathComponents
    (?) GSArray
    0  /
    1  usr
    2  GNUstep
    3  System
    4  Applications
    5  Ink.app

    > path lastPathComponent 
    (?) Ink.app

    > path pathExtension 
    (?) app

In Smalltalk there is a symbolic selector '/' for NSString that is equivalent to
the 'stringByAppendingPathComponent:'.

    > path := 'somePath'
    > filename := 'someFilename'
    > fullPath := path / filename

Network
-------

localhost

    > NSHost currentHost name
    
nslookup host_name

    > (NSHost hostWithName:'host_name') addresses
    
nslookup host_address

    > (NSHost hostWithAddress:'host_address') names

"download a file from the web"

    > data := NSData dataWithContentsOfURL:'url'
    > data writeToFile:'file' atomically:YES
    
"read a file from the web"

    > string := NSString stringWithContentsOfURL:'url'


Math
----
Just like in:
    > 1 + 1
or in:
    > a := b * c


Date and Time
-------------

date
    > NSDate date
...or...
date
    > NSCalendarDate date


For more information read the NSDate and NSCalendarDate documentation

NSCalendarDate methods:

Creating a date
    
    + calendarDate
    + dateWithString:calendarFormat: 
    + dateWithString:calendarFormat:locale: 
    + dateWithYear:month:day:hour:minute:second:timeZone: 
    
Retrieving date elements 

    - dayOfCommonEra 
    - dayOfMonth 
    - dayOfWeek 
    - dayOfYear 
    - hourOfDay 
    - minuteOfHour 
    - monthOfYear 
    - secondOfMinute 
    - yearOfCommonEra

Adjusting a date 

    - dateByAddingYears:months:days:hours:minutes:seconds: